Docker快速搭建Consul集群

一、准备工作

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