Kafka 執行命令超時異常: Timed out waiting for a node assignment
問題描述:
搭建了一個kafka集群環境,在使用命令行查看已有topic時,報錯如下:
[root@localhost bin]# kafka-topics.sh --list --bootstrap-server 192.168.135.132:9092,192.168.135.133:9092,192.168.135.134:9092
Error while executing topic command : Timed out waiting for a node assignment. Call: listTopics
[2024-05-08 20:39:59,123] ERROR org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: listTopics(org.apache.kafka.tools.TopicCommand)
問題分析:
由于剛學習 kafka搭建集群,根據網上教程來,教程中三臺kafka都部署在同一臺機器上,所以不需要額外指定kafka實力的ip地址。
而我的環境是使用了三臺虛擬機,分別部署了zookeeper和kafka,所以在沒有指定的情況下,默認都是使用localhost,在執行命令的時候,會找不到對應的ip地址。
問題解決:
修改 kafka 配置文件:
/usr/local/kafka_2.12-3.7.0/config/server.properties
listeners=PLAINTEXT://192.168.135.132:9092
將三臺機器的配置ip改為虛擬機ip地址。
修改保存后,再去重啟kafka。
/usr/local/kafka_2.12-3.7.0/bin/kafka-server-stop.sh/usr/local/kafka_2.12-3.7.0/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.12-3.7.0/config/server.properties
通過在zookeeper上查看節點信息,
進入zookeeper客戶端:
/usr/local/apache-zookeeper-3.8.4-bin/bin/zkCli.sh
查看kafka節點信息:
get /kafka/brokers/ids/1
get /kafka/brokers/ids/2
get /kafka/brokers/ids/3
其中ip信息也改成了真實ip信息。
到此,問題解決。