簡體   English   中英

當 Cloud Foundry 更新/升級時,Spring Boot 應用程序會自動重新啟動

[英]Spring boot application restart automatically when Cloud foundry updates/upgrade

我正在使用 Cloud Foundry,並在 Cloud 上部署了我的 Spring Boot 應用程序。 每當 Cloud Foundry 發生某些更新/升級時,我的應用程序都會重新啟動,並且由於應用程序的重新啟動需要更多時間才能啟動,因此某些請求無法到達應用程序。 在 CF 中是否有任何方法可以在升級/重新啟動應用程序以處理請求時運行某些應用程序實例。 另外我想知道,如果 CF 提供來自不同位置/區域的服務,那么請考慮我的應用程序將部署在不同區域可用的 2 個 CF 容器上。 只要有可用的更新/升級,就在一個區域為 Cf 進行升級,這樣來自另一個區域的其他 CF 服務將可用,並且一些應用程序實例將運行以服務請求,反之亦然。 -謝謝。

您所描述的是 CF 的預期行為。

  • 如果您的應用程序有兩個或多個實例,則它們不應同時關閉。 即一個將被取下,然后在成功重新啟動后,然后另一個將被取下並重新啟動。

  • 如果您的運營商為您所針對的基礎配置了多個可用區,那么應用程序實例將分布在這些可用區之間,以幫助實現 HA 和最佳可用性。

如果您沒有看到這種行為,那么您應該查看以下內容,因為這些項目會影響您的應用程序的正常運行時間:

  • 您是否有多個應用程序實例? 如果您只有一個應用程序實例,那么當更新應用於基礎和其他場景時,您可能會看到一些小的停機時間窗口。 發生這種情況是因為有時 Diego 需要驅逐在 Diego Cell 上運行的應用程序。 它會在停止當前實例之前嘗試在另一個 Cell 上啟動您的應用程序,但對此沒有提供任何保證。 因此,您可能會遇到一些停機時間,例如,如果您的應用程序啟動緩慢或您的應用程序沒有配置良好的運行狀況檢查(就像它在應用程序真正啟動之前通過運行狀況檢查)。

  • 您的運營商是否設置了多個可用區? 作為開發人員,您無法確定。 這是抽象的,因此您需要詢問您的平台運營團隊並確認是否有多個,如果有,有多少。 為獲得最佳的正常運行時間,應用實例的數量至少與 AZ 的數量相同。

  • 另一個經常被忽視的事情是,您的應用程序是否依賴於任何服務? 如果是這樣,您也可能會在更新服務時看到停機時間。 這一切都取決於您使用的服務,以及這些服務的管理和升級是否會出現相關的停機時間。 當應用程序日志無法查看是否存在連接故障或類似錯誤時,您可以通過更仔細地查看應用程序日志來判斷是否是這種情況。 您也可以通過查看 CF 市場中定義的計划來判斷。 描述通常會說明是否有關於計划的規定,比如它是或不是集群或 HA。

更新

可能導致停機的另一件事:

  • 如果您的運營商的“飛行中的最大值”值對於 Diego Cell 的數量來說太高,這也會導致停機。 從本質上講,“飛行中的最大數量”決定了升級期間將停止使用的 Diego Cell 數量。 如果此值過高,您可能會遇到剩余 Cell 中沒有足夠容量來托管所有應用程序的情況。 這最終會導致應用程序實例停機,因為它們無法及時在另一個 Cell 上重新調度。 作為開發人員,我認為這不是您可以解決的問題,您需要與您的平台運營商合作進行進一步調查。

這可能是這里的一個主題。 如果您是應用程序開發人員,您應該與您的平台運營團隊交談以進行調試。

希望有幫助!

暫無
暫無

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

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