使用DockerCompose搭建4个节点,其中consul_node1、consul_node2、consul_node3为server agent;consul_node4为client agent,开放端口访问conusl ui
机器准备
模拟4台机器:
节点名称 | ip:host | 说明 |
---|---|---|
consul_node1 | server agent | |
consul_node2 | server agent | |
consul_node3 | server agent | |
consul_node4 | localhost:8500 | client agent,开放8500端口访问consul ui |
version: '3'
networks:
consul_net:
services:
consul1:
image: consul:1.12.2
container_name: consul_node1
command: agent -server -bootstrap-expect=3 -node=consul_node1 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
networks:
- consul_net
consul2:
image: consul:1.12.2
container_name: consul_node2
command: agent -server -retry-join=consul_node1 -node=consul_node2 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
depends_on:
- consul1
networks:
- consul_net
consul3:
image: consul:1.12.2
container_name: consul_node3
command: agent -server -retry-join=consul_node1 -node=consul_node3 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
depends_on:
- consul1
networks:
- consul_net
consul4:
image: consul:1.12.2
container_name: consul_node4
command: agent -retry-join=consul_node1 -node=consul_node4 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1 -ui
ports:
- 8500:8500
depends_on:
- consul2
- consul3
networks:
- consul_net
dockercompose配置
networks:consul_net,以便网络共享
depends_on: 用于容器排序,需要指定的容器进入运行状态,才会启动当前容器。上述配置中consul2和consul3依赖consul1,consul4依赖consul2和consul3。
consul参数
-server:表示为server agent
-node:节点名称
-bind:集群内通信的ip地址,默认为0.0.0.0
-datacenter:数据中心名称
-ui :支持web-ui管理consul节点
bootstrap-expect=3:数据中心期望的server agent数量,基于Raft算法,server agent数量必须为奇数
client=0.0.0.0:表示允许公网访问(默认为127.0.0.1,仅对内提供服务)