Потребитель kafka не может подключиться к серверу: {test-topic = LEADER_NOT_AVAILABLE}, когда настроен SSL ACL - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть класс kafka, он отлично работает, когда SSL не включен, и прекрасно работает, когда SSL включен.Но он не работает, когда настроен ACL.

Клиент-потребитель не может подключиться к серверу, сообщается о следующей ошибке:

[2018-12-21 15:07:38,930] WARN [Consumer clientId=consumer-1, groupId=console-consumer-86611]
Error while fetching metadata with correlation id 1 :
{test-topic=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

Из журнала sarama сказано:

[sarama] 2018/12/22 09:15:21 client/metadata fetching metadata for [test-topic] from broker kafka1.oneorg.example.com:9093
[sarama] 2018/12/22 09:15:21 client/metadata found some partitions to be leaderless

Но это не так, у нас есть лидерный узел, если мы используем команду 'kafka-topics.sh --describe'.

Моя версия kafka: kafka_2.11-1.0.0.jar

Когда мы оглянулись на сервер kafka, там была тема test-topic:

/opt/kafka/bin/kafka-topics.sh --describe \
--zookeeper zookeeper1.example.com:2181 \
--topic test-topic
Topic:test-topic    PartitionCount:1    ReplicationFactor:3 Configs:
    Topic: test-topic   Partition: 0    Leader: 3   Replicas: 4,2,3 Isr: 3

И она отлично работает, когда ACL не настроен.Я предпринял следующие действия для ACL: 1. включить ACL для серверной стороны

    - KAFKA_AUTHORIZER_CLASS_NAME=kafka.security.auth.SimpleAclAuthorizer
    - KAFKA_SUPER_USERS=User:Bob;User:Alice

2.добавить элементы конфигурации ACL

/opt/kafka/bin/kafka-acls.sh \
--authorizer-properties zookeeper.connect=zookeeper1.example.com:2181 \
--add \
--allow-principal User:"C=cn,O=mycomp,OU=myorg,CN=client" \
--operation All \
--topic "test-topic" \
--group "*" \
--cluster

Команда выполнена успешно

/opt/kafka/bin/kafka-acls.sh \
--authorizer-properties zookeeper.connect=zookeeper1.oneorg.example.com:2181 \
--list --topic test-topic
Current ACLs for resource `Topic:test-topic`: 
User:C=cn,O=mycomp,OU=myorg,CN=client has Allow permission for operations: All from hosts: * 

3.начальный потребительский клиент

/opt/kafka/bin/kafka-console-consumer.sh
--bootstrap-server kafka1.example.com:9093
--topic test-topic --partition 0
--consumer.config kafka-client-ssl.properties

Содержимое kafka-client-ssl.properties:

ootstrap.servers=kafka1.example.com:9093
security.protocol=SSL
ssl.truststore.location=/work/truststore.jks
ssl.truststore.password=test1234
ssl.keystore.location=/work/client.keystore.jks
ssl.keystore.password=test1234
ssl.key.password=test1234

Не знаю, пропустил ли я что-нибудь, может ли какой-нибудь экспорт помочь мне?спасибо.

$ /opt/kafka/bin/kafka-topics.sh --describe --zookeeper zookeeper1.oneorg.example.com:2181 --topic test-topic

Тема: test-topic PartitionCount: 1 ReplicationFactor: 1 Конфиги: Тема: test-topic Раздел: 0 Лидер: 1 Реплики: 1 Isr: 1

...