从 Consul 中删除死服务

nic*_*esh 9 consul spring-cloud-consul

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

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

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

谢谢

缺口

Sta*_*lav 7

看来,您必须使用 Consul HTTP API 并手动注销不可用的服务。API 为您提供了 2 种不同的方式来取消注册某些服务,第一种是通过代理端点,如下所示

curl -v -X PUT http://%CONSUL_IP%:8500/v1/agent/service/deregister/<ServiceID>
Run Code Online (Sandbox Code Playgroud)

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