单主机集群容器模式
单节点(主机)的zookeeper容器搭建,原理也是比较简单的,我们利用之前创建的zookeeper镜像分别创建三个容器:
Zk1
sudo docker run -d -p 21811:2181 --name=container1 \
-v /home/zk/container1:/var/zookeeper/data \
-v /home/zk/zoo.cfg:/var/zookeeper/conf/zoo.cfg \
-v /home/zk/container_exec.sh:/var/zookeeper/data/container_exec.sh \
zookeeper /var/zookeeper/data/container_exec.sh
Zk2
sudo docker run -d -p 21812:2181 --name=container3 \
-v /home/zk/container1:/var/zookeeper/data \
-v /home/zk/zoo.cfg:/var/zookeeper/conf/zoo.cfg \
-v /home/zk/container_exec.sh:/var/zookeeper/data/container_exec.sh \
zookeeper /var/zookeeper/data/container_exec.sh
Zk3
sudo docker run -d -p 21813:2181 --name=container3 \
-v /home/zk/container1:/var/zookeeper/data \
-v /home/zk/zoo.cfg:/var/zookeeper/conf/zoo.cfg \
-v /home/zk/container_exec.sh:/var/zookeeper/data/container_exec.sh \
zookeeper /var/zookeeper/data/container_exec.sh
其中container_exec.sh负责在容器中配置zoo.cfg文件、获取myid文件内容以及启动容器操作,具体内容如下:
#获取容器ip地址,以及myid文件
CONTAINER_IP=`ip addr | grep eth0 |grep inet|cut -d/ -f1|awk '{print $2}'`
ZK_ID=`cat /var/zookeeper/data/myid`
#配置zoo.cfg文件
echo $CONTAINER_IP
echo myid=$ZK_ID
echo 'server.'$ZK_ID'='$CONTAINER_IP':2888:3888' >> /var/zookeeper/conf/zoo.cfg
#等待其他容器配置好
sleep 5
cat /var/zookeeper/conf/zoo.cfg
#前台运行
/var/zookeeper/bin/zkServer.sh start-foreground
待我们运行好了之后,我们可以看到端口映射:
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b17517a0765e zookeeper "/var/zookeeper/data 8 seconds ago Up 7 seconds 2888/tcp, 3888/tcp, 0.0.0.0:21813->2181/tcp container3
b04153b0197b zookeeper "/var/zookeeper/data 9 seconds ago Up 7 seconds 2888/tcp, 3888/tcp, 0.0.0.0:21812->2181/tcp container2
17c260876404 zookeeper "/var/zookeeper/data 9 seconds ago Up 8 seconds 2888/tcp, 3888/tcp, 0.0.0.0:21811->2181/tcp container1
然后查看zookeper集群状态:
# telnet 0.0.0.0 21812
Trying 0.0.0.0...
Connected to 0.0.0.0.
Escape character is '^]'.
stat
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
/172.17.42.1:57481[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x100000000
Mode: leader
Node count: 4
Connection closed by foreign host.
至此搭建成功