以下是在CentOS上处理Zookeeper网络设置问题的步骤:
ip a 或 ifconfig 查看网卡名称(如 ens33)。systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
/etc/sysconfig/network-scripts/ifcfg-ens33,设置 BOOTPROTO=static、IPADDR、GATEWAY 等参数,重启网络 systemctl restart network。BOOTPROTO=dhcp,重启网络。zoo.cfg 文件
clientPort=2181 和 dataDir(数据目录)。server.x=IP:2888:3888(x 为节点ID),并在 dataDir 下创建 myid 文件写入节点ID。clientPort 配置正确,或通过 zookeeper-server-start.sh 指定 ZOOKEEPER_OPTS="-Dzookeeper.bind_host=0.0.0.0"。firewall-cmd --permanent --zone=public --add-port=2181/tcp # 客户端端口
firewall-cmd --permanent --zone=public --add-port=2888/tcp # 集群通信端口
firewall-cmd --permanent --zone=public --add-port=3888/tcp # 同步端口
firewall-cmd --reload
ping 测试节点间互通。telnet 或 nc 测试端口是否可达:telnet <Zookeeper_IP> 2181
nc -vz <Zookeeper_IP> 2181
zkServer.sh status 查看节点状态,确认是否正常加入集群。IPADDR 并重启网络。dataDir 和 logDir 权限正确(属主为 zookeeper 用户,权限 750)。myid 文件与 zoo.cfg 中的 server.x ID 一致。zoo.cfg 中的 advertisedHostname 一致。参考来源: