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.10.0.101
ServerB: 10.10.0.102
ServerC: 10.10.0.103

 

docker-compose 示例如下

version: "3.9"
services:
  consul:
    image: hashicorp/consul:1.21.1
    container_name: consul-server-a
    restart: always
    ports:
      - "8500:8500"       # HTTP API/UI
      - "8600:8600/udp"   # DNS
      - "8300:8300"       # RPC
      - "8301:8301"       # LAN gossip
    environment:
      - CONSUL_BIND_INTERFACE=eth0
    volumes:
      - /opt/consul/data:/consul/data
    command: >
      agent -server
      -bootstrap-expect=3
      -node=server-a
      -bind=0.0.0.0
      -client=0.0.0.0
      -ui
      -retry-join=10.10.0.102
      -retry-join=10.10.0.103
version: "3.9"
services:
  consul:
    image: hashicorp/consul:1.21.1
    container_name: consul-server-b
    restart: always
    ports:
      - "8500:8500"
      - "8600:8600/udp"
      - "8300:8300"
      - "8301:8301"
    environment:
      - CONSUL_BIND_INTERFACE=eth0
    volumes:
      - /opt/consul/data:/consul/data
    command: >
      agent -server
      -bootstrap-expect=3
      -node=server-b
      -bind=0.0.0.0
      -client=0.0.0.0
      -retry-join=10.10.0.101
      -retry-join=10.10.0.103
version: "3.9"
services:
  consul:
    image: hashicorp/consul:1.21.1
    container_name: consul-server-c
    restart: always
    ports:
      - "8500:8500"
      - "8600:8600/udp"
      - "8300:8300"
      - "8301:8301"
    environment:
      - CONSUL_BIND_INTERFACE=eth0
    volumes:
      - /opt/consul/data:/consul/data
    command: >
      agent -server
      -bootstrap-expect=3
      -node=server-c
      -bind=0.0.0.0
      -client=0.0.0.0
      -retry-join=10.10.0.101
      -retry-join=10.10.0.102

 

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

  2. 执行:

    docker compose up -d
  3. 检查:

    docker exec -it consul-server-a consul members

    预期输出:

    Node Address Status Type Build Protocol server-a 10.10.0.101:8301 alive server 1.21.1 2 server-b 10.10.0.102:8301 alive server 1.21.1 2 server-c 10.10.0.103:8301 alive server 1.21.1 2
  4. 查看集群 Leader:

    docker exec -it consul-server-a consul operator raft list-peers

    会显示哪台是当前 Leader。


验证高可用

  1. 关闭一台机器:

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

     
    consul operator raft list-peers

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

 

 

 

 

 .net8 集成 consul 参考:

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

 

 

kong 集成 consul 参考:

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

 

 

 

 

end. 

 

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