Zookeeper(六)基于 docker-compose 安装 Zookeeper 集群

Zookeeper 部署方式:

Zookeeper 部署有三种方式,单机模式、集群模式、伪集群模式。

  • 单机模式:存在单点故障
  • 集群模式:在多台机器上部署 Zookeeper 集群,适合线上环境使用。
  • 伪集群模式:在一台机器同时运行多个 Zookeeper 实例,仍然有单点故障问题,当然,其中配置的端口号要错开的,适合实验环境模拟集群使用。

注意:
集群为大于等于3个奇数,如 3、5、7,不宜太多,集群机器多了选举和数据同步耗时长,不稳定

使用集群模式安装Zookeeper。

由于是docker,所以并不是伪集群
docker-compose.yml

version: '3.1'
services:
    zoo1:
        image: zookeeper:3.4.13
        restart: always
        hostname: zoo1
        ports:
            - 2181:2181
        environment:
            ZOO_MY_ID: 1
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

    zoo2:
        image: zookeeper:3.4.13
        restart: always
        hostname: zoo2
        ports:
            - 2182:2181
        environment:
            ZOO_MY_ID: 2
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

    zoo3:
        image: zookeeper:3.4.13
        restart: always
        hostname: zoo3
        ports:
            - 2183:2181
        environment:
            ZOO_MY_ID: 3
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

选举:根据最新事务 ID(ZXID)来选举,谁最大,谁当leader。理论上如此。so,直接测试一下第三个服务是不是leader?

启动

docker-compose up -d

交互式进入容器

docker exec -it zookeeper_zoo3_1 /bin/bash
./bin/zkServer.sh status

然后出问题了,这是个大坑。fuck。因为用的是最新版本,建议使用3.4.13或者3.4.14
在这里插入图片描述
尝试解决这个bug,最终选择了沉默。降版本号为3.4.14
在这里插入图片描述
猜想错误,服务3并不是leader,测试一下,其他两台
在这里插入图片描述
服务1也是follow,故服务2为leader
在这里插入图片描述

发布了44 篇原创文章 · 获赞 5 · 访问量 905

猜你喜欢

转载自blog.csdn.net/qq_40634246/article/details/104603961