确保Ubuntu上Zookeeper高可用性的关键步骤
sudo apt update && sudo apt install -y default-jre
sudo apt install -y ntp
sudo systemctl enable --now ntp
/usr/local/zookeeper):wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
tar -xzf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local/
mv /usr/local/apache-zookeeper-3.7.0-bin /usr/local/zookeeper
/etc/profile,添加ZooKeeper路径:export ZK_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZK_HOME/bin
source /etc/profile
zoo.cfg:在/usr/local/zookeeper/conf/下创建/修改zoo.cfg,核心配置如下:tickTime=2000 # 基本时间单位(毫秒)
dataDir=/var/lib/zookeeper # 数据存储目录(需提前创建)
clientPort=2181 # 客户端连接端口
initLimit=5 # Follower初始化同步最大时间(tick数)
syncLimit=2 # Follower与Leader同步最大时间(tick数)
server.1=zookeeper1:2888:3888 # 集群节点1(格式:主机名:peerPort:leaderPort)
server.2=zookeeper2:2888:3888 # 集群节点2
server.3=zookeeper3:2888:3888 # 集群节点3
注:
peerPort(2888)用于节点间通信,leaderPort(3888)用于Leader选举。
myid文件:在每个节点的dataDir目录下创建myid,内容为对应节点ID(与server.X中的X一致):mkdir -p /var/lib/zookeeper
echo "1" | sudo tee /var/lib/zookeeper/myid # zookeeper1节点
echo "2" | sudo tee /var/lib/zookeeper/myid # zookeeper2节点
echo "3" | sudo tee /var/lib/zookeeper/myid # zookeeper3节点
sudo systemctl start zookeeper
sudo systemctl enable zookeeper # 设置开机自启
zkServer.sh查看每个节点的角色(Leader/Follower):/usr/local/zookeeper/bin/zkServer.sh status
正常输出应显示Mode: leader(1个)或Mode: follower(多个)。/usr/local/zookeeper/bin/zkCli.sh -server zookeeper1:2181
create /test "high-availability"
get /test
应返回high-availability,证明数据已同步。/usr/local/zookeeper/logs/,通过tail -f实时查看:tail -f /usr/local/zookeeper/logs/zookeeper.out
dataDir目录(包含快照和事务日志)到远程存储(如HDFS、S3):rsync -avz /var/lib/zookeeper/ user@backup-server:/backup/zookeeper/
sudo systemctl stop zookeeper
rm -rf /var/lib/zookeeper/*
rsync -avz user@backup-server:/backup/zookeeper/ /var/lib/zookeeper/
sudo systemctl start zookeeper
sudo ufw allow from trusted-ip to any port 2181,2888,3888 proto tcp
zoo.cfg添加新节点信息,创建myid文件后重启集群。