您可以使用 Registrator 的HTTP 健康检查(前提是您在progrium/docker-consul
容器内运行 Consul),例如:
ENV SERVICE_CHECK_HTTP=/howareyou
ENV SERVICE_CHECK_INTERVAL=5s
此检查将运行由 提供的check-http 脚本docker-consul
,该脚本使用 Docker API解析目标容器的 IP 和端口。
另一个选项是配置 Consul DNS 以侦听 Docker 的网桥 IP(已在progrium/docker-consul
's run
script中完成),并使用指向同一 IP 的全局 DNS 选项启动 Docker 守护程序,例如docker -d --bip 10.0.42.1/24 --dns 10.0.42.1 --dns 8.8.8.8
.
之后,Consul DNS 将在您的任何容器中可用,包括docker-consul
一个,这意味着您可以运行curl http://my-app.service.consul:12345/howareyou
,甚至查询SRV
记录,例如使用dig -t SRV
,以获取服务的 IP 和端口。然后您可以添加10.0.42.1
到主机resolv.conf
以获得不仅在容器内查询 Consul DNS 的能力,而且还可以从主机操作系统中查询。
恕我直言,首选方法是使用 Registrator's SERVICE_CHECK_HTTP
,但无论如何为您的容器设置 Consul DNS 是值得的。
这两种方法都需要在您的每个应用程序主机上以客户端模式运行 Consul 代理,但是当以这种模式运行时,Consul 代理使用的系统资源非常少,您几乎不会注意到它。无论如何你都需要它来执行健康检查:)