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

ZooKeeper集群搭建

搭建 ZooKeeper 集群是构建高可用分布式系统(如 Kafka、Hadoop HHA、Dubbo 等)的关键步骤。ZooKeeper 集群通常采用奇数节点部署(如 3 台、5 台),以容忍(n-1)/2台机器故障。

以下是基于最新稳定版本(如 3.8.x 或 3.9.x)的3 节点集群搭建详细指南

一、环境规划

假设我们有 3 台 Linux 服务器(CentOS/Ubuntu均可),已安装好 JDK(JDK 8 或 JDK 11+)。

主机名IP 地址节点 ID (myid)端口说明
zk-node1192.168.1.10112181(客户端), 2888( follower通信), 3888(选举)
zk-node2192.168.1.1022同上
zk-node3192.168.1.1033同上

注意:请确保所有机器时间同步(使用ntpdatechrony),防火墙已关闭或放行了相关端口。


二、搭建步骤(每台机器均需执行,除 myid 不同外)

1. 下载与解压

前往 Apache 官网下载最新稳定版(例如apache-zookeeper-3.8.4-bin.tar.gz)。

# 创建目录 sudo mkdir -p /opt/zookeeper cd /opt/zookeeper # 下载 (以 3.8.4 为例,请替换为最新版本链接) wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz # 解压 tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz mv apache-zookeeper-3.8.4-bin zookeeper-3.8.4
2. 创建数据目录和日志目录

在生产环境中,建议将数据和日志分开存放,且不要放在系统盘。

cd /opt/zookeeper/zookeeper-3.8.4 mkdir -p data mkdir -p logs
3. 配置zoo.cfg

进入conf目录,复制示例配置文件并修改。

cd conf cp zoo_sample.cfg zoo.cfg vim zoo.cfg

修改后的zoo.cfg内容示例:

# 客户端连接端口 clientPort=2181 # 数据目录 (对应上面创建的 data 目录) dataDir=/opt/zookeeper/zookeeper-3.8.4/data # 日志目录 (可选,不配则默认在 dataDir) dataLogDir=/opt/zookeeper/zookeeper-3.8.4/logs # 心跳检测时间 (毫秒) tickTime=2000 # 初始化连接超时时间 (tickTime 的倍数) initLimit=10 # 同步超时时间 (tickTime 的倍数) syncLimit=5 # --- 集群配置核心部分 --- # 格式: server.A=B:C:D # A: 节点 ID (对应 myid 文件中的数字) # B: 节点 IP # C: Follower 与 Leader 交换信息的端口 (2888) # D: 选举 Leader 的端口 (3888) server.1=192.168.1.101:2888:3888 server.2=192.168.1.102:2888:3888 server.3=192.168.1.103:2888:3888 # (可选) 4lw commands whitelist,允许使用 ruok 等监控命令 4lw.commands.whitelist=*

提示:将此配置好的zoo.cfg文件分发到其他两台节点的相同目录下。

4. 创建节点标识文件 (myid)

这是区分不同节点的关键步骤。每台机器的该文件内容必须不同

dataDir指定的目录下(即/opt/zookeeper/zookeeper-3.8.4/data)创建名为myid的文件:

  • 在 node1 (192.168.1.101) 上执行:
echo "1" > /opt/zookeeper/zookeeper-3.8.4/data/myid
  • 在 node2 (192.168.1.102) 上执行:
echo "2" > /opt/zookeeper/zookeeper-3.8.4/data/myid
  • 在 node3 (192.168.1.103) 上执行:
echo "3" > /opt/zookeeper/zookeeper-3.8.4/data/myid
5. 启动集群

在所有节点上依次执行启动命令(顺序不限,但建议同时或快速连续启动以加速选举)。

cd /opt/zookeeper/zookeeper-3.8.4/bin ./zkServer.sh start

或者使用后台运行模式(推荐生产环境):

./zkServer.sh start-foreground & # 或者直接作为服务运行,若配置了 systemd
6. 验证集群状态

在任意节点执行状态检查命令:

./zkServer.sh status

预期输出:

  • 其中一台显示Mode: leader
  • 其余两台显示Mode: follower

如果显示Error contacting service. It is probably not running.,请检查:

  1. 防火墙是否拦截了 2181, 2888, 3888 端口。
  2. zoo.cfg中的 IP 地址是否正确。
  3. myid文件内容是否与配置中的server.X对应。
  4. 查看logs目录下的.log.out文件排查具体错误。

三、常用运维命令

命令说明
./zkServer.sh start启动节点
./zkServer.sh stop停止节点
./zkServer.sh restart重启节点
./zkServer.sh status查看当前节点角色 (Leader/Follower)
./zkCli.sh连接本地客户端进行测试
`echo ruoknc localhost 2181`

四、常见问题与优化建议

  1. 脑裂问题:确保网络稳定。如果网络分区导致集群分裂,少数派节点将无法提供服务。
  2. 磁盘性能:ZooKeeper 对磁盘 I/O 延迟非常敏感(尤其是写操作,因为要写事务日志)。建议使用 SSD,并将dataLogDir单独挂载到高性能磁盘。
  3. JVM 调优:编辑bin/zkEnv.sh,调整JVMFLAGS。对于 3 节点小集群,默认设置通常足够;大规模集群需调整堆内存(不宜过大,避免 GC 停顿),通常 2GB-4GB 即可。
  4. 快照清理:ZooKeeper 会保留多个快照,可在zoo.cfg中配置snapCountpurgeInterval(或使用PurgeTxnLog工具) 定期清理旧数据,防止磁盘爆满。

按照以上步骤,你就可以成功搭建一个稳定的 ZooKeeper 集群了。

http://www.jsqmd.com/news/484744/

相关文章:

  • AC2100 OpenWrt 多账号单线多拨实战指南
  • 2026铝镁锰屋面板图纸深化设计机构推荐,看哪家口碑好? - 工业设备
  • 鸿蒙开发实战:5分钟搞定系统级位置模拟器(附完整代码)
  • 机器学习和深度学习基础
  • 【紧急预警】MCP v2.8.1+本地连接器存在未公开的Connection Pool饥饿漏洞(CVE-2024-MCP-003已确认,补丁将于72小时后失效)
  • 不想花冤枉钱?选降AI工具看这一篇就够了 - 我要发一区
  • fail2ban实战:从服务器被黑到构建主动防御体系
  • 通义千问3-Reranker-0.6B实战案例:直播带货话术与商品信息匹配
  • 如何用Dify在24小时内完成传统需2周的人工评估闭环?——金融客服场景下LLM-as-a-judge SLO达标实践白皮书
  • AI赋能智能车竞赛:使用快马平台大模型优化车辆决策算法
  • 哈尔滨考研实力机构靠谱吗,深度剖析各机构优势 - 工业品牌热点
  • ZooKeeper连接超时问题深度解析:从配置优化到网络排查
  • STEP3-VL-10B部署案例:边缘计算节点部署10B模型实现离线多模态推理
  • Cesium 自定义底图加载策略:从禁用默认Bing地图到灵活切换影像源
  • QPSK调制解调的FPGA设计及详细实验文档
  • 万本控油蓬松洗发水实测分析:长效控油与头皮养护双效测评 - 资讯焦点
  • Ubuntu系统开机自动配置热点全攻略
  • YOLOE实战指南:如何自定义类别名称列表实现零样本迁移
  • Wan2.2-T2V-A5B Java开发实战:SpringBoot微服务集成指南
  • 2026优质NMN品牌权威筛选榜:基于顶尖科研成果,教你理性选对靠谱品牌 - 资讯焦点
  • 从IDT到滤波器:揭秘叉指换能器的关键设计参数与性能权衡
  • R语言设备故障预测落地难?揭秘90%工程师忽略的4个数据预处理致命陷阱
  • 知网/维普/万方三大平台通吃的降AI工具有哪些 - 我要发一区
  • Wan2.1视频生成效果体验:实测多种提示词,看看AI的创造力
  • ESP32C3墨水屏摆件:双屏兼容、电池供电与局部刷新设计
  • Dify私有化部署避坑指南:97%企业踩过的4类网络分段错误、2种认证断链风险与实时熔断配置(含等保三级合规checklist)
  • 高斯滤波与双边滤波在图像去噪中的MATLAB实战对比
  • 同行独立站看着一般,为什么转化率却很高?
  • 次元画室新手部署教程:手把手教你解决网络访问问题
  • 鸿蒙智控节点:基于Hi3861的轻量级物联网边缘执行器设计