docker搭建zookeeper集群

2024-02-29 1369阅读

温馨提示:这篇文章已超过429天没有更新,请注意相关的内容是否还可用!

文章目录

    • 1. 集群搭建
    • 2. Leader选举
    • 3. Zookeeper集群角色

      1. 集群搭建

      这里我们使用docker-compose 搭建伪集群

      version: '3.1'
      services:
            zoo1:
                image: zookeeper
                restart: always
                container_name: zoo1
                ports:
                  - 2181:2181
                volumes:
                  - /home/zk/zoo1/data:/data
                  - /home/zk/zoo1/datalog:/datalog
                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
                  ZOO_AUTOPURGE_PURGEINTERVAL: 1
            zoo2:
                image: zookeeper
                restart: always
                container_name: zoo2
                ports:
                  - 2182:2181
                volumes:
                  - /home/zk/zoo2/data:/data
                  - /home/zk/zoo2/datalog:/datalog
                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
                   ZOO_AUTOPURGE_PURGEINTERVAL: 1
            zoo3:
                image: zookeeper
                restart: always
                container_name: zoo3
                ports:
                  - 2183:2181
                volumes:
                  - /home/zk/zoo3/data:/dada
                  - /home/zk/zoo3/datalog:/datalog
                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
                  ZOO_AUTOPURGE_PURGEINTERVAL: 1
      

      启动dokcer-compose.yml文件

      docker-compose up -d
      

      docker搭建zookeeper集群

      查看容器状态

      docker搭建zookeeper集群

      可以看到集群搭建成功

      2. Leader选举

      docker搭建zookeeper集群

      选举的时候需要一些参数作为参考的维度,主要有两个参数

      • Serverid:服务器ID

        例如有三台服务器,编号分别为1、2、3,编号越大的在选择算法中权重越大

      • Zxid:数据ID

        服务器中存放的最大数据ID,值越大说明数据越新,权重越大

        如果某台机器获得超过半数的选票就成为leader

        我们以上面的五台Zookeeper集群为例看一下选举的过程:

        1. 首先Server1上线,此时集群内只有它一台机器,它会投票给自己,但是其票数没有过半(即三票),此时不能成为leader
        2. Server2上线,由于集群内现在还没有leader,重新选举。根据Zookeeper顺序结点的特性,Server2的编号会比Server1大,所以Server1根据权重规则将票投给Server2,Server2投给自己,但是票数依旧没有过半,不能成为leader
        3. Server3上线,集群内没有leader,重新选举。同理Server1、2、3根据权重规则都会投给Server3,此时Server3票数过半,成为整个集群的leader
        4. Server4、5上线,由于集群内已经有leader了,所以不会再继续投票

        3. Zookeeper集群角色

        docker搭建zookeeper集群

        Zookeeper集群服务中有三个角色:

        1. Leader领导者
          • 负责处理事务请求
          • 集群内部各服务器的调度者
          • Follower跟随者
            • 处理客户端非事务请求,转发事务请求给Leader服务器
            • 参与Leader选举投票
            • Observer观察者
              • 处理客户端非事务请求,转发事务请求给Leader服务器
              • 不能参与Leader选举投票
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]