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

ZooKeeper 集群高可用配置指南

前期准备与检查

在开始配置之前,请确保所有节点都已进行以下检查:

  • 网络检查:

    • 使用 ip addr 命令查看 IP 地址。
    • 使用 systemctl status firewalld 命令检查防火墙状态。
    • 使用 ping www.baidu.com 测试网络连通性。
    • 检查 /etc/hosts 文件,确保主机名和 IP 地址的映射正确。
  • 时间同步检查:

    • 使用 date 命令检查系统时间是否同步。集群中所有节点的时间必须保持一致。
    • 安装ntp服务 yum install ntp
    • 同步时间 ntpdate -u ntp1.aliyun.com
    • 查看时间 date

Zookeeper 安装与配置

1. 安装与解压

  1. 将 ZooKeeper 压缩包上传到 /opt/software/ 目录下。
  2. 使用以下命令解压:
    tar -zxvf /opt/software/apache-zookeeper-3.5.6-bin.tar.gz
    
  3. 重命名解压后的文件夹,方便管理:
    mv apache-zookeeper-3.5.6-bin zookeeper-3.5.6
    
  4. 进入 ZooKeeper 目录:
    cd /opt/module/zookeeper-3.5.6
    

2. 创建数据目录与 myid 文件

  1. 创建用于存放数据的目录:
    mkdir data
    
  2. 进入 data 目录并创建 myid 文件。myid 文件是 ZooKeeper 集群中每个节点身份的唯一标识
    • 在主节点 (master) 上执行:
      cd data
      echo 1 > myid
      cat myid
      
    • 在从节点 slave1 上执行:
      cd /opt/module/zookeeper-3.5.6/data
      echo 2 > myid
      cat myid
      
    • 在从节点 slave2 上执行:
      cd /opt/module/zookeeper-3.5.6/data
      echo 3 > myid
      cat myid
      

3. 配置 zoo.cfg 文件

  1. 进入配置目录:
    cd /opt/module/zookeeper-3.5.6/conf
    
  2. 复制配置模板文件:
    cp zoo_sample.cfg zoo.cfg
    
  3. 编辑 zoo.cfg 文件:
    vi zoo.cfg
    
  4. 在文件中修改或添加以下配置:
    • dataDir:指定 ZooKeeper 数据文件的存储目录。
      dataDir=/opt/module/zookeeper-3.5.6/data
      
    • server:定义集群中的每个节点。格式为 server.<ID>=<主机名>:<心跳端口>:<选举端口>,其中 <ID> 必须与节点的 myid 文件中的数字对应。
      server.1=master:2888:3888
      server.2=slave1:2888:3888
      server.3=slave2:2888:3888
      

4. 配置环境变量

  1. 编辑 /etc/profile 文件:
    vi /etc/profile
    
  2. 在文件末尾添加以下内容,以便于在任意位置执行 ZooKeeper 命令:
    export ZOOKEEPER_HOME=/opt/module/zookeeper-3.5.6
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    
  3. 使配置立即生效:
    source /etc/profile
    

集群同步与启动

1. 远程同步文件

为了方便,将配置好的文件远程复制到其他节点。

  1. 从主节点 master 复制环境变量配置文件:
    scp -r /etc/profile slave1:/etc/
    scp -r /etc/profile slave2:/etc/
    
  2. 在 slave1 和 slave2 上分别执行,使环境变量生效:
    source /etc/profile
    
  3. 从主节点 master 复制 ZooKeeper 安装目录:
    scp -r /opt/module/zookeeper-3.5.6 slave1:/opt/module/
    scp -r /opt/module/zookeeper-3.5.6 slave2:/opt/module/
    

2. 启动与测试

在所有节点上分别执行以下命令:

  1. 启动 ZooKeeper 服务:
    zkServer.sh start
    
  2. 检查 ZooKeeper 状态:
    zkServer.sh status
    
    正确情况下,集群中会有一台机器显示为 leader,其余的显示为 follower
  3. 使用 jps 命令检查进程:
    jps
    
    您应该能看到 QuorumPeerMain 进程。

3. 常见问题

问题: 虚拟机主机映射修改,然后按照不同顺序启动 ZooKeeper,集群状态是否正确?

zookeeper报错出现error contacing

回答:
是的,ZooKeeper 集群的启动顺序不影响其最终状态。ZooKeeper 选举机制保证了即使启动顺序不同,集群中的节点也能通过互相通信选举出新的 leader

在例子中,如果将主机映射修改(例如将第三个虚拟机映射到第一个位置),并按照第三个、第二个、第一个虚拟机的顺序启动,集群依然会正确选举出一个 leader,其余的节点成为 follower。这是因为 myid 文件中的唯一 ID 和 zoo.cfg 文件中的配置决定了每个节点在集群中的角色,而不是它们的启动顺序。只要所有节点都能成功连接并相互通信,它们就会自动完成选举过程。


文章转载自:

http://mQR2Znsu.mnccq.cn
http://H4bK9IAc.mnccq.cn
http://PpBt7J6y.mnccq.cn
http://sN4TGQe5.mnccq.cn
http://iNx8mbDE.mnccq.cn
http://4ERc4g28.mnccq.cn
http://7eLqOScB.mnccq.cn
http://tRukMejb.mnccq.cn
http://c9UukZRU.mnccq.cn
http://tivZT6lF.mnccq.cn
http://pZJLoJb5.mnccq.cn
http://ZUToEcYm.mnccq.cn
http://Ay7U8cwN.mnccq.cn
http://nQVyQHJ6.mnccq.cn
http://0fkitdmQ.mnccq.cn
http://IijXJwYz.mnccq.cn
http://b084AzHB.mnccq.cn
http://uHh2hMow.mnccq.cn
http://pEQrDO6u.mnccq.cn
http://E4edhqXg.mnccq.cn
http://HeaHF5Xa.mnccq.cn
http://23Poj64r.mnccq.cn
http://X2h79BQQ.mnccq.cn
http://IVfzds9R.mnccq.cn
http://9oynfax2.mnccq.cn
http://glruJDxd.mnccq.cn
http://4ZzzLnNW.mnccq.cn
http://qOwOVQyp.mnccq.cn
http://cEcFEV5o.mnccq.cn
http://Vtf2MCQC.mnccq.cn
http://www.dtcms.com/a/384320.html

相关文章:

  • 在天嵌 TQ3568 (Debian) 上配置并添加打印机教程
  • pcl封装10 get_area_form_boundary计算平面点云面积
  • 突破局域网限制:MongoDB远程管理新体验
  • C++学习:map/set源码剖析+利用红黑树封装map/set
  • HTML开发工具有哪些?常用HTML编辑器推荐、HTML开发工具对比与HTML调试工具实战应用
  • Redis篇章3:Redis 企业级缓存难题全解--预热、雪崩、击穿、穿透一网打尽
  • 什么区块链(Blockchain)?Rust的区块链的例子
  • LangChain4J-(5)-记忆缓存与持久化
  • 遇到 npm install报错 certificate has expired是因为淘宝镜像源(registry.npm.taobao.org)
  • Excel办公新选择:300项功能的免费插件
  • 在Excel和WPS表格中用照相机创建动态更新的数据图片
  • 开发与维护nodejs工具库或自定义npm包
  • 从企业实战中学习Appium自动化测试(一)
  • 深度理解链表:使用C++数组与下标的模拟
  • 【wpf】从 DataContext 到依赖属性:WPF 自定义控件 ImageView 的优化之路
  • Sport Network 凭借 Akamai 实现卓越成就
  • Topaz Photo AI 人工智能图像处理(Mac)
  • LeetCode 第467场周赛 第13天
  • PINN物理信息神经网络锂电池剩余寿命预测模型(内含容量特征提取+两组电池剩余寿命预测实验),MATLAB实现
  • 「日拱一码」088 机器学习——蒙特卡洛树搜索MCTS
  • 简单聊聊神经网络中的反向传播
  • Java-Spring入门指南(九)反射与反射对象
  • 从 Vue 到 Java:前后端分离项目后端迁移完整教程
  • 在 IDEA 2024 创建 Vue 项目(保姆级)
  • Electron 常见问题排查:调试与错误处理
  • 学生管理系统
  • 软件测试的艺术——黑白盒测试学习笔记
  • Electron开源库入门教程:跨平台桌面应用框架
  • 基于Springboot企业车辆管理系统
  • MySQL面试(1)