У меня есть класс 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