9

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

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

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

谢谢

缺口

4

1 回答 1

8

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

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

第二个通过目录。不幸的是,在这两种情况下,您都必须手动进行 http-request。

于 2017-02-13T06:33:05.457 回答