问题背景
前言
- 本文参考自:docker-compose快速搭建Zookeeper集群,熬到凌晨三点多验证部署成功,网上有很多文章已经无法正确部署了,因为有些东西版本升级了,版本跟不上就会报错
- 还有一种更加详细更加全面的部署方式:Docker之docker-compose一键部署Zookeeper集群,但笔者还未验证,先记录下来
- 如果是0基础docker-compose也不必惊慌,笔者也是0基础docker-compose,其实有掌握docker部署基础即可,compose能更加方便地编排服务,部署速度更加快了。
搭建
安装docker-ce
此处不赘述
安装docker-compose
不可以下载比以下版本号
1.28.5
更低的版本号,否则报错
# 下载
curl -L https://github.com/docker/compose/releases/download/1.28.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 创建全局命令并赋予权限
chmod +x /usr/local/bin/docker-compose
拉取镜像
版本号可以根据Curator框架的maven依赖版本号修改,笔者这里选3.5.7,做项目中引入的zookeeper依赖也尽量跟此处版本号一样
docker pull zookeeper:3.5.7
创建目录
mkdir zk-cluster
cd zk-cluster
vim docker-compose.yml
编辑docker-compose.yml
docker-compose的版本号不可以比以下版本号
1.28.5
更低的版本号,否则报错
version: '3.1'
networks:
zk-net:
name: zk-net # 网络名
services:
zoo1:
image: zookeeper:3.5.7
container_name: zoo1 # 容器名称
restart: always # 开机自启
hostname: zoo1 # 主机名
ports:
- 2181:2181 # 端口号
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
- zk-net
zoo2:
image: zookeeper:3.5.7
container_name: zoo2
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
- zk-net
zoo3:
image: zookeeper:3.5.7
container_name: zoo3
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
- zk-net
启动容器服务
docker-compose -f docker-compose.yml up -d
检查是否启动成功
docker exec -it zoo1 zkServer.sh status
docker exec -it zoo2 zkServer.sh status
docker exec -it zoo3 zkServer.sh status