当前位置: 首页 > news >正文

Zookeeper HA集群搭建

Zookeeper HA集群搭建和使用指南

一、Zookeeper HA集群概述

Zookeeper是一个分布式的、开放源码的分布式应用程序协调服务,它为分布式应用提供一致性服务,包括:配置维护、域名服务、分布式同步、组服务等。

HA(High Availability)高可用集群通常由2n+1个节点组成,能够容忍n个节点故障。

二、集群搭建步骤

1. 环境准备

  • 至少3台服务器(推荐奇数台,如3、5、7)
  • 已安装Java环境(JDK 1.8+)
  • 服务器之间网络互通
  • 时间同步(使用NTP服务)

2. 下载安装

# 下载Zookeeper (以3.7.0版本为例)
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz# 解压
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /opt/# 创建软链接
ln -s /opt/apache-zookeeper-3.7.0-bin /opt/zookeeper

3. 配置Zookeeper

创建数据目录和日志目录
mkdir -p /data/zookeeper/data
mkdir -p /data/zookeeper/logs
配置zoo.cfg
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg

编辑zoo.cfg文件:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

参数说明:

  • tickTime: Zookeeper的基本时间单位(毫秒)
  • initLimit: 集群中follower服务器与leader服务器之间初始连接时能容忍的最多心跳数
  • syncLimit: 集群中follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数
  • dataDir: 数据目录
  • dataLogDir: 事务日志目录
  • clientPort: 客户端连接端口
  • server.X: 集群服务器列表,X为服务器ID
创建myid文件

在每个节点的dataDir目录下创建myid文件,内容为对应的服务器ID:

# 在node1上
echo "1" > /data/zookeeper/data/myid# 在node2上
echo "2" > /data/zookeeper/data/myid# 在node3上
echo "3" > /data/zookeeper/data/myid

4. 启动集群

在每个节点上执行:

/opt/zookeeper/bin/zkServer.sh start

5. 验证集群状态

查看每个节点的角色:

/opt/zookeeper/bin/zkServer.sh status

正常输出类似:

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

三、集群使用

1. 客户端连接

连接单个节点:

/opt/zookeeper/bin/zkCli.sh -server node1:2181

连接整个集群(客户端会自动故障转移):

/opt/zookeeper/bin/zkCli.sh -server node1:2181,node2:2181,node3:2181

2. 基本操作示例

# 创建节点
create /test "test data"# 获取节点数据
get /test# 设置节点数据
set /test "new data"# 列出子节点
ls /# 删除节点
delete /test

3. 四字命令监控

echo stat | nc node1 2181  # 查看服务器状态
echo ruok | nc node1 2181  # 检查服务器是否运行
echo mntr | nc node1 2181  # 监控集群健康状态

四、集群维护

1. 停止节点

/opt/zookeeper/bin/zkServer.sh stop

2. 重启节点

/opt/zookeeper/bin/zkServer.sh restart

3. 集群扩容

  1. 在新节点上安装Zookeeper
  2. 修改所有节点的zoo.cfg,添加新服务器
  3. 在新节点的dataDir下创建myid文件
  4. 启动新节点

4. 数据备份

# 使用快照和日志备份
cp -r /data/zookeeper/data /backup/zookeeper_data_backup
cp -r /data/zookeeper/logs /backup/zookeeper_logs_backup

五、常见问题解决

  1. 无法选举Leader:

    • 检查防火墙是否开放2888和3888端口
    • 检查myid文件是否正确
    • 检查服务器时间是否同步
  2. 客户端无法连接:

    • 检查Zookeeper服务是否运行
    • 检查clientPort是否被占用
    • 检查网络连通性
  3. 磁盘空间不足:

    • 定期清理快照和日志
    • 配置autopurge参数自动清理

六、最佳实践

  1. 生产环境建议至少3个节点
  2. 将数据目录和日志目录放在不同的磁盘
  3. 配置自动清理策略:
    autopurge.snapRetainCount=5
    autopurge.purgeInterval=24
    
  4. 监控Zookeeper集群状态
  5. 定期备份数据

通过以上步骤,您可以成功搭建和管理一个高可用的Zookeeper集群。

相关文章:

  • 使用vue2 开发一个纯静态的校园二手交易平台-前端项目练习
  • 区块链:去中心化应用(DApp)开发全流程解析
  • 全栈量子跃迁:当Shor算法破解RSA时,我们如何用晶格密码重构数字世界的信任基岩?
  • 计算机三大主流操作系统的前世今生 - Linux|macOS|Windows
  • 解锁现代生活的健康密码
  • 设计并实现一个基于 Java + Spring Boot + MySQL 的通用多租户权限系统
  • 榕壹云国际版短剧系统:基于Spring Boot+MySQL+UniApp的全球短剧创作平台
  • Golang | Builder模式
  • 神经网络(自己记录)
  • Java 设计模式心法之第25篇 - 中介者 (Mediator) - 用“中央协调”降低对象间耦合度
  • PDF嵌入隐藏的文字
  • Rule.resourceQuery(通过路径参数指定loader匹配规则)
  • PH热榜 | 2025-04-26
  • 百度Create大会深度解读:AI Agent与多模态模型如何重塑未来?
  • 如何删除Google Chrome中的所有历史记录【一键清除】
  • 【音视频】SDL窗口显示
  • Vue.js 核心特性解析:响应式原理与组合式API实践
  • IDEA 连接 Oracle 数据库
  • 《代码整洁之道》第7章 错误处理 - 笔记
  • SQLMesh 测试自动化:提升数据工程效率
  • 习近平:在庆祝中华全国总工会成立100周年暨全国劳动模范和先进工作者表彰大会上的讲话
  • 国内生产、境外“游一圈”再进保税仓,这些“全球购”保健品竟是假进口
  • 点燃“文化活火”,上海百年街区创新讲述“文化三地”故事
  • 王羲之《丧乱帖》在日本流传了1300年,将在大阪展23天
  • 我国对国家发展规划专门立法
  • 大学2025丨专访北邮校长徐坤:工科教育要真正回归工程本质