【问题标题】:how to run two zookeeper server in one node如何在一个节点上运行两个 Zookeeper 服务器
【发布时间】:2019-06-16 22:44:19
【问题描述】:

我有三个物理节点,每个节点都安装了 Docker。我已经在每个 docker 上配置了 Marathon、Flink、Mesos、Zookeeper 和 Hadoop。他们工作得很好。我必须将数据分发到 Flink 集群,所以我需要 Kafka。 Zookeeper 已经运行;所以,Kafka 运行没有错误。问题是在这种情况下,当我想创建 Kafka 主题时,我看到了这个错误,我认为这是因为我没有运行 Kafka 文件夹中的 Zookeeper:

线程“主”kafka.zookeeper.ZooKeeperClientTimeoutException 中的异常:处于状态时等待连接超时:CONNECTING 在 kafka.zookeeper.ZooKeeperClient$$anonfun$kafka$zookeeper$ZooKeeperClient$$waitUntilConnected$1.apply$mcV$sp(ZooKeeperClient.scala:230) 在 kafka.zookeeper.ZooKeeperClient$$anonfun$kafka$zookeeper$ZooKeeperClient$$waitUntilConnected$1.apply(ZooKeeperClient.scala:226) 在 kafka.zookeeper.ZooKeeperClient$$anonfun$kafka$zookeeper$ZooKeeperClient$$waitUntilConnected$1.apply(ZooKeeperClient.scala:226) 在 kafka.utils.CoreUtils$.inLock(CoreUtils.scala:251) 在 kafka.zookeeper.ZooKeeperClient.kafka$zookeeper$ZooKeeperClient$$waitUntilConnected(ZooKeeperClient.scala:226) 在 kafka.zookeeper.ZooKeeperClient.(ZooKeeperClient.scala:95) 在 kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1580) 在 kafka.admin.TopicCommand$.main(TopicCommand.scala:57) 在 kafka.admin.TopicCommand.main(TopicCommand.scala)

另外,我改变了在 Kafka 文件夹中使用 Zookeeper 的计划。为此,我在 Kafka 文件夹中使用 2186,2889,3889 等新端口配置 Zookeeper。但是当我用这个命令运行 Zookeeper 时:

  /home/kafka_2.11-2.0.0/bin/zookeeper-server-start.sh /home/kafka_2.11-2.0.0/config/zookeeper.properties

我收到此错误:

WARN 无法在选举地址 /10.32.0.3:3889 (org.apache.zookeeper.server.quorum.QuorumCnxManager) 上打开通道 2 java.net.ConnectException:连接被拒绝(连接被拒绝) 在 java.net.PlainSocketImpl.socketConnect(Native Method)

在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 在 java.net.Socket.connect(Socket.java:589)

在 org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)

在 org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:534)

在 org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:454)

在 org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:435) 在 java.lang.Thread.run(Thread.java:748)

第一个节点“/home/zookeeper-3.4.14/conf/zoo.cfg”中的zookeeper配置:

    tickTime=2000
    initLimit=10
    syncLimit=5        
    dataDir=/var/lib/zookeeper/data
    clientPort=2181
    server.1=0.0.0.0:2888:3888
    server.2=10.32.0.3:2888:3888
    server.3=10.32.0.4:2888:3888

Kafka 文件夹中的 Zookeeper 配置对于第一个节点是这样的:

     dataDir=/tmp/zookeeper/data
     tickTime=2000
     initLimit=10
     syncLimit=5
     clientPort=2186
     server.1=0.0.0.0:2889:3889
     server.2=10.32.0.3:2889:3889
     server.3=10.32.0.4:2889:3889

能否请您指导我如何在一个 docker 容器中运行两个 Zookeeper?顺便说一句,我不能将另一个容器用于 Kafka 集群,因为我需要两个具有一个公共 IP 地址的容器。

任何帮助将不胜感激。

【问题讨论】:

  • 如果你有 Hadoop,那么你就会有 YARN,它也可以运行容器,所以你不需要 Mesos/Marathon
  • 亲爱的@cricket_007,我选择了Mesos,因为它比Yarn有更多的功能。

标签: docker apache-kafka apache-zookeeper


【解决方案1】:

问题解决了。我使用了上述配置,但对两个 Zookeeper 都使用了 dataDir=/var/lib/zookeeper/data。另外,我首先运行 Hadoop,然后使用 Zookeeper 运行 Kafka。

【讨论】:

    猜你喜欢
    • 2014-07-24
    • 2014-09-07
    • 1970-01-01
    • 2021-10-23
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多