跳到正文

健康檢查 ​

健康檢查告訴 Zenavo 實例何時可以接收流量。部署時,新實例在舊實例旁邊啟動,只有新實例透過檢查後才切換流量,這就是零停機發布的原理。

在 服務 → 設定 → 健康檢查 中選擇檢查方式:

  • 連接埠(預設):Zenavo 檢查服務的第一個 TCP 或 HTTP 連接埠能否接受連線,每 10 秒一次,逾時 5 秒,允許失敗 3 次。沒有這類連接埠的服務不做檢查,啟動後即視為就緒。
  • HTTP:Zenavo 在服務的第一個 TCP 或 HTTP 連接埠(或你指定的連接埠)上請求一個路徑,例如 /healthz。任何 2xx 或 3xx 回應都表示就緒。請求從叢集內發出,所以映像檔中不需要 curl 或 wget。這是 Web 應用的最佳選擇。
  • 指令:在容器內執行的指令,例如 pg_isready -U postgres;退出碼為 0 表示就緒。指令不經過 shell 執行,所以需要 &&、| 或 $VARIABLES 時請寫成 sh -c "…"。從控制台新增的資料庫和許多模板都自帶這種檢查。

HTTP 和指令檢查的時間參數可以調整:兩次檢查之間的間隔、單次檢查的逾時、實例被判定為不健康之前允許的失敗次數(預設 6),以及容器啟動後的啟動等待時間(預設 10 秒)。啟動較慢的應用,例如 Java 應用或啟動時執行資料庫遷移的應用,請調大啟動等待時間。

在 manifest 中:

json
"healthcheck": { "http": { "path": "/healthz" }, "interval": 10, "timeout": 5, "retries": 6, "start_period": 10 }

或者用 "command": ["pg_isready", "-U", "postgres"] 代替 "http"。

檢查失敗時 ​

  • 部署期間: 如果新實例持續無法透過檢查,一旦可以確定,部署就會失敗,並給出最後一次檢查的原因(例如 HTTP probe failed with statuscode: 404)和實例最新的日誌。舊實例繼續提供服務。
  • 部署之後: 不再透過檢查的實例不會再接收流量,服務顯示為 不健康。Zenavo 不會因為檢查失敗而重啟它;請檢視日誌,然後重新部署或重啟。

崩潰限制 ​

如果服務反覆崩潰,Zenavo 可以在重啟一定次數(即崩潰限制)後暫停它,而不是無限重啟。服務隨後會顯示提示;請檢視日誌,然後恢復服務或部署修復。

與 Zeabur 無關聯。