![](/img/trans.png)
[英]how to deregister the service in consul when using spring cloud consul
[英]Unable to deregister service(Spring boot app) from consul
無法從 Consul 注銷服務。 基本上 Consul 官方頁面說它會自動取消注冊服務,但在我的情況下它不會像所說的那樣工作。
https://www.consul.io/docs/agent/basics.html
嗨,提到領事生命周期,它說
為了防止死節點(處於失敗或離開狀態的節點)的積累,Consul 會自動將死節點從目錄中刪除。 這個過程稱為收割。 目前這是在 72 小時的可配置間隔內完成的(不建議更改收獲間隔,因為它會在中斷情況下產生后果)。 Reaping 類似於離開,導致所有相關服務被注銷。
這是我的 bootstrap.yml 文件
server:
port: 8089
spring:
application:
name: ***-service
cloud:
consul:
host: consul-ui
port: 8500
discovery:
deregister: true
instance-id: ${spring.application.name}:${random.value}
enabled: true
register: true
health-check-interval: 20s
prefer-ip-address: true
config:
enabled: true
prefix: configuration
defaultContext: shared
format: YAML
data-key: data
watch:
enabled: true
endpoints:
shutdown:
enabled: true
使用清除命令刪除服務后,在 Consul UI 中,仍然顯示在 Consul UI 上。 所以意味着它沒有被領事注銷
您需要在 Consul 上進行配置,因為您的應用程序似乎無法正常退出。 檢查領事配置屬性deregister_critical_service_after
:
在 Consul 0.7 及更高版本中,與服務相關聯的檢查還可能包含可選的
deregister_critical_service_after
字段,它是與interval
和ttl
具有相同 Go 時間格式的超時。 如果檢查處於臨界狀態的時間超過此配置值,則其關聯的服務(及其所有關聯的檢查)將自動取消注冊。 最小超時時間為1分鍾,收割關鍵服務的進程每30秒運行一次,因此觸發注銷的時間可能比配置的超時時間稍長。 這通常應該配置一個超時,該超時比給定服務的任何預期可恢復中斷要長得多。
該文檔是關於領事節點,而不是服務節點。
您究竟是如何終止應用程序的?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.