惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
Vercel News
Vercel News
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
Jina AI
Jina AI
B
Blog
Recorded Future
Recorded Future
MyScale Blog
MyScale Blog
I
InfoQ
aimingoo的专栏
aimingoo的专栏
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
爱范儿
爱范儿
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
博客园 - Franky
Schneier on Security
Schneier on Security
V
V2EX
TaoSecurity Blog
TaoSecurity Blog
H
Hacker News: Front Page
Cloudbric
Cloudbric
D
DataBreaches.Net
B
Blog RSS Feed
P
Palo Alto Networks Blog
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
I
Intezer
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyberwarzone
Cyberwarzone
F
Fortinet All Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
K
Kaspersky official blog
Forbes - Security
Forbes - Security

博客园 - 无心々菜

高并发 - 配置2 高并发 - 配置 地图 - QGIS加载geojson,并导入Postgis数据库 VUE2 - Geoserver打印矢量PDF地图 - 在VUE2中的应用 地图 - Geoserver打印矢量PDF地图 Docker - 离线+无root环境安装 docker-rootless 运维 - 哪吒监控 Postgres 数据库在docker环境下分布式部署(arm64框架) Postgres 数据库在docker环境下分布式部署 Https - 配置方案 OpenObserver - 系统接口监控 VUE3 - Docker部署 + traefik反代 VUE2 - Docker部署 + traefik反代 高斯DB 数据库的安装 NETCORE - 使用 EFCORE 调用 高斯DB数据库 JMeter - 压力测试 NETCORE - IdentityServer4 多节点部署 NETCORE - IdentityServer4 相关文档 .NET框架 - NETCORE + API + EF(DBFirst) + PostgresSql Docker 部署 APISIX + etcd Docker部署martin 矢量切片服务器 Postgres 数据库的安装 NETCORE - 调用 RUSTFS Docker - 部署 RustFS 对像存储 Docker - 使用 Docker Secrets 敏感数据传输 Docker - 部署 Consul KV 统一管理所有项目的配置 Docker - 部署 HashiCorp Vault 开源密钥管理工具 kong 网关下集成 Consul服务注册与发现 Docker 部署 kong 网关
Docker - 部署Consul 新
无心々菜 · 2025-10-15 · via 博客园 - 无心々菜

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. 执行:

  3. 检查:

  4. 查看集群 Leader:

    会显示哪台是当前 Leader。

验证高可用

  1. 关闭一台机器:

  2. 在另外两台上再执行:

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

 .net8 集成 consul 参考:

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

kong 集成 consul 参考:

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

手动注入服务

参考下面的

cmd /c "powershell -ExecutionPolicy Bypass -Command `"Invoke-RestMethod -Method Put -Uri 'http://10.10.1.41:8500/v1/agent/service/register' -ContentType 'application/json' -Body '{\`"ID\`":\`"martincache-server-11\`",\`"Name\`":\`"api-martincache\`",\`"Address\`":\`"10.10.1.41\`",\`"Port\`":3100,\`"Checks\`":[{\`"Name\`":\`"martin-http\`",\`"HTTP\`":\`"http://10.10.1.41:3100/health\`",\`"Interval\`":\`"10s\`",\`"Timeout\`":\`"5s\`",\`"DeregisterCriticalServiceAfter\`":\`"1m\`"}]}'`""

end.