2017-02-12 70 views
3

我們有一些Spring Boot應用程序向Consul註冊(通過Spring Cloud Consul)。如果我通過docker-compose stop myservice停止這些申請,那麼他們會正確註銷自己並從領事處消失。如果我使用docker-compose kill myservice那麼註銷不會發生。我知道在UNIX系統上不可能捕獲SIGKILL事件,因此無法強制取消註冊。從領事中刪除無效服務

因此,我們看到的是Consul中從未移除的服務(標記爲critical,但在UI中仍可見)。有沒有辦法強制Consul重新刷新註冊內容,這樣就可以清除死去的服務?

感謝

尼克

+0

[Consul deregister'failing'services]可能重複(https://stackoverflow.com/questions/40010594/consul-deregister-failing-services) – janisz

回答

0

看來,你必須使用HTTP領事API和手動註銷沒有的服務。 API爲您提供了兩種不同的方式來註銷一些服務,通過agent endpoint第一個像這樣

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

,並通過catalog第二。不幸的是,在這兩種情況下,您都必須手動進行http請求。