以下是在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 一致。參考來源: