Hitachi

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


7.5.2 Entity-Service(Participantコンテナを含まないPodとする場合)の要件

このKubernetesマニフェストは、サービス間を中継するサービスとしてのEntity-Serviceがある場合だけ作成します。詳細については、取扱説明書「HMP-PCTO テクニカルガイド」のトランザクションのモデルに関する説明を参照してください。

このKubernetesアプリケーションは、次の表に示すEntity-Service(Participantコンテナを含まないPodとする場合)の要件を満たすように作成します。

表7‒10 Entity-Service(Participantコンテナを含まないPodとする場合)の要件

項目

要件

ワークロードリソース

規定しません。任意(Deploymentなど)とします。

ネームスペース

規定しません。

ラベル

規定しません。※1

アノテーション

規定しません。

初期化コンテナ構成

コンテナ構成

  • Entity-Serviceコンテナ(「6.3.4 Entity-Serviceコンテナイメージ」を参照してください)(SQL-Participantを使用する場合)

  • <Elastic Stack使用時>Filebeatコンテナ

    Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ使用します。

レプリカ数

規定しません。

再起動ポリシー

コンテナ障害時は必ず再起動(オートヒーリング)してください(Kubernetesのデフォルト設定)。

アップデートストラテジー

規定しません。

Podセキュリティコンテキスト

規定しません。

アクセス制御

Podに対するロールベースアクセス制御(RBAC)で次のとおり対象リソースへのアクセス許可を定義してください。

<Mediator選択機能用ロール>

  • APIグループ

    空(コアグループ)

  • リソース

    services、endpoints、pods

  • アクセス許可

    get、list、watch

上記アクセス許可を定義するためのKubernetesリソースはClusterRoleリソース、ClusterRoleBindingリソース、ServiceAccountリソースを使用すること。

<デプロイ依存関係チェック機能用ロール>

  • APIグループ

    空(コアグループ)、apps

  • リソース

    pods、replicasets、deployments、statefulsets、daemonsets

  • アクセス許可

    get、list

これらのアクセス許可を定義するためのKubernetesリソースは、次に示すとおり使い分けてください。

  • Entity-ServiceとEntity-ServiceのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※2のNamespaceがすべて同一の場合:

    Roleリソース、RoleBindingリソース、ServiceAccountリソースを使用してください。

  • Entity-ServiceとEntity-ServiceのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※2のNamespaceが1つでも異なる場合:

    ClusterRoleリソース、ClusterRoleBindingリソース、ServiceAccountリソースを使用してください。

ServiceAccountリソースのトークンの自動マウント(automountServiceAccountTokenフィールド)を「有効(true)」にしてください(Kubernetesのデフォルト設定)。

Podの割り当てノードの制御

規定しません。

永続化ボリューム

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームを割り当ててください(通常版(uCosminexus Application Runtime with Java for Spring Boot導入あり)の場合だけ)。

Podライフサイクル設定

terminationGracePeriodSecondsを次のとおり設定してください。

  • 安全な停止待機秒数(terminationGracePeriodSeconds)

    推奨値「180」

Orchestrator、SQL-Participant、TCC-ParticipantおよびTP1-BridgeのterminationGracePeriodSecondsの設定値以上の値を設定してください。

terminationGracePeriodSecondsは、「Spring BootのGraceful Shutdown機能での最大待機秒数(140秒)」以上の値を設定してください。推奨値はそれぞれの最大待機時間のデフォルト値の合計にバッファ(40秒)を加算した値です。

注※1

DeploymentリソースやStatefulSetリソースの場合は、Kubernetesのマニフェストの記述仕様に従って、.spec.selectorと.spec.template.metadata.labelsの紐づけのために最低1つ以上のラベルを定義する必要があります。Kubernetesマニフェストの記述仕様の詳細については、Kubernetesのマニュアルなどを参照してください。

注※2

Entity-ServiceのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「表7‒11 Entity-Service(Participantコンテナを含まないPodとする場合)のDependency-Checkerコンテナの要件」を参照してください。

コンテナごとの要件を次に示します。

表7‒11 Entity-Service(Participantコンテナを含まないPodとする場合)のDependency-Checkerコンテナの要件

項目

要件

コマンド

次に示すコマンド引数(args)を設定します。

  • 第1引数(リトライ回数)

    推奨値「30」

  • 第2引数(リトライ間隔秒数)

    推奨値「10」

  • 第3引数(接続タイムアウト秒数)

    推奨値「10」

  • 第4引数(応答タイムアウト秒数)

    推奨値「10」

  • 第5引数以降(ターゲットKubernetesオブジェクト群)

    <対象Kubernetesアプリケーション>

    Mediator、Participant

    例を次に示します。

    (例)

    SQL-Participantを使用する場合:

    my-namespace/statefulsets/mediator

    my-namespace/deployments/sql-participant

    TCC-Participantを使用する場合:

    my-namespace/statefulsets/mediator

    my-namespace/deployments/tcc-participant

    TP1-Bridgeを使用する場合(TP1連携機能を使用する場合):

    my-namespace/statefulsets/mediator

    my-namespace/deployments/tp1-bridge

(エントリポイントはDependency-Checkerコンテナイメージで「HMP-PCTOのデプロイ依存関係チェックスクリプト(dependency_check.sh)」を設定済みです)

ネットワーク設定

設定しません(デフォルト)。

コンフィグ設定

設定しません(デフォルト)。

コンテナセキュリティコンテキスト

設定しません(デフォルト)。

コンテナライフサイクル設定

設定しません(デフォルト)。

CPU/メモリリソース制限

設定しません(デフォルト)。

注※

tp1-bridgeのdeploymentsには、「(15) Kubernetesアプリケーションのデプロイ」でhelmコマンドに指定するリリース名を指定してください。

(例)

リリース名がtp1-bridge1の場合:my-namespace/deployments/tp1-bridge1

表7‒12 Entity-Service(Participantコンテナを含まないPodとする場合)コンテナの要件

項目

要件

コマンド

設定しません(デフォルト)。

ネットワーク設定

Kubernetesクラスタ内で次のポートを公開してください(Serviceリソース)。

  • ユーザ責務のKubernetesアプリケーションで使用する各種ポート番号

  • Prometheusメトリクス収集で使用するhttpポート番号

    プロトコル:TCP

    公開ポート:Entity-Serviceのserver.portパラメタに設定したポート番号

    コンテナポート:Entity-Serviceのserver.portパラメタに設定したポート番号

コンフィグ設定

次のHMP-PCTOのパラメタを、Spring Bootのコンフィグソース(application.properties、application.yml、環境変数など)に設定してください。

Spring BootのGraceful Shutdown機能に関する次のプロパティを、Spring Bootのコンフィグソース(application.properties、application.yml、環境変数など)に設定してください。

  • プロパティ:spring.lifecycle.timeout-per-shutdown-phase

    設定する値:任意の秒数

    推奨値:「140s」

タイムゾーンの設定は任意です。

環境変数HMPPCTO_JAVA_OPTIONSでEntity-ServiceのJavaプロセス起動時にJava VMに渡すオプションを指定してください。

uCosminexus Application Runtime with Java for Spring Bootの設定ファイル(config.properties)をコンテナ内にマウントしてください(通常版(uCosminexus Application Runtime with Java for Spring Boot導入あり)の場合だけ)。

次のとおりファイルを配置してください。

  • ファイル:uCosminexus Application Runtime with Java for Spring Bootの設定ファイル

    キー名:config.properties

    マウント先:/opt/hitachi/ucars/conf/config.properties

コンテナセキュリティコンテキスト

規定しません。

コンテナライフサイクル設定

オートスケールを使用する場合は、Readiness Probeを次のとおり設定してください。
  • tcpSocket.poprt

    Entity-Serviceのserver.portパラメタに設定したポート番号

  • 初回Probe実行待機秒数(initialDelaySeconds)

    推奨値「30」

  • Probeタイムアウト秒数(timeoutSeconds)

    推奨値「60」

CPU/メモリリソース制限

実稼働を通して、環境に合わせた設定を実施してください。

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ、次のFilebeatコンテナの要件を満たすように作成します。

表7‒13 Entity-Service(Participantコンテナを含まないPodとする場合)のFilebeatコンテナの要件

項目

要件

コマンド

次に示すコマンド引数(args)を設定します。

  • 第1引数

    「-e」

    標準エラー出力にログを記録します。syslog/fileへのログ出力を無効化します。

  • 第2引数

    「-E」

    このパラメタ以降に記載された設定を反映した状態で起動します。

  • 第3引数(http.enabled)

    「true」

    HTTPエンドポイントを有効にします。死活監視のために設定を有効化します。

ネットワーク設定

規定しません。

コンフィグ設定

filebeat.ymlを「3.10.1 ログおよびトラブルシュート情報の取得の設定」のとおりに設定してください。

コンテナセキュリティコンテキスト

規定しません。

コンテナライフサイクル設定

Liveness Probeを次のとおり設定してください。
  • 初回Probe実行待機秒数(initialDelaySeconds)

    推奨値「10」

  • Probe実行間隔秒数(periodSeconds)

    推奨値「10」

  • Probe最大失敗回数(failureThreshold)

    推奨値「3」

  • Probeタイムアウト秒数(timeoutSeconds)

    推奨値「5」

Readiness Probeを次のとおり設定してください。
  • 初回Probe実行待機秒数(initialDelaySeconds)

    推奨値「10」

  • Probe実行間隔秒数(periodSeconds)

    推奨値「10」

  • Probe最大失敗回数(failureThreshold)

    推奨値「3」

  • Probeタイムアウト秒数(timeoutSeconds)

    推奨値「5」

CPU/メモリリソース制限

規定しません。