簡體   English   中英

無法從領事注銷服務(Spring 啟動應用程序)

[英]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字段,它是與intervalttl具有相同 Go 時間格式的超時。 如果檢查處於臨界狀態的時間超過此配置值,則其關聯的服務(及其所有關聯的檢查)將自動取消注冊。 最小超時時間為1分鍾,收割關鍵服務的進程每30秒運行一次,因此觸發注銷的時間可能比配置的超時時間稍長。 這通常應該配置一個超時,該超時比給定服務的任何預期可恢復中斷要長得多。

該文檔是關於領事節點,而不是服務節點。

您究竟是如何終止應用程序的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM