【问题标题】:Remove dead services from Consul从 Consul 中删除死服务
【发布时间】:2017-06-30 08:22:43
【问题描述】:

我们有许多 Spring Boot 应用程序向 Consul 注册(通过 Spring Cloud Consul)。如果我通过docker-compose stop myservice 停止这些应用程序,那么它们会正确注销自己并从 Consul 中消失。

如果我使用docker-compose kill myservice,那么注销不会发生。我知道在 UNIX 系统上无法捕获 SIGKILL 事件,因此无法强制取消注册。

因此,我们看到的是 Consul 中从未删除的服务(标记为 critical,但在 UI 中仍然可见)。有没有办法强制 Consul 刷新注册的内容,从而删除死服务?

谢谢

尼克

【问题讨论】:

标签: consul spring-cloud-consul


【解决方案1】:

看来,您必须使用 Consul HTTP API 并手动取消注册不可用的服务。 API 为您提供了 2 种不同的方法来取消注册某些服务,第一种通过 agent endpoint 就像这样

curl -v -X PUT http://%CONSUL_IP%:8500/v1/agent/service/deregister/<ServiceID>

第二个通过catalog。不幸的是,在这两种情况下,您都必须手动发出 http-request。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2020-01-08
    相关资源
    最近更新 更多