hashicorp/consul-esmConsul ESM (External Service Monitor) 是一个与 Consul 协同运行的守护进程,主要用于对外部节点执行健康检查,并将这些健康检查的状态更新至 Consul 服务目录。若启用相关功能,还可管理外部节点的网络坐标更新,确保 Consul 能准确跟踪外部服务的位置信息。该镜像需配合 Consul 集群使用,扩展 Consul 对非集群内节点的监控能力。
Consul ESM 支持通过配置文件(推荐)或环境变量进行配置,核心配置项如下:
| 参数名 | 说明 | 默认值 |
|---|---|---|
consul.address | Consul 服务地址(格式:host:port) | 127.0.0.1:8500 |
consul.token | 访问 Consul 的 ACL Token(若 Consul 启用 ACL) | 空 |
external-node | 外部节点名称(需唯一标识) | 无(必填) |
health-checks | 健康检查定义列表(JSON 格式,包含检查类型、超时时间、间隔等) | 无(必填) |
enable-coordinates | 是否启用外部节点坐标更新(true/false) | false |
log-level | 日志级别(trace/debug/info/warn/error) | info |
创建 esm-config.hcl 配置文件,定义外部节点及健康检查规则:
hclconsul { address = "consul-server:8500" token = "your-acl-token" # 若 Consul 未启用 ACL,可省略此行 } external_node { name = "external-db-node" address = "192.168.1.100" } health_checks = [ { name = "db-tcp-check" type = "tcp" address = "192.168.1.100" port = 3306 interval = "10s" timeout = "5s" }, { name = "app-http-check" type = "http" url = "[***]" interval = "5s" timeout = "2s" } ] enable_coordinates = true # 启用坐标更新 log_level = "info"
docker run 部署bashdocker run -d \ --name consul-esm \ -v $(pwd)/esm-config.hcl:/etc/consul-esm/esm-config.hcl \ # 挂载配置文件 -e CONSUL_ESM_CONFIG_FILE=/etc/consul-esm/esm-config.hcl \ # 指定配置文件路径 hashicorp/consul-esm:latest
docker-compose 部署创建 docker-compose.yml:
yamlversion: "3.8" services: consul-esm: image: hashicorp/consul-esm:latest container_name: consul-esm volumes: - ./esm-config.hcl:/etc/consul-esm/esm-config.hcl environment: - CONSUL_ESM_CONFIG_FILE=/etc/consul-esm/esm-config.hcl restart: unless-stopped network_mode: "host" # 若外部节点与容器不在同一网络,需配置端口映射或使用 host 网络
bashdocker logs consul-esm
若返回节点信息及健康检查状态,则部署成功。bashcurl http://<consul-address>:8500/v1/catalog/node/<external-node-name>
参考文档:Consul 官方 外部服务指南

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务