Неожиданный запрос Kafka типа METADATA во время установления связи SASL при подключении потребителя к серверу Kafka

У меня есть «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 успешно запустился.

Вам нужно передать --command-config потребителю консоли. Consumer.properties не считывается автоматически.

OneCricketeer 02.06.2024 14:34

Спасибо :-). Нет, это не сработало. Для kafka-topics.bat это сработало, но не для kafka-console-consumer.bat или kafka-console-producer.bat :-(

leiwang 03.06.2024 03:23

Приносим извинения, --consumer.config и --producer.config

OneCricketeer 03.06.2024 03:46

Спасибо :-). Да, я не внимательно читал журналы консоли, мне сказали, что опция должна быть «--consumer.config», чтобы я мог успешно запустить потребителя. Я отправлял это сообщение, и пришел ваш ответ, ура :-). Пожалуйста, опубликуйте это как ответ, я выберу его :-)

leiwang 03.06.2024 04:54
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
1
4
108
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Файл 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.

Другие вопросы по теме

Похожие вопросы