[英]failed to connect to my local kafka broker from a local docker container
我有一个关于从 docker 连接到 kafka broker 的问题。
我在本地机器上运行了 zookeeper 和 kafka 代理。 我有一个 docker 容器在同一台本地机器上运行 -.network=host 我想从 docker 容器内部向我的本地 kafka 代理发送消息。
从 docker 内部,我可以连接到 zookeeper 并通过运行查找现有主题:./bin/ ./bin/kafka-topics.sh --zookeeper localhost:2181 --list
但是我无法使用kafka-console-consumer.sh
或kafka-console-producer.sh
连接到 kafka 代理,
通过运行: bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
我得到:
[2019-10-17 19:12:04,097] WARN [Consumer clientId=consumer-1, groupId=console-consumer-99825] Error connecting to node aictjt:9092 (id: 0 rack: null) (org.apache.kafka.clients.NetworkClient)
java.net.UnknownHostException: aictjt
at java.net.InetAddress.getAllByName0(InetAddress.java:1281)
at java.net.InetAddress.getAllByName(InetAddress.java:1193)
at java.net.InetAddress.getAllByName(InetAddress.java:1127)
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.access$600(NetworkClient.java:68)
at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:1114)
at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:1005)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:537)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:262)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:233)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:224)
at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.awaitMetadataUpdate(ConsumerNetworkClient.java:161)
at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:259)
at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:326)
at org.apache.kafka.clients.consumer.KafkaConsumer.updateAssignmentMetadataIfNeeded(KafkaConsumer.java:1251)
at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1216)
at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1201)
at kafka.tools.ConsoleConsumer$ConsumerWrapper.receive(ConsoleConsumer.scala:439)
at kafka.tools.ConsoleConsumer$.process(ConsoleConsumer.scala:105)
at kafka.tools.ConsoleConsumer$.run(ConsoleConsumer.scala:77)
at kafka.tools.ConsoleConsumer$.main(ConsoleConsumer.scala:54)
at kafka.tools.ConsoleConsumer.main(ConsoleConsumer.scala)
有什么帮助吗?
谢谢
我找到的解决方案是:
在 kafka/config/server.properties
设置listeners=PLAINTEXT://localhost:9092
,注意默认listeners=PLAINTEXT://:9092
在某些情况下有效,但是对于这台特定的机器,我必须将localhost
放在那里。
使用更新的配置重新运行 kafka 代理。
并且连接在我的 docker 容器内部工作(使用 --network=host)。
上述解决方案对我不起作用。 花了一些时间后,我发现问题是因为 zookeeper 和 kafka 实例没有在我的本地运行。 这个 ans 在 mac 上测试过,但我认为它适用于所有平台
如果您通过自制软件安装了 zookeeper 和 kafka,那么:
首先通过运行命令在本地运行 zookeeper:
zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties
然后运行
kafka-server-start /usr/local/etc/kafka/server.properties
在此之后,kafka 的命令将运行而不会出现错误
java.net.UnknownHostException: aictjt
例如
kafka-topics --list --bootstrap-server localhost:9092
对于那些没有安装自制软件的人:
使用安装了 kafka 的根目录打开终端
./bin/zookeeper-server-start.sh /usr/local/etc/kafka/zookeeper.properties
./bin/kafka-server-start.sh /usr/local/etc/kafka/server.properties
在此之后,kafka 的命令将运行而不会出现错误
java.net.UnknownHostException: aictjt
例如
./bin/kafka-topics.sh --list --bootstrap-server localhost:9092
本地 docker 容器抛出“java.net.UnknownHostException”的原因是,它无法连接到 kafka 代理。 这是连接问题。
如果您按照以下步骤操作,它将起作用,
注意:在非本地环境中,如果您是第一次设置 stream,并且面临类似的问题来连接到代理并观察到 UnknownHostException。 尝试重新启动代理和动物园管理员。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.