- 拉取zookeeper
> docker pull zookeeper
2.预设文件目录结构
文件目录结构 /usr/local/zookeeper 下建立三个节点文件
./node1 ./node2 ./node3
每个node文件中新建三个存放数据的文件分别是
./conf ./data ./datalog
然后在node文件同级目录建立docker-compose.yml文件 (这个文件就是配置zookeeper集群信息的配置文件)
具体结构如下图:
> sudo vim docker-compose.yml
配置参数如下:
version: '3'#版本号固定写法
services:
zoo1:
image: zookeeper #使用的镜像
restart: always #宕机后自动重启
hostname: zoo1 #承载zookeeper容器的主机(父容器)名 可省略
container_name: zoo1 #容器名
privileged: true #使用该参数,container内的root拥有真正的root权 privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。
ports: #主机和容器的端口映射
- "2181:2181"
volumes: #创建zookeeper容器在宿主机的挂载目录
- /usr/local/zookeeper/node1/data:/data #数据
- /usr/local/zookeeper/node1/datalog:/datalog #日志
- /usr/local/zookeeper/node1/conf:/conf #配置文件
environment: #zookeeper3.4 和zookeeper 3.5在docker环境下搭建集群差异就在这里 #zoo1为容器名,也是主机名,意思为使用容器的内网通信(1)Zookeeper3.5 中指定的 ZOO_SERVERS 参数的 IP 地址和端口号后面多加了 “;2181 ”。(2)ZOO_SERVERS 指定ip时本机的ip地址写 0.0.0.0。
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper
restart: always
hostname: zoo2
container_name: zoo2
privileged: true
ports:
- "2182:2181"
volumes:
#注意 volumes的参数是string 所以不能在下面数据的:后面加空格 还有-后面一定要有空格 这两条如果没有写好 都会报错
- /usr/local/zookeeper/node2/data:/data
- /usr/local/zookeeper/node2/datalog:/datalog
- /usr/local/zookeeper/node2/conf:/conf
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper
restart: always
hostname: zoo3
container_name: zoo3
privileged: true
ports:
- "2183:2181"
volumes:
- /usr/local/zookeeper/node3/data:/data
- /usr/local/zookeeper/node3/datalog:/datalog
- /usr/local/zookeeper/node3/conf:/conf
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
配置确认无误后 wq! 保存退出
接下来执行
> docker-compose up -d
如下图说明执行成功! 集群建立起来了
> docker-compose ps #查看集群的信息
> docker exec -it zoo3 bash ./bin/zkServer.sh status #查看节点的信息
> docker exec -it zoo1 bash ./bin/bash #进入任意一个节点开启客户端
> ls
> ./bin/zkCli.sh -server 127.0.0.1:2181
如下图:
至此集群搭建完成 !!!!
借鉴:https://blog.csdn.net/qq_37356556/article/details/104151047