如何 运行 一个节点上有两个 zookeeper 服务器
how to run two zookeeper server in one node
我有三个物理节点,每个节点上都安装了 Docker。我在每个 docker 上配置了 Marathon、Flink、Mesos、Zookeeper 和 Hadoop。他们工作得很好。我要分发数据到Flink集群,所以我需要Kafka。
Zookeeper 已经 运行;所以,卡夫卡 运行 没有错误。问题是在这种情况下,当我想创建 Kafka 主题时,我看到了这个错误,我认为这是因为我没有 运行 Kafka 文件夹中的 Zookeeper:
Exception in thread "main" kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
at kafka.zookeeper.ZooKeeperClient$$anonfun$kafka$zookeeper$ZooKeeperClient$$waitUntilConnected.apply$mcV$sp(ZooKeeperClient.scala:230)
at kafka.zookeeper.ZooKeeperClient$$anonfun$kafka$zookeeper$ZooKeeperClient$$waitUntilConnected.apply(ZooKeeperClient.scala:226)
at kafka.zookeeper.ZooKeeperClient$$anonfun$kafka$zookeeper$ZooKeeperClient$$waitUntilConnected.apply(ZooKeeperClient.scala:226)
at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:251)
at kafka.zookeeper.ZooKeeperClient.kafka$zookeeper$ZooKeeperClient$$waitUntilConnected(ZooKeeperClient.scala:226)
at kafka.zookeeper.ZooKeeperClient.(ZooKeeperClient.scala:95)
at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1580)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:57)
at 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 Cannot open channel to 2 at election address /10.32.0.3:3889 (org.apache.zookeeper.server.quorum.QuorumCnxManager)
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:534)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:454)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:435)
at java.lang.Thread.run(Thread.java:748)
zookeeper的配置在第一个节点的“/home/zookeeper-3.4.14/conf/zoo.cfg”:
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 地址的容器。
任何帮助将不胜感激。
问题已解决。我使用了上面的配置,但是对两个 Zookeeper 使用了 dataDir=/var/lib/zookeeper/data。另外,首先,我 运行 Hadoop,然后 运行 Kafka 和 Zookeeper。
我有三个物理节点,每个节点上都安装了 Docker。我在每个 docker 上配置了 Marathon、Flink、Mesos、Zookeeper 和 Hadoop。他们工作得很好。我要分发数据到Flink集群,所以我需要Kafka。 Zookeeper 已经 运行;所以,卡夫卡 运行 没有错误。问题是在这种情况下,当我想创建 Kafka 主题时,我看到了这个错误,我认为这是因为我没有 运行 Kafka 文件夹中的 Zookeeper:
Exception in thread "main" kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING at kafka.zookeeper.ZooKeeperClient$$anonfun$kafka$zookeeper$ZooKeeperClient$$waitUntilConnected.apply$mcV$sp(ZooKeeperClient.scala:230) at kafka.zookeeper.ZooKeeperClient$$anonfun$kafka$zookeeper$ZooKeeperClient$$waitUntilConnected.apply(ZooKeeperClient.scala:226) at kafka.zookeeper.ZooKeeperClient$$anonfun$kafka$zookeeper$ZooKeeperClient$$waitUntilConnected.apply(ZooKeeperClient.scala:226) at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:251) at kafka.zookeeper.ZooKeeperClient.kafka$zookeeper$ZooKeeperClient$$waitUntilConnected(ZooKeeperClient.scala:226) at kafka.zookeeper.ZooKeeperClient.(ZooKeeperClient.scala:95) at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1580) at kafka.admin.TopicCommand$.main(TopicCommand.scala:57) at 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 Cannot open channel to 2 at election address /10.32.0.3:3889 (org.apache.zookeeper.server.quorum.QuorumCnxManager) java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:534)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:454)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:435) at java.lang.Thread.run(Thread.java:748)
zookeeper的配置在第一个节点的“/home/zookeeper-3.4.14/conf/zoo.cfg”:
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 地址的容器。
任何帮助将不胜感激。
问题已解决。我使用了上面的配置,但是对两个 Zookeeper 使用了 dataDir=/var/lib/zookeeper/data。另外,首先,我 运行 Hadoop,然后 运行 Kafka 和 Zookeeper。