Kafka 错误连接到节点 ubuntukafka:9092 (id: 0 rack: null) (org.apache.kafka.clients.NetworkClient) java.net.UnknownHostException:
Kafka Error connecting to node ubuntukafka:9092 (id: 0 rack: null) (org.apache.kafka.clients.NetworkClient) java.net.UnknownHostException:
我在 VirtualBox 客户机上各有两台服务器 ubuntu。我可以从我的主机通过 SSH 连接到两台机器,并在两台机器之间使用 SSH,这样它们都有 natnetwork。
我 运行 在一台服务器上 kafka 如下所述:
https://kafka.apache.org/quickstart
所以我提出了单节点zookeper
卡夫卡随后开始。我添加了测试主题。
(全部在 MachineA 上。10.75.1.247)
我正在尝试从另一台机器上列出该节点上的主题:
bin/kafka-topics.sh --list --bootstrap-server 10.75.1.247:9092
来自 MachineB (10.75.1.2)
这样做会导致错误一遍又一遍:
[2019-09-16 23:57:07,864] WARN [AdminClient clientId=adminclient-1] Error connecting to node ubuntukafka:9092 (id: 0 rack: null) (org.apache.kafka.clients.NetworkClient)
java.net.UnknownHostException: ubuntukafka
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:797)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298)
at org.apache.kafka.clients.ClientUtils.resolve(ClientUtils.java:104)
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.currentAddress(ClusterConnectionStates.java:403)
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.access0(ClusterConnectionStates.java:363)
at org.apache.kafka.clients.ClusterConnectionStates.currentAddress(ClusterConnectionStates.java:151)
at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:943)
at org.apache.kafka.clients.NetworkClient.ready(NetworkClient.java:288)
at org.apache.kafka.clients.admin.KafkaAdminClient$AdminClientRunnable.sendEligibleCalls(KafkaAdminClient.java:925)
at org.apache.kafka.clients.admin.KafkaAdminClient$AdminClientRunnable.run(KafkaAdminClient.java:1140)
at java.base/java.lang.Thread.run(Thread.java:834)
它确实解析了名称
(说 ubuntukafka 而不是 ubuntukafkanode)但失败了。
我错过了什么?我使用kafka错了吗?我想我可以有一个很好的 kafka 服务器,我所有其他有数据的服务器也可以产生信息。那么有多少其他消费者可以从中读取信息呢?
最终我想测试的是我是否可以向我的 kafka 服务器发送消息:
bin/kafka-console-producer.sh --broker-list 10.75.1.247:9092 --topic test
甚至在以后使用 python 向服务器生成消息。
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='10.75.1.247:9092')
for _ in range(100):
try:
producer.send('test', b'some_message_bytes')
except:
print('doh')
一般来说,您的主机名似乎无法解析。 ping ubuntukafka
有效吗?如果不是,那么您需要通过 advertised.listeners
将您制作的 Kafka return 调整为外部 IP 而不是主机名
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://10.75.1.247:9092
其中,10.75.1.247
是外部机器要解析的网络地址(例如确保你也能ping通那个地址)
仅更改 listeners=PLAINTEXT://localhost:9092 对我有用,无需在服务器配置中更改 advertised.listeners 属性
我在 VirtualBox 客户机上各有两台服务器 ubuntu。我可以从我的主机通过 SSH 连接到两台机器,并在两台机器之间使用 SSH,这样它们都有 natnetwork。
我 运行 在一台服务器上 kafka 如下所述:
https://kafka.apache.org/quickstart
所以我提出了单节点zookeper 卡夫卡随后开始。我添加了测试主题。 (全部在 MachineA 上。10.75.1.247)
我正在尝试从另一台机器上列出该节点上的主题:
bin/kafka-topics.sh --list --bootstrap-server 10.75.1.247:9092
来自 MachineB (10.75.1.2)
这样做会导致错误一遍又一遍:
[2019-09-16 23:57:07,864] WARN [AdminClient clientId=adminclient-1] Error connecting to node ubuntukafka:9092 (id: 0 rack: null) (org.apache.kafka.clients.NetworkClient)
java.net.UnknownHostException: ubuntukafka
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:797)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298)
at org.apache.kafka.clients.ClientUtils.resolve(ClientUtils.java:104)
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.currentAddress(ClusterConnectionStates.java:403)
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.access0(ClusterConnectionStates.java:363)
at org.apache.kafka.clients.ClusterConnectionStates.currentAddress(ClusterConnectionStates.java:151)
at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:943)
at org.apache.kafka.clients.NetworkClient.ready(NetworkClient.java:288)
at org.apache.kafka.clients.admin.KafkaAdminClient$AdminClientRunnable.sendEligibleCalls(KafkaAdminClient.java:925)
at org.apache.kafka.clients.admin.KafkaAdminClient$AdminClientRunnable.run(KafkaAdminClient.java:1140)
at java.base/java.lang.Thread.run(Thread.java:834)
它确实解析了名称 (说 ubuntukafka 而不是 ubuntukafkanode)但失败了。
我错过了什么?我使用kafka错了吗?我想我可以有一个很好的 kafka 服务器,我所有其他有数据的服务器也可以产生信息。那么有多少其他消费者可以从中读取信息呢?
最终我想测试的是我是否可以向我的 kafka 服务器发送消息:
bin/kafka-console-producer.sh --broker-list 10.75.1.247:9092 --topic test
甚至在以后使用 python 向服务器生成消息。
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='10.75.1.247:9092')
for _ in range(100):
try:
producer.send('test', b'some_message_bytes')
except:
print('doh')
一般来说,您的主机名似乎无法解析。 ping ubuntukafka
有效吗?如果不是,那么您需要通过 advertised.listeners
将您制作的 Kafka return 调整为外部 IP 而不是主机名
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://10.75.1.247:9092
其中,10.75.1.247
是外部机器要解析的网络地址(例如确保你也能ping通那个地址)
仅更改 listeners=PLAINTEXT://localhost:9092 对我有用,无需在服务器配置中更改 advertised.listeners 属性