EAS サービスを再起動する、またはパラメーターを更新すると、ローリングアップデートがトリガーされます。このデプロイ戦略では、古いレプリカを新しいレプリカに段階的に置き換えることで、ダウンタイム 0 と高可用性を維持したままサービスをアップグレードできます。
ローリングアップデート
更新中、システムは設定に基づいて新しいレプリカを作成し、古いレプリカを段階的に置き換えます。新しいレプリカの起動に失敗した場合、更新は一時停止されます。失敗したレプリカにはトラフィックが送られず、残りの古いレプリカが引き続きリクエストを処理するため、サービスに影響はありません。更新をロールバックするか、新しい更新を開始できます。新しい更新では、前回の未完了の試行で失敗したレプリカの削除が優先されます。
ローリングアップデートのプロセスは、次の 2 つの主要パラメーターで制御されます:
-
[インスタンス作成数の更新] (JSON パラメーター:
rolling_strategy.max_surge)-
説明:更新中にシステムが作成できる追加レプリカの最大数です。正の整数またはパーセンテージで指定できます。値を大きくすると、更新プロセスが高速化します。
-
例:レプリカが 100 個のサービスで、この値を 20 に設定した場合、更新開始時にシステムは直ちに 20 個の新しいレプリカを作成します。
-
デフォルト: レプリカ総数の 2% (最小 1)。
重要[インスタンス作成数の更新] を高く設定しすぎると、システムは多数の新しいレプリカを起動し、直ちに同数の古いレプリカを置き換えます。新しいレプリカのウォームアップが完了していない場合、トラフィックの急増によりサービスの安定性に影響する可能性があります。
-
-
[最大利用不能インスタンス数] (JSON パラメーター:
rolling_strategy.max_unavailable)-
説明: 更新中に利用不可にできるレプリカの最大数です。この設定によりリソースが解放され、リソース不足によって更新がブロックされるのを防ぎます。
-
例:この値を N に設定した場合、更新開始時にシステムは直ちに N 個の古いレプリカを停止します。
-
デフォルト:
-
専用リソースグループ:2025 年 9 月 1 日より前に作成されたサービスのデフォルトは 1 です。2025 年 9 月 1 日以降に作成されたサービスの場合、エラスティックプールが有効であればデフォルトは 0、無効であれば 1 です。
-
パブリックリソースグループ:0。
-
リソースクォータ:2025 年 9 月 1 日より前に作成されたサービスのデフォルトは 0 です。2025 年 9 月 1 日以降に作成されたサービスの場合、デフォルトはレプリカ数の 2% (最小 1) です。
-
重要-
シングルレプリカサービスの場合、[最大利用不能インスタンス数] を 1 に設定すると、新しいレプリカが起動する前に古いレプリカが停止するため、サービスが一時的に利用不可になります。
-
[最大利用不能インスタンス数] を高く設定しすぎると、同時にオフラインになるレプリカが多くなりすぎる可能性があります。残りのレプリカではトラフィックを処理しきれず、サービス可用性が低下します。
-
グレースフルシャットダウン
グレースフルシャットダウンのパラメーターは、ローリングアップデート中のレプリカ終了の安定性に影響します。
-
[グレースフルシャットダウン時間] (JSON パラメーター:
eas.termination_grace_period)-
説明: システムがレプリカのグレースフルシャットダウンを待機する時間 (秒) です。レプリカが Terminating 状態に入ると、システムはそのレプリカへのトラフィックのルーティングを停止します。その後、この期間だけ待機し、処理中のリクエストが完了するのを待ってからレプリカを終了します。リクエストの処理時間が長いことが多い場合は、この値を増やすことを推奨します。
-
デフォルト: 30。
重要この値を小さくするとサービスの安定性に影響する可能性があります。一方で、高く設定しすぎるとサービス更新が遅くなる可能性があります。特別な要件がない限り、このパラメーターを変更しないでください。
-
-
[SIGTERM を送信] (JSON パラメーター:
rpc.enable_sigterm)-
説明: SIGTERM は、プロセスを終了させるシグナルです。JSON パラメーターには
trueまたはfalseを指定できます。-
false:レプリカの終了時に、システムは SIGTERM シグナルを送信しません。 -
true:レプリカの終了時に、システムは直ちに SIGTERM シグナルを送信します。サービスのメインプロセスは、シグナルハンドラーでカスタムのグレースフルシャットダウンロジックを実装する必要があります。そうしないと、システムがプロセスを直接終了してしまい、グレースフルシャットダウンに失敗する可能性があります。
-
-
デフォルト: 無効 (
false)。
-
デフォルトでは、システムは SIGTERM シグナルを送信しません。 これは、ほとんどのアプリケーションコンテナがデフォルトで SIGTERM シグナルを処理しないためです。コンテナが対応するハンドラーなしで SIGTERM シグナルを受信すると、プロセスは直ちに終了します。これによりグレースフルシャットダウンのプロセスがバイパスされ、サービスが中断されます。
リクエストの処理時間のばらつきが大きいサービスでは、SIGTERM を有効にすることを推奨します。 たとえば、リクエストの処理時間が数秒から 30 分に及ぶ場合、グレースフルシャットダウン時間を 30 分に固定すると、サービス更新が遅くなります。このシナリオでは、アプリケーションコンテナが SIGTERM シグナルを処理し、処理中のリクエストを完了してから終了するように構成してください。これにより、シャットダウンプロセスをより柔軟に制御できます。
非同期推論サービスでは、SIGTERM を有効にする必要はありません。 レプリカの終了時に、EAS コントロールプレーンが SIGTERM シグナルを自動的に処理します。新しいリクエストのサブスクライブを停止し、既存のリクエストが完了するのを待ってからレプリカを終了します。