在CentOS上配置ZooKeeper的故障转移(failover)通常涉及到设置一个主节点(leader)和多个从节点(followers),以及配置ZooKeeper集群以确保高可用性。以下是基本的步骤来设置ZooKeeper的故障转移:
安装ZooKeeper: 在所有服务器上安装相同版本的ZooKeeper。
配置zoo.cfg文件:
在每个ZooKeeper服务器的/etc/zookeeper/conf目录下,编辑zoo.cfg文件。确保所有服务器的配置文件中都有以下设置:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
其中zoo1, zoo2, zoo3是服务器的主机名或IP地址,它们应该与myid文件中的ID相对应。
设置myid文件:
在每个服务器的dataDir指定的目录下(例如/var/lib/zookeeper),创建一个名为myid的文件,并写入一个唯一的整数ID,这个ID对应于zoo.cfg中的server.X配置。
echo "1" > /var/lib/zookeeper/myid # 在第一个服务器上
echo "2" > /var/lib/zookeeper/myid # 在第二个服务器上
echo "3" > /var/lib/zookeeper/myid # 在第三个服务器上
确保myid文件的权限设置为只有root用户可以读写:
chmod 600 /var/lib/zookeeper/myid
启动ZooKeeper服务: 在每个服务器上启动ZooKeeper服务:
systemctl start zookeeper
systemctl enable zookeeper
验证集群状态:
使用zkServer.sh status命令检查每个服务器的状态。你应该能看到一个服务器被选为leader,其余的为follower。
/usr/bin/zkServer.sh status
测试故障转移: 为了测试故障转移,你可以尝试停止leader服务器上的ZooKeeper服务。其他follower应该能够自动选举出一个新的leader。
systemctl stop zookeeper
然后再次检查集群状态,确认新的leader已经被选举出来。
请注意,这些步骤假设你已经有了一个运行中的CentOS系统,并且你有权限修改配置文件和启动服务。在生产环境中部署ZooKeeper之前,你应该仔细阅读官方文档,并根据你的具体需求调整配置。