zookeeper多主机集群搭建

1. 准备工作

  • 安装Java:ZooKeeper需要Java环境,确保Java版本符合要求(一般使用JDK 8或以上)。
  • 下载ZooKeeper :从Apache ZooKeeper官网下载最新的稳定版本。
  • 服务器准备:准备至少三台服务器以保证集群的高可用性(奇数台服务器有助于选举机制)。
javascript 复制代码
//如果没有java,下载java
yum install java-1.8.0-openjdk-devel -y
//验证java
java -version
//从zookeeper下载tar包导入主机,也可以直接通过以下命令下载
cd /
wget wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -xf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin.tar.gz zookeeper

2. 配置ZooKeeper

在每台服务器上进行以下配置:

  1. 配置zoo.cfg前准备 : 在ZooKeeper解压目录的conf文件夹中,复制zoo_sample.cfg并重命名为zoo.cfg,并创建data目录

    bash 复制代码
    cd /zookeeper
    cp conf/zoo_sample.cfg conf/zoo.cfg
    mkdir data
  2. 编辑zoo.cfg : 打开conf/zoo.cfg文件并进行如下修改:

    bash 复制代码
    tickTime=2000 #ZooKeeper中使用的基本时间单位,单位为毫秒。
    initLimit=10 #ZooKeeper允许从服务器在启动时(与主服务器同步)花费的最大时间,单位为tickTime的倍数。
    syncLimit=5 #ZooKeeper允许从服务器与主服务器之间保持同步的最大时间,单位为tickTime的倍数。
    dataDir=/zookeeper/data #存储快照数据的目录,集群模式下每台服务器都要有一个独立的目录。
    clientPort=2181 #客户端连接ZooKeeper服务器的端口号。
    
    #集群服务器配置,格式为:server.X=hostname:peer_port:election_port。
    server.1=192.168.1.101:2888:3888 
    server.2=192.168.1.102:2888:3888 
    server.3=192.168.1.103:2888:3888
  3. 配置myid文件 : 在每台服务器的dataDir目录下创建一个myid文件,其中包含该服务器的编号(与zoo.cfg中的server.X一致)。例如:

    bash 复制代码
    echo "1" > /var/zookeeper/myid # 在192.168.1.101机器上 
    echo "2" > /var/zookeeper/myid # 在192.168.1.102机器上 
    echo "3" > /var/zookeeper/myid # 在192.168.1.103机器上

3. 启动ZooKeeper集群

  1. 启动ZooKeeper: 在每台服务器上进入ZooKeeper的解压目录并启动:

    bash 复制代码
    bin/zkServer.sh start
  2. 检查状态: 通过以下命令检查每台ZooKeeper节点的状态:

    bash 复制代码
    bin/zkServer.sh status

    输出信息中可以看到是leaderfollower

4. 验证集群

查看所有端口是否正常监听,在每台主机执行如下命令

bash 复制代码
lsof -i :2888
lsof -i :3888

正常打印端口监听信息则证明没问题。

5. 常见问题排查

  • 节点无法启动 :检查myid文件和zoo.cfg配置文件的正确性。
  • 集群选举失败:确保所有节点的时钟同步,并检查网络连通性,防火墙是否关闭。
相关推荐
Pitayafruit1 小时前
跟着大厂学架构01:如何利用开源方案,复刻B站那套“永不崩溃”的评论系统?
spring boot·分布式·后端
国际云,接待2 小时前
微软云注册被阻止怎么解决?
服务器·网络·microsoft·云原生·微软·云计算
老实巴交的麻匪5 小时前
可观测性 | Grafana Loki 日志聚合方案快速体验
运维·云原生·容器
苏格拉没有底_coder7 小时前
引入 Kafka 消息队列解耦热点操作
分布式·kafka
顧棟8 小时前
Zookeeper 3.8.4 安装部署帮助手册
分布式·zookeeper
炎码工坊8 小时前
DevSecOps实践:CI/CD流水线集成动态安全测试(DAST)工具
安全·网络安全·微服务·云原生·安全架构
Akamai中国10 小时前
为何AI推理正推动云计算从集中式向分布式转型
人工智能·云原生·云计算·边缘计算
猕员桃11 小时前
《Elasticsearch 分布式搜索在聊天记录检索中的深度优化》
分布式·elasticsearch·wpf
沛沛老爹11 小时前
深入剖析 Celery:分布式异步任务处理的利器
分布式·python·微服务·celery·架构设计·worker节点
程序员阿超的博客11 小时前
云原生核心技术 (9/12): K8s 实战:如何管理应用的配置 (ConfigMap/Secret) 与数据 (Volume)?
云原生·容器·kubernetes