一、准备工作
1、拉取consul镜像
docker pull consul:1.10
docker tag docker.io/consul:1.10 consul1.10
docker rmi docker.io/consul:1.10
2、安装docker-compose工具
# 升级 pip
pip3 install --upgrade pip
# 指定 docker-compose 版本安装
pip install docker-compose==1.22
# 验证是否安装成功,有返回值,说明安装成功
docker-compose -v
二、使用docker-compose编排consul集群
1、集群规划
容器名 | 节点名 | 属性 | IP地址 | port |
---|---|---|---|---|
consul_10 | consul_10 | Server、Master | 170.200.7.10 | 8510 |
consul_20 | consul_20 | Serve | 170.200.7.20 | 8520 |
consul_30 | consul_30 | Serve | 170.200.7.30 | 8530 |
consul_40 | consul_40 | client | 170.200.7.40 | 8540 |
consul_50 | consul_50 | client | 170.200.7.50 | 8550 |
注:宿主机IP:192.168.78.200
2、创建docker-compose.yaml
vi docker-compose.yaml
version: "3.6"
services:
consul_server_1:
image: consul1.10
ports:
- "8510:8500"
networks:
consul_network:
ipv4_address: 170.200.7.10
container_name: consul_10
command: consul agent -server -bootstrap-expect 3 -data-dir /tmp/consul -node=consul_10 -bind=170.200.7.10 -ui -client=0.0.0.0
consul_server_2:
image: consul1.10
ports:
- "8520:8500"
networks:
consul_network:
ipv4_address: 170.200.7.20
container_name: consul_20
command: consul agent -server -data-dir /tmp/consul -node=consul_20 -bind=170.200.7.20 -ui -client=0.0.0.0 -join 170.200.7.10
consul_server_3:
image: consul1.10
ports:
- "8530:8500"
networks:
consul_network:
ipv4_address: 170.200.7.30
container_name: consul_30
command: consul agent -server -data-dir /tmp/consul -node=consul_30 -bind=170.200.7.30 -ui -client=0.0.0.0 -join 170.200.7.10
consul_clent_1:
image: consul1.10
ports:
- "8540:8500"
networks:
consul_network:
ipv4_address: 170.200.7.40
container_name: consul_40
command: consul agent -data-dir /tmp/consul -node=consul_40 -bind=170.200.7.40 -ui -client=0.0.0.0 -join 170.200.7.10
consul_client_2:
image: consul1.10
ports:
- "8550:8500"
networks:
consul_network:
ipv4_address: 170.200.7.50
container_name: consul_50
command: consul agent -data-dir /tmp/consul -node=consul_50 -bind=170.200.7.50 -ui -client=0.0.0.0 -join 170.200.7.10
networks:
consul_network:
driver: bridge
ipam:
config:
- subnet: "170.200.7.0/24"
3、执行构建consul集群
# 在docker-compose.yaml文件所在目录执行
docker-compose up -d
docker-compose up -d
注:这里执行了两遍docker-compose up -d
,之所以这样做是因为docker-compose up
时,构建容器顺序是随机的,只执行一遍可能会出现5个容器只启动了2,3个容器的情况,执行两遍就可以纠正该问题。该问题仅出现在使用docker-compose构建consul集群时。
4、访问192.168.78.200:8100,查看当前consul集群状态
5、总结
到这里,consul集群就构建完成了,其中三个server,两个client