Zookeeper集群docker部署

集群角色

zookeeper 集群中的机器分为一下三种角色
leader:为客户端提供读写服务(事务性操作),并维护集群状态,它是由集群选举所产生的;
follower:为客户端提供读(非事务性操作),转发给leader写(事务性操作),参与选举操作;
observer:角色与follower类型,但无选举操作;

zookeeper端口

1:2181:对client端提供服务
2:2888:集群内机器通讯使用(leadre监听此端口)
1:3888:选举leader使用

docker-compose.yml文件

yml 复制代码
version: '3'
services:
  zoo1:
    image: zookeeper:latest
    restart: always
    container_name: zoo1
    ports:
      - "2181:2181"
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

  zoo2:
    image: zookeeper:latest
    restart: always
    container_name: zoo2   
    ports:
      - "2182:2181"   
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

  zoo3:
    image: zookeeper:latest
    restart: always
    container_name: zoo3
    ports:
      - "2183:2181"
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
      
  zoonavigator:
    image: elkozmon/zoonavigator:latest
    ports:
      - "9000:9000"
    environment:
      ZKUI_ZK_SERVER: "zoo1:2181,zoo2:2181,zoo3:2181"

通过一下命令查看那个zk是leader活着follower

bash 复制代码
[root@localhost zookeeperDocker]# docker exec -it zoo1 ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@localhost zookeeperDocker]# docker exec -it zoo2 ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@localhost zookeeperDocker]# docker exec -it zoo3 ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

注意:如果zookeeper容器启动时报错:Cannot create GC thread. Out of system resources,这就需要升级docker,是docker版本的问题

相关推荐
小满、34 分钟前
RabbitMQ:Fanout、Direct、Topic 交换机、队列声明与消息转换器
java·分布式·消息队列·rabbitmq·spring amqp
眠りたいです35 分钟前
Docker:Docker image常用命令使用及实操
运维·docker·容器·eureka·镜像
可爱又迷人的反派角色“yang”35 分钟前
docker基本概念(一)
linux·运维·docker·容器
CHINAHEAO35 分钟前
Docker 安装Bagisto详细过程
运维·docker·容器
Wang's Blog1 小时前
RabbitMQ: 分布式事务的最终一致性解决方案
分布式·rabbitmq
RemainderTime1 小时前
(十)Spring Cloud Alibaba 2023.x:生产级 CI/CD 全链路实战(从 Dockerfile 到 Jenkins)
运维·spring cloud·ci/cd·docker·jenkins
Radan小哥1 小时前
Docker学习笔记—day013
笔记·学习·docker
低调电报2 小时前
我的第一个开源项目:鸿蒙分布式“口袋健身”教练
分布式·开源·harmonyos
2501_940198692 小时前
【前瞻创想】Kurator分布式云原生平台:从架构解析到企业级多云集群管理实战指南
分布式·云原生·架构
mr_orange_klj2 小时前
关于docker远端缓存的AI问答(豆包)
docker