Hitachi

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


7.4.2 HMP-PCTOのKubernetesアプリケーションのグレースフルシャットダウンが開始できる条件

HMP-PCTOのKubernetesアプリケーションのグレースフルシャットダウンが開始できる条件を次の表に示します。

表7‒4 HMP-PCTOのKubernetesアプリケーションのグレースフルシャットダウンが開始できる条件

Kubernetesアプリケーション

グレースフルシャットダウンが開始できる条件(番号順に満たす必要あり)

Orchestrator-Service

  1. 新規のトランザクションを受け付けない状態

  2. トランザクションルートで処理中の件数が0件

  3. 処理中リクエスト件数が0件

Relay-Service

  1. 新規のトランザクションを受け付けない状態

  2. 処理中リクエスト件数が0件

Entity-Service(SQL)

  1. 新規のトランザクションを受け付けない状態

  2. 未決着トランザクション件数が0件

  3. 処理中リクエスト件数が0件

Entity-Service(TCC)

  1. 新規のトランザクションを受け付けない状態

  2. 未決着トランザクション件数が0件

  3. 処理中リクエスト件数が0件

Orchestrator-Service(SQL)

  1. 新規のトランザクションを受け付けない状態

  2. 次の2つの条件を満たす(AND条件)

    ・トランザクションルートで処理中の件数が0件

    ・未決着トランザクション件数が0件

  3. 処理中リクエスト件数が0件

Alternate-Service

  1. 新規のトランザクションを受け付けない状態

  2. トランザクションルートで処理中の件数が0件

  3. 処理中リクエスト件数が0件

Alternate-Service(SQL)

  1. 新規のトランザクションを受け付けない状態

  2. 次の2つの条件を満たす(AND条件)

    ・トランザクションルートで処理中の件数が0件

    ・未決着トランザクション件数が0件

  3. 処理中リクエスト件数が0件

Mediator

  1. 新規のトランザクションを受け付けない状態

  2. 未決着トランザクション件数が0件

TP1-Bridge

  1. 新規のトランザクションを受け付けない状態

  2. 未決着トランザクション件数が0件

  3. 処理中リクエスト件数が0件

各Kubernetesアプリケーションのグレースフルシャットダウンが開始できる条件について、詳細を説明します。

各Kubernetesアプリケーションの条件

各Kubernetesアプリケーションは、新規トランザクションを受け付けない状態にすることを1つ目の条件とします。

この理由は、新規トランザクションが流入していると、後続で確認している条件をいつまでも満たせなくなり、グレースフルシャットダウンを開始できなくなるためです。

Orchestrator-ServiceおよびAlternate-Serviceの条件

Orchestrator-ServiceおよびAlternate-Serviceは、トランザクション決着に関わるPodのため、トランザクションをできる限り決着させるために「トランザクションルートで処理中の件数」が0件であることを条件とします。

また、Orchestrator-ServiceおよびAlternate-Serviceは、ユーザのリクエストハンドラでユーザアプリケーション処理を実施しているため、リクエストへの応答をできる限り完了させるために「処理中リクエスト件数」が0件であることも条件とします。

Relay-Serviceの条件

Relay-Serviceは、ユーザのリクエストハンドラでユーザアプリケーション処理を実施しているため、リクエストへの応答をできる限り完了させるために「処理中リクエスト件数」が0件であることを条件とします。

なお、Relay-Serviceは、トランザクション決着に関わるPodではないため、ほかのKubernetesアプリケーションのような「未決着トランザクション件数」は条件に含みません。

また、グレースフルシャットダウンが開始できる条件が「処理中リクエスト件数」だけなので、グローバルトランザクションが処理中でも、自Podはシャットダウンすることがあります。このとき、Relay-Serviceがスケーリング対応機能を使用している場合は、ほかのKubernetesアプリケーションからRelay-Serviceへ再度リクエストが来たとき、並行して稼働している別Podでリクエストを受け付けます。

Entity-Service(SQL)、Entity-Service(TCC)、およびTP1-Bridgeの条件

Entity-Service(SQL)、Entity-Service(TCC)、およびTP1-Bridgeは、トランザクション決着に関わるPodのため、トランザクションをできる限り決着させるために「未決着トランザクション件数」が0件であることを条件とします。

Entity-Service(SQL)、Entity-Service(TCC)、およびTP1-Bridgeは、前述のOrchestrator-ServiceやRelay-Serviceのユーザアプリケーション処理を完了させるために、できる限り応答を返す必要があります。そのため、「処理中リクエスト件数」が0件であることも条件とします。

Orchestrator-Service(SQL)およびAlternate-Service(SQL)の条件

Orchestrator-Service(SQL)およびAlternate-Service(SQL)は、トランザクション決着に関わるPodであるため、トランザクションをできる限り決着させるために、「トランザクションルートで処理中の件数」が0件であることと、「未決着トランザクション件数」が0件であることの両方を満たすことを条件とします。

また、Orchestrator-Service(SQL)およびAlternate-Service(SQL)は、ユーザアプリケーション処理を完了させるために、可能な限り応答を返す必要があります。そのため、「処理中リクエスト件数」が0件であることも条件とします。

Mediatorの条件

Mediatorは、トランザクション決着に関わるPodのため、トランザクションをできる限り決着させるために「未決着トランザクション件数」が0件であることを条件とします。

なお、Mediatorは、ユーザアプリケーション処理を含まないため、ほかのKubernetesアプリケーションのような「処理中リクエスト件数」は条件に含みません。