Zookeeper踩坑记

在使用Zookeeper 3.4.10搭建新集群时遇到连接问题,配置过程中发现由于非静态IP导致节点间无法正常通信。解决办法是将Zookeeper配置中的host改为0.0.0.0,以便接受所有网络接口的连接请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

还记得上一次配置Zookeeper是半年以前的事了,这半年一直没有改动Zookeeper的配置文件,直到实习回校,自己的集群没有,重新下载搭一个Zookeeper集群,使用的最新的Zookeeper 3.4.10,结果立马踩到了坑里面,搞了一两个小时才弄好。

一、配置Zookeeper

我采用的是常见的配置。

数据目录:

/home/lee/data/zookeeper
分别配置了myid为

1,2,3

配置Zookeeper的配置文件

tickTime=2000
dataDir=/home/dengyiping/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=hadoop-1:2888:3888
server.2=hadoop-2:2888:3888
server.3=hadoop-3:2888:3888

然后start结果显示,怎么都连不上其他的两个节点。

二、解决办法

将当前节点的host改成0.0.0.0

tickTime=2000
dataDir=/home/dengyiping/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=0.0.0.0:2888:3888
server.2=hadoop-2:2888:3888
server.3=hadoop-3:2888:3888

三、分析原因

有人是这么说的

How have defined the ip of the local server in each node? If you have given the public ip, then the listener would have failed to connect to the port. You must specify 0.0.0.0 for the current node.

原来是非静态IP惹的祸。我的新集群是非静态IP的。
先看到我的hosts文件.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.36.8.138 hadoop-1
10.36.8.139 hadoop-2
10.36.8.140 hadoop-3

由于我并没有设置静态IP,因此 当寻找 当前的 域名时,找到的是 10.36.8.138 这个地址。

并不是本机地址

改成如下解决问题

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
0.0.0.0  hadoop-2

10.36.8.138 hadoop-1
10.36.8.140 hadoop-3
~                     

注意:如果设置的是静态IP则不会产生这个问题,因为查找域名时,会直接链接到本地网卡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值