怎样确保CentOS上Zookeeper的高可用性
要确保CentOS上Zookeeper的高可用性(HA),核心是通过集群部署实现故障自动转移,同时配合监控、日志等运维手段保障集群稳定性。以下是具体实施步骤:
sudo yum install java-1.8.0-openjdk-devel -y
/opt/zookeeper):wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
tar -xzvf apache-zookeeper-3.7.0-bin.tar.gz -C /opt/
mv /opt/apache-zookeeper-3.7.0-bin /opt/zookeeper
在每台服务器上创建Zookeeper数据存储目录和日志目录:
sudo mkdir -p /var/lib/zookeeper/data # 数据目录(用于存储myid文件和快照)
sudo mkdir -p /var/log/zookeeper # 日志目录(存储运行日志)
复制Zookeeper示例配置文件并重命名为zoo.cfg,修改以下关键参数:
cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
vim /opt/zookeeper/conf/zoo.cfg
添加/修改以下内容(以3台服务器为例):
tickTime=2000 # 基本时间单位(毫秒,影响心跳间隔)
dataDir=/var/lib/zookeeper/data # 数据目录路径
clientPort=2181 # 客户端连接端口
initLimit=5 # Follower初始化同步Leader的最大时间(tick单位)
syncLimit=2 # Follower与Leader同步数据的最大时间(tick单位)
server.1=zoo1:2888:3888 # 集群节点1(zoo1为服务器主机名/IP,2888为Leader选举端口,3888为数据同步端口)
server.2=zoo2:2888:3888 # 集群节点2
server.3=zoo3:2888:3888 # 集群节点3
在每台服务器的dataDir目录下创建myid文件,内容为该节点的服务器ID(需与zoo.cfg中server.X的X一致):
# 在zoo1服务器上执行
echo "1" | sudo tee /var/lib/zookeeper/data/myid
# 在zoo2服务器上执行
echo "2" | sudo tee /var/lib/zookeeper/data/myid
# 在zoo3服务器上执行
echo "3" | sudo tee /var/lib/zookeeper/data/myid
在每台服务器上启动Zookeeper服务,并设置为开机自启:
/opt/zookeeper/bin/zkServer.sh start # 启动服务
/opt/zookeeper/bin/zkServer.sh enable # 开机自启
在任意一台服务器上执行以下命令,检查节点角色(应显示Leader或Follower):
/opt/zookeeper/bin/zkServer.sh status
正常输出示例:
Mode: leader # 或 Mode: follower
允许Zookeeper使用的端口(默认2181为客户端端口,2888为Leader选举端口,3888为数据同步端口):
sudo firewall-cmd --permanent --zone=public --add-port=2181/tcp
sudo firewall-cmd --permanent --zone=public --add-port=2888/tcp
sudo firewall-cmd --permanent --zone=public --add-port=3888/tcp
sudo firewall-cmd --reload
Zookeeper日志默认存储在/var/log/zookeeper/目录下,可通过tail命令实时查看:
tail -f /var/log/zookeeper/zookeeper.log
使用Zookeeper自带的四字命令(如stat、ruok)监控集群状态:
# 连接到任意节点并执行stat命令
echo stat | nc zoo1 2181
# 检查集群健康状态(返回imok表示正常)
echo ruok | nc zoo1 2181
ZooInspector(图形化管理工具)或Prometheus+Granafa搭建监控面板,实时监控集群节点状态、请求延迟、连接数等指标。通过以上步骤,可在CentOS上搭建一个高可用的Zookeeper集群,确保即使部分节点故障,集群仍能正常提供服务。