docker单机搭建zookeeper伪集群

  1. docker拉取zookeeper镜像

    docker pull zookeeper
    
  2. 新建zk1,zk2,zk3用于挂载三个节点的数据卷

    mkdir -vp zk/{zk1/{data/,logs/,conf/},zk2/{data/,log/,conf/},zk3/{data/,logs/,conf/}}
    

    根目录下创建zk,里面包含zk1,zk2,zk3三个子文件夹,每个zk子文件夹

    里有data/,logs/,conf/

  3. docker创建一个network组,让三个节点都进去才能互相ping的通

    docker network create zk_net
    

    否则容器使用默认的桥接模式无法互相ping通

  4. 分别创建三个容器

    docker run -d --name zk1 -v /zk/zk1/conf:/conf -v /zk/zk1/data:/data -v /zk/zk1/logs:/logs -p 21811:2181 --network=zk_net zookeeper
    
    docker run -d --name zk2 -v /zk/zk2/conf:/conf -v /zk/zk2/data:/data -v /zk/zk2/logs:/logs -p 21812:2182 --network=zk_net zookeeper
    
    docker run -d --name zk3 -v /zk/zk3/conf:/conf -v /zk/zk3/data:/data -v /zk/zk3/logs:/logs -p 21813:2183 --network=zk_net zookeeper
    

    先分别测试联通,没有问题

    image-20210418184820004

  5. 修改zk1,zk2,zk3的配置文件,将原来的server.1=localhost:2888:3888修改成

    server.1=zk1:2888:3888;2181
    server.2=zk2:2888:3888;2182
    server.3=zk3:2888:3888;2183
    

    server.x,这里的x分别指集群中每个节点的编号,必须是数字

    localhost: a: b; c

    • 最前面是主机地址

    • a一般2888,是zookeeper节点之间用来通讯的端口

    • b一般是3888,是用来选举leader用到的端口

    • c就是本节点的端口号,注意,这里用;隔开

      新版本好像默认就是用;加载后面,所以这里也这么写,之前版本好像是用clientPort指定端口号

    注意:之前每个节点最前面都是本容器的地址,现在需要修改成对应的名称,这里是zk1,zk2,zk3,docker会自动根据名称去查找每个容器自己的网络地址。

  6. 然后在每个对应的data目录下,创建myid,里面填写自己对应的节点数目

    zk/zk1/data/myid 里面数字是1

    zk/zk2/data/myid 里面数字是2

    zk/zk3/data/myid 里面数字是3

  7. 重启三个容器

    docker restart zk1

    docker restart zk2

    docker restart zk3

  8. 启动没问题,进入zk1容器内部,可以看到zk1现在是leader

    image-20210420221514134

    image-20210420222345686

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值