7.4.3 グレースフルシャットダウンの実現方法
グレースフルシャットダウンの実現方法を説明します。
「7.4.2 HMP-PCTOのKubernetesアプリケーションのグレースフルシャットダウンが開始できる条件」によって、グレースフルシャットダウンの実現方法が異なります。それぞれの実現方法は次のとおりです。
-
未決着トランザクション件数:
「7.6.3 未決着トランザクション待機スクリプト(wait_transactions.sh)」のKubernetesのpreStopフックを使用して、未決着トランザクション件数が0件になるまで待機します。
-
処理中リクエスト件数:
Spring BootのGraceful Shutdown機能を使用して、処理中リクエスト件数が0件になるまで待機します。
Pod終了処理時に、未決着トランザクション件数および処理中リクエスト件数が0件になるまでの待機範囲を、次の図に示します。
|
|
この図に示すとおり、「未決着トランザクション件数」と「処理中リクエスト件数」の両方を条件に含むKubernetesアプリケーションの場合は、次の順序で待機を実施します。Podは、次の2つの待機が完了したときにシャットダウンします。
-
トランザクション待機スクリプトによる「未決着トランザクション件数」の待機
-
Spring BootのGraceful Shutdown機能による「処理中リクエスト件数」の待機
また、上記の待機が完了しないケースを考慮し、KubernetesのterminationGracePeriodSeconds(安全な停止待機秒数)を指定してください。トランザクション待機スクリプトによる「未決着トランザクション件数」の待機を開始してから指定した秒数が経過した場合に、Podを強制的にシャットダウンします。