Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


7.4.3 グレースフルシャットダウンの実現方法

グレースフルシャットダウンの実現方法を説明します。

7.4.2 HMP-PCTOのKubernetesアプリケーションのグレースフルシャットダウンが開始できる条件」によって、グレースフルシャットダウンの実現方法が異なります。それぞれの実現方法は次のとおりです。

Pod終了処理時に、未決着トランザクション件数および処理中リクエスト件数が0件になるまでの待機範囲を、次の図に示します。

図7‒1 Pod終了処理時に、未決着トランザクション件数および処理中リクエスト件数が0件になるまでの待機範囲

[図データ]

この図に示すとおり、「未決着トランザクション件数およびトランザクションルートで処理中の件数」と「処理中リクエスト件数」の両方を条件に含むKubernetesアプリケーションの場合は、次の順序で待機を実施します。Podは、次の3つの待機が完了したときにシャットダウンします。

  1. 「新規トランザクションを受け付けない状態」になるまでの待機

  2. トランザクション待機スクリプトによる「未決着トランザクション件数/トランザクションルートで処理中の件数」の待機

  3. Spring BootのGraceful Shutdown機能による「処理中リクエスト件数」の待機

また、上記の待機が完了しないケースを考慮し、KubernetesのterminationGracePeriodSeconds(安全な停止待機秒数)を指定してください。トランザクション待機スクリプトによる「未決着トランザクション件数」の待機を開始してから指定した秒数が経過した場合に、Podを強制的にシャットダウンします。

重要

次の状況が発生すると、後述の「7.4.4 HMP-PCTOのKubernetesアプリケーションが強制シャットダウンしたときの挙動」の対象となります。

  1. トランザクションが開始する。

  2. トランザクションに参加しているPodがグレースフルシャットダウンを開始する。

  3. 2.のPodが前述の『1.「新規トランザクションを受け付けない状態」になるまでの待機』まで完了する。

  4. トランザクション内で時間が掛かるなどの理由によって、他Podから2.のPodへリクエストするタイミングが3.のあとになる。