我的主要目标是避免在我可以预测我的服务将关闭时将健康状态更新为“严重”的大延迟。
我会将其与已经到位的 http 健康检查结合起来。

考虑的解决方案:

  • 我尝试过 TTL 检查,但这会带来将服务转换为不断发送其当前状态的负担。
  • 使用具有非常高的 ttl 的 TTL 检查 + 在重新启动时发送“健康”,但如果此初始请求失败,则服务会保持不健康的时间太长。
  • 减少我的 http 健康检查的间隔会稍微缓解这个问题,但也会产生更大的开销。
  • 最佳答案

    如果您可以预测服务将关闭,则应考虑将其置于维护模式。这将立即从 DNS 和 API 结果中删除它。 Here is the link to the documentation 关于如何将服务置于维护模式。

    健康检查总是会有延迟,因为它们是定期执行的,旨在监控服务是否出现意外停机。如果您知道服务因更新/升级/重启/退役而中断,则对用户影响最小的最佳方法是在对其进行任何工作之前将其删除。

    关于consul - 是否可以配置可以设置为关键但在 TTL 后默认为健康的 Consul 健康检查?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56593109/

    10-16 22:30