Docker----zookeeper集群(3.4.13)

一、配置文件准备

docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zk zookeeper:3.4.13
mkdir zookeeper
cd /home/docker/zookeeper
docker cp zk:/conf .
docker cp zk:/data .
docker stop zk && docker rm zk

修改zoo.cfg文件(位于conf目录)

节点1

clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=0.0.0.0:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888

节点2

clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=zk1:2888:3888
server.2=0.0.0.0:2888:3888
server.3=zk3:2888:3888

节点3

clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=0.0.0.0:2888:3888

修改配置文件myid(位于data目录),与上面配置文件server后面的id对应

节点1(不需要改动)
节点2
echo 2 > /home/docker/zookeeper/data/myid
节点3
echo 3 > /home/docker/zookeeper/data/myid

二、部署zookeeper集群

由于位于不同主机,启动容器需要添加DNS解析,修改/etc/hosts文件,使用--add-host参数,如果不用DNS解析可以使用--net host使用宿主机网络,启动命令如下:

docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zk1 \
--add-host zk1:192.168.99.100 \
--add-host zk2:192.168.99.101 \
--add-host zk3:192.168.99.102 \
-v /home/docker/zookeeper/conf/:/conf \
-v /home/docker/zookeeper/data/:/data \
zookeeper:3.4.13

docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zk2 \
--add-host zk1:192.168.99.100 \
--add-host zk2:192.168.99.101 \
--add-host zk3:192.168.99.102 \
-v /home/docker/zookeeper/conf/:/conf \
-v /home/docker/zookeeper/data/:/data \
zookeeper:3.4.13

docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zk3 \
--add-host zk1:192.168.99.100 \
--add-host zk2:192.168.99.101 \
--add-host zk3:192.168.99.102 \
-v /home/docker/zookeeper/conf/:/conf \
-v /home/docker/zookeeper/data/:/data \
zookeeper:3.4.13

三、查看集群状态

方法一:

docker@docker1:~/zookeeper$ docker exec -it zk1 bash
bash-4.4# cd bin/
bash-4.4# ls
README.txt           zkCli.cmd            zkEnv.cmd            zkServer.cmd         zkTxnLogToolkit.cmd
zkCleanup.sh         zkCli.sh             zkEnv.sh             zkServer.sh          zkTxnLogToolkit.sh
bash-4.4# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: follower

方法二:

docker@docker1:~/zookeeper$ echo stat | nc 192.168.99.100 2181
Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
Clients:
 /192.168.99.100:43359[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/0
Received: 4
Sent: 3
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: follower
Node count: 4

四、docker-compose部署

version: '3'
services:
  zk1:
    image: zookeeper:3.4.13
    restart: always
    container_name: zk1
    ports:
      - "2181:2181"
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888 server.4=zk4:2888:3888:observer
  zk2:
    image: zookeeper:3.4.13
    restart: always
    container_name: zk2
    ports:
      - "2182:2181"
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888 server.4=zk4:2888:3888:observer
  zk3:
    image: zookeeper:3.4.13
    restart: always
    container_name: zk3
    ports:
      - "2183:2181"
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888 server.4=zk4:2888:3888:observer
  zk4:
    image: zookeeper:3.4.13
    restart: always
    container_name: zk4
    ports:
      - "2184:2181"
    environment:
      ZOO_MY_ID: 4
      PEER_TYPE: observer
      ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888 server.4=zk4:2888:3888:observer
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值