App Engine 標準自動縮放 - 如何在部署時停止先前的版本?

App Engine 標準自動縮放 - 如何在部署時停止先前的版本?

問題:

我正在部署一個 appengine 標準服務 - nodejsv10。然而,在流量遷移到新版本後,舊版本仍然保持運行,實例計數列為 2 或 1。不認為這是控制台延遲刷新問題)。

我不想為這些實例付費,因為我不需要它們。手動刪除這些舊版本似乎是一種愚蠢的用戶體驗。

部署命令:gcloud beta app deploy

應用程式.yaml

env: standard
instance_class: F4
inbound_services:
  - warmup
automatic_scaling:
  min_idle_instances: 1
  max_idle_instances: 1
  min_pending_latency: automatic
  max_pending_latency: automatic
  max_concurrent_requests: 15
  min_instances: 1

答案1

在閱讀更多文件後,我想我找到了解決方案。我刪除min_instances並留在min_idle_instances.由於min_instances無論流量如何,都會強制執行個體處於活動狀態,並且min_idle_instances僅適用於接收大部分流量的版本。我正在測試這個,如果不起作用會報告。

https://cloud.google.com/appengine/docs/standard/nodejs/config/appref#automatic_scaling

最少實例數

App Engine 為此模組版本所建立的最小實例數。這些實例在請求到達時提供流量服務,甚至在根據需要啟動其他實例來處理流量時也繼續提供流量服務。請注意,您需要根據指定的執行個體數量付費,無論它們是否接收流量。

最小空閒實例數

若要保持運作並準備好為流量提供服務的執行個體數量。請注意,您需要根據指定的執行個體數量付費,無論它們是否接收流量。此設定僅適用於接收大部分流量的版本。

答案2

如前所述,App Engine 標準實例無法停止這裡除非您使用手動或基本縮放。這意味著,如果由於某種原因有人能夠存取您先前版本的 URL,它將啟動一個實例來服務所述請求。

我的建議是更改為不同類型的縮放(我個人會選擇基本縮放對於您的情況),因為您將能夠停止實例。否則,您將不得不刪除先前的版本,或者由於對舊版本的某些隨機請求而在您不知情的情況下面臨實例在舊版本上運行的風險。

希望您發現此資訊有幫助。

相關內容