首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CentOS 7 部署 ZooKeeper 集群完整指南:從單機到分散式模式

     編輯:PHP 相關知識

前言

Apache ZooKeeper 是分散式應用程式的協調服務核心,廣泛應用於服務發現、配置管理、分散式鎖等場景。本文詳細記錄在 CentOS 7 環境下,從環境準備、單機模式驗證到生產級分散式集群部署的完整流程,包含防火牆配置、myid 設定、集群啟動驗證等關鍵步驟,適合運維與開發人員參考實施。

一、環境準備:JDK 安裝與驗證

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)

二、建立專用用戶與工作目錄

1. 建立 zookeeper 用戶組與用戶

sudo groupadd zookeeper
sudo useradd -g zookeeper zookeeper
echo "zookeeper@1234" | sudo passwd zookeeper --stdin

2. 規劃三節點目錄結構

節點主機名IP 位址資料目錄符號連結
bjrenrui0001192.168.100.200/yanfa/mq/mq → /yanfa/mq
bjrenrui0002192.168.100.201/home/backupfile/mq/mq → /home/backupfile/mq
bjrenrui0003192.168.100.202/home/backupfile/mq/mq → /home/backupfile/mq

關鍵操作: 統一建立 /mq 符號連結,確保三節點路徑一致,便於配置檔案同步。

三、單機模式快速驗證

  1. 下載解壓: 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/zookeeper
  2. 配置檔案: cp /mq/zookeeper/conf/zoo_sample.cfg /mq/zookeeper/conf/zoo.cfg
  3. 啟動服務: sh /mq/zookeeper/bin/zkServer.sh start
  4. 防火牆開放 2181 埠: 編輯 /etc/sysconfig/iptables 新增 -A INPUT -p tcp -s 192.168.100.0/24 -j ACCEPT,重啟 systemctl restart iptables.service
  5. 狀態檢查: 執行 sh zkServer.sh status,輸出 Mode: standalone 即成功。
  6. 客戶端測試: ./bin/zkCli.sh -server 127.0.0.1:2181 進入 CLI 操作節點。

四、分散式集群模式部署(生產環境標準)

1. 核心概念

  • Ensemble / Quorum: 集群稱為 Ensemble,過半節點(Quorum)存活即可對外服務。
  • Leader / Follower: 無固定 Master,Leader 掛掉自動從 Follower 選舉產生新 Leader。
  • 通訊埠: 2888(節點間資料同步)、3888(Leader 選舉)、2181(客戶端連接)。

2. 建立資料與日誌目錄(三節點同步執行)

cd /mq/zookeeper
mkdir -p zookeeperdatadir/{logs,data}

3. 統一配置 zoo.cfg(以 bjrenrui0001 為例,完成後 scp 至其它節點)

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 為選舉埠。

4. 建立 myid 檔案(各節點唯一)

# bjrenrui0001
echo "1" > /mq/zookeeper/zookeeperdatadir/data/myid

# bjrenrui0002
echo "2" > /mq/zookeeper/zookeeperdatadir/data/myid

# bjrenrui0003
echo "3" > /mq/zookeeper/zookeeperdatadir/data/myid

5. 依序啟動三節點服務

sh /mq/zookeeper/bin/zkServer.sh start

注意: 前啟動節點連接未啟動節點時會報錯,屬正常現象,待全部啟動完成後自動恢復。

6. 叢集狀態驗證

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

六、常見問題與最佳實踐

  • 防火牆: 必須開放 2181/2888/3888 三個埠,且限制來源 IP 段(如 192.168.100.0/24)。
  • 時間同步: 三節點 NTP 對時,避免選舉異常。
  • 磁碟隔離: dataLogDir 建議掛載獨立磁碟,提升寫入效能。
  • JVM 調優: 生產環境建議在 zkServer.sh 中配置 JVMFLAGS="-Xms2g -Xmx2g"。
  • 監控指標: 關注 OutstandingRequests、AvgLatency、Followers 數量。

結語

完成上述步驟,即可獲得一個高可用的三節點 ZooKeeper 集群。後續可整合 Kafka、Dubbo、HBase 等生態組件,發揮協調服務核心價值。建議配合 Ansible 或 SaltStack 實現配置自動化,降低運維成本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved