Apache zookeeper 未知的例外卡夫卡

Apache zookeeper 未知的例外卡夫卡,apache-zookeeper,apache-kafka,Apache Zookeeper,Apache Kafka,我正在尝试设置Kafka集群(实际上是集群中的第一个节点) 我有一个单节点zookeeper群集设置。我正在另一个节点上设置卡夫卡 两者都运行CentOS 6.4,运行IPV6,这有点像PITA。我验证了机器可以使用netcat相互通信 当我启动卡夫卡时,我得到以下异常(导致卡夫卡关闭)。 编辑:我启动了kafka,我必须在server.config文件中设置host.name属性 我能够创建一个测试主题,并从kafka服务器发送消息 但是,在尝试使用这些消息时,我会遇到相同的错误 有什么帮助、

我正在尝试设置Kafka集群(实际上是集群中的第一个节点)

我有一个单节点zookeeper群集设置。我正在另一个节点上设置卡夫卡

两者都运行CentOS 6.4,运行IPV6,这有点像PITA。我验证了机器可以使用netcat相互通信

当我启动卡夫卡时,我得到以下异常(导致卡夫卡关闭)。 编辑:我启动了kafka,我必须在server.config文件中设置
host.name
属性

我能够创建一个测试主题,并从kafka服务器发送消息

但是,在尝试使用这些消息时,我会遇到相同的错误

有什么帮助、建议吗

bin/kafka-console-consumer.sh --zookeeper zk1:2181 --topic test --from-beginning
Exception in thread "main" java.net.UnknownHostException: kafka: kafka: Name or service not known
    at java.net.InetAddress.getLocalHost(InetAddress.java:1473)
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:107)
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:128)
    at kafka.consumer.Consumer$.create(ConsumerConnector.scala:89)
    at kafka.consumer.ConsoleConsumer$.main(ConsoleConsumer.scala:178)
    at kafka.consumer.ConsoleConsumer.main(ConsoleConsumer.scala)
Caused by: java.net.UnknownHostException: kafka: Name or service not known
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
    at java.net.InetAddress.getLocalHost(InetAddress.java:1469)
    ... 5 more
bin/kafka-console-consumer.sh——Zookeer zk1:2181——主题测试——从头开始
线程“main”java.net.UnknownHostException中的异常:kafka:kafka:名称或服务未知
位于java.net.InetAddress.getLocalHost(InetAddress.java:1473)
在卡夫卡。消费者。ZookeeperConsumerConnector。(ZookeeperConsumerConnector.scala:107)
在kafka.consumer.ZookeeperConsumerConnector.(ZookeeperConsumerConnector.scala:128)
位于kafka.consumer.consumer$.create(ConsumerConnector.scala:89)
位于kafka.consumer.ConsoleConsumer$.main(ConsoleConsumer.scala:178)
位于kafka.consumer.ConsoleConsumer.main(ConsoleConsumer.scala)
原因:java.net.UnknownHostException:kafka:名称或服务未知
在java.net.Inet6AddressImpl.lookupAllHostAddr(本机方法)
位于java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
位于java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
位于java.net.InetAddress.getLocalHost(InetAddress.java:1469)
... 还有5个

当您运行bin/kafka console consumer.sh命令kafka加载一个
ConsoleConsumer
,该命令将尝试创建一个具有自动生成的消费者id的消费者。kafka生成消费者id的方法是将本地主机的名称连接到消费者id。因此,问题在于java无法解析我正在使用的开放堆栈VM上本地主机的ip地址

因此,答案是开放堆栈虚拟机正在将本地主机名解析为
kafka
,这是虚拟机的名称。我在Kafka和Zookeeper实例中将所有内容设置为
kafka1

因此,当java调用getLocalHost时,它试图找到
kafka
的IP地址,我在/etc/hosts文件中没有找到该地址

我只是在我的/etc/hosts文件中添加了一个关于卡夫卡的条目,一切都开始很好地工作了


我本以为它会解析为
localhost
,但它没有,它解析为vm的名称,
kafka

,正如noplay指出的问题是kafka无法解析正确的IP,例如,在没有分配公共IP的私有子网中运行的EC2实例上可能会发生这种情况。解决方案概述如下:

hostname
这将显示主机名,类似于ip-10-180-128-217。 然后只需更新您的/etc/hosts

sudo nano /etc/hosts
编辑,例如

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ip-10-180-128-217

互联网连接、URL是否正确?好吧,我知道我可以从卡夫卡服务器与ZOOKEEPER进行通信,因为选出了一位领导人,我创建了一个主题,并发布了一条示例消息。它正在使用不起作用的消息。有些地方的配置不在这里,但我不清楚它是什么。因此我假设
config/server.properties
确实正确设置了
host.name
属性。。您的
/etc/hosts
文件显示了什么?host.name=kafka1;zookeeper.connect=zk1:2181。我在/etc/hosts文件中为“kafka1”和“zk1”提供了具有正确IPV6地址的条目。可以通过使用PING和“nc-z-w 1 kafka1 9092”和“nc-z-w 1 zk1 2181”确认两台服务器可以相互通信我想zookeeper端有一些东西我没有正确设置?当我看到“UnknownHostException:kafka”时,看起来“kafka”是某个地方的默认设置,当然这是不对的。那么您现在的kafka条目是什么样子的?您的条目是什么样子的?127.0.0.1 localhost 127.0.0.1 ip-172-31-0-252编辑主机文件只是一种变通方法-实际的修复方法是正确设置adverted.listener-请参阅