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

      在末尾追加:

      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集群 详细步骤

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 Docker Compose 部署 ZooKeeper 集群的详细步骤: 1. 安装 DockerDocker Compose,可以参考官方文档安装。 2. 创建一个目录,用于存放 ZooKeeper 的配置文件和 Docker Compose 文件: ```sh mkdir zookeeper-cluster cd zookeeper-cluster ``` 3. 创建一个名为 docker-compose.yml 的文件,并添加以下内容: ```yaml version: '3' services: zoo1: image: zookeeper restart: always hostname: zoo1 container_name: zoo1 ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 volumes: - ./zoo1/data:/data - ./zoo1/datalog:/datalog networks: zk-net: ipv4_address: 172.20.0.2 zoo2: image: zookeeper restart: always hostname: zoo2 container_name: zoo2 ports: - "2182:2181" environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 volumes: - ./zoo2/data:/data - ./zoo2/datalog:/datalog networks: zk-net: ipv4_address: 172.20.0.3 zoo3: image: zookeeper restart: always hostname: zoo3 container_name: zoo3 ports: - "2183:2181" environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 volumes: - ./zoo3/data:/data - ./zoo3/datalog:/datalog networks: zk-net: ipv4_address: 172.20.0.4 networks: zk-net: driver: bridge ipam: config: - subnet: 172.20.0.0/16 ``` 上述 Docker Compose 文件定义了一个 ZooKeeper 集群,由三个 ZooKeeper 节点组成。每个节点都有自己的 ID(ZOO_MY_ID),并且使用环境变量 ZOO_SERVERS 指定了集群中所有节点的主机名和通信端口。 此外,每个节点都有自己的数据目录和数据日志目录,以及一个网络配置,用于在容器之间进行通信。 4. 创建每个 ZooKeeper 节点的目录,用于存放数据和日志: ```sh mkdir -p zoo1/data zoo1/datalog mkdir -p zoo2/data zoo2/datalog mkdir -p zoo3/data zoo3/datalog ``` 5. 启动 ZooKeeper 集群: ```sh docker-compose up -d ``` 6. 等待一段时间,直到所有节点都启动并连接到集群。可以使用以下命令检查节点的状态: ```sh docker-compose ps ``` 输出应该类似于以下内容: ```sh Name Command State Ports ------------------------------------------------------------------------------------ zookeeper-cluster_zoo1_1 /docker-entrypoint.sh zkS ... Up 0.0.0.0:2181->2181/tcp zookeeper-cluster_zoo2_1 /docker-entrypoint.sh zkS ... Up 0.0.0.0:2182->2181/tcp zookeeper-cluster_zoo3_1 /docker-entrypoint.sh zkS ... Up 0.0.0.0:2183->2181/tcp ``` 7. 现在,ZooKeeper 集群已经准备好使用了。可以使用客户端连接到任何节点,并执行 ZooKeeper 命令。 8. 停止并删除 ZooKeeper 集群: ```sh docker-compose down ``` 以上就是使用 Docker Compose 部署 ZooKeeper 集群的详细步骤

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxg45

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值