# Zookeeper中怎么搭建配置集群模式
## 一、Zookeeper集群概述
Zookeeper作為分布式協調服務,集群模式(通常稱為**Ensemble**)是其高可用性的核心實現方式。一個典型的Zookeeper集群由**2n+1個節點**組成(n≥1),采用ZAB協議(Zookeeper Atomic Broadcast)保證數據一致性。集群中超過半數節點存活即可正常服務,例如3節點集群允許1個節點故障。
## 二、環境準備
### 1. 服務器要求
- 至少3臺Linux服務器(生產環境建議物理隔離)
- 相同版本的JDK(推薦JDK8+)
- 網絡互通且開放以下端口:
- 2181:客戶端連接端口
- 2888:節點間數據同步端口
- 3888:選舉通信端口
### 2. 軟件準備
```bash
# 下載Zookeeper(示例版本3.7.1)
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz
mv apache-zookeeper-3.7.1-bin /opt/zookeeper
在每臺服務器上創建數據和日志目錄:
mkdir -p /data/zookeeper/{data,logs}
復制示例配置文件并修改zoo.cfg
:
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
編輯zoo.cfg
(關鍵參數):
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
# 集群節點配置(所有服務器相同)
server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888
在每個節點的dataDir
目錄下創建myid
文件:
# 在節點1執行
echo "1" > /data/zookeeper/data/myid
# 在節點2執行
echo "2" > /data/zookeeper/data/myid
# 在節點3執行
echo "3" > /data/zookeeper/data/myid
在所有節點上執行:
/opt/zookeeper/bin/zkServer.sh start
查看各節點角色(Leader/Follower):
/opt/zookeeper/bin/zkServer.sh status
預期輸出示例:
Mode: leader # 或 follower
連接任意節點測試:
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
參數 | 說明 | 推薦值 |
---|---|---|
tickTime | 基本時間單元(毫秒) | 2000 |
initLimit | 初始化連接最長心跳數 | 10 |
syncLimit | 心跳檢測最大容忍次數 | 5 |
autopurge.snapRetainCount | 保留的快照數 | 3 |
autopurge.purgeInterval | 清理間隔(小時) | 1 |
echo mntr | nc 127.0.0.1 2181
echo stat | nc 127.0.0.1 2181
myid
文件與防火墻設置# 啟用認證
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
zoo.cfg
啟用動態配置:reconfigEnabled=true
standaloneEnabled=false
echo "server.4=192.168.1.104:2888:3888:participant;server.5=192.168.1.105:2888:3888:participant" | zkCli.sh reconfig -add
使用Docker Compose示例:
version: '3'
services:
zoo1:
image: zookeeper:3.7
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: "server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181"
# 修改bin/zkEnv.sh
export JVMFLAGS="-Xms4G -Xmx4G -XX:+UseG1GC"
snapCount=100000
snapshot.compression.method=CHECKED
通過以上步驟,即可完成Zookeeper集群的搭建。建議定期進行故障演練,驗證集群的容錯能力。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。