用途:该技能提供 HashiCorp Consul 的专业协助,Consul 是服务网络解决方案,提供服务发现、基于双向 TLS 的安全服务网格、动态流量路由和分布式键值存储。适用场景包括:跨混合云网络的微服务动态注册与查找、通过 Envoy sidecar 实现零信任加密与授权、集中式运行时配置与动态功能开关、跨多云与多区域的多数据中心联邦。
主要能力:以声明式 HCL 注册服务并附带健康检查,支持 HTTP 检查、interval、timeout 及 deregister_critical_service_after 自动摘除;通过 DNS 接口(端口 8600)或 HTTP REST API(端口 8500)查询健康实例;使用 Consul Template 在服务或 KV 变化时重新渲染配置并重载服务;通过 connect { sidecar_service {} } 启用服务网格。
必要用法:服务定义写入 /etc/consul.d/*.hcl 后执行 consul reload;DNS 查询示例 dig @127.0.0.1 -p 8600 payment-api.service.consul SRV;HTTP 查询示例 curl -s http://127.0.0.1:8500/v1/health/service/payment-api?passing=true | jq .;模板渲染示例 consul-template -template "nginx.ctmpl:/etc/nginx/conf.d/upstream.conf:systemctl reload nginx"。
最佳实践:配置 deregister_critical_service_after 清理死节点;用 Connect 自动化 mTLS;服务端节点以奇数(3 或 5)跨可用区部署以维持 Raft 共识;为所有通信启用 gossip 加密与 TLS。
限制与注意:不要将 Consul KV 用作高吞吐主数据库;不要以单节点无仲裁方式运行生产服务端;不要在没有 ACL 令牌和 TLS 的情况下公开 8500 端口。常见问题包括无集群 leader(检查奇数节点与 8300 端口连通性)、健康检查失败(检查应用日志并手动 curl 健康 URL)、ACL 权限拒绝(在令牌定义中授予相应策略)。