【问题标题】:Kafka cannot resolve Zookeper's DNS nameKafka 无法解析 Zookeper 的 DNS 名称
【发布时间】:2017-04-06 16:10:23
【问题描述】:

我有一个 kafka 0.10.1.0 集群(2 个节点)和 zookeeper 3.4.6(3 个节点)

这些集群在this tutorial 之后托管在 Kubernetes 上。

来自Kafka的server.properties的相关条目:

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://kafka.internal.<companyname>.com:9092
zookeeper.connect=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181

在服务器启动时,每个 Kafka 代理都会快速失败,并出现以下情况。对我来说,它似乎无法解析 DNS 名称 zookeeper-1。我还尝试从zookeeper.connect 中删除端口,尽管我阅读了the relevant code,但我认为这不会产生影响。

当然,我确认zookeeper-1 可以在集群内解决。集群内的其他容器可以解析该名称。

我还尝试了一系列其他别名,包括服务的 DNS 名称和 Zookeeper 的负载平衡器,我独立确认所有这些都有效。在每种情况下,Kafka 单独报告了Name or service not known

[2016-11-22 19:55:45,506] INFO Initiating client connection, connectString=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181 sessionTimeout=6000 watcher=org.I0Itec.zkclient.ZkClient@7722c3c3 (org.apache.zookeeper.ZooKeeper)
[2016-11-22 19:56:05,571] INFO Terminate ZkClient event thread. (org.I0Itec.zkclient.ZkEventThread)
[2016-11-22 19:56:05,572] FATAL Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
org.I0Itec.zkclient.exception.ZkException: Unable to connect to zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
    at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:71)
    at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:1227)
    at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:156)
    at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:130)
    at kafka.utils.ZkUtils$.createZkClientAndConnection(ZkUtils.scala:76)
    at kafka.utils.ZkUtils$.apply(ZkUtils.scala:58)
    at kafka.server.KafkaServer.initZk(KafkaServer.scala:327)
    at kafka.server.KafkaServer.startup(KafkaServer.scala:200)
    at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:39)
    at kafka.Kafka$.main(Kafka.scala:67)
    at kafka.Kafka.main(Kafka.scala)
Caused by: java.net.UnknownHostException: zookeeper-1: Name or service not known
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
    at java.net.InetAddress.getAllByName(InetAddress.java:1192)
    at java.net.InetAddress.getAllByName(InetAddress.java:1126)
    at org.apache.zookeeper.client.StaticHostProvider.<init>(StaticHostProvider.java:61)
    at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:446)
    at org.apache.zookeeper.ZooKeeper.<init>(ZooKeeper.java:380)
    at org.I0Itec.zkclient.ZkConnection.connect(ZkConnection.java:69)
    ... 10 more
[2016-11-22 19:56:05,575] INFO shutting down (kafka.server.KafkaServer)
[2016-11-22 19:56:05,616] INFO shut down completed (kafka.server.KafkaServer)

与 Kafka 映像相关的其他信息:它基于 wurstmeister/kafka-docker,但更新为继承自 openjdk:8-jre

【问题讨论】:

  • 您是否尝试过为这些 PetSet 使用完整的限定域名?解析方法通常不适用于短名称。
  • 你能ping通zookeeper-1吗?可以解析主机名吗?

标签: docker dns apache-kafka kubernetes apache-zookeeper


【解决方案1】:

原来这是 Kubernetes 本身的问题。

在不相关的升级到 v1.4.6 并且没有其他更改后,名称能够正常解析。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    相关资源
    最近更新 更多