Kafka 3节点集群zookeeper连接失败
Kafka 3 node cluster zookeeper fails to connect
我一直在为 3 节点 Kafka 集群设置而苦恼。我查看了所有 SO 答案,似乎一切都正确。但是,Zookeeper 无法同步,因此无法连接 kafka 服务器。
这是我的动物园管理员配置
dataDir=/home/kafka/zookeeper/data
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=50
server.1=0.0.0.0:2888:3888
server.2=139.59.80.73:2888:3888
server.3=139.59.80.76:2888:3888
initLimit=5
syncLimit=2
在其他每台服务器上,我都按照 SO 答案之一的建议将 server.id 设置为 0.0.0.0。所以 server.2 在第二台机器上会有 0.0.0.0。我仔细检查了数据目录中的 myid 文件是否也有相应的 ID。
即使等了一段时间后动物园管理员服务也没有同步,我一直看到这些异常:
2017-07-31 12:40:49,110] WARN Cannot open channel to 1 at election address /139.59.80.4:3888 (org.apache.zookeeper.server.quorum.QuorumCnxManager)
java.net.NoRouteToHostException: No route to host (Host unreachable)
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:562)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:538)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)
at java.lang.Thread.run(Thread.java:748)
困扰我的是,我可以在端口 2181 上远程登录到其他机器,但 zookeeper 服务无法连接。完全困惑。任何帮助将不胜感激。
原来是端口问题。以下端口 2888 和 3888 必须打开。我在 Linux 上禁用了 IPTables,但这似乎从来没有奏效。我转移到 AWS 并打开了两个端口,zookeeper 开始正常。
我已经在 RedHat Linux 的 4 机器集群上以集成模式安装了 zookeeper。我遇到了同样的问题,在尝试了 Whosebug 中的所有内容之后,我所做的是关闭所有机器上的 iptables 和防火墙,但仍然存在错误,经过一些思考后,我厌倦了为所有机器启用无密码 ssh,这解决了我的问题,现在我的 zookeper's所有 4 台机器都已启动 运行
这是一个很老的问题,但我遇到了同样的问题,想分享我的解决方案。我在 Centos 7 中遇到了这个问题。
首先,您可以远程登录到 ip_addr:3888 以确保不会到达 host/port:
telnet ip_addr 3888
telnet ip addr 2888
其次你可以把防火墙关了再telnet一下确定是不是防火墙的问题:
sudo systemctl stop firewalld.service
如果之后还能用,那绝对是防火墙的问题。
要解决此问题,您应该打开端口:
sudo firewall-cmd --zone=public --add-port=3888/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2888/tcp --permanent
sudo firewall-cmd --reload
我一直在为 3 节点 Kafka 集群设置而苦恼。我查看了所有 SO 答案,似乎一切都正确。但是,Zookeeper 无法同步,因此无法连接 kafka 服务器。
这是我的动物园管理员配置
dataDir=/home/kafka/zookeeper/data
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=50
server.1=0.0.0.0:2888:3888
server.2=139.59.80.73:2888:3888
server.3=139.59.80.76:2888:3888
initLimit=5
syncLimit=2
在其他每台服务器上,我都按照 SO 答案之一的建议将 server.id 设置为 0.0.0.0。所以 server.2 在第二台机器上会有 0.0.0.0。我仔细检查了数据目录中的 myid 文件是否也有相应的 ID。
即使等了一段时间后动物园管理员服务也没有同步,我一直看到这些异常:
2017-07-31 12:40:49,110] WARN Cannot open channel to 1 at election address /139.59.80.4:3888 (org.apache.zookeeper.server.quorum.QuorumCnxManager)
java.net.NoRouteToHostException: No route to host (Host unreachable)
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:562)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:538)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)
at java.lang.Thread.run(Thread.java:748)
困扰我的是,我可以在端口 2181 上远程登录到其他机器,但 zookeeper 服务无法连接。完全困惑。任何帮助将不胜感激。
原来是端口问题。以下端口 2888 和 3888 必须打开。我在 Linux 上禁用了 IPTables,但这似乎从来没有奏效。我转移到 AWS 并打开了两个端口,zookeeper 开始正常。
我已经在 RedHat Linux 的 4 机器集群上以集成模式安装了 zookeeper。我遇到了同样的问题,在尝试了 Whosebug 中的所有内容之后,我所做的是关闭所有机器上的 iptables 和防火墙,但仍然存在错误,经过一些思考后,我厌倦了为所有机器启用无密码 ssh,这解决了我的问题,现在我的 zookeper's所有 4 台机器都已启动 运行
这是一个很老的问题,但我遇到了同样的问题,想分享我的解决方案。我在 Centos 7 中遇到了这个问题。
首先,您可以远程登录到 ip_addr:3888 以确保不会到达 host/port:
telnet ip_addr 3888
telnet ip addr 2888
其次你可以把防火墙关了再telnet一下确定是不是防火墙的问题:
sudo systemctl stop firewalld.service
如果之后还能用,那绝对是防火墙的问题。 要解决此问题,您应该打开端口:
sudo firewall-cmd --zone=public --add-port=3888/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2888/tcp --permanent
sudo firewall-cmd --reload