Hitachi

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


7.5.4 Entity-Service(TCC)の要件(TCC-Participant限定)

Entity-Service(TCC)は、外部のサービスを使用してデータベースなどのリソースの参照および更新業務を行うKubernetesアプリケーションです。トランザクションブランチを開始します。

このKubernetesアプリケーションは、次の表に示すEntity-Service(TCC)の要件を満たすように作成します。

表7‒18 Entity-Service(TCC)の要件

項目

要件

ワークロードリソース

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

ネームスペース

Entity-Service(TCC)を構成するPodを定義したKubernetesのServiceのService名(.metadata.nameフィールド)とNamespace名(.metadata.namespaceフィールド)を「.」でつないだ文字列が、41バイト以内の文字列となるように、Namespace名を検討してください。

ラベル

規定しません。※1

アノテーション

規定しません。

<Prometheusを使用してメトリクス情報を収集する場合>

.spec.template.metadata.annotationsに次を指定してください。

  • キー名:prometheus.io/scrape

    値:true

    値がtrueの場合にメトリクスの収集対象になります。

  • キー名:prometheus.io/path

    値:/hmppcto/metrics※2

    メトリクス収集用のエンドポイントです。

  • キー名:prometheus.io/port

    値:httpポート番号(Prometheusメトリクス収集用)に指定した値

    メトリクス収集用のポートです。

初期化コンテナ構成

Dependency-Checkerコンテナ(「6.4.10 Dependency-Checkerコンテナイメージ」を参照してください)

コンテナ構成

レプリカ数

規定しません。

再起動ポリシー

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

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

規定しません。

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

規定しません。

アクセス制御

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

<Kubernetesリソース取得用ロール>

  • APIグループ

    空(コアグループ)

  • リソース

    services、endpoints、pods

  • アクセス許可

    get、list、watch

上記アクセス許可を定義するためのKubernetesリソースはClusterRoleリソース、ClusterRoleBindingリソース、ServiceAccountリソースを使用してください。

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

  • APIグループ

    空(コアグループ)、apps

  • リソース

    pods、replicasets、deployments、statefulsets、daemonsets

  • アクセス許可

    get、list

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

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

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

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

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

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

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

規定しません。

永続化ボリューム

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

Podライフサイクル設定

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

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

    推奨値「180」

terminationGracePeriodSecondsは、「preStopに設定する未決着トランザクション待機スクリプトの最大待機秒数(120秒)」と「Spring BootのGraceful Shutdown機能での最大待機秒数(20秒)」の合計値以上の値を設定してください。推奨値はそれぞれの最大待機時間のデフォルト値の合計にバッファ(40秒)を加算した値です。

注※1

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

注※2

Kubernetesアプリケーションにコンテキストパス(例:/context-path)を設定している場合、prometheus.io/pathにはコンテキストパスを含めた正しいパスを指定してください。

コンテキストパスを指定していない場合、メトリクス収集用のエンドポイントは、/hmppcto/metricsになります。

コンテキストパスを指定していない場合のprometheus.io/pathの指定:prometheus.io/path: /hmppcto/metrics

コンテキストパスを指定している場合、メトリクス収集用エンドポイントの先頭にコンテキストパスが追加されます。

コンテキストパスを指定している場合のprometheus.io/pathの指定:prometheus.io/path: /context-path/hmppcto/metrics

prometheus.io/pathの設定が、実際のアプリケーションのエンドポイントと一致しているかを必ず確認してください。設定が誤っていると、Prometheusによるメトリクスの収集ができません。

注※3

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

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

表7‒19 Entity-Service(TCC)のDependency-Checkerコンテナの要件

項目

要件

コマンド

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

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

    推奨値「30」

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

    推奨値「10」

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

    推奨値「10」

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

    推奨値「10」

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

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

    Mediator、EADS、Ext-Cons(トライアル版の場合だけ)

    例を次に示します。

    (例)

    my-namespace/statefulsets/mediator

    my-namespace/statefulsets/eads-server

    my-namespace/deployments/ext-cons(トライアル版の場合だけ)

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

ネットワーク設定

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

コンフィグ設定

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

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

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

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

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

CPU/メモリリソース制限

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

表7‒20 Entity-Service(TCC)のEntity-Service(TCC)コンテナの要件

項目

要件

コマンド

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

ネットワーク設定

Entity-Service(TCC)を構成するPodを定義したKubernetesのServiceのService名(.metadata.nameフィールド)とNamespace名(.metadata.namespaceフィールド)を「.」でつないだ文字列が、41バイト以内の文字列となるように、ServiceのService名を検討してください。

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

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

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

    プロトコル:TCP

    公開ポート:自コンテナのserver.portパラメタに設定したポート番号

    コンテナポート:自コンテナの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

    設定する値:任意の秒数

    推奨値:「20s」

HMP-PCTOのgRPC通信の暗号化を有効にする場合、取扱説明書「HMP-PCTO テクニカルガイド」の各プロセスの認証種別に必要となるファイルの一覧に関する説明に示すとおり暗号化通信で必要となるファイルをコンテナ内にマウントしてください(Secretリソースなど)。

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

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

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

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

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

    キー名:config.properties

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

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

規定しません。

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

Liveness Probeを次のとおり設定してください。
  • コマンド実行

    パス:HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)

    第1引数(リトライ回数):「0」固定(Liveness Probeの設定でリトライするため)

    第2引数(リトライ間隔秒数):「0」固定(Liveness Probeの設定でリトライするため)

    第3引数(接続タイムアウト秒数):推奨値「10」

    第4引数(応答タイムアウト秒数):推奨値「10」

    第5引数(HTTPポート番号):自コンテナのserver.portパラメタに設定したポート番号

    第6引数(コンテキストパス):自コンテナのserver.servlet.context-pathに指定した値。

    server.servlet.context-pathを指定する場合だけ設定してください。指定しない場合は、この引数を省略してください。

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

    推奨値「150」

  • Probe実行間隔秒数(periodSeconds)

    推奨値「30」

  • Probe最大失敗回数(failureThreshold)

    推奨値「3」

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

    推奨値「10」

postStartフックを次のとおり設定してください。
  • コマンド実行

    パス:HMP-PCTOのトランザクションヘルスチェックスクリプト(health_check.sh)

    第1引数(リトライ回数):推奨値「30」

    第2引数(リトライ間隔秒数):推奨値「10」

    第3引数(接続タイムアウト秒数):推奨値「10」

    第4引数(応答タイムアウト秒数):推奨値「10」

    第5引数(HTTPポート番号):自コンテナのserver.portパラメタに設定したポート番号

    第6引数(コンテキストパス):自コンテナのserver.servlet.context-pathに指定した値。

    server.servlet.context-pathを指定する場合だけ設定してください。指定しない場合は、この引数を省略してください。

preStopフックを次のとおり設定してください。
  • コマンド実行

    パス:HMP-PCTOの未決着トランザクション待機スクリプト(wait_transactions.sh)

    第1引数(リトライ回数):推奨値「10」

    第2引数(リトライ間隔秒数):推奨値「10」

    第3引数(接続タイムアウト秒数):推奨値「10」

    第4引数(応答タイムアウト秒数):推奨値「10」

    第5引数(HTTPポート番号):自コンテナのserver.portパラメタに設定したポート番号

    第6引数(コンテキストパス):自コンテナのserver.servlet.context-pathに指定した値。

    server.servlet.context-pathを指定する場合だけ設定してください。指定しない場合は、この引数を省略してください。

未決着トランザクション待機スクリプトの最大待機時間は「開始時待機秒数(20秒)」と「リトライ回数×リトライ間隔秒数」を合計した値です。最大待機時間がトランザクション決着監視タイマの設定値を超えるように引数を調整してください。

CPU/メモリリソース制限

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

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

表7‒21 Entity-Service(TCC)のFilebeatコンテナの要件

項目

要件

コマンド

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

  • 第1引数

    「-e」

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

  • 第2引数

    「-E」

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

  • 第3引数(http.enabled)

    「true」

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

ネットワーク設定

規定しません。

コンフィグ設定

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

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

規定しません。

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

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

    推奨値「10」

  • Probe実行間隔秒数(periodSeconds)

    推奨値「10」

  • Probe最大失敗回数(failureThreshold)

    推奨値「3」

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

    推奨値「5」

CPU/メモリリソース制限

規定しません。