# Linux系統如何部署Zookeeper集群
## 一、Zookeeper簡介
Apache Zookeeper是一個開源的分布式協調服務,由雅虎創建并貢獻給Apache基金會。它為分布式應用提供一致性服務,包括:
- 配置維護
- 域名服務
- 分布式同步
- 組服務等
Zookeeper通過**ZAB協議(Zookeeper Atomic Broadcast)**保證分布式一致性,典型應用場景包括:
- Hadoop/YARN高可用
- Kafka集群協調
- Dubbo服務注冊中心
## 二、環境準備
### 1. 服務器規劃
建議至少3個節點組成集群(滿足奇數投票機制):
| 主機名 | IP地址 | 角色 |
|----------|-------------|---------------|
| zk-node1 | 192.168.1.10| Leader/Follower|
| zk-node2 | 192.168.1.11| Leader/Follower|
| zk-node3 | 192.168.1.12| Leader/Follower|
### 2. 系統要求
- 操作系統:CentOS 7+/Ubuntu 18.04+
- Java環境:JDK 8+
- 內存:≥2GB(生產環境建議4GB+)
- 磁盤:≥10GB(建議SSD)
### 3. 基礎配置
```bash
# 所有節點執行
sudo timedatectl set-timezone Asia/Shanghai
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 配置hosts
echo "192.168.1.10 zk-node1
192.168.1.11 zk-node2
192.168.1.12 zk-node3" | sudo tee -a /etc/hosts
# CentOS
sudo yum install -y java-1.8.0-openjdk-devel
# Ubuntu
sudo apt install -y openjdk-8-jdk
# 驗證安裝
java -version
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
sudo mv apache-zookeeper-3.6.3-bin /opt/zookeeper
sudo mkdir -p /data/zookeeper/{data,logs}
sudo chown -R $(whoami):$(whoami) /data/zookeeper
復制樣例配置并修改zoo.cfg
:
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
修改配置內容:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
maxClientCnxns=60
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
# 集群配置
server.1=zk-node1:2888:3888
server.2=zk-node2:2888:3888
server.3=zk-node3:2888:3888
參數說明:
- tickTime
:基本時間單元(毫秒)
- initLimit
:Follower初始連接超時(tickTime倍數)
- syncLimit
:Follower同步超時
- 2888
:Leader選舉端口
- 3888
:集群通信端口
在每個節點的dataDir目錄創建myid文件,內容為對應的server編號:
# zk-node1執行
echo 1 > /data/zookeeper/data/myid
# zk-node2執行
echo 2 > /data/zookeeper/data/myid
# zk-node3執行
echo 3 > /data/zookeeper/data/myid
echo 'export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin' | sudo tee -a /etc/profile
source /etc/profile
# 所有節點執行
/opt/zookeeper/bin/zkServer.sh start
# 查看狀態
zkServer.sh status
正常輸出示例:
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: leader # 或 follower
# 連接客戶端
zkCli.sh -server zk-node1:2181
# 執行測試命令
[zk: zk-node1:2181(CONNECTED) 0] create /test "hello"
[zk: zk-node1:2181(CONNECTED) 1] get /test
echo stat | nc 127.0.0.1 2181 | grep Mode
echo mntr | nc 127.0.0.1 2181 | grep zk_server_state
telnet zk-node1 3888
myid
文件是否匹配配置sudo chown -R zookeeper:zookeeper /data/zookeeper
修改/opt/zookeeper/bin/zkEnv.sh
:
export JVMFLAGS="-Xms2048m -Xmx2048m"
監控配置:
日志管理:
# 修改log4j.properties
zookeeper.log.dir=/data/zookeeper/logs
log4j.appender.ROLLINGFILE.MaxFileSize=100MB
JVM調優:
# 建議配置
-Xms4G -Xmx4G -XX:+UseG1GC -XX:MaxGCPauseMillis=200
定期清理:
# 添加crontab任務
0 3 * * * /opt/zookeeper/bin/zkCleanup.sh -n 10
命令 | 作用 |
---|---|
zkServer.sh start |
啟動服務 |
zkServer.sh stop |
停止服務 |
zkServer.sh restart |
重啟服務 |
zkServer.sh status |
查看節點角色 |
zkCli.sh |
進入命令行客戶端 |
通過以上步驟,您已成功部署Zookeeper集群。建議在正式環境前進行充分的壓力測試,并根據實際業務需求調整配置參數。 “`
這篇文章包含了: 1. 環境準備與規劃 2. 詳細的安裝配置步驟 3. 集群驗證方法 4. 常見問題解決方案 5. 生產環境優化建議 6. 常用維護命令
總字數約1650字,采用Markdown格式,包含代碼塊、表格等元素便于閱讀??筛鶕嶋H環境調整IP地址、版本號等參數。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。