Hello! 欢迎来到小浪云!


如何在CentOS上实现Zookeeper的高可用性


avatar
小浪云 2025-05-28 12

centos上实现zookeeper的高可用性,通常需要部署多个zookeeper实例以形成一个集群。以下是具体的实现步骤:

1. 前期准备

  • 安装Java:Zookeeper依赖于Java环境,确保你的centos系统已安装Java。

      sudo yum install java-1.8.0-openjdk-devel
  • 获取Zookeeper:从apache Zookeeper官网下载最新版本的Zookeeper。

      wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz   tar -xzf apache-zookeeper-3.7.0-bin.tar.gz   mv apache-zookeeper-3.7.0-bin /opt/zookeeper

2. Zookeeper配置

  • 创建数据和日志目录

      sudo mkdir -p /var/lib/zookeeper/data   sudo mkdir -p /var/log/zookeeper
  • 配置文件:复制并修改示例配置文件。

      cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg

    编辑/opt/zookeeper/conf/zoo.cfg文件,加入如下配置:

      tickTime=2000   dataDir=/var/lib/zookeeper/data   clientPort=2181   initLimit=5   syncLimit=2   server.1=zoo1:2888:3888   server.2=zoo2:2888:3888   server.3=zoo3:2888:3888

    其中,zoo1, zoo2, zoo3为你的Zookeeper实例的主机名或IP地址。

  • 设置myid文件:在每个Zookeeper实例的数据目录下创建myid文件,文件内容为该实例的ID(与server.X中的X对应)。

      echo "1" | sudo tee /var/lib/zookeeper/data/myid  # 在zoo1上执行   echo "2" | sudo tee /var/lib/zookeeper/data/myid  # 在zoo2上执行   echo "3" | sudo tee /var/lib/zookeeper/data/myid  # 在zoo3上执行

3. 启动Zookeeper

在每个Zookeeper实例上启动服务:

/opt/zookeeper/bin/zkServer.sh start

4. 检查集群状态

使用zkServer.sh status命令查看每个实例的状态:

/opt/zookeeper/bin/zkServer.sh status

你应看到类似以下的输出:

ZooKeeper JMX enabled by default Using config: /opt/zookeeper/conf/zoo.cfg Mode: leader

5. 防火墙设置

确保防火墙开放Zookeeper所需的端口(默认是2181, 2888, 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

6. 监控与日志管理

  • 监控:通过Zookeeper的四字命令进行监控,例如:

      echo stat | nc localhost 2181
  • 日志:查看位于/var/log/zookeeper/目录下的Zookeeper日志文件。

通过以上步骤,你可以在CentOS上建立一个高可用性的Zookeeper集群。确保每个实例正常运行,集群状态显示为leader和follower,以实现Zookeeper的高可用性。

相关阅读