Kafka 错误连接到节点 ubuntukafka:9092 (id: 0 rack: null) (org.apache.kafka.clients.NetworkClient) java.net.UnknownHostException:

Cod*_*joy 4 java virtualbox python-3.x apache-kafka

我在每个 ubuntu 的 VirtualBox 来宾上都有两台服务器。我可以从我的主机 SSH 连接到这两个机器,并且在这两个机器之间使用 SSH,所以它们都拥有 natnetwork。

我在一台服务器 kafka 上运行,如下所述:

https://kafka.apache.org/quickstart

所以我提出了单节点动物园管理员卡夫卡然后开始。我添加了测试主题。(全部在 MachineA 上。10.75.1.247)

我正在尝试从另一台机器上列出该节点上的主题:

bin/kafka-topics.sh --list --bootstrap-server 10.75.1.247:9092
Run Code Online (Sandbox Code Playgroud)

来自 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.access$200(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)
Run Code Online (Sandbox Code Playgroud)

它确实解析了名称(说 ubuntukafka 而不是 ubuntukafkanode)但失败了。

我错过了什么?我使用 kafka 错了吗?我想我可以拥有一个不错的 kafka 服务器,我所有其他带有数据的服务器也可以在其中生成信息。那么还有多少其他消费者可以从中读取信息呢?

最终我想测试的是我是否可以向我的 kafka 服务器发送消息:

bin/kafka-console-producer.sh --broker-list 10.75.1.247:9092 --topic test
Run Code Online (Sandbox Code Playgroud)

甚至稍后使用 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')
Run Code Online (Sandbox Code Playgroud)

cri*_*007 15

通常,您的主机名似乎无法解析。不ping ubuntukafka工作?如果没有,那么您需要调整您让 Kafka 返回的内容,advertised.listeners使其成为外部 IP 而不是主机名

listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://10.75.1.247:9092
Run Code Online (Sandbox Code Playgroud)

  • PLAINTEXT 是一种协议。这两行已经作为“server.properties”的一部分存在,只需调整它们并取消注释即可。/sf/ask/3009920161/ (2认同)