在Debian系統上實現Zookeeper的高可用性(HA)通常涉及以下幾個步驟:
準備環境:
下載并解壓Zookeeper: 在每臺服務器上執行以下命令來下載和解壓Zookeeper:
wget https://downloads.apache.org/zookeeper/zookeeper-3.x.x/apache-zookeeper-3.x.x-bin.tar.gz
tar xzf apache-zookeeper-3.x.x-bin.tar.gz
mv apache-zookeeper-3.x.x-bin /opt/zookeeper
配置Zookeeper:
在每臺服務器的/opt/zookeeper/conf
目錄下,復制zoo_sample.cfg
文件并重命名為zoo.cfg
:
cp conf/zoo_sample.cfg conf/zoo.cfg
編輯zoo.cfg
文件,添加或修改以下配置:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=server1_ip:2888:3888
server.2=server2_ip:2888:3888
server.3=server3_ip:2888:3888
其中server.1
, server.2
, server.3
分別代表三臺服務器的標識,server1_ip
, server2_ip
, server3_ip
是它們的IP地址。
在dataDir
指定的目錄下創建一個名為myid
的文件,用來標識當前服務器的ID:
echo 1 > /var/lib/zookeeper/myid # 在第一臺服務器上執行
echo 2 > /var/lib/zookeeper/myid # 在第二臺服務器上執行
echo 3 > /var/lib/zookeeper/myid # 在第三臺服務器上執行
啟動Zookeeper: 在每臺服務器上,使用以下命令啟動Zookeeper服務:
/opt/zookeeper/bin/zkServer.sh start
驗證集群狀態: 在任意一臺服務器上,使用以下命令檢查Zookeeper集群的狀態:
/opt/zookeeper/bin/zkServer.sh status
你應該能看到當前服務器的角色(Leader或Follower)以及集群的狀態。
設置開機自啟動(可選): 如果你想讓Zookeeper在系統啟動時自動運行,可以創建一個systemd服務文件:
sudo nano /etc/systemd/system/zookeeper.service
然后添加以下內容:
[Unit]
Description=Apache Zookeeper Server
After=network.target
[Service]
Type=forking
User=nobody
Group=nogroup
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
Restart=on-abort
[Install]
WantedBy=multi-user.target
保存并退出,然后啟用并啟動服務:
sudo systemctl enable zookeeper
sudo systemctl start zookeeper
確保所有服務器上的配置都正確無誤,并且網絡連接正常,這樣你的Zookeeper集群就能正常工作并提供高可用性了。記得在生產環境中使用防火墻規則來限制對Zookeeper端口的訪問。