Docker - 部署Consul 新
一. Consul服务端部署
下载镜像
docker pull hashicorp/consul:1.21.1
docker-compose.yml
version: "3.8"
services:
consul:
image: hashicorp/consul:1.21.1
container_name: consul
restart: always
ports:
- "8500:8500" # Web UI 访问端口
- "8600:8600/udp" # DNS 端口
environment:
- CONSUL_BIND_INTERFACE=eth0
volumes:
- D:\DockerMapping\Consul\data:/consul/data
command: >
agent -server -bootstrap-expect=1 -ui
-node=consul-server
-client=0.0.0.0
-bind=0.0.0.0
docker-compose up -d consul
访问方式
Web 控制台: http://localhost:8500
![image]()
API 测试:
curl http://localhost:8500/v1/status/leader
curl http://localhost:8500/v1/catalog/services
![image]()
![image]()
二. Consul服务端多节点部署集群
Consul 高可用集群,如奇数台服务器,最小3台。
如
![image]()
ServerA: 10.5.84.10
ServerB: 10.5.84.11
ServerC: 10.5.84.12
在每台机器上都创建 consul 专用网络
docker network create consul-net
docker-compose 示例如下
consul:
image: hashicorp/consul:1.21.1
container_name: consul-10
restart: always
networks:
- consul-net
ports:
- "8500:8500" # Web UI 访问端口
- "8600:8600/udp" # DNS 端口
- "8300:8300" # RPC
- "8301:8301" # lan GOSSIP
- "8301:8301/udp" # SERF WAN
volumes:
- /data/dockerMappingFiles/data_consul/data:/consul/data
command: >
agent
-server
-bootstrap-expect=3
-ui
-datacenter=dc1
-data-dir=/consul/data
-node=consul-10
-client=0.0.0.0
-bind=0.0.0.0
-advertise=10.5.84.10
-retry-join=10.5.84.11
-retry-join=10.5.84.12
-log-level=INFO
networks:
consul-net:
external: true
|
consul:
image: hashicorp/consul:1.21.1
container_name: consul-11
restart: always
networks:
- consul-net
ports:
- "8500:8500" # Web UI 访问端口
- "8600:8600/udp" # DNS 端口
- "8300:8300" # RPC
- "8301:8301" # lan GOSSIP
- "8301:8301/udp" # SERF WAN
volumes:
- /data/dockerMappingFiles/data_consul/data:/consul/data
command: >
agent
-server
-bootstrap-expect=3
-ui
-datacenter=dc1
-data-dir=/consul/data
-node=consul-11
-client=0.0.0.0
-bind=0.0.0.0
-advertise=10.5.84.11
-retry-join=10.5.84.10
-retry-join=10.5.84.12
-log-level=INFO
networks:
consul-net:
external: true
|
consul:
image: hashicorp/consul:1.21.1
container_name: consul-12
restart: always
networks:
- consul-net
ports:
- "8500:8500" # Web UI 访问端口
- "8600:8600/udp" # DNS 端口
- "8300:8300" # RPC
- "8301:8301" # lan GOSSIP
- "8301:8301/udp" # SERF WAN
volumes:
- /data/dockerMappingFiles/data_consul/data:/consul/data
command: >
agent
-server
-bootstrap-expect=3
-ui
-datacenter=dc1
-data-dir=/consul/data
-node=consul-12
-client=0.0.0.0
-bind=0.0.0.0
-advertise=10.5.84.12
-retry-join=10.5.84.10
-retry-join=10.5.84.11
-log-level=INFO
networks:
consul-net:
external: true
|
-
在三台机器上分别保存对应的 docker-compose.yml。
-
执行:
-
检查:
-
查看集群 Leader:
会显示哪台是当前 Leader。
验证高可用
-
关闭一台机器:
-
在另外两台上再执行:
结果:剩下两台仍能选出 Leader,集群正常。
.net8 集成 consul 参考:
NETCORE - Consul 注册 - 无心々菜 - 博客园
kong 集成 consul 参考:
Docker 部署 kong 网关 - 无心々菜 - 博客园
end.