欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker部署Zookeeper集群 详细步骤

程序员文章站 2022-06-17 08:26:11
...

Docker部署Zookeeper集群 详细步骤

  1. 自定义镜像mycentos
    前往查看步骤——自定义mycentos镜像

    将Dockerfile文件 修改 EXPOSE 2181

    如下图则完成自定义镜像。
    Docker部署Zookeeper集群 详细步骤

  2. 启动3个mycentos容器,分别命名centos01、centos02、centos03。
    启动三个窗口分别运行下面三条命令。

    docker run -it -v /Zookeeper:/zk --name centos01 mycentos:1.0
    docker run -it -v /Zookeeper:/zk --name centos02 mycentos:1.0
    docker run -it -v /Zookeeper:/zk --name centos03 mycentos:1.0
    

    centos01、centos02、centos03三台服务器下各有一个zk文件夹,
    映射主机的Zookeeper文件夹,此文件夹为该三台服务器共享。

  3. 打开主机根目录 /Zookeeper文件夹。
    apache-zookeeper-3.6.2-bin.tar.gzjdk-8u271-linux-x64.tar.gz拷贝进来。
    Docker部署Zookeeper集群 详细步骤
    接下来可以在centos01、centos02、centos03三个服务器 /zk目录下可以看到这两个压缩包。
    Docker部署Zookeeper集群 详细步骤

  4. 安装jdk

    1. 解压
      在主机/Zookeeper目录下创建 java 目录为安装目录。
      mkdir java

      tar -zxvf jdk-8u271-linux-x64.tar.gz -C /Zookeeper/java
      Docker部署Zookeeper集群 详细步骤查看解压后的文件:
      Docker部署Zookeeper集群 详细步骤

    2. 修改环境变量
      进入centos01,打开文件
      vim /etc/profile

      在末尾追加:

      export JAVA_HOME=/zk/java/jdk1.8.0_271
      export JRE_HOME=${JAVA_HOME}/jre
      export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
      export PATH=${JAVA_HOME}/bin:$PATH
      
    3. 使环境变量生效
      source /etc/profile

    4. 添加软连接(可选)
      ln -s /zk/java/jdk1.8.0_271/bin/java /usr/bin/java

    5. 安装成功
      Docker部署Zookeeper集群 详细步骤
      同理配置centos02和centos03,从修改环境变量开始。

  5. 安装Zookeeper

    1. 解压

      进入主机 /Zookeeper目录,
      tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
      Docker部署Zookeeper集群 详细步骤

    2. 向centos01、centos02、centos03三台服务器分别创建zookeeper文件夹,并把apache-zookeeper-3.6.2-bin拷贝进去。

      进入centos01根目录 /
      mkdir zookeeper
      cp -r /zk/apache-zookeeper-3.6.2-bin/* /zookeeper
      Docker部署Zookeeper集群 详细步骤
      同理对centos02、centos03进行操作。

  6. 修改Zookeeper集群配置

    1. 首先查看centos01、centos02、centos03的ip地址。
      ifconfigip add
      Docker部署Zookeeper集群 详细步骤
      比如为:

      192.168.1.181
      192.168.1.182
      192.168.1.183

    2. 创建目录
      Docker部署Zookeeper集群 详细步骤

    3. 创建配置文件
      vim conf/zoo.cfg
      文件内容

      tickTime=2000
      initLimit=5
      syncLimit=2
      #maxClientCnxns=60
      #autopurge.snapRetainCount=3
      #autopurge.purgeInterval=1
      
      dataDir=/zookeeper/conf/data
      dataLogDir=/zookeeper/conf/datalog
      clientPort=2181
      server.1=192.168.1.181:2888:3888
      server.2=192.168.1.182:2888:3888
      server.3=192.168.1.183:2888:3888
      

      配置参数解读: Server.A=B:C:D。
      1) A是一个数字,表示这个是第几号服务器;
      2) B是这个服务器的ip地址;
      3) C是这个服务器与集群中的Leader服务器交换信息的端口;
      4) D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

    4. 创建myid,注意每台机器的文件内容不一样,我的分别为1、2、3

      集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
      vim data/myid
      在centos01的 dataDir 下面创建myid文件,写入 1。
      Docker部署Zookeeper集群 详细步骤
      同理
      centos02下 data/myid ->2
      centos03下 data/myid ->3

  7. 分别启动Zookeeper

    # ./zkServer.sh start  启动
    # ./zkServer.sh restart 重启
    # ./zkServer.sh stop 停止
    # ./zkServer.sh status查看状态
    # jps 提供一个显示当前所有java进程pid的命令。 
    

    Docker部署Zookeeper集群 详细步骤
    解析一下上图
    因为我服务器zookeeper已经启动,所以图中使用重启restart。
    半数机制:集群中半数以上机器存活,集群可用。所以zookeeper适合装在奇数台机器上。当服务器获得半数以上的票数时,被选举为leader

    1. 当启动zk1的时候,查看zk1的状态,./zkServer.sh status .
      可以看到zk1为跟随者follower。
    2. 当zk2、zk3启动后,由于zk2获得一半以上的票,被选举为leader。

如果查看状态出现如下错误,可以先启动所有服务器的Zookeeper在查看状态,如果还是报错再去查看配置文件是否正确。 Docker部署Zookeeper集群 详细步骤

===============================

  1. 如果对docker原理和命令不了解,可参考
    (一) Docker介绍与安装、测试和常用命令等。一篇文章足以。

  2. 对Zookeeper原理不了解,Zookeeper详细安装等可参考
    Zookeeper入门篇之详细介绍与安装