使用docker搭建zookeeper集群

本文档详细介绍了如何使用Docker在多服务器和单服务器环境下搭建Zookeeper集群。通过创建数据目录,拉取镜像,设置环境变量,启动容器等步骤,实现了Zookeeper的分布式部署。在单服务器环境中,还涉及到了使用docker-compose和虚拟子网配置。
摘要由CSDN通过智能技术生成

使用 docker 搭建 zookeeper 集群

前言

本文使用 docker 快捷搭建 zookeeper 集群,参考资料来自于 dockerhub zookeeper,关于参数的解释请移步。

docker 安装可参考 官方安装Docker步骤

多服务器

示例为 3 台 Ubuntu 18.04 虚拟机

在三台服务器上分别新建 zookeeper 相关目录

mkdir -p /home/`whoami`/data/zookeeper/data /home/`whoami`/data/zookeeper/datalog /home/`whoami`/data/zookeeper/logs

在三台服务器上分别拉取 zookeeper 镜像

docker pull zookeeper
# 当前版本为 3.6.2 ,查看版本可使用如下命令
docker inspect zookeeper | grep WorkingDir | grep -E '([0-9]+(\.)?)+'

启动容器

# 在 server.1 上执行
docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper_node \
  --privileged --restart always --network host \
  -v /home/`whoami`/data/zookeeper/data:/data \
  -v /home/`whoami`/data/zookeeper/datalog:/datalog \
  -v /home/`whoami`/data/zookeeper/logs:/logs \
  -e ZOO_MY_ID=1 \
  -e ZOO_SERVERS="clientPort=2181 server.1=192.168.0.10:2888:3888 server.2=192.168.0.11:2888:3888 server.3=192.168.0.12:2888:3888" zookeeper:latest
  
# 在 server.2 上执行
docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper_node \
  --privileged --restart always --network host \
  -v /home/`whoami`/data/zookeeper/data:/data \
  -v /home/`whoami`/data/zookeeper/datalog:/datalog \
  -v /home/`whoami`/data/zookeeper/logs:/logs \
  -e ZOO_MY_ID=2 \
  -e ZOO_SERVERS="clientPort=2181 server.1=192.168.0.10:2888:3888 server.2=192.168.0.11:2888:3888 server.3=192.168.0.12:2888:3888" zookeeper:latest

# 在 server.3 上执行
docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zookeeper_node \
  --privileged --restart always --network host \
  -v /home/`whoami`/data/zookeeper/data:/data \
  -v /home/`whoami`/data/zookeeper/datalog:/datalog \
  -v /home/`whoami`/data/zookeeper/logs:/logs \
  -e ZOO_MY_ID=3 \
  -e ZOO_SERVERS="clientPort=2181 server.1=192.168.0.10:2888:3888 server.2=192.168.0.11:2888:3888 server.3=192.168.0.12:2888:3888" zookeeper:latest

单服务器

官方提供了使用 docker-compose 运行的方式,请移步 官方安装Docker步骤

创建目录,由于用途为测试使用,因此,在当前用户目录下创建所需要的目录

# 单机搭建时,不同的容器,需要挂载不同的目录
mkdir -p /home/`whoami`/data/zookeeper1/data /home/`whoami`/data/zookeeper1/datalog /home/`whoami`/data/zookeeper1/logs
mkdir -p /home/`whoami`/data/zookeeper2/data /home/`whoami`/data/zookeeper2/datalog /home/`whoami`/data/zookeeper2/logs
mkdir -p /home/`whoami`/data/zookeeper3/data /home/`whoami`/data/zookeeper3/datalog /home/`whoami`/data/zookeeper3/logs

在单台服务器上搭建 zookeeper 集群时,需要创建 docker 虚拟子网,可根据实际情况修改

docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zoonet

虚拟子网创建完成后,可使用 docker network ls 查看,示例输出如下,其中包含 zoonet 子网

NETWORK ID     NAME      DRIVER    SCOPE
9392f0e5014b   bridge    bridge    local
415d7218cfa8   host      host      local
659483ed4688   none      null      local
5d716a5d1b45   zoonet    bridge    local

拉取 zookeeper 镜像

docker pull zookeeper
# 当前版本为 3.6.2 ,查看版本可使用如下命令
docker inspect zookeeper | grep WorkingDir | grep -E '([0-9]+(\.)?)+'

启动容器

# 启动 zookeeper_node1
docker run -d -p 2181:2181 --name zookeeper_node1 \
  --privileged --restart always --network zoonet --ip 172.18.0.2 \
  -v /home/`whoami`/data/zookeeper1/data:/data \
  -v /home/`whoami`/data/zookeeper1/datalog:/datalog \
  -v /home/`whoami`/data/zookeeper1/logs:/logs \
  -e ZOO_MY_ID=1 \
  -e ZOO_SERVERS="clientPort=2181 server.1=172.18.0.2:2888:3888 server.2=172.18.0.3:2888:3888 server.3=172.18.0.4:2888:3888" \
  zookeeper:latest

# 启动 zookeeper_node2
docker run -d -p 2182:2181 --name zookeeper_node2 \
  --privileged --restart always --network zoonet --ip 172.18.0.3 \
  -v /home/`whoami`/data/zookeeper2/data:/data \
  -v /home/`whoami`/data/zookeeper2/datalog:/datalog \
  -v /home/`whoami`/data/zookeeper2/logs:/logs \
  -e ZOO_MY_ID=2 \
  -e ZOO_SERVERS="clientPort=2182 server.1=172.18.0.2:2888:3888 server.2=172.18.0.3:2888:3888 server.3=172.18.0.4:2888:3888" \
  zookeeper:latest

# 启动 zookeeper_node3
docker run -d -p 2183:2181 --name zookeeper_node3 \
  --privileged --restart always --network zoonet --ip 172.18.0.4 \
  -v /home/`whoami`/data/zookeeper3/data:/data \
  -v /home/`whoami`/data/zookeeper3/datalog:/datalog \
  -v /home/`whoami`/data/zookeeper3/logs:/logs \
  -e ZOO_MY_ID=3 \
  -e ZOO_SERVERS="clientPort=2183 server.1=172.18.0.2:2888:3888 server.2=172.18.0.3:2888:3888 server.3=172.18.0.4:2888:3888" \
  zookeeper:latest

验证

可通过 ./bin/zkServer.sh status 查看当前 zookeeper 节点的状态

docker exec -it zookeeper_node /bin/bash
./bin/zkServer.sh status

# ---------- 返回值如下 ----------
# server.1 / zookeeper_node1
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

# server.2 / zookeeper_node2
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

# server.3 / zookeeper_node3
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值