Hitachi

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


7.5.1 Orchestrator-Serviceの要件

Orchestrator-Serviceは、Clientシステムからの要求を受け付けて、ほかのサービスを利用して業務を実行するKubernetesアプリケーションです。トランザクションルートを開始します。

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

表7‒6 Orchestrator-Serviceの要件

項目

要件

ワークロードリソース

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

ネームスペース

規定しません。

ラベル

規定しません。※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コンテナイメージ」を参照してください)

コンテナ構成

  • Orchestrator-Serviceコンテナ(「6.4.1 Orchestrator-Serviceコンテナイメージ」を参照してください)

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

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

レプリカ数

「1」

再起動ポリシー

コンテナ障害時は必ず再起動(オートヒーリング)してください(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リソースは、次に示すとおり使い分けてください。

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

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

  • Orchestrator-ServiceとOrchestrator-Serviceの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

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

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

表7‒7 Orchestrator-ServiceのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

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

    推奨値「30」

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

    推奨値「10」

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

    推奨値「10」

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

    推奨値「10」

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

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

    Entity-Service(SQL)、Entity-Service(TCC)、またはTP1-Bridge

    例を次に示します。

    (例)

    Entity-Service(SQL)を使用する場合:my-namespace/deployments/sql-participant

    Entity-Service(TCC)を使用する場合:my-namespace/deployments/tcc-participant

    TP1-Bridgeを使用する場合: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‒8 Orchestrator-ServiceのOrchestrator-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でOrchestrator-Serviceの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を指定する場合だけ設定してください。指定しない場合は、この引数を省略してください。

CPU/メモリリソース制限

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

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

表7‒9 Orchestrator-Serviceの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」

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を指定する場合だけ設定してください。指定しない場合は、この引数を省略してください。

CPU/メモリリソース制限

規定しません。