Consul 注销 'failing' 服务

Consul deregister 'failing' services

我在 Mesos 的 Consul v0.5.2 版本和服务 运行 上有 consul 运行。服务不断从一台服务器转移到另一台服务器。

有没有办法在处于 'failing' 状态的 consul 中注销服务?我可以使用此 curl

获取处于失败状态的服务列表
curl http://localhost:8500/v1/health/state/critical

我们在一段时间内看到的问题是在 consul UI 我们有陈旧的数据并使整个 UI 无法使用

默认情况下,Consul 不会注销不健康的服务,而是将它们标记为关键服务。 从 Consul 0.7 开始,有一个特殊选项 (deregister_critical_service_after) 允许您定义不健康服务将被注销后的时间

来自领事0.7 Changelog

Automatic Service Deregistration: Added a new deregister_critical_service_after timeout field for health checks which will cause the service associated with that check to get deregistered if the check is critical for longer than the timeout. This is useful for cleanup of health checks registered natively by applications, or in other situations where services may not always be cleanly shutdown. GH-679

如果你正在使用 Marathon 那么你可以考虑使用 allegro/marathon-consul 它会在任务失效时取消注册任务

除了 janisz 所说的,您还可以 运行 您在 Nomad 中的服务,Nomad 会自动为您注册和注销您的服务。有关更多详细信息,请参阅 Nomad Service Discovery 文档。