手把手搭建 Zookeeper3.4.10三节点高可用集群(含 myid 配置与选举机制详解)

手把手搭建 Zookeeper3.4.10三节点高可用集群(含 myid 配置与选举机制详解)

文章目录

  • [手把手搭建 Zookeeper3.4.10三节点高可用集群(含 myid 配置与选举机制详解)](#手把手搭建 Zookeeper3.4.10三节点高可用集群(含 myid 配置与选举机制详解))
    • [📘 Zookeeper 简介前言](#📘 Zookeeper 简介前言)
      • [🐘 什么是 Apache Zookeeper?](#🐘 什么是 Apache Zookeeper?)
    • [2.1 Zookeeper 安装部署](#2.1 Zookeeper 安装部署)
    • [手把手搭建 Zookeeper三节点高可用集群教程](#手把手搭建 Zookeeper三节点高可用集群教程)

📘 Zookeeper 简介前言

🐘 什么是 Apache Zookeeper?

Apache Zookeeper 是一个开源的分布式协调服务,由 Apache Hadoop 生态衍生而来,最初由 Yahoo! 开发,现已成为构建高可用、强一致性分布式系统的核心组件之一。

在分布式环境中,多个服务实例需要协同工作------例如:谁是主节点?配置如何统一?任务如何分配?节点宕机如何感知?这些问题统称为"分布式协调"。而 Zookeeper 正是为解决这些难题而生。

它提供了一套简单但强大的原语(如临时节点、监听机制、原子操作等),通过类似文件系统的树形数据模型(ZNode)和 ZAB(ZooKeeper Atomic Broadcast)一致性协议,确保集群中所有客户端看到一致的数据视图。

📌 典型应用场景

  • Hadoop HDFS 的 NameNode 高可用(HA)
  • HBase 的 Master 选举与 RegionServer 注册
  • Kafka 的 Broker 注册、Topic 元数据管理
  • 分布式锁、配置中心、服务发现等通用协调需求

Zookeeper 本身不存储业务数据 ,而是作为"分布式系统的神经中枢",帮助上层应用实现可靠协作。

在本实验中,我们将基于三台服务器(masterslave1slave2)部署 Zookeeper 3.4.10 集群,并验证其 Leader-Follower 架构与故障容错能力,为后续搭建 HBase、Kafka 等服务奠定基础。


2.1 Zookeeper 安装部署

Zookeeper 的安装配置分为两种模式:

  • 本地模式:仅包含一台服务器,适用于开发测试。
  • 集群模式 :包含多台服务器(推荐使用奇数台,如 3、5、7 台),具备高可用性和容错能力。

本文选择集群模式 进行部署,在 masterslave1slave2 三台服务器上均部署 Zookeeper。

配置策略:先在 master 节点完成全部配置,再将配置文件分发至其他节点。


2.1.1 准备工作

(1)上传 Zookeeper 安装包

使用 Xftp 连接 master 服务器,将 zookeeper-3.4.10.tar.gz 安装包上传至 /opt/software 目录下。

(2)解压 Zookeeper 安装包

通过 Xshell 登录 master,执行以下命令:

bash 复制代码
[root@master ~]# cd /opt/software/
[root@master software]# tar -zvxf zookeeper-3.4.10.tar.gz -C /opt/module/
[root@master software]# cd ../module/
[root@master module]# ls
hadoop  java  zookeeper-3.4.10
[root@master module]# mv zookeeper-3.4.10/ zookeeper
[root@master module]# ls
hadoop  java  zookeeper
(3)配置环境变量

编辑 /etc/profile 文件:

bash 复制代码
[root@master module]# vi /etc/profile

在文件末尾添加以下内容:

bash 复制代码
# ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

保存后执行以下命令使环境变量生效:

bash 复制代码
[root@master module]# source /etc/profile

2.1.2 相关配置修改

(1)修改 zoo.cfg 配置文件

进入 Zookeeper 安装目录的 conf 子目录,复制模板文件:

bash 复制代码
[root@master module]# cd zookeeper/
[root@master zookeeper]# cd conf
[root@master conf]# cp zoo_sample.cfg zoo.cfg
[root@master conf]# vi zoo.cfg

修改以下内容:

  • 设置数据目录(避免使用系统临时目录):

    ini 复制代码
    dataDir=/opt/module/zookeeper/zkData
  • 新增日志目录(可选但推荐):

    ini 复制代码
    dataLogDir=/opt/module/zookeeper/zkLog

在文件末尾 添加集群服务器列表(注意:主机名需提前配置好 DNS 或 /etc/hosts):

ini 复制代码
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

配置项说明

  • tickTime=2000:Zookeeper 服务器与客户端之间的心跳间隔(单位:毫秒)。
  • initLimit=10:Follower 与 Leader 初始连接时允许的最大心跳数(即 10 × 2000 = 20 秒)。
  • syncLimit=5:Follower 与 Leader 同步通信超时阈值(5 × 2000 = 10 秒)。
  • clientPort=2181:客户端连接端口,默认不变。
  • dataDir:存储内存数据库快照的位置,切勿使用 /tmp(Linux 可能自动清理)。
(2)创建 myid 文件

根据 zoo.cfg 中的 dataDir 路径,创建对应目录:

bash 复制代码
[root@master conf]# cd ..
[root@master zookeeper]# mkdir zkData
[root@master zookeeper]# mkdir zkLog

进入 zkData 目录,创建 myid 文件:

bash 复制代码
[root@master zookeeper]# cd zkData
[root@master zkData]# vi myid

在文件中写入当前节点对应的服务器编号(无空格、无空行):

复制代码
1

master 对应 server.1,因此 myid 内容为 1

(3)分发配置到其他节点

由于已配置 SSH 免密登录,可使用 scp 命令将整个 zookeeper 目录和环境变量文件分发到 slave1slave2

bash 复制代码
# 分发 Zookeeper 安装目录
[root@master ~]# scp -r /opt/module/zookeeper root@slave1:/opt/module/
[root@master ~]# scp -r /opt/module/zookeeper root@slave2:/opt/module/

# 分发环境变量(可选,或手动在各节点添加)
[root@master ~]# scp /etc/profile root@slave1:/etc/
[root@master ~]# scp /etc/profile root@slave2:/etc/


⚠️ 分发后需在 slave1slave2 上分别执行 source /etc/profile 使环境变量生效。

(4)修改其他节点的 myid 文件
  • 登录 slave1,将 myid 内容改为 2

    bash 复制代码
    [root@slave1 ~]# echo 2 > /opt/module/zookeeper/zkData/myid



  • 登录 slave2,将 myid 内容改为 3

    bash 复制代码
    [root@slave2 ~]# echo 3 > /opt/module/zookeeper/zkData/myid


🔍 确保每个节点的 myidzoo.cfgserver.xx 严格对应。


2.1.3 Zookeeper 服务的启动与关闭

(1)启动服务

在每台服务器上分别执行:

bash 复制代码
[root@master ~]# zkServer.sh start
[root@slave1 ~]# zkServer.sh start
[root@slave2 ~]# zkServer.sh start



(2)查看服务状态
bash 复制代码
[root@master ~]# zkServer.sh status

正常情况下,三台节点中会有一台显示 Mode: leader,其余两台显示 Mode: follower



(3)关闭服务
bash 复制代码
[root@master ~]# zkServer.sh stop

(其他节点同理)


2.1.4 Zookeeper 选举机制

Zookeeper 集群通过 ZAB(Zookeeper Atomic Broadcast)协议 实现一致性与高可用,其选举机制分为两种场景:

(1)第一次启动(全新集群)
  • 所有节点初始状态为 LOOKING
  • 通过投票选出 myid 最大的节点作为 Leader(若网络分区,则需多数派达成一致)。
  • 选举完成后,Leader 进入 LEADING 状态,Follower 进入 FOLLOWING 状态。
(2)非第一次启动(已有数据)
  • 若 Leader 宕机,剩余 Follower 重新发起选举。
  • 优先选择 ZXID(事务 ID)最大 的节点作为新 Leader(保证数据最新)。
  • 若 ZXID 相同,则比较 myid,选较大者。

💡 Zookeeper 要求集群中超过半数节点存活才能提供服务(例如 3 节点最多容忍 1 台宕机)。


✅ 至此,Zookeeper 集群部署完成,可为 Hadoop、HBase、Kafka 等分布式系统提供协调服务。


手把手搭建 Zookeeper三节点高可用集群教程

大数据应用开发竞赛-03-手把手搭建 Zookeeper三节点高可用集群

希望大家也三连一下视频,你的支持是我创作的最大动力!

相关推荐
NGINX开源社区12 小时前
使用 NGINX 作为 AI Proxy
大数据·人工智能·nginx
雪兽软件19 小时前
如何从目标到决策构建大数据战略?
大数据
数据皮皮侠20 小时前
中国城市间地理距离矩阵(2024)
大数据·数据库·人工智能·算法·制造
ToB营销学堂20 小时前
B2B营销自动化新解法:MarketUP聚焦高转化场景
大数据·运维·自动化
TK云大师-KK20 小时前
TikTok自动化直播遇到内容重复问题?这套技术方案了解一下
大数据·运维·人工智能·矩阵·自动化·新媒体运营·流量运营
昨夜见军贴06161 天前
AI审核守护生命设备安全:IACheck成为呼吸机消毒效果检测报告的智能审核专家
大数据·人工智能·安全
Elastic 中国社区官方博客1 天前
现已正式发布: Elastic Cloud Hosted 上的托管 OTLP Endpoint
大数据·运维·数据库·功能测试·elasticsearch·全文检索
D愿你归来仍是少年1 天前
Flink 并行度变更时 RocksDB 状态迁移的关键机制与原理
大数据·flink·apache
昨夜见军贴06161 天前
AI审核守护透析安全:IACheck助力透析微生物检测报告精准合规
大数据·人工智能·安全
新新学长搞科研1 天前
【高届数会议征稿】第十二届传感云和边缘计算系统国际会议(SCECS 2026)
大数据·人工智能·生成对抗网络·边缘计算·传感器·学术会议