EAS サービスの再起動または一部のパラメーターの更新は、ローリングアップデートをトリガーします。このリリース戦略では、古いレプリカを新しいレプリカに段階的に置き換えることで、高可用性を維持しながらダウンタイムなしでバージョンアップグレードを実現します。
ローリングアップデート
アップデート中、システムはご利用の構成に基づいて新しいレプリカを作成し、古いレプリカを 1 つずつ置き換えます。新しいレプリカの起動に失敗した場合、アップデートは停止します。失敗したレプリカはトラフィックを受信せず、残りの古いレプリカがリクエストへの対応を継続します。これにより、アプリケーションの可用性は維持されます。ロールバックするか、新しいアップデートを開始することができます。新しいアップデートでは、以前の不完全なアップデートで失敗したレプリカが自動的にクリーンアップされます。
ローリングアップデートの動作は、主に 2 つのパラメーターによって制御されます:
Exceeds the expected number of replicas (JSON パラメーター: rolling_strategy.max_surge)
説明:アップデート中に作成できる追加レプリカの最大数です。正の整数またはパーセンテージで設定できます。値を大きくすると、アップデートが高速化されます。
例:レプリカ数が 100 の場合、この値を 20 に設定すると、直ちに 20 個の新しいレプリカが起動します。
デフォルト値:レプリカ総数の 2% (最小値は 1)。
重要Exceeds the expected number of replicas の値が大きすぎると、多数の新しいレプリカが一度にオンラインになります。これらのレプリカは、同数の古いレプリカを直ちに置き換えます。新しいレプリカがウォームアップ済みでない場合、トラフィックの急増によってサービスの安定性が損なわれる可能性があります。
Maximum Unavailable Replicas (JSON パラメーター: rolling_strategy.max_unavailable)
説明:アップデート中に利用不可にできるレプリカの最大数です。これにより、リソースが解放され、リソース不足によるアップデートの停滞を防ぐことができます。
例:この値を N に設定すると、アップデート開始時に、システムは直ちに N 個の古いレプリカを停止します。
デフォルト値:
専用リソースグループ:2025 年 9 月 1 日より前に作成されたサービスの場合、デフォルト値は 1 です。2025 年 9 月 1 日以降に作成されたサービスの場合、弾性リソースプールが有効な場合は 0、有効でない場合は 1 です。
パブリックリソースグループ:0。
Lingjun インテリジェントコンピューティングクォータ:2025 年 9 月 1 日より前に作成されたサービスの場合、デフォルト値は 0 です。2025 年 9 月 1 日以降に作成されたサービスの場合、デフォルト値はレプリカ数の 2% (最小値は 1) です。
重要単一レプリカのサービスで Maximum Unavailable Replicas を 1 に設定すると、新しいレプリカが起動する前に古いレプリカが終了します。この間、利用可能なレプリカが存在しないため、サービスが一時的に利用できなくなります。
Maximum Unavailable Replicas の値が大きすぎると、多数のレプリカが一度にオフラインになります。残りのレプリカがすべてのトラフィックを処理できなくなる可能性があり、サービスの可用性が損なわれます。
グレースフルシャットダウン
グレースフルシャットダウンの設定は、ローリングアップデート中のレプリカの安定性に影響します。
Graceful Shutdown Time (JSON パラメーター: eas.termination_grace_period)
説明:レプリカをシャットダウンするまでの待機時間 (秒) です。レプリカが `Terminating` 状態になると、そのレプリカへのトラフィックのルーティングが停止します。システムは、レプリカを停止する前に 30 秒間待機し、保留中のリクエストの処理が完了するのを待ちます。リクエストの処理にさらに時間がかかる場合は、この値を大きくしてください。
デフォルト値:30。
重要この値を低く設定しすぎると、サービスの安定性が損なわれます。高く設定しすぎると、アップデートが遅くなります。必要な場合以外は、この設定を行わないでください。
Send SIGTERM (JSON パラメーター: rpc.enable_sigterm)
説明:SIGTERM は、プロセスを停止するためのシグナルです。有効な JSON 値は true または false です。
false:レプリカのシャットダウン時に、システムは SIGTERM を送信しません。
true:システムは直ちに SIGTERM を送信します。この場合、メインプロセスでこのシグナルを処理し、カスタムのグレースフルシャットダウンロジックを実装する必要があります。そうしないと、プロセスが即座に終了し、グレースフルシャットダウンがスキップされる可能性があります。
デフォルト値:false (送信しない)。
デフォルトでは SIGTERM は送信されません。 アプリケーションコンテナーは、デフォルトでは SIGTERM を補足しません。SIGTERM を受信すると、プロセスは直ちに終了します。これにより、グレースフルシャットダウンが中断され、アプリケーションに悪影響が及ぶ可能性があります。
リクエスト時間が大きく変動するサービスでは、SIGTERM を有効にしてください。 例えば、リクエストの処理に数秒から 30 分かかる場合、猶予期間を 30 分に固定するとアップデートが遅くなります。このような場合、コンテナーで SIGTERM を処理し、現在のリクエストを完了させてから終了するように実装します。これにより、シャットダウンをより柔軟に制御できます。
非同期推論サービスでは、SIGTERM を有効にする必要はありません。 レプリカがシャットダウンする際、EAS コントロールプレーンが SIGTERM に自動的に応答します。新しいリクエストの受付を停止し、既存のリクエストが完了するのを待ってからレプリカを終了します。