У меня есть «kafka_2.13-3.7.0» в Windows 11.
Я хочу запустить Kafka с помощью SASL_PLAINTEXT, я выполнил действия, описанные в https://kafka.apache.org/documentation/#security_sasl_plain
Я добавил следующий параметр в файл server.properties
listeners=SASL_PLAINTEXT://localhost:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
Я определил файл конфигурации «kafka_jaas.conf», содержащий следующий контент
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username = "admin"
password = "admin-secret"
user_admin = "admin-secret"
user_alice = "alice-secret";
};
Затем я запустил сервер Kafka со следующей JVM, сервер успешно запустился
-Djava.security.auth.login.config=kafka_jaas.conf
Затем я добавил следующий контент в файл Consumer.properties.
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username = "alice" password = "alice-secret";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
Наконец я запустил потребителя kafka-console-consumer.bat --topic моя тема --с начала --bootstrap-server localhost:9092
Но я получил следующую ошибку [2024-06-01 23:51:57,041] ИНФОРМАЦИЯ [SocketServer ListenerType=ZK_BROKER, nodeId=0] Не удалось выполнить аутентификацию с помощью /127.0.0.1 (channelId=127.0.0.1:9092-127.0.0.1:56526-5) (Неожиданный Кафка запрос типа МЕТАДАННЫЕ во время установления связи SASL.) (org.apache.kafka.common.network.Selector)
Может ли кто-нибудь мне помочь, спасибо.
Я надеюсь, что потребитель Kafka успешно запустился.
Спасибо :-). Нет, это не сработало. Для kafka-topics.bat это сработало, но не для kafka-console-consumer.bat или kafka-console-producer.bat :-(
Приносим извинения, --consumer.config и --producer.config
Спасибо :-). Да, я не внимательно читал журналы консоли, мне сказали, что опция должна быть «--consumer.config», чтобы я мог успешно запустить потребителя. Я отправлял это сообщение, и пришел ваш ответ, ура :-). Пожалуйста, опубликуйте это как ответ, я выберу его :-)

Файл consumer.properties должен быть предоставлен --consumer.config для потребителя консоли.
Кстати, мы можем использовать настройку пользователя и пароля в файле конфигурации вместо файла .properties, давайте поместим следующее содержимое в «kafka_jaas.conf»
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username = "alice"
password = "alice-secret";
};
и удалил следующий параметр из файла Consumer.properties/producer.properties
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username = "alice" password = "alice-secret";
затем мы можем запустить потребителя/производителя со следующей настройкой jvm, как мы запускаем сервер
-Djava.security.auth.login.config=kafka_jaas.conf
давайте возьмем в качестве примера потребителя, мы можем изменить kafka-console-producer.bat, установив jvm, если у нас есть kafka_jaas.conf в папке конфигурации
set JAAS_OPTS=-Djava.security.auth.login.config=file:%~dp0../../config/kafka_jaas.conf
и измените kafka-run-class.bat, добавив параметр jvm %JAAS_OPTS% в команду Java
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% %JAAS_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*
но будьте осторожны, вам все равно НЕОБХОДИМО иметь следующие настройки в файлах conmuser.properties/producer.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
и не забывайте, что вы ДОЛЖНЫ передать файл .properties сценарию потребителя/производителя с помощью их опции --consumer.config или --producer.config.
Вам нужно передать
--command-configпотребителю консоли. Consumer.properties не считывается автоматически.