一、起初無非就是更改server.properties中的配置,以下三項
1.14.247.152的server.properties
broker.id=0
log.dirs=/home/chentongchuan/test/kafka/kafka_2.12-3.0.0/datas
zookeeper.connect=1.14.247.152:2181,159.75.241.252:2181,112.74.188.40:2181/kafka
159.75.241.252的server.properties
broker.id=1
log.dirs=/test/kafka/kafka_2.12-3.0.0/datas
zookeeper.connect=1.14.247.152:2181,159.75.241.252:2181,112.74.188.40:2181/kafka
112.74.188.40的server.properties
broker.id=2
log.dirs=log.dirs=/root/test/kafka/kafka_2.12-3.0.0/datas
zookeeper.connect=1.14.247.152:2181,159.75.241.252:2181,112.74.188.40:2181/kafka
二、分別在三臺服務(wù)器的bin目錄下啟動kafka
./kafka-server-start.sh -daemon ../config/server.properties
三、jps命令查看狀態(tài)啟動成功后,連接kafka并創(chuàng)建topics
kafka-topics.sh --bootstrap-server 1.14.247.152:9092 --create --partitions 1 --replication-factor 3 --topic first
報錯:
Error while executing topic command : Timed out waiting for a node assignment. Call: createTopics
[2022-03-21 10:43:47,051] ERROR org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: createTopics
(kafka.admin.TopicCommand$)
大概意思是等待分配結(jié)點超時。
查了網(wǎng)上博客:
由于配置的時候直接使用的IP,所以也就無需配置映射關(guān)系了。所以我嘗試了辦法1:
advertised.host.name=1.14.247.152
advertised.port=9092
還是同樣的超時問題。
又返回server.properties查看:發(fā)現(xiàn)在32行左右有這段話
#Hostname and port the broker will advertise to producers and consumers. # If not set, it uses the value for "listeners" if configured.
# Otherwise, it will use the value returned from
# java.net.InetAddress.getCanonicalHostName().
# advertised.listeners=PLAINTEXT://yourhostname:9092
大概意思是:
代理將向生產(chǎn)者和消費者發(fā)布主機(jī)名和端口。 如果沒有設(shè)置,則使用“l(fā)isteners”的值。 否則,它將使用從java.net.InetAddress.getCanonicalHostName()返回的值。
于是刪除advertised.host.name和advertised.port,在三臺服務(wù)器配置:
advertised.listeners=PLAINTEXT://1.14.247.152:9092
信心滿滿,啟動,連接kafka并創(chuàng)建topics,再次出現(xiàn)相同的超時異常。
由于之前三個服務(wù)器,只有兩個服務(wù)器開了9092端口(阿里/騰訊云安全組規(guī)則 + 防火墻關(guān)閉,或阿里/騰訊云安全組規(guī)則 + 防火墻開放9092端口),此時馬上開通所有服務(wù)器的9092端口,成功:
四、為了驗證究竟是配置的問題還是端口未開放的問題
在三臺服務(wù)器9092端口都開放的情況下:
1、去掉advertised.listeners,加上advertised.host.name和advertised.port:成功
2、去掉advertised.host.name和advertised.port,加上advertised.listeners:成功
3、去掉advertised.host.name和advertised.port、advertised.listeners:成功文章來源:http://www.zghlxwxcb.cn/news/detail-418505.html
結(jié)論:不管有沒有指定主機(jī)和端口,只要端口有開放即可。advertised.xxx其實是代理將向生產(chǎn)者和消費者發(fā)布主機(jī)名和端口。沒有配置的時候,底層會自動通過getCanonicalHostName()來獲取。如果配置了主機(jī)名,還需要在host文件中配置映射。文章來源地址http://www.zghlxwxcb.cn/news/detail-418505.html
到了這里,關(guān)于部署kafka集群后創(chuàng)建主題超時Timed out waiting for a node assignment. Call:createTopics (kafka.admin.TopicCommand的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!