我在 Consul v0.5.2 版本上运行 consul,在 Mesos 中运行服务。服务不断从一台服务器移动到另一台服务器。
有没有办法在领事中注销处于“失败”状态的服务?我可以使用此 curl 获取处于失败状态的服务列表
curl http://localhost:8500/v1/health/state/critical
我们看到的问题是在 consul UI 中的一段时间内,我们有陈旧的数据并使整个 UI 无法使用
我在 Consul v0.5.2 版本上运行 consul,在 Mesos 中运行服务。服务不断从一台服务器移动到另一台服务器。
有没有办法在领事中注销处于“失败”状态的服务?我可以使用此 curl 获取处于失败状态的服务列表
curl http://localhost:8500/v1/health/state/critical
我们看到的问题是在 consul UI 中的一段时间内,我们有陈旧的数据并使整个 UI 无法使用
默认情况下,Consul 不会取消注册不健康的服务,而是将它们标记为关键。从 Consul 0.7 开始,有一个特殊选项 ( deregister_critical_service_after
) 允许您定义取消不健康服务后的时间
来自 Consul 0.7 更新日志
自动服务注销:为运行状况检查添加了一个新的
deregister_critical_service_after
超时字段,如果检查的关键时间超过超时时间,这将导致与该检查关联的服务被注销。这对于清理应用程序本机注册的健康检查很有用,或者在服务可能并不总是完全关闭的其他情况下很有用。GH-679
如果您正在使用 Marathon,那么您可以考虑使用allegro/marathon-consul它会在任务死亡时取消注册
除了 janisz 所说的,您还可以在 Nomad 中运行您的服务,Nomad 会自动为您注册和注销您的服务。有关更多详细信息,请参阅Nomad 服务发现文档。