Docker - 部署Consul 新

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

 

  1. 在三台机器上分别保存对应的 docker-compose.yml

  2. 执行:

    docker compose up -d
  3. 检查:

    docker exec -it consul-10 consul members
     
  4. 查看集群 Leader:

    docker exec -it consul-10 consul operator raft list-peers

    会显示哪台是当前 Leader。


验证高可用

  1. 关闭一台机器:

     
    docker stop consul-10
  2. 在另外两台上再执行:

     
    consul operator raft list-peers

    结果:剩下两台仍能选出 Leader,集群正常。

 

 

 

 

 .net8 集成 consul 参考:

NETCORE - Consul 注册 - 无心々菜 - 博客园

 

 

kong 集成 consul 参考:

Docker 部署 kong 网关 - 无心々菜 - 博客园

 

 

 

 

end. 

 

posted @ 2025-10-15 13:42  无心々菜  阅读(19)  评论(0)    收藏  举报