从领事中移除死亡服务

时间:2017-02-12 08:27:26

标签: consul spring-cloud-consul

我们有许多Spring Boot应用程序可以通过Consul注册(通过Spring Cloud Consul)。如果我通过docker-compose stop myservice停止这些申请,那么他们会正确地取消注册并从领事处消失。

如果我使用docker-compose kill myservice,则取消注册不会发生。我知道在UNIX系统上捕获SIGKILL事件是不可能的,所以没有办法强制取消注册。

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

由于

尼克

1 个答案:

答案 0 :(得分:1)

看来,您必须使用Consul HTTP API并手动取消注册不可用的服务。 API为您提供了两种不同的方式来取消注册某些服务,第一种方式是agent endpoint,如此

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

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