Apache ZooKeeper 是分散式應用程式的協調服務核心,廣泛應用於服務發現、配置管理、分散式鎖等場景。本文詳細記錄在 CentOS 7 環境下,從環境準備、單機模式驗證到生產級分散式集群部署的完整流程,包含防火牆配置、myid 設定、集群啟動驗證等關鍵步驟,適合運維與開發人員參考實施。
ZooKeeper 運行依賴 Java 環境,建議使用 OpenJDK 1.8 版本。
# 查詢已安裝 Java 套件
rpm -qa | grep java
# 安裝 OpenJDK 1.8
sudo yum install -y java-1.8.0-openjdk.x86_64
# 驗證版本
java -version
預期輸出:
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
sudo groupadd zookeeper
sudo useradd -g zookeeper zookeeper
echo "zookeeper@1234" | sudo passwd zookeeper --stdin
| 節點主機名 | IP 位址 | 資料目錄 | 符號連結 |
|---|---|---|---|
| bjrenrui0001 | 192.168.100.200 | /yanfa/mq | /mq → /yanfa/mq |
| bjrenrui0002 | 192.168.100.201 | /home/backupfile/mq | /mq → /home/backupfile/mq |
| bjrenrui0003 | 192.168.100.202 | /home/backupfile/mq | /mq → /home/backupfile/mq |
關鍵操作: 統一建立 /mq 符號連結,確保三節點路徑一致,便於配置檔案同步。
wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.7/zookeeper-3.4.7.tar.gz && tar zxvf zookeeper-3.4.7.tar.gz -C /mq && ln -s /mq/zookeeper-3.4.7 /mq/zookeepercp /mq/zookeeper/conf/zoo_sample.cfg /mq/zookeeper/conf/zoo.cfgsh /mq/zookeeper/bin/zkServer.sh start/etc/sysconfig/iptables 新增 -A INPUT -p tcp -s 192.168.100.0/24 -j ACCEPT,重啟 systemctl restart iptables.servicesh zkServer.sh status,輸出 Mode: standalone 即成功。./bin/zkCli.sh -server 127.0.0.1:2181 進入 CLI 操作節點。cd /mq/zookeeper
mkdir -p zookeeperdatadir/{logs,data}
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/mq/zookeeper/zookeeperdatadir/data
dataLogDir=/mq/zookeeper/zookeeperdatadir/logs
clientPort=2181
server.1=bjrenrui0001:2888:3888
server.2=bjrenrui0002:2888:3888
server.3=bjrenrui0003:2888:3888
參數解析: server.A=B:C:D 中 A 為節點 ID(對應 myid),B 為主機名/IP,C 為資料同步埠,D 為選舉埠。
# bjrenrui0001
echo "1" > /mq/zookeeper/zookeeperdatadir/data/myid
# bjrenrui0002
echo "2" > /mq/zookeeper/zookeeperdatadir/data/myid
# bjrenrui0003
echo "3" > /mq/zookeeper/zookeeperdatadir/data/myid
sh /mq/zookeeper/bin/zkServer.sh start
注意: 前啟動節點連接未啟動節點時會報錯,屬正常現象,待全部啟動完成後自動恢復。
sh /mq/zookeeper/bin/zkServer.sh status
預期輸出:一台 Mode: leader,兩台 Mode: follower,即集群正常運行。
任意機器解壓 ZooKeeper 包,無需配置即可連接:
sh /mq/zookeeper/bin/zkCli.sh -server bjrenrui0001:2181
sh /mq/zookeeper/bin/zkCli.sh -server bjrenrui0002:2181
sh /mq/zookeeper/bin/zkCli.sh -server bjrenrui0003:2181
dataLogDir 建議掛載獨立磁碟,提升寫入效能。zkServer.sh 中配置 JVMFLAGS="-Xms2g -Xmx2g"。OutstandingRequests、AvgLatency、Followers 數量。完成上述步驟,即可獲得一個高可用的三節點 ZooKeeper 集群。後續可整合 Kafka、Dubbo、HBase 等生態組件,發揮協調服務核心價值。建議配合 Ansible 或 SaltStack 實現配置自動化,降低運維成本。