集群"/>
Docker 部署zookeeper集群
1、docker 查看zookeeper镜像。
docker search zookeeper[root@localhost /]# docker search zookeeper
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
zookeeper Apache ZooKeeper is an open-source server wh… 915 [OK]
jplock/zookeeper Builds a docker image for Zookeeper version … 165 [OK]
wurstmeister/zookeeper 127 [OK]
mesoscloud/zookeeper ZooKeeper 73 [OK]
bitnami/zookeeper ZooKeeper is a centralized service for distr… 40 [OK]
mbabineau/zookeeper-exhibitor 24 [OK]
digitalwonderland/zookeeper Latest Zookeeper - clusterable 20 [OK]
tobilg/zookeeper-webui Docker image for using `zk-web` as ZooKeeper… 15 [OK]
confluent/zookeeper 13 [OK]
debezium/zookeeper Zookeeper image required when running the De… 12 [OK]
31z4/zookeeper Dockerized Apache Zookeeper. 8 [OK]
thefactory/zookeeper-exhibitor Exhibitor-managed ZooKeeper with S3 backups … 6 [OK]
emccorp/zookeeper Zookeeper 2
engapa/zookeeper Zookeeper image optimised for being used int… 2
paulbrown/zookeeper Zookeeper on Kubernetes (PetSet) 1 [OK]
duffqiu/zookeeper-cli 1 [OK]
perrykim/zookeeper k8s - zookeeper ( forked k8s contrib ) 1 [OK]
strimzi/zookeeper 1
josdotso/zookeeper-exporter ref: … 1 [OK]
openshift/zookeeper-346-fedora20 ZooKeeper 3.4.6 with replication support 1
midonet/zookeeper Dockerfile for a Zookeeper server. 0 [OK]
humio/zookeeper-dev zookeeper build with zulu jvm. 0
dabealu/zookeeper-exporter zookeeper exporter for prometheus 0 [OK]
phenompeople/zookeeper Apache ZooKeeper is an open-source server wh… 0 [OK]
pravega/zookeeper-operator Kubernetes operator for Zookeeper 0
[root@localhost /]#
我们就选取官方版本 Apache Zookeeper,如果不指定版本默认拉去最新版本3.5.X(latest)。如果有特殊版本需要可以加上版本号。我们这里就用默认版本
docker pull zookeeper
2、集群部署zookeeper有两种方式:
- 直接启动三个容器,运行zookeeper
- 利用docker-compose 部署
2.1 在这之前我们需要创建一个自己的网络,用于不同容器的通信。这样做是因为Docker网络分为三种网络模式,bridge、host、none,在你创建容器的时候,不指定--network默认是bridge。
bridge:为每一个容器分配IP,并将容器连接到一个docker0虚拟网桥,通过docker0网桥与宿主机通信。也就是说,此模式下,你不能用宿主机的IP+容器映射端口来进行Docker容器之间的通信。
host:容器不会虚拟自己的网卡,配置自己的IP,而是使用宿主机的IP和端口。这样一来,Docker容器之间的通信就可以用宿主机的IP+容器映射端口
none:无网络。
docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zoonet
然后执行命令:
docker run -d -p 2181:2181 --name zookeeper_node1 --privileged --restart always --network zoonet --ip 172.18.0.2 \
-v /work/zookeeper/node1/volumes/data:/data \
-v /work/zookeeper/node1/volumes/datalog:/datalog \
-v /work/zookeeper/node1/volumes/logs:/logs \
-e ZOO_MY_ID=1 \
-e "ZOO_SERVERS=server.1=172.18.0.2:2888:3888;2181 server.2=172.18.0.3:2888:3888;2181 server.3=172.18.0.4:2888:3888;2181" 6ad6cb039dfadocker run -d -p 2182:2181 --name zookeeper_node2 --privileged --restart always --network zoonet --ip 172.18.0.3 \
-v /work/zookeeper/node2/volumes/data:/data \
-v /work/zookeeper/node2/volumes/datalog:/datalog \
-v /work/zookeeper/node2/volumes/logs:/logs \
-e ZOO_MY_ID=2 \
-e "ZOO_SERVERS=server.1=172.18.0.2:2888:3888;2181 server.2=172.18.0.3:2888:3888;2181 server.3=172.18.0.4:2888:3888;2181" 6ad6cb039dfadocker run -d -p 2183:2181 --name zookeeper_node3 --privileged --restart always --network zoonet --ip 172.18.0.4 \
-v /work/zookeeper/node3/volumes/data:/data \
-v /work/zookeeper/node3/volumes/datalog:/datalog \
-v /work/zookeeper/node3/volumes/logs:/logs \
-e ZOO_MY_ID=3 \
-e "ZOO_SERVERS=server.1=172.18.0.2:2888:3888;2181 server.2=172.18.0.3:2888:3888;2181 server.3=172.18.0.4:2888:3888;2181" 6ad6cb039dfa
2.2 利用docker-compose 部署zookeeper集群
首先安装docker-compose
方式1、
curl -L ".24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose方法2:1、安装python-pipyum -y install epel-releaseyum -y install python-pip2、安装docker-composepip install docker-compose
安装完成之后,创建数据挂载目录:
[root@localhost root]# mkdir /work/zookeeper/node1
[root@localhost root]# mkdir /work/zookeeper/node2
[root@localhost root]# mkdir /work/zookeeper/node3
然后创建docker-compose文件
[root@localhost root]# mkdir DockerComposeFolder
[root@localhost root]# cd DockerComposeFolder/
[root@localhost DockerComposeFolder]# vim docker-compose.yml
写入如下内容:
version: '3.1'services:zoo1:image: zookeeperrestart: alwaysprivileged: truehostname: zoo1ports:- 2181:2181volumes: # 挂载数据- /work/zookeeper/node1/data:/data- /work/zookeeper/node1/datalog:/datalog- /work/zookeeper/node1/conf:/confenvironment:ZOO_MY_ID: 1ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181networks:default:ipv4_address: 172.18.0.14zoo2:image: zookeeperrestart: alwaysprivileged: truehostname: zoo2ports:- 2182:2181volumes: # 挂载数据- /work/zookeeper/node2/data:/data- /work/zookeeper/node2/datalog:/datalog- /work/zookeeper/node2/conf:/confenvironment:ZOO_MY_ID: 2ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181networks:default:ipv4_address: 172.18.0.15zoo3:image: zookeeperrestart: alwaysprivileged: truehostname: zoo3ports:- 2183:2181volumes: # 挂载数据- /work/zookeeper/node3/data:/data- /work/zookeeper/node3/datalog:/datalog- /work/zookeeper/node3/conf:/confenvironment:ZOO_MY_ID: 3ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181networks:default:ipv4_address: 172.18.0.16networks: # 自定义网络default:external:name: zoonet
修改zookeeper配置文件zoo.cof:在/work/zookeeper/node1/conf目录下复制一份zoo.cfg.dynamic.next 重命名为:zoof
内容:
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=5
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=0.0.0.0:2888:3888;2181
server.2=zoo2:2888:3888;2181
server.3=zoo3:2888:3888;2181
然后在当前目录下启动容器:
docker-compose -f docker-compose.yml up -d
利用docker ps 查看启动的容器:发现启动成功
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d54f2859c37 zookeeper "/docker-entrypoint.…" 5 days ago Up 35 minutes 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp dockercomposefolder_zoo2_1
189bb55ceca8 zookeeper "/docker-entrypoint.…" 5 days ago Up 35 minutes 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp dockercomposefolder_zoo1_1
00680a11c8ff zookeeper "/docker-entrypoint.…" 5 days ago Up 35 minutes 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2183->2181/tcp dockercomposefolder_zoo3_1
4f963292537b 718a6da099d8 "docker-entrypoint.s…" 6 days ago Up 26 hours 33060/tcp, 0.0.0.0:3309->3306/tcp mysql-slave2
f4b7c645e447 718a6da099d8 "docker-entrypoint.s…" 6 days ago Up 26 hours 33060/tcp, 0.0.0.0:3308->3306/tcp mysql-slave1
372668360cfb 718a6da099d8 "docker-entrypoint.s…" 6 days ago Up 26 hours 33060/tcp, 0.0.0.0:3307->3306/tcp mysql-master
[root@localhost /]#
更多推荐
Docker 部署zookeeper集群
发布评论