Docker部署Zookeeper集群 详细步骤

Docker部署Zookeeper集群 详细步骤

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

    将Dockerfile文件 修改 EXPOSE 2181

    如下图则完成自定义镜像。
    在这里插入图片描述

  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拷贝进来。
    在这里插入图片描述
    接下来可以在centos01、centos02、centos03三个服务器 /zk目录下可以看到这两个压缩包。
    在这里插入图片描述

  4. 安装jdk

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

      tar -zxvf jdk-8u271-linux-x64.tar.gz -C /Zookeeper/java
      在这里插入图片描述
      查看解压后的文件:
      在这里插入图片描述

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

      在末尾追加:

      扫描二维码关注公众号,回复: 13118451 查看本文章
      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. 安装成功
      在这里插入图片描述
      同理配置centos02和centos03,从修改环境变量开始。

  5. 安装Zookeeper

    1. 解压

      进入主机 /Zookeeper目录,
      tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
      在这里插入图片描述

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

      进入centos01根目录 /
      mkdir zookeeper
      cp -r /zk/apache-zookeeper-3.6.2-bin/* /zookeeper
      在这里插入图片描述
      同理对centos02、centos03进行操作。

  6. 修改Zookeeper集群配置

    1. 首先查看centos01、centos02、centos03的ip地址。
      ifconfigip add
      在这里插入图片描述
      比如为:

      192.168.1.181
      192.168.1.182
      192.168.1.183

    2. 创建目录
      在这里插入图片描述

    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。
      在这里插入图片描述
      同理
      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的命令。 
    

    在这里插入图片描述
    解析一下上图
    因为我服务器zookeeper已经启动,所以图中使用重启restart。
    半数机制:集群中半数以上机器存活,集群可用。所以zookeeper适合装在奇数台机器上。当服务器获得半数以上的票数时,被选举为leader

    1. 当启动zk1的时候,查看zk1的状态,./zkServer.sh status .
      可以看到zk1为跟随者follower。
    2. 当zk2启动后,zk2后的一半以上的票数,被选举为leader,由于选举需要时间,所以上图中显示为follower。
    3. zk3启动后,由于zk2已经被选举为leader。所以zk3直接作为follower。

如果查看状态出现如下错误,可以先启动所有服务器的Zookeeper在查看状态,如果还是报错再去查看配置文件是否正确。 在这里插入图片描述

===============================
(一) Zookeeper入门篇之详细介绍与安装

(二) Zookeeper内部原理之选举机制、Stat结构体与监听器原理

(三) Zookeeper实战篇之集群部署与客户端命令行操作

Docker部署Zookeeper集群 详细步骤

获取本教程所需资源压缩包,版本一致无须更改命令。

猜你喜欢

转载自blog.csdn.net/Zhangxg0206/article/details/110560179