美文网首页devopt
二、docker搭建zookeeper集群

二、docker搭建zookeeper集群

作者: 爱泡脚的CXY | 来源:发表于2019-03-21 14:22 被阅读72次

    zookeeper搭建集群有两点注意:

    1、data目录下myid文件中的数字不能重复(data文件路径可以在zoo.cnf中自己指定)
    2、在zoo.cnf中要指定所有的zookeeper的ip和端口

    docker搭建zk集群:

    (ps:本文使用文件拷贝的方式来配置zk的集群,应该不是最佳的解决方案,dockerHub提供一种方式启动,但是一个zk节点挂点其他也会挂掉,故暂时使用以下方式配置)

    一、下载docker
    略。。。
    二、下载zk镜像

    docker pull registry.docker-cn.com/library/zookeeper
    

    三、创建自定义的bridge,这一步必须的,否侧集群中通信只能通过ip比较麻烦,注册到同一个bridge容器间可以通过容器名进行通信

    docker network create -d bridge my-net
    

    四、启动三个zk容器

    docker run -d --name zookeeper01 -p 22181:2181 --network=my-net  registry.docker-cn.com/library/zookeeper
    docker run -d --name zookeeper02 -p 22182:2181 --network=my-net  registry.docker-cn.com/library/zookeeper
    docker run -d --name zookeeper03 -p 22183:2181 --network=my-net  registry.docker-cn.com/library/zookeeper
    

    (ps: -p后第一个端口为映射的本地端口可以随便起,但是不能重复)
    随便找一个zk容器,拷贝出其中一个zoo.cfg

    docker cp 容器id:conf/zoo.cfg zoo.cfg
    

    用vim打开拷贝出来的zoo.cfg,并在末尾增加集群配置:

    server.1=zookeeper01:2881:3881
    server.2=zookeeper02:2881:3881
    server.3=zookeeper03:2881:3881
    

    因为注册到同一个bridge所以可以用容器名字进行通信
    ···
    docker cp 第一个容器id:conf/zoo.cfg zoo.cfg
    docker cp 第二个容器id:conf/zoo.cfg zoo.cfg
    docker cp 第三个容器id:conf/zoo.cfg zoo.cfg
    ···
    修改完zoo.cfg后我们还要修改容器data/myid,在集群中的id
    因为容器中的myid默认都是1,故我们直接修改第二个和第三个

    echo 2 >myid
    

    将myid拷贝到第二个容器

    docker cp myid:第二个容器id:/data/myid
    

    修改myid为3
    vim myid 自己改成三然后拷贝到第三个容器
    最后重启三个zk容器

    docker restart 第一个容器id
    docker restart 第一个容器id
    docker restart 第一个容器id
    

    测试:
    进入镜像查看状态

    docker exec -it 容器id /bin/sh
    bin/zkServer.sh status
    
    image.png
    image.png
    image.png

    一个leader两个follower
    完毕!!!

    相关文章

      网友评论

        本文标题:二、docker搭建zookeeper集群

        本文链接:https://www.haomeiwen.com/subject/bbttvqtx.html