App Engine Standard Auto Scaling - デプロイメント時に以前のバージョンを停止するにはどうすればよいですか?

App Engine Standard Auto Scaling - デプロイメント時に以前のバージョンを停止するにはどうすればよいですか?

問題:

私は AppEngine 標準サービスである nodejsv10 をデプロイしています。しかし、トラフィックが新しいバージョンに移行された後も、インスタンス数が 2 または 1 と表示されたまま、古いバージョンがまだ実行されたままになっています。これは、過去 1 週間に 24 時間以上トラフィックを受信して​​いない複数のデプロイにも当てはまります (したがって、コンソールの遅延更新の問題ではないと思います)。

これらのインスタンスは必要ないので、課金されたくありません。また、これらの古いバージョンを手動で削除しなければならないのは、ユーザー エクスペリエンスとして不便だと思います。

展開コマンド: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#自動スケーリング

最小インスタンス数

このモジュール バージョン用に App Engine が作成するインスタンスの最小数。これらのインスタンスは、リクエストが到着するとトラフィックを処理し、トラフィックの処理に必要な追加のインスタンスが起動された場合でもトラフィックの処理を継続します。トラフィックを受信して​​いるかどうかに関係なく、指定したインスタンスの数に対して課金されることに注意してください。

最小アイドルインスタンス数

実行状態を維持し、トラフィックを処理する準備ができているインスタンスの数。トラフィックを受信して​​いるかどうかに関係なく、指定したインスタンスの数に対して課金されることに注意してください。この設定は、トラフィックの大部分を受信するバージョンにのみ適用されます。

答え2

App Engine 標準インスタンスは前述のように停止できませんここただし、手動スケーリングまたは基本スケーリングを使用している場合を除きます。つまり、何らかの理由で誰かが以前のバージョンの URL にアクセスできる場合、そのリクエストに対応するためにインスタンスが起動されます。

私のお勧めは、別のタイプのスケーリングに変更することです(個人的には基本的なスケーリング(あなたの場合は)インスタンスを停止できるため、そうする必要があります。そうしないと、以前のバージョンを削除するか、古いバージョンへのランダムなリクエストにより、知らないうちにインスタンスが古いバージョンで実行されてしまうリスクを負うことになります。

この情報がお役に立てば幸いです。

関連情報