之前有介绍过使用Docker创建MySQL服务,说明了三种方式。
- 使用Docker镜像
- 通过Dockerfile构建
- 通过docker stack deploy(或者docker-compose)
1,2可以归为一种,即单个应用方式: Dockerfile -> 镜像 -> 容器(docker run) 。对于搭建集群环境的话,Docker Stack方式实施和管理更为方便。所以这里搭建一个zookeeper的集群环境就不再使用1,2种,想,具体方式可以参见Docker创建MySQL服务。
zookeeper.yml
通过docker stack deploy方式首先要编写yaml文件。样例可以参见dockerhub的zookeeper镜像的介绍。
如下:
version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: 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
zoo2:
image: zookeeper
restart: always
hostname: 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
zoo3:
image: zookeeper
restart: always
hostname: 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
上面的文件创建了三个zookeeper的集群服务,以复制模式(replicated mode)启动Zookeeper,并将容器内的2181端口分别映射到主机的2181,2182,2183。
当然,严格的说,这个也不能说是集群模式。毕竟所有容器都运行再同一主机,如果宕机,所有的zookeeper服务器都将处于脱机状态。
执行,生成服务
采用如下命令:
sudo docker stack deploy -c zookeeper.yml zk
查看服务状态:
sudo docker stack services zk
连接zookeeper服务
zkCli.sh
zookeeper的bin目录下提供了一个客户端连接工具zkCli.sh。
到https://www.apache.org/dyn/closer.cgi/zookeeper/下载zookeeper即可获得。
进入到bin目录下,执行命令。
./zkCli.sh -server 127.0.0.1:2181
可以成功连接到上面创建的zookeeper服务。
命令行的相关操作,可以参见
分布式服务框架ZooKeeper安装和配置
分布式服务框架ZooKeeper:四字命令