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

4010-1J-500-30

前書き

対象製品

RT-1V63-5021 Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator 01-04 (適用OS：Red Hat Universal Base Image 8(64-bit x86_64)、Red Hat Universal Base Image 8 Minimal(64-bit x86_64)、Red Hat Universal Base Image 9(64-bit x86_64)、Red Hat Universal Base Image 9 Minimal(64-bit x86_64)、Almalinux 9 Minimal 9.5(64-bit x86_64))

RT-1V63-8021 Hitachi Microservices Platform - Bridge Option for OpenTP1 01-04 (適用OS：Red Hat Universal Base Image 8(64-bit x86_64)、Red Hat Universal Base Image 8 Minimal(64-bit x86_64)、Red Hat Universal Base Image 9(64-bit x86_64)、Red Hat Universal Base Image 9 Minimal(64-bit x86_64))

輸出時の注意

本製品を輸出される場合には、外国為替および外国貿易法の規制ならびに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

記載の会社名、製品名などは、それぞれの会社の商標もしくは登録商標です。

発行

2025年10月 4010-1J-500-30

著作権

All Rights Reserved. Copyright (C) 2024, 2025, Hitachi, Ltd.

奥付

マニュアル発行元

株式会社 日立製作所

〒100‒8280　東京都千代田区丸の内一丁目6番6号

変更内容

変更内容（4010-1J-500-30）　Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator　01-04

追加・変更内容

変更個所

「オートスケール機能」の名称を「スケーリング対応機能」に変更しました。

全体

HMP-PCTOの機能、Kubernetesアプリケーション、およびコンテナの名称を変更しました。変更前と変更後の対応は次のとおりです。

機能の名称

変更前：Entity-Service

変更後：Entity-Module

Kubernetesアプリケーションの名称

変更前：Orchestrator

変更後：Orchestrator-Service

変更前：SQL-Participant

変更後：Entity-Service(SQL)

変更前：TCC-Participant

変更後：Entity-Service(TCC)

変更前：サービス間を中継するサービスとしてのEntity-Service

変更後：Relay-Service

コンテナの名称

変更前：Entity-Module/TCC-Participantコンテナ

変更後：Entity-Service(TCC)コンテナ

変更前：Entity-Serviceコンテナ

変更後：Relay-Serviceコンテナ

変更前：Orchestratorコンテナ

変更後：Orchestrator-Serviceコンテナ

変更前：SQL-Participantコンテナ

変更後：Entity-Service(SQL)コンテナ

全体、付録F

次のKubernetesアプリケーションを追加しました。次のKubernetesアプリケーションでも、JDBC Proxy Driverに関するパラメタを指定できるようになります。

Orchestrator-Service(SQL)

Alternate-Service(SQL)

これに伴い、HMP-PCTOのトランザクション制御で使用するAPIに次のアノテーションおよび例外を追加しました。

@PctoTransactionBranchアノテーション

TransactionBranchException例外

Entity-Service/Entity-Moduleのパラメタ（現Entity-Moduleのパラメタ）だった次のパラメタを、JDBC Proxy Driverのパラメタに変更しました。

driver-class-name

type

url

username

password

init.mode

また、次のパラメタの説明を変更しました。

Orchestratorのパラメタ

orchestrator.grpc.use-tls

orchestrator.rpc.tls.client.server-auth.certificate

orchestrator.grpc.tls.client.client-auth.certificate

orchestrator.grpc.tls.client.client-auth.key

orchestrator.grpc.tls.session.cache-size

orchestrator.grpc.tls.session.timeout-in-seconds

orchestrator.grpc.keepalive.interval-in-seconds

orchestrator.grpc.keepalive.timeout-in-seconds

orchestrator.grpc.watchtime-in-seconds

1.1、2.2.1、2.2.4、2.2.6、2.2.7、2.2.8、2.2.9、2.2.10、2.2.11、2.2.12、2.2.12(3)、2.2.15、2.2.17、2.3.1、2.3.9、2.3.11、2.6.1、2.6.6、2.6.8、6.1、6.4.5、6.4.7、7.4.1、7.4.2、7.4.4、7.5.5、7.5.7、7.6.2、7.6.3、8.2.2、8.2.3、8.2.13、8.2.18、8.2.19、9.2.1、9.2.2、9.2.3、9.2.4、9.2.5、11.3.6(1)(b)、11.5.3(4)(b)、付録F

役割がトランザクションルートまたはトランザクションブランチに変わるKubernetesアプリケーション（Alternate-Service）を追加しました。

これに伴い、次のパラメタの説明を変更しました。

共通のパラメタ

tracing.instance-id

1.1、2.2.1、2.2.4、2.2.6、2.2.8、2.2.9、2.2.10、2.2.11、2.2.15、2.2.17、2.3.1、2.3.10、2.6.1、2.6.7、3.7.11(1)、4.1、4.2.7、4.3.8、6.1、6.4.6、7.4.1、7.4.2、7.4.4、7.5.6、7.6.2、7.6.3、9.2.1、9.2.4、11.5.3(4)(b)、付録F

次のパラメタの説明を追加しました。

EADSのHelmチャートのパラメタ

release.server

release.service

namespace

caches.name

caches.pvc.storageClassName

logs.storageClassName

store.storageClassName

また、次のパラメタの説明を削除しました。

EADSのHelmチャートのパラメタ

health.timeout

health.forceStop.retry.count

health.forceStop.retry.intervalSecond

次のコンテナイメージの作成要件の説明を削除しました。

EADSサーバ用コンテナイメージ

EADSコマンド実行用コンテナイメージ

1.1、3.4.6、3.4.7、3.8.5、6.1、6.4、9.3.3(1)(a)、9.3.3(1)(b)

システム運用に必要となる機能の構成要素の説明を追加しました。

1.2.5、1.2.6、1.3

前提OSおよび前提プログラムのバージョンを変更しました。

Red Hat Enterprise Linux 9のサポートに伴い、製品版の前提OSにRed Hat Universal Base Image 9.5以降、およびRed Hat Universal Base Image 9 Minimal 9.5以降を追加しました。また、トライアル版の前提OSをAlmalinux 9 Minimal 9.5に変更しました。

Java 21のサポートに伴い、前提プログラムのバージョンを変更しました。

通常版のJavaランタイムについて、次のとおり変更しました。

・ユーザ責務のコンテナイメージのとき：Java SE 21準拠のJDK、P-9W43-9R11 uCosminexus Application Runtime for Spring Boot 01-12-01以降

・HMP-PCTO のコントロールプレーンのコンテナイメージのとき：P-9W43-9Q11 uCosminexus Application Runtime with Java for Spring Boot 01-12-01 以降

1.4.1、1.4.3、2.2、2.2.9(1)(a)、2.2.12(1)、2.2.13(1)(a)、2.2.19、2.3.1、2.3.3、2.3.4、2.3.4(1)、2.3.5(1)、2.3.6(1)、2.3.7(1)、2.3.8(1)、2.5.1、2.5.3、2.6.1、2.6.2、2.6.3、2.6.4、2.6.5、2.6.11、2.7.1、2.7.2(1)、2.7.2(6)、3.2、3.2.2、3.3、3.3.2、3.4.3(1)、3.4.3(2)、3.4.4(1)、3.4.4(2)、3.6.5、3.7.1、3.7.10、3.9.3(14)、3.11.1(1)、3.11.1(9)、6.1、6.3.1、6.3.2、6.4.1、6.4.2、6.4.3、6.4.4、6.4.8、6.4.9、6.4.10、6.4.11、7.2、7.5.1、7.5.2、7.5.3、7.5.4、9.3.1(1)、11.1.1(1)、11.6.1、11.6.2(5)、11.6.3(4)(b)、付録A.1(1)、付録A.1(2)

過去のバージョンでサポートしていたHMP-ADIFをサポート対象外にしました。

これに伴い、次のパラメタを削除しました。

Orchestratorのパラメタ

branch.qualifier.propagation-order

また、HMP-PCTO のトランザクション制御で使用するAPIの説明から、次のクラスを削除しました。

TxPropagationIscImperativePluginクラス

1.4.1、1.4.3、2.2.8、2.2.9(2)(d)、2.2.16、3.2.3(2)、8.2.1、9.2.3(1)、11.2.1、11.6.1、11.6.3(4)(b)、付録E.1(1)

New Relicを使用してトラブルシュート情報を収集できるようにしました。

1.4.1、1.4.3、2.2.17(1)(d)、2.2.17(2)、3.1.2、3.7.1、3.7.13、3.9.1、3.9.3(20)、3.10.1、3.11.1(1)、3.11.1(9)、11.2.2、11.3.2、11.3.5、11.3.6(1)(b)、11.4.2、11.5.2(1)(d)、11.5.2(2)(d)、11.5.3(2)(e)、11.6.1、11.6.2(4)、11.7.1(1)(e)、11.7.1(2)(e)、11.7.1(3)(e)、付録A.1(1)、付録F

Oracle Databaseをサポートしました。

これに伴い、次のパラメタを追加しました。

SQL-Participantのパラメタ

sql.jdbc.driver.additional-library-paths

Oracle Databaseのパラメタ

SESSIONS

また、次のパラメタの説明を変更しました。

SQL-Participantのパラメタ

sql.datasource.class-name

sql.datasource.property.values

sql.pool.max-pool-size

sql.pool.transaction-timeout-in-seconds

sql.db-type

1.4.1、1.4.3、2.3.7(1)、3.11.1(5)、9.2.5(2)、9.4、9.4.4、11.1.1(1)、11.1.1(2)、11.6.1

前バージョンでオプション製品としていたスケーリング対応機能が、本体PPに含まれるようになりました。

これに伴い、次のパラメタの説明を変更しました。

Orchestratorのパラメタ

use-scaling

Mediatorのパラメタ

replicas

また、次のパラメタを追加しました。

TCC-ParticipantのパラメタおよびTP1-Bridgeのパラメタ

use-scaling

1.4.2、2.3.5(1)、2.3.5(2)、2.3.6(1)、2.3.6(2)、2.3.7(1)、2.3.7(2)、2.6.2、2.6.3、2.6.4、2.6.5、3.4.3(1)、3.4.3(2)、3.8.3、3.8.4、4.2.1、4.2.7、4.3.1、4.3.8、9.2.3(1)、9.2.6(2)、9.3.1(1)、9.3.2(1)

Google Cloud Platform環境でトラブルシュート情報を収集できるようにしました。

これに伴い、次のパラメタを追加しました。

MediatorのパラメタおよびTP1-Bridgeのパラメタ

securityContext

また、次のパラメタの説明を変更しました。

共通のパラメタ

tracing.url

Mediatorのパラメタ

dependencyCheck.enabled

1.4.3、1.4.4、2.1.3、2.2.17(1)(c)、2.2.17(2)、2.3.3(1)、2.3.3(2)、2.4、2.5.1、2.5.2、2.6.2、2.6.3、2.6.4、2.6.5、2.6.6、2.6.7、2.6.8、3.1.4、3.4.3(1)、3.4.3(2)、3.4.4(1)、3.4.4(2)、3.5、3.6.1、3.6.2、3.6.2(3)、3.7.1、3.7.2、3.7.5、3.7.10、3.7.12、3.8.3、3.8.6、3.9.1、3.9.3(19)、3.11.1(1)、3.11.1(9)、4.1、4.3.1、4.3.4、4.3.5、4.5.1、9.2.1(1)、9.3.1(1)、9.3.2(1)、11.2.2、11.3.2、11.3.5、11.3.6(1)(b)、11.4.2、11.5.2(1)(c)、11.5.2(2)(c)、11.5.3(2)(d)、11.6.1、11.6.2(3)、11.7.1(1)(d)、11.7.1(2)(d)、11.7.1(3)(d)、付録A.1(1)、付録F

関連プログラムのPrometheusのバージョンが2.53.1以降から3.5.x以降になったことに伴い、PrometheusのHelmチャートの提供を止め、PrometheusのKubernetesマニフェストの作成の記述例を追加しました。

また、PrometheusでHMP-PCTOとして制約のあるパラメタの説明を追加しました。

これに伴い、Prometheusのパラメタの説明をマニュアルから削除しました。Prometheusのパラメタの詳細については、Prometheusの公式ドキュメントを参照してください。

1.4.3、3.7.1、3.7.11、3.8、3.8.1、3.8.2、3.8.3、3.8.6、3.9.1、3.9.3(1)、3.12.5(7)(b)、3.12.5(7)(c)、7.1、7.5.8、7.5.10、7.5.14、9.2.1(1)、9.3.1(1)、9.3.4(1)、9.3.8、9.3.12、付録A.1(1)

Kubernetesクラスタのワークロード数の説明を追加しました。

1.4.4(1)

Red Hat OpenShift Container Platform環境を使用する場合の説明を追加しました。

1.4.6、2.1.1、2.3、2.3.3(1)、2.3.4(1)、2.3.5(1)、2.3.6(1)、2.3.7(1)、2.3.8(1)、2.4、2.6.2、2.6.3、2.6.4、2.6.5、3.1.1、3.1.2、3.4、3.4.3(1)、3.4.4(1)、3.5、3.9、3.9.2(1)、3.9.2(3)、3.9.3(2)、4.2.1、4.2.2、4.2.3、4.3.1、4.3.2、4.3.5

Blue/Greenデプロイメントを使用する場合の説明を追加しました。

1.5、2.6.4、7.5.3

システム運用時の注意事項を追加しました。

2.1、3.1、付録D

アプリケーションのgRPC通信のトランザクション伝搬をサポートしました。

これに伴い、HMP-PCTOのトランザクション制御で使用するAPIに、次のクラスおよびアノテーションを追加しました。

TxPropagationGrpcClientInterceptorクラス

TxPropagationOptionalSettingsクラス

TxPropagationGrpcServerInterceptorクラス

GrpcTraceInterceptorFactoryクラス

@PctoGrpcBranchRollbackForアノテーション

また、次のパラメタの説明を変更しました。

Orchestratorのパラメタ

learner.consensus-type

branch.qualifier.list

2.2.1、2.2.8、2.2.9、2.2.10、2.2.11、7.2、7.4.2、8.2.1、8.2.2、8.2.6、8.2.7、8.2.8、8.2.9、8.2.11、9.2.3(1)、付録A.1(1)

TerminationFailureException例外の説明を変更しました。

2.2.6(3)、8.2.15

スケーリング対応機能を使用する場合に、RestTemplateを利用した通信で発生する次の例外についての説明を追加しました。

PodNotFoundException例外

ServiceNotFoundException例外

2.2.8(1)(d)、8.2.3、8.2.5(1)、8.2.16、8.2.17

ロギングライブラリLogbackの設定ファイル（logback-spring.xml）のカスタマイズ例を追加しました。

2.2.16

コンテナイメージのビルドに出力されるメッセージについての説明を追加しました。

2.3

HMP-PCTOのコンテナベースイメージに関する説明を追加しました。

2.3.1、6.1、6.3、6.4

Liveness Probeで実行するトランザクションヘルスチェックスクリプトの設定に関する次のパラメタを追加しました。

Mediatorのパラメタ

livenessProbe.healthCheck.retryCount

livenessProbe.healthCheck.retryIntervalSeconds

また、次のパラメタを削除しました。

Mediatorのパラメタ

readinessProbe.initialDelaySeconds

readinessProbe.timeoutSeconds

2.3.5(1)、2.3.5(2)、2.3.6(1)、2.3.6(2)、2.6.2、2.6.3、2.6.4、6.4.1、6.4.2、7.2、7.5.1、7.5.2、7.5.3、7.5.4、7.5.8、9.3.1(1)

コンテキストパスを設定している場合の説明を追加しました。

2.6.2、2.6.3、2.6.4、2.6.5、3.7.11、3.7.12、3.7.13、7.5.1、7.5.2、7.5.3、7.5.4、7.6.2、7.6.3

次の記述例にjp.co.Hitachi.soft.hmppcto.tracing.instance-idの記載を追加しました。

Orchestrator-ServiceのKubernetesマニフェストの記述例

Relay-ServiceのKubernetesマニフェストの記述例

Entity-Service(SQL)のKubernetesマニフェストの記述例

Entity-Service(TCC)のKubernetesマニフェストの記述例

MediatorのHelmチャートのカスタマイズ例

TP1-BridgeのHelmチャートのカスタマイズ例

2.6.2、2.6.3、2.6.4、2.6.5、3.8.3、3.8.4

各コンテナイメージのエンドポイントを/hmppcto/metricsに統一しました。

また、各KubernetesアプリケーションのKubernetestコンテナイメージについて、次のアノテーションを追加しました。

prometheus.io/scrape

prometheus.io/path

prometheus.io/port

2.6.2、2.6.3、2.6.4、2.6.5、7.5.1、7.5.2、7.5.3、7.5.4、7.5.8、7.5.9、11.5.3(4)(b)

HMP-PCTOが提供するルーティング機能を利用したルーティングに加えて、ユーザ側で構成したロードバランサによるルーティングもできるようにしました。

これに伴い、次のパラメタを追加しました。

Orchestratorのパラメタ、SQL-Participantのパラメタ、およびEntity-Moduleのパラメタ

set-routing

2.6.2、2.6.3、2.6.4、9.2.3(1)、9.2.4(1)、9.2.5(2)

Relay-ServiceのKubernetesマニフェストの記述例に、preStopの説明を追加しました。

2.6.3

Entity-Service(SQL)のKubernetesマニフェストの記述例に、Dependency-Checkerの対象として接続するRDBMS のKubernetesオブジェクトに関する説明を追加しました。

2.6.4

DBに登録するBranchQualifierの形式を見直しました。

また、Prometheusのクエリで使用する「label_app_kubernetes_io_name」ラベルの説明を追加しました。

これに伴い、次のパラメタを追加しました。

TP1-Bridgeのパラメタ

labels.appKubernetesIoName

また、次のパラメタを削除しました。

SQL-Participantのパラメタ

sql.xa-server-name

TP1-Bridgeのパラメタ

tp1.xaServerName

2.6.4、3.7.11(1)、3.8.4、3.12、3.12.1(1)(c)、3.12.1(3)(c)、3.12.1(4)(c)、3.12.1(5)(c)、3.12.1(6)、4.4.2(2)、4.4.4、4.5.1、4.5.2、7.5.3、7.5.9、9.2.5(2)、9.3.2(1)

MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）に関する説明について、NFSサーバの説明を追加しました。

3.6.3

EADSの永続ボリュームのKubernetes マニフェストの作成に関する説明について、StorageClassの指定方法を変更しました。

3.7.5

HMP-PCTOのKubernetesアプリケーションのグレースフルシャットダウンが開始できる条件、およびグレースフルシャットダウンの実現方法、および注意事項に関する説明を変更しました。

7.4.2、7.4.3

HMP-PCTOに関連するOSSおよび他社製品のパラメタ一覧を追加しました。

9.1、付録B

Tomcat関連のメトリクスを取得できる対象を変更しました。

これに伴い、次のパラメタを追加しました。

共通のパラメタ

metrics.collection.tomcat

9.2.1(1)、11.4.1(1)、11.4.2(2)、11.4.3、付録C

次のパラメタを追加しました。

Mediatorのパラメタ

affinity

9.3.1(1)

HMP-PCTOがRDBMSに接続する際のユーザに付与する権限の説明を追加しました。

9.4.1(2)、9.4.2(2)、9.4.3(2)

次のメッセージを追加しました。

KFSG60037-E (Y)M、KFSG62304-E (Y)J+M、KFSG62305-E (Y)J+M、KFSG62306-W (Y)J+M、KFSG63110-E (Y)J+M、KFSG63111-E (Y)J+M

10.2.1

次のメッセージを削除しました。

KFSG64700-E (Y)M

10.2.1

次のメッセージを変更しました。

KFSG60000-E (Y)M、KFSG60006-E (Y)M、KFSG60007-E (Y)M、KFSG60008-E (Y)M、KFSG60010-W (Y)M+J、KFSG60013-W (Y)M+J、KFSG60014-E (Y)M、KFSG60034-E (Y)M、KFSG60035-E (Y)M、KFSG61103-E (Y)M、KFSG61112-E (Y)M、KFSG61114-E (Y)M、KFSG62002-E (Y)M、KFSG62100-E (Y)D、KFSG62101-E (Y)D、KFSG62106-W (Y)D、KFSG62300-E (Y)J+M、KFSG62301-E(Y)J+M、KFSG62302-E(Y)J+M、KFSG62303-E (Y)J+M、KFSG63105-W (Y)J+M、KFSG63107-W (Y)M、KFSG63109-E (Y)M、KFSG74206-I (Y)M、KFSG82100-I (Y)D、KFSG82102-I (Y)D、KFSG82200-I (Y)M、KFSG83102-I (Y)M

10.2.1、10.2.2、10.2.3

分散トレースが取得する付加情報についての説明を変更しました。

HMP-PCTOが取得できるスパンタグおよびスパンイベントの情報を追加しました。

11.3.6(1)(b)

単なる誤字・脱字などはお断りなく訂正しました。

はじめに

このマニュアルは、マイクロサービス環境でシステム全体のトランザクションの一貫性を確保するためにHitachi Microservices Platform - Paxos Commit Transaction Orchestrator（以降はHMP-PCTO）を適用する際、必要になる次の項目を説明したものです。

HMP-PCTOを適用したKubernetesアプリケーションの開発・デプロイ、および設定手順

HMP-PCTOを適用したKubernetesアプリケーションの開発・デプロイ、および設定時に必要なパラメタ

HMP-PCTOのオプション機能の設定および運用方法

Kubernetesクラスタ外のHMP-PCTOの運用方法

Kubernetesクラスタ外のHMP-PCTOで設定が必要なパラメタ

HMP-PCTOがサポートするAPI

HMP-PCTOが出力するメッセージ

HMP-PCTOの情報取得を含めたシステム運用

このマニュアルを利用することで、ユーザがHMP-PCTOを適用できるようになることを目的としています。

対象読者

このマニュアルは次の方にお読みいただくことを前提に説明しています。

HMP-PCTOを適用したKubernetesアプリケーションを開発する方

HMP-PCTOを適用したシステムを運用する方

また、次の知識をお持ちの方を前提としています。

トランザクション制御に関する基本的な知識

コンテナに関する知識

Kubernetesに関する知識

Java言語のプログラミングの基本的な知識、およびJDBCの基本的な知識

このマニュアルで使用する記号

このマニュアルで使用する記号を次のように定義しています。

記号

意味

｜

横に並べられた複数の項目に対する項目間の区切りを示し、「または」を意味します。

（例）　A｜B

　AまたはBを指定することを示します。

{　}

この記号で囲まれている複数の項目のうちから1つを選択することを示します。項目が横に並べられ、記号｜で区切られている場合は、そのうちの1つを選択します。

（例）　｛A｜B｜C｝

　A、BまたはCのどれかを指定することを示します。

[　]

この記号で囲まれている項目は省略してもよいことを示します。

（例）　［A］

　「何も指定しない」か「Aを指定する」ことを示します。

...

記述が省略されていることを示します。

（例）　ABC…

　ABCの後ろに記述があり、その記述が省略されていることを示します。

<>

この記号で囲まれている項目は、該当する要素やファイルなどを指定したり、該当する要素が表示されたりすることを示します。

（例1）　<プロパティ>

　プロパティを記述します。またはプロパティが表示されます。

（例2）　<ファイル名>

　ファイル名を指定します。

第1編　HMP-PCTOの前提条件

1　HMP-PCTOの構成および前提条件

1.1　HMP-PCTOのKubernetesアプリケーションの一覧と分類

HMP-PCTOは、ユーザアプリケーションに取り込んで使用する製品です。HMP-PCTOのKubernetesアプリケーションには、次に示す分類があります。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOの業務ロジックを担うKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーション

HMP-PCTOのトランザクション制御の機能を担うKubernetesアプリケーション

RASのKubernetesアプリケーション

HMP-PCTOのシステム運用に必要な機能を担うKubernetesアプリケーション

HMP-PCTOのKubernetesアプリケーションの一覧と分類を次の表に示します。

表1‒1　HMP-PCTOのKubernetesアプリケーションの一覧と分類

Kubernetesアプリケーション

Kubernetesアプリケーションの分類

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーション

RASのKubernetesアプリケーション

ユーザのアプリケーションとHMP-PCTOのライブラリが混在するアプリケーション※¹

○

−

−

Mediator

−

○

−

TP1-Bridge（TP1連携機能を使用する場合）

−

〇

−

EADS※2（通常版の場合）

−

○

−

Ext-Cons（トライアル版の場合）

−

○

−

Filebeat

−

−

○

Jaeger-query

−

−

○

Jaeger-collector

−

−

○

Prometheus

−

−

○

Metricbeat

−

−

○

Elasticsearch

−

−

○

Logstash

−

−

○

Metrics Server

○

−

−

（凡例）

○：該当します。

−：該当しません。

注※1

該当するアプリケーションを下記に示します。

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

注※2

EADSの詳細については、取扱説明書「EADSコンテナオーケストレーションツール対応機能」を参照してください。

1.2　構成要素

HMP-PCTOのクラスタの構成要素、および使用するParticipantや機能ごとの構成要素（Pod（Kubernetes アプリケーション）、Container、サービスなど）について説明します。

1.2.1　HMP-PCTOのKubernetesクラスタの構成要素

HMP-PCTOは1つのKubernetesクラスタで構成します。

RHEL、Kubernetes、Java、前提OSなどの前提バージョンについては、「1.4　前提条件」を参照してください。

図1‒1　HMP-PCTOのKubernetesクラスタの構成要素

注　トライアル版では、図中のRHEL/UBIの代わりにAlmaLinuxを使用します。

Kubernetesマスターコンポーネントの配置についてはHMP-PCTOでは規定しないため、Kubernetesマスターコンポーネントの記載は省略しています。

1.2.2　SQL-Participantを使用する場合の構成要素（SQL-Participant限定）

SQL-Participantを使用する場合の構成要素（Pod（Kubernetesアプリケーション）およびContainer）を次の表に示します。

表1‒2　SQL-Participantを使用する場合の構成要素

Kubernetes cluster

Pod（Kubernetesアプリケーション）およびContainer

persistent volume

備考

HMP-PCTO

Orchestrator-Service

−

なし

Entity-Service(SQL)

−

なし

Mediator

○

なし

通常版の場合

EADS

トライアル版の場合

Mockサーバ

○

なし

EADS生存監視

−

CronJobで定期実行するためpodは常設しない

（凡例）○：必要です。　−：規定しません。

1.2.3　TCC-Participantを使用する場合の構成要素（TCC-Participant限定）

TCC-Participantを使用する場合の構成要素（Pod（Kubernetesアプリケーション）およびContainer）を次の表に示します。

表1‒3　TCC-Participantを使用する場合の構成要素

Kubernetes cluster

Pod（Kubernetesアプリケーション）およびContainer

persistent volume

備考

HMP-PCTO

Orchestrator-Service

−

なし

Entity-Service(TCC)

−

なし

Mediator

○

なし

通常版の場合

EADS

トライアル版の場合

Mockサーバ

○

なし

EADS生存監視

−

CronJobで定期実行するためpodは常設しない

（凡例）○：必要です。　−：規定しません。

1.2.4　TP1-Bridgeを使用する場合の構成要素（通常版かつTP1-Bridge限定）

TP1-Bridgeを使用する場合の構成要素（Pod（Kubernetesアプリケーション）およびContainer）を次の表に示します。

表1‒4　TP1-Bridgeを使用する場合の構成要素

Kubernetes cluster

Pod（Kubernetesアプリケーション）およびContainer

persistent volume

備考

HMP-PCTO

Orchestrator-Service

−

なし

TP1-Bridge

−

なし

Mediator

○

なし

EADS

○

なし

EADS生存監視

−

CronJobで定期実行するためpodは常設しない

（凡例）○：必要です。　−：規定しません。

1.2.5　システム運用に必要となる機能の構成要素

システム運用に必要となる機能の構成要素（Pod（Kubernetesアプリケーション）、およびContainerならびにサービス）を次の表に示します。

表1‒5　システム運用に必要となる機能の構成要素

役割

Pod（Kubernetesアプリケーション）、およびContainerならびにサービス

Elastic Stack使用時

Red Hat OpenShift Container Platform環境

Microsoft Azure環境

Google Cloud Platform環境

New Relic使用時

ログ収集

（コンテナ標準出力）

Filebeat

−※1

Azure Monitor※2

Cloud Logging※3

New Relic※4

ログ収集

（Pod内ファイル）

Filebeat

−

−

−

−

ログ永続化

Logstash

Elasticsearch

−※1

Azure Monitor Log Analytics※2

Cloud Logging※3

New Relic※4

ログ閲覧

Elasticsearch

Kibana

−※1

Azure Monitor※2

Cloud Logging※3

New Relic UI（Web UI）※5

分散トレース収集

Jaeger-collector

−※1

Azure Monitor Application Insights※2

Cloud Trace※3

OpenTelemetry Collector

分散トレース永続化

Elasticsearch

−※1

Azure Monitor Log Analytics※2

Cloud Trace※3

New Relic※4

分散トレース閲覧

Jaeger-query

−※1

Azure Monitor Application Insights※2

Cloud Trace※3

New Relic UI（Web UI）※5

メトリクス収集

Prometheus

Metricbeat

−※1

Prometheus用のマネージドサービス※2

Google Cloud Managed Service for Prometheus※3

New Relic※4

メトリクス永続化

Elasticsearch

−※1

Azure Monitor※2

Cloud Monitoring※3

New Relic※4

メトリクス閲覧

Prometheus

−※1

Grafana用のマネージドサービス※2

Cloud Monitoring※3

New Relic UI（Web UI）※5

（凡例）−：規定しません。

注※1

HMP-PCTOではRed Hat OpenShift Container Platform環境を使用している場合、HMP-PCTOが提供しているRASのKubernetesアプリケーションを使用できません。そのため、Red Hat OpenShift Container Platform環境を使用している場合、New Relicを使用して、HMP-PCTOのトラブルシュート情報を収集することを推奨します。

注※2

Microsoft Azureのマネージドサービスとして提供されるため、PodおよびContainerとしての配置は不要です。

注※3

Google Cloud Platformのマネージドサービスとして提供されるため、PodおよびContainerとしての配置は不要です。

注※4

New Relicが提供しているコンポーネントのPodおよびContainerを配置します。

注※5

New Relicのマネージドサービスとして提供されるため、PodおよびContainerとしての配置は不要です。

1.2.6　スケーリング対応機能の構成要素

収集したメトリクスを使用してオートスケールをする場合の構成要素（Pod（Kubernetesアプリケーション）、およびContainerならびにサービス）を次の表に示します。

表1‒6　スケーリング対応機能の構成要素

役割

Pod（Kubernetesアプリケーション）、およびContainerならびにサービス

Elastic Stack使用時

Red Hat OpenShift Container Platform環境

Microsoft Azure環境

Google Cloud Platform環境

New Relic使用時

Kubernetesのメトリクス収集

Metrics Server

Metrics Server

Metrics Server

カスタム指標Stackdriverアダプタ（custom-metrics-stackdriver-adapter）

−※

HMP-PCTOのメトリクス収集

Prometheus

−※

Prometheus用のマネージドサービス

Google Cloud Managed Service for Prometheus

−※

（凡例）−：規定しません。

注※

該当するメトリクスを使用して、HMP-PCTOのスケーリング対応機能は使用できません。

1.3　最小機器構成

SQL-Participant、TCC-Participant、およびTP1-Bridgeを使用する場合の最小機器構成について説明します。

機器構成には、HMP-PCTOに組み込むKubernetesアプリケーションの責務境界についても示しています。HMP-PCTOのKubernetesアプリケーションの分類については、「1.1　HMP-PCTOのKubernetesアプリケーションの一覧と分類」を参照してください。

1.3.1　SQL-Participantを使用する場合の最小機器構成（SQL-Participant限定）

SQL-Participantを使用する場合の最小機器構成について説明します。

各MediatorのPodは可用性を確保するため、別々のKubernetesワーカーノードに配置し、物理的にも別のマシンとする必要があります。

Mediatorの最小個数は分散合意方式によって異なります。

DBサーバは、HMP-PCTOと同一のKubernetesクラスタ内に配置するか、またはKubernetesクラスタ外に配置するかは任意です（HMP-PCTOでは規定しません）。

各KubernetesアプリケーションをデプロイするNamespaceの名称および数は任意とします。

補助合意用のEADSクラスタ内のEADSサーバのPodは可用性を確保するため、別々のKubernetesワーカーノードに配置し、物理的にも別のマシンとする必要があります。

MediatorのPodとEADSサーバのPodは、同一のワーカーノードにも配置できます。

なお、各MediatorのPodと、補助合意用のEADSクラスタ内のPod（EADSサーバのPodを除く）は、任意にKubernetesワーカーノードに配置できます（HMP-PCTOでは規定しません）。

ThreeQuarters合意方式での最小機器構成

SQL-Participantを使用する場合の、ThreeQuarters合意方式での最小機器構成を次の図に示します。

図1‒2　SQL-Participantを使用する場合の最小機器構成（ThreeQuarters合意方式（通常版））

PrivilegedValue合意方式での最小機器構成

SQL-Participantを使用する場合の、PrivilegedValue合意方式での最小機器構成を次の図に示します。

図1‒3　SQL-Participantを使用する場合の最小機器構成（PrivilegedValue合意方式（通常版））

(1)　トライアル版の場合

トライアル版では、EADSの代わりにMockサーバを使用します。Mockサーバの場合、コンテナは1つで可用性を考慮しないため、別ノードとする必要はありません。

HMP-PCTOではMediatorを別ノードに配置することを推奨していますが、同一ノードにも配置できます。

ThreeQuarters合意方式での最小機器構成

SQL-Participantを使用する場合の、ThreeQuarters合意方式での最小機器構成を次の図に示します。

図1‒4　SQL-Participantを使用する場合の最小機器構成（ThreeQuarters合意方式（トライアル版））

PrivilegedValue合意方式での最小機器構成

SQL-Participantを使用する場合の、PrivilegedValue合意方式での最小機器構成を次の図に示します。

図1‒5　SQL-Participantを使用する場合の最小機器構成（PrivilegedValue合意方式（トライアル版））

1.3.2　TCC-Participantを使用する場合の最小機器構成（TCC-Participant限定）

TCC-Participantを使用する場合の最小機器構成について説明します。

各MediatorのPodは可用性を確保するため、別々のKubernetesワーカーノードに配置し、物理的にも別のマシンとする必要があります。

Mediatorの最小個数は分散合意方式によって異なります。

各KubernetesアプリケーションをデプロイするNamespaceの名称および数は任意とします。

補助合意用のEADSクラスタ内のEADSサーバのPodは可用性を確保するため、別々のKubernetesワーカーノードに配置し、物理的にも別のマシンとする必要があります。

MediatorのPodとEADSサーバのPodは、同一のワーカーノードにも配置できます。

なお、各MediatorのPodと、補助合意用のEADSクラスタ内のPod（EADSサーバのPodを除く）は、任意にKubernetesワーカーノードに配置できます（HMP-PCTOでは規定しません）。

ThreeQuarters合意方式での最小機器構成

TCC-Participantを使用する場合の、ThreeQuarters合意方式での最小機器構成を次の図に示します。

図1‒6　TCC-Participantを使用する場合の最小機器構成（ThreeQuarters合意方式（通常版））

PrivilegedValue合意方式での最小機器構成

TCC-Participantを使用する場合の、PrivilegedValue合意方式での最小機器構成を次の図に示します。

図1‒7　TCC-Participantを使用する場合の最小機器構成（PrivilegedValue合意方式（通常版））

(1)　トライアル版の場合

トライアル版では、EADSの代わりにMockサーバを使用します。Mockサーバの場合、コンテナは1つで可用性を考慮しないため、別ノードとする必要はありません。

HMP-PCTOではMediatorを別ノードに配置することを推奨していますが、同一ノードにも配置できます。

ThreeQuarters合意方式での最小機器構成

TCC-Participantを使用する場合の、ThreeQuarters合意方式での最小機器構成を次の図に示します。

図1‒8　TCC-Participantを使用する場合の最小機器構成（ThreeQuarters合意方式（トライアル版））

PrivilegedValue合意方式での最小機器構成

TCC-Participantを使用する場合の、PrivilegedValue合意方式での最小機器構成を次の図に示します。

図1‒9　TCC-Participantを使用する場合の最小機器構成（PrivilegedValue合意方式（トライアル版））

1.3.3　TP1-Bridgeを使用する場合の最小機器構成（通常版かつTP1-Bridge限定）

TP1-Bridgeを使用する場合の最小機器構成について説明します。

各MediatorのPodは可用性を確保するため、別々のKubernetesワーカーノードに配置し、物理的にも別のマシンとする必要があります。

Mediatorの最小個数は分散合意方式によって異なります。

各KubernetesアプリケーションをデプロイするNamespaceの名称および数は任意とします。

補助合意用のEADSクラスタ内のEADSサーバのPodは可用性を確保するため、別々のKubernetesワーカーノードに配置し、物理的にも別のマシンとする必要があります。

MediatorのPodとEADSサーバのPodは、同一のワーカーノードにも配置できます。

なお、各MediatorのPodと、補助合意用のEADSクラスタ内のPod（EADSサーバのPodを除く）は、任意にKubernetesワーカーノードに配置できます（HMP-PCTOでは規定しません）。

OpenTP1は、Kubernetesクラスタ外に配置してください。

ThreeQuarters合意方式での最小機器構成

TP1-Bridgeを使用する場合の、ThreeQuarters合意方式での最小機器構成を次の図に示します。

図1‒10　TP1-Bridgeを使用する場合の最小機器構成（ThreeQuarters合意方式（通常版））

PrivilegedValue合意方式での最小機器構成

TP1-Bridgeを使用する場合の、PrivilegedValue合意方式での最小機器構成を次の図に示します。

図1‒11　TP1-Bridgeを使用する場合の最小機器構成（PrivilegedValue合意方式（通常版））

1.4　前提条件

OS、プログラム、Kubernetesクラスタ構成、共有ファイルシステムなどの前提条件について説明します。

1.4.1　前提OSおよび前提プログラム

HMP-PCTOの前提OSおよび前提プログラムを次の表に示します。

表1‒7　HMP-PCTOの前提OSおよび前提プログラム

項番

種別

前提OSおよび前提プログラム

1

Kubernetesコンテナプラットフォーム

Red Hat OpenShift Container Platform（オプション）

2

Kubernetesディストリビューション

Kubernetes 1.24.0以降

3

Kubernetesパッケージマネージャ

Helm

4

前提OS

（コンテナベースイメージ）

通常版の場合

ユーザ責務のコンテナイメージのとき

Red Hat Universal Base Image 8 8.1以降 (64-bit x86_64)※1

Red Hat Universal Base Image 9.5以降 (64-bit x86_64)※2

HMP-PCTOのコントロールプレーンのコンテナイメージのとき

Red Hat Universal Base Image 8 Minimal 8.8以降 (64-bit x86_64)

Red Hat Universal Base Image 9 Minimal 9.5以降 (64-bit x86_64)

トライアル版の場合

Almalinux 9 Minimal 9.5 (64-bit x86_64)

5

Javaフレームワーク

（APサーバを含む）

Spring Boot 3.4

6

Javaランタイム

通常版の場合

uCosminexus Application Runtime for Spring Boot導入ありのとき※³

・ユーザ責務のコンテナイメージのとき（他社製のJava VMを使用するとき）：Java SE 21準拠のJDK、P-9W43-9R11 uCosminexus Application Runtime for Spring Boot 01-12-01以降

・HMP-PCTOのコントロールプレーンのコンテナイメージのとき：P-9W43-9Q11 uCosminexus Application Runtime with Java for Spring Boot 01-12-01以降

uCosminexus Application Runtime for Spring Boot導入なしのとき

・ユーザ責務のコンテナイメージのとき：Java SE 21準拠のJDK

トライアル版の場合

ユーザ責務のコンテナイメージのとき

Java SE 21準拠のJDK

HMP-PCTOのコントロールプレーンのコンテナイメージのとき

java-21-openjdk-headless

7

Javaライブラリ※⁴

同梱の表記がないものはこの製品に同梱しません。

P-9W43-8B81 Hitachi Elastic Application Data Store Client for Java 08-00以降（通常版の場合だけ同梱）

com.azure:azure-monitor-opentelemetry-exporter 1.0.0-beta.28

com.google.cloud.opentelemetry:exporter-trace 0.35.x

com.google.protobuf:protobuf-java-util 3.25.x（3.25.0以上、3.26.0未満）

commons-codec:commons-codec:1.17.2

io.grpc:grpc-api 1.71.x（1.71.0以上、1.72.0未満）

io.grpc:grpc-netty 1.71.x（1.71.0以上、1.72.0未満）

io.grpc:grpc-netty-shaded 1.71.x（1.71.0以上、1.72.0未満）

io.grpc:grpc-protobuf 1.71.x（1.71.0以上、1.72.0未満）

io.grpc:grpc-services 1.71.x（1.71.0以上、1.72.0未満）

io.grpc:grpc-stub 1.71.x（1.71.0以上、1.72.0未満）

io.kubernetes:client-java 23.0.x（23.0.0以上、23.1.0未満）

io.micrometer:micrometer-core 1.14.x※4

io.micrometer:micrometer-registry-prometheus 1.14.x※4

io.opentelemetry.instrumentation:opentelemetry-grpc-1.6 2.9.0-alpha

io.opentelemetry:opentelemetry-api 1.43.x※4

io.opentelemetry:opentelemetry-exporter-jaeger-thrift 1.34.1

io.opentelemetry:opentelemetry-sdk 1.43.x※4

jakarta.annotation:jakarta.annotation-api 2.1.x※4

jakarta.json.bind:jakarta.json.bind-api 3.0.x※4

jakarta.ws.rs:jakarta.ws.rs-api 3.1.x※4

net.devh:grpc-client-spring-boot-autoconfigure 2.15.1.RELEASE

opentelemetry-exporter-otlp 1.43.x

org.eclipse:yasson 3.0.x※4

org.osgi:org.osgi.annotation.bundle 2.0.x※4

org.projectlombok:lombok 1.18.x※4

org.quartz-scheduler:quartz 2.3.x※4

org.springframework.boot:spring-boot-starter-web 3.4.x※4

org.springframework:spring-aspects 6.2.x※4

org.springframework:spring-web 6.2.x※4

8

RPMパッケージ

curlまたはcurl-minimal

glibc

jq

ncurses

tar

cpio

gzip

コンテナベースイメージがRHEL8の場合

ncompress

9

JDBC Driver

PostgreSQL 13またはPostgreSQL 17に接続する場合

PostgreSQL JDBC Driver 42.x.x（x.xは7.1以降）

SQL Server 2022に接続する場合

Microsoft JDBC Driver 12.x for SQL Server（xは6以降）

HiRDB 10に接続する場合

HiRDB type4 JDBC Driver（10-xx）（xxは07以降）

Oracle Database 23aiまたはOracle Database 19cに接続する場合

Oracle Database JDBC Driver 23.x.x.x.x（x.x.x.xは6.0.24.10以降）

10

TP1/Client/J

TP1連携機能を使用する場合

P-2464-73B4 uCosminexus TP1/Client/J 07-53-/A以降

11

uCosminexus Service Platform

TP1連携機能を使用する場合

P-9W43-7SY1 uCosminexus Service Platform 11-30以降

（TP1-Converter実行環境に必要です）

12

uCosminexus Service Architect

TP1連携機能を使用する場合

P-2943-7TY4 uCosminexus Service Architect 11-40以降

（データ変換定義ファイルを作成するために開発環境に必要です）

注　前提OSおよび前提プログラムにバージョンの記載がない場合、バージョンに制限はありません。

注※1

UBI 8の任意のベースイメージ（UBI 8 Minimalなど）

注※2

UBI 9の任意のベースイメージ（UBI 9 Minimalなど）

注※3

MediatorではuCosminexus Application Runtime for Spring Boot のHTTP 機能は使用できません。

注※4

使用するSpring Bootの依存関係に含まれるバージョンを使用するため、Spring Bootのバージョンによって変更されることがあります。詳細については、Spring Bootの公式ドキュメントを参照してください。

重要

Javaライブラリのバージョンについて

ユーザアプリケーションを開発する場合は、記載されているバージョンを使用してください。記載されていないバージョンを使用したときは、動作保証の対象外となります。

1.4.2　オプション製品

HMP-PCTOのオプション製品を次の表に示します。

表1‒8　HMP-PCTOのオプション製品

項番

種別

オプション製品

1

Hitachi Microservices Platform - Bridge Option for OpenTP1

TP1連携機能を使用する場合

RT-1V63-8021 Hitachi Microservices Platform - Bridge Option for OpenTP1 01-04以降

1.4.3　関連プログラム

HMP-PCTOの関連プログラムを次の表に示します。

表1‒9　HMP-PCTOの関連プログラム

項番

種別

関連プログラム

1

関連プログラム

（同一Kubernetesクラスタ内に起動）

P-9W43-8A81 Hitachi Elastic Application Data Store 08-00（通常版の場合だけ）

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

Jaeger-collector 1.56.0以降※1

Jaeger-query 1.56.0以降※1

Prometheus 3.5.x（xは0以降）※1、※2

Elasticsearch 8.13.0以降※1

Filebeat 8.13.0以降※1

Logstash 8.13.0以降※1

Metricbeat 8.13.0以降※1

New Relicを使用してトラブルシュート情報を収集する場合

OpenTelemetry Collector 0.x.y以降（xは131以降、yは指定なし）

スケーリング対応機能のメトリクスの監視にMetrics Serverを使用する場合

Metrics Server 0.6.3以降※1

Google Cloud Platform以外の環境で、スケーリング対応機能のメトリクスの監視にPrometheusを使用する場合

KEDA（Kubernetes Event-driven Autoscaling）2.11.2以降※1

Google Cloud Platform環境で、スケーリング対応機能のメトリクスの監視にPrometheusを使用する場合

custom-metrics-stackdriver-adapter 0.16.1以降

PostgreSQLに接続する場合

PostgreSQL 13

PostgreSQL 17

SQL Serverに接続する場合

SQL Server 2022

Oracle Databaseに接続する場合

Oracle Database 19c

Oracle Database 23ai

2

関連プログラム

（Kubernetesクラスタ外に起動）

TP1連携機能を使用する場合

P-8164-2111 uCosminexus TP1/Server Base 07-56 以降またはP-8264-2111 uCosminexus TP1/Server Base(64) 07-56 以降

Microsoft Azure環境でトラブルシュート情報を収集する場合

Azure Monitor

Google Cloud Platform環境でトラブルシュート情報を収集する場合

・Cloud Logging

・Cloud Trace

・Cloud Monitoring

New Relicを使用してトラブルシュート情報を収集する場合

New Relic

HiRDBに接続する場合

HiRDB 10

注※1

公式ページからリリースノートを参照し、後方互換のあるバージョンを使用してください。また、メジャーアップデートバージョンが異なるバージョンは使用しないでください。

注※2

Prometheusは、LTS版の3.5系列を使用してください。異なるマイナーバージョンは使用しないでください。

重要

OSSバージョンアップ時の注意事項

OSSのバージョンアップをする際の手順については、各OSSの公式ドキュメントを参照してください。

1.4.4　前提とするKubernetesクラスタ構成

HMP-PCTOが前提とするKubernetesクラスタ構成を次の表に示します。

表1‒10　HMP-PCTOが前提とするKubernetesクラスタ構成

項番

項目

前提条件

1

Kubernetesクラスタ数

1クラスタだけ

2

リージョン数

（パブリッククラウドを使用する場合）

1リージョンだけ

3

ゾーン数

（パブリッククラウドを使用する場合）

1ゾーンだけ

4

Kubernetesワーカーノード数

分散合意方式によって、次のとおり異なります。

Kubernetesワーカーノードはそれぞれ物理的に別マシンである必要があります。

ThreeQuarters合意方式の場合

Kubernetesワーカーノード数：5以上

PrivilegedValue合意方式の場合

Kubernetesワーカーノード数：3以上

5

クラスタ運用モード

（Google Cloud Platform環境を使用する場合）

Standardモード

(1)　Kubernetesクラスタのワークロード数

ワークロードとは、クラスタ上で実行されるKubernetesアプリケーションを実行するためのリソース（deployment、statefulsetなど）を指す総称です。ワークロード数はdeploymentやstatefulsetの数を意味します。次の例の場合、レプリカ数はカウントしないため、ワークロード数は3になります。

例：

Relay-ServiceとしてRelay-Service1、Relay-Service2、Relay-Service3の3つをデプロイする。Relay-Service1はレプリカ数2、Relay-Service2はレプリカ数1、Relay-Service3はレプリカ数4でデプロイする。

HMP-PCTOのKubernetesアプリケーションごとに使用できるワークロード数と、1ワークロードで使用できるレプリカ数について説明します。Kubernetesクラスタにデプロイできる数と、1トランザクションで使用できる数に分けて説明します。

(a)　Kubernetesクラスタにデプロイできる数

Kubernetesアプリケーションで使用するHMP-PCTOの機能に応じて、デプロイできるワークロード数およびレプリカ数が異なります。

Orchestratorの機能を使用するKubernetesアプリケーション

Orchestratorの機能を使用するKubernetesアプリケーションの一覧と、デプロイできるワークロード数およびレプリカ数を次の表に示します。Kubernetesアプリケーションごとに、少なくとも1つのワークロードが必要です。

表1‒11　Orchestratorの機能を使用するKubernetesアプリケーションごとにデプロイできるワークロード数およびレプリカ数

項番

Kubernetesアプリケーション

ワークロード数

下限

ワークロード数

上限

レプリカ数

下限

レプリカ数

上限

1

Orchestrator-Service

1

なし

1

なし

2

Orchestrator-Service(SQL)

1

1

3

Alternate-Service

1

1

4

Alternate-Service(SQL)

1

1

Participantの機能を使用するKubernetesアプリケーション

Participantの機能を使用するKubernetesアプリケーションの一覧と、デプロイできるワークロード数およびレプリカ数を次の表に示します。これらのKubernetesアプリケーションごとに、少なくとも1つのワークロードが必要です。

ただし、HMP-PCTOは分散トランザクション機能を提供しており、複数のリソース間で一貫性のある処理を保証します。そのため、HMP-PCTOを十分に活用するには、Participantの機能を使用するKubernetesアプリケーションを2つ以上のワークロードで構成することを推奨します。

表1‒12　Participantの機能を使用するKubernetesアプリケーションごとにデプロイできるワークロード数およびレプリカ数

項番

Kubernetesアプリケーション

ワークロード数

下限

ワークロード数

上限

レプリカ数

下限

レプリカ数

上限

1

Entity-Service(SQL)

1

なし

1

20

2

Entity-Service(TCC)

1

1

1

3

Orchestrator-Service(SQL)

1

1

20

4

Alternate-Service(SQL)

1

1

20

5

TP1-Bridge

1

1

1

Mediatorの機能を使用するKubernetesアプリケーション

Mediatorの機能を使用するKubernetesアプリケーションの一覧と、デプロイできるワークロード数およびレプリカ数を次の表に示します。

表1‒13　Mediatorの機能を使用するKubernetesアプリケーションごとにデプロイできるワークロード数およびレプリカ数

項番

Kubernetesアプリケーション

ワークロード数

下限

ワークロード数

上限

レプリカ数

下限

レプリカ数

上限

1

Mediator

1

1つのnamespaceにつき、1つまでです。namespace数に制限はありません。

2

64

Entity-Moduleの機能を使用するKubernetesアプリケーション

Entity-Moduleの機能を使用するKubernetesアプリケーションの一覧と、デプロイできるワークロード数およびレプリカ数を次の表に示します。

表1‒14　Entity-Moduleの機能を使用するKubernetesアプリケーションごとにデプロイできるワークロード数およびレプリカ数

項番

Kubernetesアプリケーション

ワークロード数

下限

ワークロード数

上限

レプリカ数

下限

レプリカ数

上限

1

Relay-Service

0

なし

1

なし

2

Entity-Service(SQL)※

0

1

3

Entity-Service(TCC)※

0

1

4

Alternate-Service

0

1

5

Alternate-Service(SQL)※

0

1

注※

Kubernetesアプリケーションのワークロード数およびレプリカ数は、リソースの参照および更新をしない場合の数を示します。リソースの参照および更新をする場合は「Participantの機能を使用するKubernetesアプリケーション」を参照してください。

(b)　1トランザクションで使用できる数

Kubernetesアプリケーションで使用するHMP-PCTOの機能に応じて、1トランザクションで使用できるワークロード数、レプリカ数が異なります。

Orchestratorの機能を使用するKubernetesアプリケーション

Orchestratorの機能を使用するKubernetesアプリケーションの一覧と、使用できるワークロード数およびレプリカ数を次の表に示します。Kubernetesアプリケーションごとに使用できるワークロードは1つだけです。また、複数のレプリカがあっても、そのうちの1つのレプリカを使用します。

表1‒15　Orchestratorの機能を使用するKubernetesアプリケーションごとに使用できるワークロード数およびレプリカ数

項番

Kubernetesアプリケーション

ワークロード数上限

レプリカ数上限

1

Orchestrator-Service

1

1

2

Orchestrator-Service(SQL)

1

1

3

Alternate-Service

1

1

4

Alternate-Service(SQL)

1

1

Participantの機能を使用するKubernetesアプリケーション

Participantの機能を使用するKubernetesアプリケーションの一覧と、使用できるワークロード数およびレプリカ数を次の表に示します。Kubernetesアプリケーションごとに1つ以上のワークロードが必要で、合計で最大20まで使用できます。また、複数のレプリカがあっても、そのうちの1つのレプリカを使用します。

表1‒16　Participantの機能を使用するKubernetesアプリケーションごとに使用できるワークロード数およびレプリカ数

項番

Kubernetesアプリケーション

ワークロード数上限

レプリカ数上限

1

Entity-Service(SQL)

20

1

2

Entity-Service(TCC)

20

1

3

Orchestrator-Service(SQL)

20

1

4

Alternate-Service(SQL)

20

1

5

TP1-Bridge

20

1

Mediatorの機能を使用するKubernetesアプリケーション

次の表に、Mediatorの機能を使用するKubernetesアプリケーションの一覧と、使用できるワークロード数およびレプリカ数を次の表に示します。

表1‒17　Mediatorの機能を使用するKubernetesアプリケーションごとに使用できるワークロード数およびレプリカ数

項番

Kubernetesアプリケーション

ワークロード数上限

レプリカ数上限

1

Mediator

1

mediator.sizeパラメタを参照してください。

Entity-Moduleの機能を使用するKubernetesアプリケーション

Entity-Moduleの機能を使用するKubernetesアプリケーションの一覧と、使用できるワークロード数およびレプリカ数を次の表に示します。

表1‒18　Entity-Moduleの機能を使用するKubernetesアプリケーションごとに使用できるワークロード数およびレプリカ数

項番

Kubernetesアプリケーション

ワークロード数上限

レプリカ数上限

1

Relay-Service

なし

1

2

Entity-Service(SQL)※

1

3

Entity-Service(TCC)※

1

4

Alternate-Service

1

5

Alternate-Service(SQL)※

1

注※

Kubernetesアプリケーションのワークロードおよびレプリカ数は、リソースの参照または更新をしない場合の数を示します。リソースの参照または更新をする場合は「Participantの機能を使用するKubernetesアプリケーション」を参照してください。

1.4.5　前提とする共有ファイルシステム

HMP-PCTOが前提とする共有ファイルシステムを次の表に示します。

表1‒19　HMP-PCTOが前提とする共有ファイルシステム

項番

項目

前提条件

1

NFS

Kubernetesクラスタからアクセス可能

1.4.6　前提とするRed Hat OpenShift Container Platformの設定

Red Hat OpenShift Container Platformで、デフォルトで用意されているSCC（Security Context Constraints）ではなく、ユーザがカスタマイズしたSCCを使用する場合、HMP-PCTOが前提とするSCCのパラメタ設定を次に示します。

表1‒20　HMP-PCTOが前提とするSCCのパラメタ設定

項番

項目

前提条件

1

readOnlyRootFilesystem

falseを指定

2

seccompProfiles

RuntimeDefaultを指定

3

volumes

次のボリュームタイプを指定

configMap

csi

downwardAPI

emptyDir

ephemeral

persistentVolumeClaim

projected

secret

1.5　HMP-PCTOのアプリケーション開発からシステム運用までの流れ

HMP-PCTOのKubernetesアプリケーションの開発を含む運用は次の流れで実施します。

Kubernetesアプリケーションをデプロイする

ユーザ責務のKubernetesアプリケーションを開発する場合（2.　ユーザ責務のKubernetesアプリケーション開発）

HMP-PCTOの業務ロジックを担うKubernetesアプリケーションを開発し、コンテナイメージを作成して任意の方法でデプロイします。

スケーリング対応機能を使用する場合、監視に必要なKubernetesアプリケーションのデプロイ、およびスケーリング対応機能を使用するKubernetesアプリケーションへのスケーリング対応機能の設定が必要です（4.　スケーリング対応機能の運用）。デプロイ後、Blue/Greenデプロイメントを使用して環境を切り替えることもできます（取扱説明書「HMP-PCTO テクニカルガイド」）。

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASをデプロイする場合（3.　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイ）

HMP-PCTOのトランザクション制御の機能を担うコントロールプレーンのKubernetesアプリケーション、およびシステム運用に必要な機能を担うKubernetesアプリケーションをデプロイします。

各Kubernetesアプリケーションは、コンテナイメージを作成し、Kubernetesマニフェストを作成、またはHelmチャートをカスタマイズしてデプロイします。

スケーリング対応機能を使用する場合、監視に必要なKubernetesアプリケーションのデプロイ、およびスケーリング対応機能を使用するKubernetesアプリケーションへのスケーリング対応機能の設定が必要です（4.　スケーリング対応機能の運用）。デプロイ後、Blue/Greenデプロイメントを使用して環境を切り替えることもできます（取扱説明書「HMP-PCTO テクニカルガイド」）。

HMP-PCTOを適用したシステムを運用する（11.　システム運用に必要となる機能）

システムの運用を開始します。通信障害、連携製品の障害などを検知し原因を調査するために、必要な情報を取得します。

なお、Kubernetesクラスタ外の他製品と連携する場合は、2.の前に、連携に必要なアプリケーションの運用、各種定義の設定などを実施します（5.　TP1-Converterの運用（通常版かつTP1-Bridge限定））。

実施する内容に応じて、次の図で示す「必ず読む章」をお読みください。特定の機能を使用する場合は「使用する機能に応じて読む章」を、また、API、パラメタ、メッセージなどのリファレンス情報が必要な際には「必要に応じて読む章」で示す個所を参照してください。章・節・項タイトル末尾に「（〜限定）」とある個所については、使用する製品、機能や環境に該当する場合にだけお読みください。

図1‒12　HMP-PCTOのアプリケーション開発からシステム運用までの流れ

第2編　ユーザ責務のKubernetesアプリケーション開発

2　ユーザ責務のKubernetesアプリケーション開発

2.1　ユーザ責務のKubernetesアプリケーションの開発の流れ

HMP-PCTOを用いたユーザ責務のKubernetesアプリケーションの開発の流れについて説明します。

デプロイ後のシステム運用時の注意事項については、「付録D　システム運用時の注意事項」を参照してください。

重要

トライアル版HMP-PCTOを使用して構築した環境は、通常版HMP-PCTOにそのまま移行できません。

トライアル版HMP-PCTOを使用してデプロイまで完了している場合に、通常版HMP-PCTOを使用して環境を構築したいときは、「(8)　ユーザ責務のKubernetesアプリケーションのアンデプロイ」を実施したあと、「ユーザ責務のKubernetesアプリケーションの開発の流れ」の手順を1から実施してください。各手順で通常版、トライアル版で説明が分かれている場合は通常版の手順で実施してください。

2.1.1　オンプレミス環境またはRed Hat OpenShift Container Platform環境の場合

オンプレミス環境またはRed Hat OpenShift Container Platform環境の場合、HMP-PCTOを用いたユーザ責務のKubernetesアプリケーションは次の流れで開発します。スケーリング対応機能を使用する場合は、「4.　スケーリング対応機能の運用」も併せて参照してください。

表2‒1　ユーザ責務のKubernetesアプリケーションの開発の流れ（オンプレミス環境またはRed Hat OpenShift Container Platform環境の場合）

項番

項目

説明

参照先

1

Javaアプリケーションの開発

HMP-PCTOが提供するJavaライブラリを使用してユーザのJavaアプリケーションを開発します。

2.2　Javaアプリケーションの開発

2

コンテナイメージ作成

HMP-PCTOが提供するDockerfileの記述例を基にDockerfileを作成・ビルドします。

2.3　コンテナイメージ作成

3

永続ボリュームとプロビジョニング方法の選定

HMP-PCTOで使用する永続ボリュームのストレージ種別と、そのプロビジョニング方法を選定します。通常版の場合だけ実施します。

2.4　永続ボリュームとプロビジョニング方法の選定（通常版限定）

4

共有ファイルシステムでの作業

共有ファイルシステムで、HMP-PCTOおよび関連製品で必要なディレクトリを用意します。通常版の場合だけ実施します。

2.5　共有ファイルシステムでの作業（通常版限定）

5

Kubernetesマニフェスト作成

HMP-PCTOが提供するKubernetesマニフェストの記述例を基にKubernetesマニフェストを作成します。

2.6　Kubernetesマニフェスト作成

6

デプロイ

Kubernetesアプリケーションを、ユーザ任意の方法でKubernetesクラスタにデプロイします。

2.7　ユーザ責務のKubernetesアプリケーションのデプロイとアンデプロイ

2.1.2　Microsoft Azure環境の場合

Microsoft Azure環境の場合、HMP-PCTOを用いたユーザ責務のKubernetesアプリケーションは次の流れで開発します。スケーリング対応機能を使用する場合は、「4.　スケーリング対応機能の運用」も併せて参照してください。

表2‒2　ユーザ責務のKubernetesアプリケーションの開発の流れ（Microsoft Azure環境を使用する場合）

項番

項目

説明

参照先

1

Javaアプリケーションの開発

HMP-PCTOが提供するJavaライブラリを使用してユーザのJavaアプリケーションを開発します。

2.2　Javaアプリケーションの開発

2

コンテナイメージ作成

HMP-PCTOが提供するDockerfileの記述例を基にDockerfileを作成・ビルドします。

2.3　コンテナイメージ作成

3

Azure Container Registryの有効化およびコンテナイメージの登録

Azure Kubernetes Serviceで作成したAKSクラスタから参照可能なコンテナレジストリAzure Container Registryに、コンテナイメージを登録します。

Microsoft Azureの公式ドキュメント

4

永続ボリュームとプロビジョニング方法の選定

HMP-PCTOで使用する永続ボリュームのストレージ種別と、そのプロビジョニング方法を選定します。通常版の場合だけ実施します。

2.4　永続ボリュームとプロビジョニング方法の選定（通常版限定）

5

Microsoft Azureのマネージドストレージサービスのプロビジョニング

HMP-PCTOおよび関連製品で使用する共有ファイルシステムをプロビジョニングします。通常版の場合だけ実施します。

Microsoft Azureの公式ドキュメント

2.5　共有ファイルシステムでの作業（通常版限定）

6

Kubernetesマニフェスト作成

HMP-PCTOが提供するKubernetesマニフェストの記述例を基にKubernetesマニフェストを作成します。

Microsoft Azureの公式ドキュメント

2.6　Kubernetesマニフェスト作成

7

永続ボリュームのKubernetesマニフェストの作成

共有ファイルシステムを永続ボリュームとして使用するためのKubernetesマニフェストを作成します。

Microsoft Azureの公式ドキュメント

8

デプロイ

Kubernetesアプリケーションを、ユーザ任意の方法でKubernetesクラスタにデプロイします。

2.7　ユーザ責務のKubernetesアプリケーションのデプロイとアンデプロイ

2.1.3　Google Cloud Platform環境の場合

Google Cloud Platform環境の場合、HMP-PCTOを用いたユーザ責務のKubernetesアプリケーションは次の流れで開発します。

表2‒3　ユーザ責務のKubernetesアプリケーションの開発の流れ（Google Cloud Platform環境を使用する場合）

項番

項目

説明

参照先

1

Javaアプリケーションの開発

HMP-PCTOが提供するJavaライブラリを使用してユーザのJavaアプリケーションを開発します。

2.2　Javaアプリケーションの開発

2

コンテナイメージ作成

HMP-PCTOが提供するDockerfileの記述例を基にDockerfileを作成・ビルドします。

2.3　コンテナイメージ作成

3

Artifact Registryの有効化およびコンテナイメージの登録

Google Kubernetes Engineで作成したGKEクラスタから参照可能なコンテナレジストリArtifact Registryにコンテナイメージを登録します。

Google Cloud Platformの公式ドキュメント

4

永続ボリュームとプロビジョニング方法の選定

HMP-PCTOで使用する永続ボリュームのストレージ種別と、そのプロビジョニング方法を選定します。通常版の場合だけ実施します。

2.4　永続ボリュームとプロビジョニング方法の選定（通常版限定）

5

Google Cloud Platformのマネージドストレージサービスのプロビジョニング

HMP-PCTOおよび関連製品で使用する共有ファイルシステムをプロビジョニングします。

Google Cloud Platformの公式ドキュメント

2.5　共有ファイルシステムでの作業（通常版限定）

6

Kubernetesマニフェスト作成

HMP-PCTOが提供するKubernetesマニフェストの記述例を基にKubernetesマニフェストを作成します。

2.6　Kubernetesマニフェスト作成

7

永続ボリュームのKubernetesマニフェストの作成

共有ファイルシステムを永続ボリュームとして使用するためのKubernetesマニフェストを作成します。

Google Cloud Platformの公式ドキュメント

8

Cloud Traceを出力する権限の付与

HMP-PCTOの分散トレースを収集するため、Cloud Traceを出力する権限を付与します。

「2.6　Kubernetesマニフェスト作成」で作成した、各Podが使用するサービスアカウントに対して、cloudtrace.agentロールを付与してください。

Google Cloud Platformの公式ドキュメント

9

デプロイ

Kubernetesアプリケーションを、ユーザ任意の方法でKubernetesクラスタにデプロイします。

2.7　ユーザ責務のKubernetesアプリケーションのデプロイとアンデプロイ

2.2　Javaアプリケーションの開発

HMP-PCTOライブラリを使用したJavaアプリケーションの開発方法について説明します。

Javaアプリケーションの開発環境のビルド自動化システムにはGradleを使用する前提で説明します。説明中のGradleの構文例は、Gradle8xを使用した場合を例に記述しています。

2.2.1　作業項目の一覧

Javaアプリケーション開発の作業項目の一覧を次の表に示します。

作成するJavaアプリケーションがどのKubernetesアプリケーションかどうかによって、作業項目が変わります。

表2‒4　Javaアプリケーション開発の作業項目の一覧

分類

作業項目

Kubernetesアプリケーション

備考

参照先

共通

事前準備

全Kubernetesアプリケーション共通

必ず実施します。

2.2.2　事前準備

ライブラリのセットアップ（通常版限定）

全Kubernetesアプリケーション共通

通常版の場合だけ実施します。

2.2.3　ライブラリのセットアップ（通常版限定）

Javaアプリケーション開発

コンポーネントスキャンの追加

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

必ず実施します。

2.2.4　コンポーネントスキャンの追加

DIに使用するアノテーションの注意事項

2.2.5　DIに使用するアノテーションの注意事項

アノテーションによるトランザクション境界の設定

Orchestrator-Service

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

2.2.6　アノテーションによるトランザクション境界の設定

アノテーションによるトランザクションブランチの作成

Orchestrator-Service(SQL)

Alternate-Service(SQL)

2.2.7　アノテーションによるトランザクションブランチの作成（SQL-Participant限定）

通信によるトランザクションブランチの作成（REST通信-クライアント）

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

2.2.8　通信によるトランザクションブランチの作成（REST通信-クライアント）

通信によるトランザクションブランチの作成（REST通信-サーバ）

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Alternate-Service

Alternate-Service(SQL)

2.2.9　通信によるトランザクションブランチの作成（REST通信-サーバ）

通信によるトランザクションブランチの作成（gRPC通信-クライアント）

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

2.2.10　通信によるトランザクションブランチの作成（gRPC通信-クライアント）

通信によるトランザクションブランチの作成（gRPC通信-サーバ）

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Alternate-Service

Alternate-Service(SQL)

2.2.11　通信によるトランザクションブランチの作成（gRPC通信-サーバ）

JDBC Proxy Driverの使用（SQL-Participant限定）

Entity-Service(SQL)

Orchestrator-Service(SQL)

Alternate-Service(SQL)

SQL-Participant を使用する場合だけ実施します。

2.2.12　JDBC Proxy Driverの使用（SQL-Participant限定）

TccServiceインタフェースの実装クラスの作成（TCC-Participant限定）

Entity-Service(TCC)

TCC-Participantを使用する場合だけ実施します。

2.2.13　TccServiceインタフェースの実装クラスの作成（TCC-Participant限定）

業務ロジックからのexecuteTry()メソッドの呼び出し（TCC-Participant限定）

Entity-Service(TCC)

2.2.14　業務ロジックからのexecuteTryメソッドの呼び出し（TCC-Participant限定）

TP1-Bridgeの使用（通常版かつTP1-Bridge限定）

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

TP1-Bridgeを使用する場合だけ実施します。

2.2.15　TP1-Bridgeの使用（通常版かつTP1-Bridge限定）

ロギングライブラリの設定ファイルのカスタマイズ

アプリケーションでロギングライブラリLogbackを使用する場合だけ実施します。

2.2.16　ロギングライブラリの設定ファイルのカスタマイズ

分散トレース機能の設定

分散トレース機能を使用する場合だけ実施します。

2.2.17　分散トレース機能の設定

Quartzスケジューラ機能の使用

アプリケーションでジョブスケジューリングライブラリQuartzを使用する場合だけ実施します。

2.2.18　Quartzスケジューラ機能の利用

アプリケーションが出力するメッセージの文字コード

必ず実施します。

2.2.19　アプリケーションが出力するメッセージの文字コード

2.2.2　事前準備

事前準備については「3.2.2　事前準備（通常版限定）」を参照してください。

2.2.3　ライブラリのセットアップ（通常版限定）

ライブラリのセットアップについては「3.2.3　ライブラリのセットアップ（通常版限定）」を参照してください。

2.2.4　コンポーネントスキャンの追加

コンポーネントスキャンの追加は、次のアプリケーションで実装してください。

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

アプリケーションがHMP-PCTOのコンポーネントをDIできるようにするために、@SpringBootApplicationアノテーションを付与したmainメソッドを持つクラスに、HMP-PCTOのパッケージをコンポーネントスキャンする設定を記述してください。記述する際には、アプリケーションのパッケージとHMP-PCTOのパッケージの両方を記述してください。

アプリケーションのパッケージが"com.example.demo"の場合のコーディング例

@ComponentScan({"com.example.demo", "jp.co.Hitachi.soft.hmppcto"})
@SpringBootApplication

2.2.5　DIに使用するアノテーションの注意事項

DIに使用するアノテーションは、@Autowired アノテーションを使用してください。@InjectなどほかのアノテーションでDIした場合の動作は保障しません。

2.2.6　アノテーションによるトランザクション境界の設定

トランザクション境界の設定をするアプリケーションの開発方法について説明します。

トランザクション境界の設定は、次のアプリケーションで実装してください。

Orchestrator-Service

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

トランザクション境界の設定は、@PctoTransactionalアノテーションを使用します。@PctoTransactionalアノテーションのAPI仕様の詳細については、「8.　API」を参照してください。@PctoTransactionalアノテーションを付与したメソッドは、別のクラスから呼び出してください。同一クラスの別メソッドから呼び出した場合、HMP-PCTOの機能は正しく動作しません。

(1)　ライブラリの組み込み

@PctoTransactionalを使用するには、hmppcto-orchestratorライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-orchestrator:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(2)　コーディング例

@PctoTransactionalアノテーションを使用するコーディング例を次に示します。@PctoTransactionalアノテーションを使用するメソッドのアクセス制御修飾子は、private以外にしてください。privateとした場合は、HMP-PCTOの機能は正しく動作しません。

@PctoTransactional(rollbackOn = {java.io.IOException.class}, dontRollbackOn = {})
public void service() {

    // 業務処理

}

(3)　エラーハンドリング

@PctoTransactionalアノテーションを設定したメソッドの呼び出し元には、障害発生時にHMP-PCTOの例外が送出されます。例外によってトランザクションの結果を確認できます。必要に応じて例外をcatchして後処理をしてください。

サービスのルートとなるメソッドに@PctoTransactionalアノテーションを指定した場合、例外がどのようなエラー処理にマッピングされるかは、使用しているフレームワーク、APサーバの仕様に依存します。@PctoTransactionalアノテーションは、ルートとなるメソッド以外に設定してエラーハンドリングすることを推奨します。

トランザクションの結果と例外の関係を次の表に示します。

表2‒5　トランザクションの結果と例外の関係

項番

トランザクションの結果

例外

備考

1

トランザクション未実行

TransactionSystemException

トランザクション開始時にトランザクションの合意に必要な数のMediatorが起動していない場合など、トランザクションが開始できなかった場合に発生します。

この例外が送出された場合、@PctoTransactionalアノテーションを設定したメソッドは実行されていません。

2

コミット決着

なし、または@PctoTransactionalアノテーションを設定したメソッドが送出した例外

なし

3

ロールバック決着

RollbackTerminationException

@PctoTransactionalアノテーションを設定したメソッドが送出した例外は、RollbackTerminationExceptionのgetSuppressed()メソッドで受け取ることができます。

4

結果不明

TerminationFailureException

Mediatorとの通信障害によって結果が受け取れなかった、またはMediatorが決着結果不明を返却した場合に発生します。トランザクションの決着結果の確認方法については、「11.　システム運用に必要となる機能」を参照してください。

@PctoTransactionalアノテーションを設定したメソッドが送出した例外は、TerminationFailureExceptionのgetSuppressed()メソッドで受け取ることができます。

2.2.7　アノテーションによるトランザクションブランチの作成（SQL-Participant限定）

アノテーションによってトランザクションブランチを作成するアプリケーションの開発方法について説明します。アノテーションによるトランザクションブランチの作成は、次のアプリケーションで実装してください。

Orchestrator-Service(SQL)

Alternate-Service(SQL)

トランザクションブランチの作成には、@PctoTransactionBranchアノテーションを使用します。また、@PctoTransactionBranchアノテーションに属性を設定することで、先行プリペア機能を使用できます。@PctoTransactionBranchアノテーションのAPI仕様の詳細については、「8.2.13　@PctoTransactionBranchアノテーション」を参照してください。@PctoTransactionBranchアノテーションを付与したメソッドは、別のクラスから呼び出してください。同一のクラスの別メソッドから呼び出した場合は、HMP-PCTOの機能は正しく動作しません。

(1)　@PctoTransactionBranchアノテーションをメソッドに指定

(a)　ライブラリの組み込み

@PctoTransactionBranchアノテーションを使用するには、hmppcto-orchestratorライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-orchestrator:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(b)　コーディング例

@PctoTransactionBranchアノテーションを使用するコーディング例を次に示します。@PctoTransactionBranchアノテーションを使用するメソッドのアクセス制御修飾子は、private以外にしてください。privateとした場合は、HMP-PCTOの機能は正しく動作しません。

@PctoTransactionBranch
public void service() {

    // 業務処理

}

(c)　エラーハンドリング

トランザクションではない呼び出し元で@PctoTransactionBranchアノテーションを指定したメソッドを呼び出した場合、メソッドの呼び出し元にTransactionBranchException例外が送出されます。

(2)　先行プリペア機能の使用

先行プリペア機能を使用するには、@PctoTransactionBranchアノテーションを指定する際に、アノテーションのprePreparedOn属性を設定してください。

(a)　ライブラリの組み込み

先行プリペア機能を使用する場合に組み込むライブラリは、@PctoTransactionBranchアノテーションをメソッドに指定する際に使用するライブラリと同じです。ライブラリについては、「(a)　ライブラリの組み込み」を参照してください。

(b)　コーディング例

先行プリペア機能を使用する場合、@PctoTransactionBranchアノテーションのprePreparedOn属性にtrueを設定します。prePreparedOn属性の詳細については、「8.2.13　@PctoTransactionBranchアノテーション」を参照してください。

@PctoTransactionBranch(prePreparedOn = true)
public void service() {

    // 業務処理

}

(c)　エラーハンドリング

先行プリペア機能の使用によって、アプリケーションでエラーハンドリングが必要なエラーは発生しません。

(3)　注意事項

先行プリペアを実行した@PctoTransactionBranchアノテーションを指定したメソッドの実行後に、@PctoTransactionBranchアノテーションを指定した別のメソッドを実行した場合、SQLは実行できません。先行プリペア実行後にSQLを実行するためにJDBC Proxy Driverのメソッドを実行した場合は、PctoPrePreparedException例外を送出して、SQLを実行しないで無視します。トランザクションがコミットするかロールバックするかには影響しません。アプリケーションでPctoPrePreparedException例外をキャッチしてロールバックするかどうかを判断してください。

2.2.8　通信によるトランザクションブランチの作成（REST通信-クライアント）

REST通信によるトランザクションブランチを作成するクライアントの開発方法について説明します。

Spring Framework のRestTemplateを使用してトランザクションブランチを作成します。REST通信によるトランザクションブランチの作成は、次のアプリケーションで実装してください。

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

クライアントでは、HMP-PCTOのインタセプタを登録してトランザクションを伝搬する必要があります。また、トランザクションブランチを作成することで、先行プリペア機能を使用できます。

インタセプタの登録方法と、先行プリペア機能の使用方法を次に示します。

(1)　Spring Framework のRestTemplateを使用したインタセプタの登録

TxPropagationRestTemplateInterceptorクラスをorg.springframework.web.client.RestTemplateクラスのsetInterceptors()メソッド、またはorg.springframework.boot.web.client.RestTemplateBuilderクラスのinterceptors()メソッドで登録して使用します。

(a)　ライブラリの組み込み

TxPropagationRestTemplateInterceptorクラスを登録するには、次のライブラリをアプリケーションに組み込む必要があります。

hmppcto-propagation-rest-template

hmppcto-common

Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-propagation-rest-template:<V.R.S>※'
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-common:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(b)　宛先のホスト部分の形式

トランザクションの伝搬時、HTTP通信に指定する宛先のホスト部分は、宛先のServiceを示すドメイン名で指定してください。

スケーリング対応機能を有効にした場合は、次の形式で指定する必要があります。

Serviceを示すドメイン名の指定形式を次に示します。

<Service名>

<Service名>.<Namespace名>

<Service名>.<Namespace名>.svc

上記以外の形式で宛先を指定した場合は、HMP-PCTOの機能は正しく動作しません。

以降に、宛先のServiceへのHTTP通信に指定するドメイン名の例を示します。

RequestEntity<MyRequest> request = RequestEntity    // エンティティ作成
     .post("https://my-svc.my-namespace.svc:8080/{foo}", "bar")          // 宛先のServiceを示すドメイン名で指定
     .body(body);

この例では、宛先のServiceのServiceを示すドメイン名を"my-svc.my-namespace.svc"（「<Service名>.<Namespace名>.svc」形式）としています。

(c)　コーディング例

org.springframework.web.client.RestTemplateクラスのsetInterceptors()メソッドを使用して登録する例を説明します。アプリケーションが使用するほかのインタセプタとの登録順番に制約はありません。

TxPropagationRestTemplateInterceptorクラスのインスタンスは@AutowiredアノテーションでDIして取得してください。DIしたインスタンスを使用するメソッドのアクセス制御修飾子は、private以外にしてください。privateとした場合は、HMP-PCTOの機能は正しく動作しません。

@Autowired
TxPropagationRestTemplateInterceptor txIc;

RestTemplate restTemplate = new RestTemplate();                 // RestTemplateのインスタンス作成
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>();   // インタセプタのリストを作成
interceptors.add(txIc);                                         // HMP-PCTOのインタセプタをリストに追加
restTemplate.setInterceptors(interceptors);                     // RestTemplateにインタセプタを登録

(d)　エラーハンドリング

RestTemplateを利用した通信時に動作するTxPropagationRestTemplateInterceptorクラスの前提処理で例外が発生したとき、RestClientExceptionが送出されます。必要に応じて例外をcatchして後処理をしてください。

この場合、例外のCausedには次の例外の情報が出力されます。

jp.co.Hitachi.soft.hmppcto.lb.exception.ServiceNotFoundException

jp.co.Hitachi.soft.hmppcto.lb.exception.PodNotFoundException

RestTemplateを使用した通信で例外が発生した場合に、例外のCausedに次のようにHMP-PCTOのTxPropagationRestTemplateInterceptorクラスで例外が発生したことを示すスタックトレースが出力されます。これは、例外が発生した直接の原因を示すものではありません。直接の原因は、例外のCausedの前に出力された内容を参照してください。

Caused by: java.net.SocketException: Unexpected end of file from server
:
at org.springframework.http.client.AbstractClientHttpResponse.getStatusCode(AbstractClientHttpResponse.java:33)
at jp.co.Hitachi.soft.hmppcto.filter.propagation.TxPropagationRestTemplateInterceptor.intercept(TxPropagationRestTemplateInterceptor.java:93)
:

(2)　先行プリペア機能の使用

先行プリペア機能を使用するには、トランザクションを伝搬する際にクライアントアプリケーションでHMP-PCTOが提供するインタフェースを使用して、HTTPヘッダを追加します。

(a)　ライブラリの組み込み

先行プリペア機能を使用する場合に組み込むライブラリは、トランザクションの伝搬に使用するライブラリと同じです。ライブラリについては、「(a)　ライブラリの組み込み」を参照してください。

(b)　コーディング例

先行プリペア機能を使用する際に追加するHTTPヘッダ名と値は、XidHeadersインタフェースで提供します。ヘッダ名と値の詳細については、「8.2.4　XidHeadersインタフェース（SQL-Participant限定）」を参照してください。トランザクションの伝搬に使用するクライアントごとに追加する例を次に示します。

Spring FrameworkのRestTemplateを使用する場合

RequestEntity<MyRequest> request = RequestEntity               // RequestEntity作成
     .post("https://example.com/{foo}", "bar")
     .header(XidHeaders.IS_LAST_CALL, XidHeaders.TRUE)         // 先行プリペアヘッダ追加
     .body(body);

(c)　エラーハンドリング

先行プリペア機能の使用によって、アプリケーションでエラーハンドリングが必要なエラーが発生することはありません。

(3)　注意事項

先行プリペア実行後に、再度同じサービスを呼び出してもSQLは実行できません。先行プリペア実行後にSQLを実行するためにJDBC Proxy Driverのメソッドを実行した場合は、PctoPrePreparedException例外を送出して、SQLを実行しないで無視します。トランザクションがコミットするかロールバックするかには影響しません。アプリケーションでPctoPrePreparedException例外をキャッチしてロールバックするかどうかを判断してください。

2.2.9　通信によるトランザクションブランチの作成（REST通信-サーバ）

REST通信によるトランザクションブランチを作成するサーバの開発方法について説明します。

REST通信によるトランザクションブランチの作成は、次のアプリケーションで実装してください。

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Alternate-Service

Alternate-Service(SQL)

サーバでは、HMP-PCTOのフィルタを登録してトランザクションを伝搬する必要があります。フィルタの登録はライブラリの組み込みを行うことで、自動的に行われます。

また、トランザクションブランチを作成することで、通信によるトランザクションブランチのロールバック条件を設定できます。

ライブラリの組み込み方法とトランザクションブランチのロールバック条件の設定方法を次に示します。

(1)　フィルタの登録

(a)　ライブラリの組み込み

フィルタを登録するには次のライブラリをアプリケーションに組み込む必要があります。

hmppcto-entity-service

hmppcto-server-http-filter

jakarta.ws.rs-api

Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-entity-service:<V.R.S>※1'
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-server-http-filter:<V.R.S>※1'
    implementation 'jakarta.ws.rs:jakarta.ws.rs-api:<rs-apiのV.R.S>※2'
}

注※1

V.R.Sは使用するHMP-PCTO、およびrs-apiのバージョンに合わせて読み替えてください。

注※2

<rs-apiのV.R.S>に指定するバージョンは、「表1‒7　HMP-PCTOの前提OSおよび前提プログラム」の「Javaライブラリ」の「jakarta.ws.rs:jakarta.ws.rs-api」を参照してください。

(2)　トランザクションブランチのロールバック条件の設定

@PctoBranchRollbackForアノテーションを使用して、通信によるトランザクションブランチのロールバック条件を設定する方法を説明します。@PctoBranchRollbackForアノテーションのAPI仕様の詳細は「8.2.10　@PctoBranchRollbackForアノテーション」を参照してください。@PctoBranchRollbackForアノテーションを付与したメソッドは、別のクラスから呼び出してください。同一クラスの別メソッドから呼び出した場合は、HMP-PCTOの機能は正しく動作しません。

(a)　ライブラリの組み込み

トランザクションブランチのロールバック条件を設定する場合に組み込むライブラリは、トランザクションブランチの作成に使用するライブラリと同じです。ライブラリについては、「(a)　ライブラリの組み込み」を参照してください。

(b)　コーディング例

@PctoBranchRollbackForアノテーションを使用してトランザクションブランチのロールバック条件を設定するコーディング例を次に示します。@PctoBranchRollbackForアノテーションを使用するメソッドのアクセス制御修飾子は、private以外にしてください。privateとした場合は、HMP-PCTOの機能は正しく動作しません。

@PctoBranchRollbackFor(rollbackOn = {},rollbackOnFamily = {Family.CLIENT_ERROR, Family.SERVER_ERROR})
public void service() {

    // 業務処理

}

(c)　エラーハンドリング

@PctoBranchRollbackForアノテーションの設定によって、アプリケーションでエラーハンドリングが必要なエラーが発生することはありません。

トランザクションブランチのルートとなるメソッドが例外を送出した場合、HMP-PCTOがHTTPステータスを500に設定します。Spring Bootの機能によってエラーページ（/error）へ遷移する前に、HMP-PCTOでHTTPステータスを設定するため、エラーページをカスタマイズしていた場合でもHTTPステータスは500になります。

次の場合はトランザクションをロールバックしません。そのため、トランザクションブランチでトランザクションをロールバックしたい場合は、トランザクション境界を設定したアプリケーションでトランザクションがロールバックする例外を送出してください。

トランザクションブランチのルートとなるメソッドが例外を送出した場合

HTTPステータス404の場合

HTTPステータス405の場合

(d)　Spring Bootの機能を使用する場合の制限事項

HTTPステータスコードの設定する手段として、Spring Bootの@ResponseStatusアノテーションを使用しないでください。サーブレットの機能であるHttpServletResponseインタフェースを使用してHTTPレスポンスを設定してください。

2.2.10　通信によるトランザクションブランチの作成（gRPC通信-クライアント）

gRPC通信によるトランザクションブランチを作成するクライアントの開発方法について説明します。

gRPC通信によるトランザクションブランチの作成は、次のアプリケーションで実装してください。

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

クライアントでは、インタセプタを登録してトランザクションを伝搬する必要があります。また、トランザクションブランチを作成することで、先行プリペア機能を使用できます。

インタセプタの登録方法と、先行プリペア機能の使用方法を次に示します。

(1)　gRPCのManagedChannelを使用したインタセプタの登録

ManagedChannelBuilder、またはそのサブクラスにHMP-PCTOが提供するTxPropagationGrpcClientInterceptorクラスを登録して使用します。

また、分散トレースを取得するためOpenTelemetryのインタセプタをHMP-PCTOのGrpcTraceInterceptorFactoryクラスを使用して取得し、ManagedChannelBuilderまたはそのサブクラスに登録してください。OpenTelemetryのインタセプタは、OpenTelemetryのクラスを直接使用して取得しないでください。直接取得した場合は、HMP-PCTOの初期化処理と処理順番が不定となり、Spring Bootの初期化処理中に例外が発生して、アプリケーションの起動に失敗することがあります。

(a)　ライブラリの組み込み

ManagedChannelWrapperクラスを使用するには、以下のライブラリをアプリケーションに組み込む必要があります。

hmppcto-propagation-grpc

hmppcto-common

Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-propagation-grpc:<V.R.S>※'
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-common:<V.R.S>※'}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(b)　宛先のホスト部分の形式

トランザクションの伝搬時、gRPC通信に指定する宛先のホスト部分は、宛先のServiceを示すドメイン名で指定してください。詳細については「(b)　宛先のホスト部分の形式 」の形式を参照してください。

(c)　コーディング例

次に示す条件の場合にio.grpc.ManagedChannelBuilderクラスを使用した例を記載します。

設定項目

設定値

gRPCのサービス名

sampleService

gRPCのメソッド名

sampleMethod

gRPCの送信先

grpc-service:50051

@Autowired
TxPropagationGrpcClientInterceptor grpcClientInterceptor;

@Autowired
GrpcTraceInterceptorFactory interceptorFactory;

String host = "grpc-service";  // 送信先ホスト
int port = 50051;                // 送信先ポート

ManagedChannelBuilder<?> chBuilder = ManagedChannelBuilder.forAddress(host, port); // ChannelBuilder作成
ManagedChannel ch = chBuilder.usePlaintext()    // ManagedChannel作成
                    // トランザクション伝搬用インタセプタ登録
                    .intercept(grpcClientInterceptor)
                    // 分散トレース取得用インタセプタ登録
                    .intercept(interceptorFactory.getClientInterceptor())
                    .build();

(d)　エラーハンドリング

HMP-PCTOが自動的に組み込むインタセプタでは、アプリケーションでエラーハンドリングが必要なエラーが発生することはありません。

(2)　先行プリペア機能の使用

先行プリペア機能を使用するには、トランザクションを伝搬する際にクライアントアプリケーションでHMP-PCTOが提供するインタフェースを使用して、先行プリペア機能を使用するかどうかを切り替えます。

(a)　ライブラリの組み込み

先行プリペア機能を使用する場合に組み込むライブラリは、トランザクションの伝搬に使用するライブラリと同じです。ライブラリについては、「(a)　ライブラリの組み込み」を参照してください。

(b)　コーディング例

同じサービスを複数回呼び出す際の例を示します。

同じサービスを複数回呼び出す際に、サービスの呼び出し直前に先行プリペア機能の使用有無を切り替える方法と、サービスの呼び出し前後で先行プリペア機能の使用有無を切り替える方法があります。

ここでは、サービス呼び出し前後で先行プリペア機能の使用有無を切り替える場合の例を記載します。メソッドの詳細については、「8.2.4　XidHeadersインタフェース（SQL-Participant限定）」を参照してください。

sampleServiceBlockingStub serviceStub = sampleServiceGrpc.newBlockingStub(ch);   // Stub作成

serviceStub.sampleMethod1();                            // 先行プリペア機能を使用しないでサービス呼び出し

TxPropagationOptionalSettings.setPrePrepared(true);     // 先行プリペア機能を「使用する」に設定
serviceStub.sampleMethod2();                            // 先行プリペア機能を使用してサービス呼び出し
TxPropagationOptionalSettings.setPrePrepared(false);    // 先行プリペア機能を「使用しない」に設定

(c)　エラーハンドリング

先行プリペア機能を使用するかどうかを切り替えれば、アプリケーションでエラーハンドリングが必要なエラーが発生することはありません。

(3)　注意事項

先行プリペア機能を使用してサービスを呼び出したあとに、同じトランザクションブランチのサービスを呼び出す場合、呼び出し先のサービスでSQLは実行できません。SQLを実行するためにJDBC Proxy Driverのメソッドを実行した場合は、PctoPrePreparedException例外を送出して、SQLを実行しないで無視します。トランザクションがコミットするかロールバックするかには影響しません。呼び出し先のサービスでPctoPrePreparedException例外をキャッチしてロールバックするかどうかを判断してください。

2.2.11　通信によるトランザクションブランチの作成（gRPC通信-サーバ）

gRPC通信によるトランザクションブランチを作成するサーバの開発方法について説明します。

gRPC通信によるトランザクションブランチの作成は、次のアプリケーションで実装してください。

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Alternate-Service

Alternate-Service(SQL)

サーバでは、HMP-PCTOのインタセプタを登録してトランザクションを伝搬する必要があります。また、トランザクションブランチを作成することで、通信によるトランザクションブランチのロールバック条件を設定できます。

また、分散トレースを取得するためOpenTelemetryのインタセプタをHMP-PCTOのGrpcTraceInterceptorFactoryクラスを使用して取得し、gRPCサーバに登録してください。OpenTelemetryのインタセプタをOpenTelemetryのクラスを使用して直接取得しないでください。直接取得した場合は、HMP-PCTOの初期化処理と処理順番が不定となり、Spring Bootの初期化処理中に例外が発生して、アプリケーションの起動に失敗することがあります。

インタセプタの登録方法とトランザクションブランチのロールバック条件の設定方法を次に示します。

(1)　インタセプタの登録

(a)　ライブラリの組み込み

TxPropagationGrpcServerInterceptorクラスを登録するには、以下のライブラリをアプリケーションに組み込む必要があります。

hmppcto-entity-service

hmppcto-server-grpc-interceptor

hmppcto-common

Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-entity-service:<V.R.S>※'
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-server-grpc-interceptor:<V.R.S>※'
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-common:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(b)　コーディング例

TxPropagationGrpcServerInterceptorクラスのインスタンスは@AutowiredアノテーションでDIして取得してください。DIしたインスタンスを使用するメソッドのアクセス制御修飾子は、private以外にしてください。privateとした場合は、HMP-PCTOの機能は正しく動作しません。

次に示す条件の場合にio.grpc.ServerBuilderクラスのintercept()メソッドを使用して登録する例を記載します。

設定項目

設定値

サービスクラス名

sampleService

サービス受信ポート番号

50051

@Autowired
TxPropagationGrpcServerInterceptor grpcServerInterceptor;

@Autowired
GrpcTraceInterceptorFactory  interceptorFactory;

int port = 50051;                    // 受信ポート

ServerBuilder<?> serverBuilder = ServerBuilder.forPort(port)
                                     // サービスの登録
                                     .addService(new sampleService())
                                     // トランザクション伝搬用インタセプタ登録
                                     .intercept(grpcServerInterceptor)
                                     // 分散トレース取得用インタセプタ登録
                                     .intercept(interceptorFactory.getServerInterceptor());

Server grpcServer = serverBuilder.build();  // サーバ作成
grpcServer.start();                         // サーバ起動

(c)　エラーハンドリング

登録するインタセプタでは、アプリケーションでエラーハンドリングが必要なエラーが発生することはありません。

(2)　トランザクションブランチのロールバック条件の設定

@PctoGrpcBranchRollbackForアノテーションを使用して、通信によるトランザクションブランチのロールバック条件を設定する方法を説明します。@PctoGrpcBranchRollbackForアノテーションのAPI仕様の詳細は「8.2.11　@PctoGrpcBranchRollbackForアノテーション」を参照してください。@PctoGrpcBranchRollbackForアノテーションを付与したメソッドは、別のクラスから呼び出してください。同一クラスの別メソッドから呼び出した場合は、HMP-PCTOの機能は正しく動作しません。

(a)　ライブラリの組み込み

トランザクションブランチのロールバック条件を設定する場合に組み込むライブラリは、インタセプタの登録に使用するライブラリと同じです。ライブラリについては、「(a)　ライブラリの組み込み」を参照してください。

(b)　コーディング例

@PctoGrpcBranchRollbackForアノテーションを使用してトランザクションブランチのロールバック条件を設定するコーディング例を以下に示します。@PctoGrpcBranchRollbackForアノテーションを使用するメソッドのアクセス制御修飾子は、private以外にしてください。privateとした場合は、HMP-PCTOの機能は正しく動作しません。

@PctoGrpcBranchRollbackFor
public void service() {

    // 業務処理

}

(c)　エラーハンドリング

@PctoGrpcBranchRollbackForアノテーションを設定すれば、アプリケーションでエラーハンドリングが必要なエラーが発生することはありません。

2.2.12　JDBC Proxy Driverの使用（SQL-Participant限定）

JDBC Proxy Driverを使用するアプリケーションの開発方法について説明します。

JDBC Proxy Driverを使用する、次のアプリケーションで実装してください。

Entity-Service(SQL)

Orchestrator-Service(SQL)

Alternate-Service(SQL)

JDBC Driverのメソッドの実行結果がjava.sqlのインタフェースを実装したクラスである場合、JDBC Proxy Driverのメソッドを実行する型の定義は、java.sqlのインタフェースを使用することをおすすめします。理由としては、java.sqlを実装したHMP-PCTOのクラスには独自のメソッドがないため、HMP-PCTOのクラスを使用するよりも、java.sqlのインタフェースを使用する方が移植性が高い実装ができるからです。

JDBC Proxy Driverを使用するには、HMP-PCTOのパラメタの設定が必要です。パラメタの設定方法については、「9.　パラメタ」を参照してください。

(1)　ライブラリの組み込み

JDBC Proxy Driverを使用するには、hmppcto-jdbc-proxy-driverライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-jdbc-proxy-driver:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

また、通常版の場合、HMP-PCTOがHitachi Elastic Application Data Store Client for JavaのJARライブラリを外部読み込みします。このため、実行可能なJAR形式を作成する際、LauncherクラスとしてPropertiesLauncherを使用する必要があります。GradleでLauncherクラスとしてPropertiesLauncherを使用し、実行可能なJAR形式を作成する記載例を次に示します。

bootJar {
    manifest {
        attributes 'Main-Class' : 'org.springframework.boot.loader.launch.PropertiesLauncher'
    }
}

トライアル版の場合は、Launcherクラスの変更は不要です。

(2)　コーディング例

JDBC Proxy Driverは、各ベンダが提供するJDBC Driverを使用する場合と同様にコーディングして使用します。Datasourceを使用してConnectionインスタンスを取得して、任意のSQLを実行します。JDBC Proxy Driverは、同一のトランザクションブランチで初めてgetConnection()が実行されたときにParticipantをトランザクションに参加させます。そのため、アプリケーションでConnectionインスタンスをプールして別のトランザクションブランチでConnectionインスタンスを再利用しないでください。サービスごとにDatasourceを使用してConnectionインスタンスを取得してください。

@Autowired
DataSource ds;                                   // JDBC Proxy DriverのDataSourceを挿入
Connection con = ds.getConnection();             // Connectionを取得
con.…                                           // 任意のSQLを実行

(3)　エラーハンドリング

JDBC Proxy Driverは、JDBC Driverの仕様に準拠した例外を送出します。各ベンダのJDBC Driverを直接使用している場合と同様にエラーハンドリングできます。

ParticipantでJDBC Driverを実行時に発生した例外のSQLState、例外コード、メッセージ、例外チェーンなどの情報は、Participantからアプリケーションに送出します。

Participantのトランザクションブランチを開始できない場合など、JDBC Proxy Driver固有の例外は、java.sql.SQLExceptionのサブクラスとして実装しているため、各ベンダのJDBC Driverが送出する例外と同様にエラーハンドリングできます。JDBC Proxy Driver固有の例外の詳細については、「8.　API」を参照してください。

取扱説明書「HMP-PCTOテクニカルガイド」の、DBアクセス機能のRDBMSごとの注意事項も確認してください。

(4)　実行できるSQL

JDBC Proxy Driverを使用して実行できるSQLは、XA接続時に実行可能なSQLです。これは、SQL-ParticipantがDBとの接続にXA接続を使用しているためです。XA接続時に実行可能なSQLについては、使用するDBのマニュアルを参照してください（なお、DBの多くは、XA接続時に定義系SQLは使用できません）。

2.2.13　TccServiceインタフェースの実装クラスの作成（TCC-Participant限定）

ここでは、TccServiceインタフェースの実装クラスの作成に関して説明します。

TccServiceインタフェースの実装クラスの作成は、Entity-Service(TCC)のアプリケーションで実装してください。

TccServiceインタフェースの詳細については、「8.4.5　TccService<I, O extends java.io.Serializable>インタフェース（TCC-Participant限定）」を参照してください。なお、TCC-Participantでは、TccServiceに実装されたexecuteTryメソッド、executeConfirmメソッド、およびexecuteCancelメソッドの実行によって、APIで扱っているデータの状態は、次の表に示すデータの状態遷移、および次の図に示すデータのステートマシン図のように遷移することを想定しています。

表2‒6　データの状態遷移表

イベント

データの状態

データなし

S0

Try中

S1

Try済み

S2

Confirm済み

S3

executeTryメソッド実行

S1

S1

S2

S3

executeTryメソッド実行完了

−

S2

−

−

executeConfirmメソッド実行

S0

S1

S3

S3

executeCancelメソッド実行

S0

S0

S0

S3

図2‒1　データのステートマシン図

(1)　@Tccアノテーションの付与

TccServiceインタフェースを実装したクラスと、TCC-Participantの機能の紐づけに関して説明します。@Tccアノテーションを付与することでTccServiceインタフェースを実装したクラスとTCC-Participantが紐づけられます。これによって、TCC-Participantの処理中にTccServiceインタフェースを実装したクラスのメソッドが呼び出されて利用されます。

TccServiceインタフェースを実装したクラスを有効にするには、そのクラスをBeanとしてSpring IoC Containerに登録します。

@Tccアノテーションを付与したメソッドは、別のクラスから呼び出してください。同一クラスの別メソッドから呼び出した場合、HMP-PCTOの機能は正しく動作しません。

(a)　ライブラリの組み込み

@Tccを使用するには、hmppcto-participant-tccライブラリをアプリケーションに組み込む必要があります。

ライブラリの組み込み方法は、トライアル版と通常版で差異があります。トライアル版で使用したアプリケーションを通常版でも使用する場合は、通常版の説明に従って修正してください。

Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-participant-tcc:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

また、通常版の場合、hmppcto-participant-tccライブラリは、Hitachi Elastic Application Data Store Client for JavaのJARライブラリを外部読み込みします。このため、実行可能なJAR形式を作成する際、LauncherクラスとしてPropertiesLauncherを使用する必要があります。GradleでLauncherクラスとしてPropertiesLauncherを使用し、実行可能なJAR形式を作成する記載例を次に示します。

bootJar {
    manifest {
        attributes 'Main-Class' : 'org.springframework.boot.loader.launch.PropertiesLauncher'
    }
}

なお、トライアル版の場合、Launcherクラスの変更は不要です。

(b)　コーディング例

@Tccアノテーションを利用したコーディング例を次に示します。ここで示すコーディング例では、@Componentアノテーションを付与することで、TccServiceインタフェースを実装したクラスをSpring IoC Containerへ登録しています。@Tccアノテーションを使用するメソッドのアクセス制御修飾子は、private以外にしてください。privateとした場合は、HMP-PCTOの機能は正しく動作しません。

@Component
@Tcc
public class TccServiceClass implements TccService<RequestClass, ResponseClass> {
}

(2)　executeTryメソッドの実装

TCC-Participantでは、次に示す機能がexecuteTryメソッドに実装されていることを想定して動作します。

データの仮登録

トランザクションを一意に表す文字列とデータの紐づけの永続化

TccResponseクラスの返却

(a)　データの仮登録

一般的にTCCパターンのTryフェーズでは、データの仮登録を行います。仮登録であることが分かる状態をデータに持たせる必要があります。

(b)　トランザクションを一意に表す文字列とデータの紐づけの永続化

第二引数としてトランザクションを一意に表す文字列であるtransactionKeyがインタフェースに定義されています。TCC-Participantでは、トランザクションを一意に表す文字列をトランザクションで管理する文字列として扱うため、トランザクションを一意に表す文字列と「(a)　データの仮登録」で登録したデータの紐づけが必要となります。

紐づけられた情報はexecuteRecoverメソッドで利用します。executeRecoverメソッドはTCC-Participantが再起動時に実行されるため、紐づけられた情報はTCC-Participantが再起動しても情報が失われないよう永続化する必要があります。

トランザクションを一意に表す文字列と(a)で登録したデータの紐づけには、後述のTccResponseクラスを使用してください。TccResponseクラスはjava.io.Serializableインタフェースを継承しているため、このクラスのインスタンスそのものを外部APIなどを使用して永続化してください。

(c)　TccResponseクラスの返却

インタフェースには戻り値としてTccResponseクラスを返す必要があると定義されています。TccResponseクラスの詳細については、「8.4.4　TccResponse<T extends java.io.Serializable>クラス（TCC-Participant限定）」を参照してください。

TccResponseクラスはstring型のtransactionKeyとT型のdataを持ちます。第二引数でトランザクションを一意に表す文字列が渡されるため、transactionKeyはそのまま設定することを想定しています。dataはジェネリクスクラスのT型のため、任意の型のデータを格納できます。「(a)　データの仮登録」で仮登録したデータのオブジェクトを設定することを想定しています。

HMP-PCTOは、executeTryメソッドの戻り値をチェックし、次のどちらかに該当する場合はKFSG62017-Eメッセージを出力し、java.lang.IllegalStateExceptionを送出します。

戻り値がnullである場合

戻り値のTccResponseクラスのインスタンスのtransactionKeyフィールドがnullである場合

(3)　executeConfirmメソッドの実装

TCC-Participantでは、次に示す機能がexecuteConfirmメソッドに実装されていることを想定して動作します。

executeTryメソッドで登録した仮登録のデータの確定

永続化したトランザクションを一意に表す文字列とデータの紐づけ情報の削除

(a)　executeTryメソッドで登録した仮登録のデータの確定

一般的にTCCパターンのConfirmフェーズでは、executeTryメソッドで仮登録したデータの確定処理を行います。DBの概念ではCommitに該当する処理になります。executeTryメソッドで登録したデータの仮登録の状態を更新し、仮登録ではない状態にする必要があります。executeConfirmメソッドの引数にはexecuteTryメソッドの戻り値のTccResponseクラスが渡されます。TccResponseクラスのdataの内容を見て、確定処理を行うデータを特定することを想定しています。

(b)　永続化したトランザクションを一意に表す文字列とデータの紐づけ情報の削除

executeTryメソッドで永続化したトランザクションを一意に表す文字列と、データの紐づけ情報の削除を行う必要があります。executeRecoverメソッドでは未決着状態のデータを返す必要があるため、executeConfirmメソッドで決着したデータに関してこの削除処理を行わないと、決着済みのデータを返してしまい、executeRecoverメソッドの要件を満たすことができなくなります。

(4)　executeCancelメソッドの実装

TCC-Participantでは、次に示す機能がexecuteCancelメソッドに実装されていることを想定して動作します。

executeTryメソッドで登録した仮登録のデータの削除

永続化したトランザクションを一意に表す文字列とデータの紐づけ情報の削除

(a)　executeTryメソッドで登録した仮登録のデータの削除

一般的にTCCパターンのCancelフェーズでは、executeTryメソッドで仮登録したデータの削除処理を行います。

DBの概念ではRollbackに該当する処理になります。そのため、executeTryメソッドを実行する前の状態に戻っている必要があります。executeTryメソッドの実行状況によって、次のケースが考えられます。

executeTry完了後にexecuteCancelが実行されるケース

executeTry実行中にexecuteCancelが実行されるケース

executeTry完了後にexecuteCancelが実行されるケース

executeCancelメソッドの引数にはexecuteTryメソッドの戻り値のTccResponseクラスが渡されます。TccResponseクラスのdataの内容を見て、削除処理を行うデータを特定することを想定しています。

executeTry実行中にexecuteCancelが実行されるケース

TCC-ParticipantではexecuteTryメソッドの実行がタイムアウトした場合にexecuteTryメソッドの途中であってもexecuteCancelメソッドが実行されます。その場合にexecuteTryメソッドの実行を中止し、executeTryメソッド実行前の状態に戻す必要があります。この場合、executeCancelメソッドの引数に渡されるTccResponseクラスにはtransactionKeyだけが設定され、dataはnullの状態で渡されます。

このケースでは、transactionKeyの情報だけでexecuteTry実行前の状態に戻す必要があります。

(b)　永続化したトランザクションを一意に表す文字列とデータの紐づけ情報の削除

executeTryメソッドで永続化したトランザクションを一意に表す文字列と、データの紐づけ情報の削除を行う必要があります。executeRecoverメソッドでは未決着状態のデータを返す必要があるため、executeCancelメソッドで削除したデータに関してこの削除処理を行わないと、削除済みのデータを返してしまい、executeRecoverメソッドの要件を満たすことができなくなります。

(5)　executeRecoverメソッドの実装

TCC-Participantでは、次に示す機能がexecuteRecoverメソッドに実装されていることを想定して動作します。

未決着状態かつ自身のTccServiceが登録した永続化したデータの一覧を返す

(a)　未決着状態かつ自身のTccServiceが登録した永続化したデータの一覧を返す

executeRecoverメソッドは戻り値としてTccResponseの一覧を返す必要があります。その際に条件として、未決着状態、かつ、自身のTccServiceが登録したデータであることが必要です。executeTryメソッド、executeConfirmメソッド、executeCancelメソッドの実装で示したとおり、executeTryメソッドでトランザクションを一意に表す文字列とデータの紐づけの情報が永続化され、executeConfirmメソッド、executeCancelメソッド実行時に削除されます。これによって、永続化されている情報は未決着状態のデータだけとなります。この時点では自身のTccServiceが登録したデータの絞り込みがされていないため、executeRecoverメソッド内で絞り込みを実施する必要があります。

なお、executeRecoverメソッドの戻り値に含めるTccResponseクラスのインスタンスは、executeTryメソッドのときにシリアライズして永続化したTccResponseクラスのインスタンスをexecuteRecoverメソッド内でデシリアライズしたものである必要があります。このため、executeRecoverメソッド内でTccResponseクラスのコンストラクタを呼び出してTccResponseクラスのインスタンスを生成することはできません。もし、executeRecoverメソッド内でTccResponseクラスのコンストラクタを呼び出した場合、HMP-PCTOはKFSG62016-Eメッセージを出力し、java.lang.IllegalStateExceptionを送出します。

HMP-PCTOは、executeRecoverメソッドの戻り値をチェックし、次のどれかに該当する場合はKFSG62018-Eメッセージを出力し、java.lang.IllegalStateExceptionを送出します。

戻り値がnullである場合

戻り値のjava.util.Setにnullが含まれている場合

戻り値のjava.util.SetにtransactionKeyフィールドがnullであるTccResponseクラスのインスタンスが含まれている場合

重要

ユーザがexecuteRecoverメソッド実行時の前提を設けている場合（例えば、トランザクションを一意に表す文字列とデータの紐づけの永続化先としてDBを使用しており、その前提としてexecuteRecoverメソッド実行時よりも前にDBの初期化を完了させておく必要があるなど）、TCC-ParticipantのJavaアプリケーションプロセス起動開始前にその前提を満たしておく必要があります。

(6)　getOperationIdメソッドの実装

TCC-Participantでは、次に示す機能がgetOperationIdメソッドに実装されていることを想定して動作します。

TccServiceを一意に識別できる文字列を返す

(a)　TccServiceを一意に識別できる文字列を返す

TCC-ParticipantではgetOperationIdメソッドの戻り値を利用してTccServiceを一意に識別しています。ほかのTccServiceとOperationIdが重複した場合にはTCC-Participantの動作に影響が出るため、ほかのTccServiceと重複しない一意に識別できる文字列を返す必要があります。

戻り値の文字列の長さは1〜256バイトの範囲内である必要があります。

HMP-PCTOは、getOperationIdメソッドの戻り値をチェックし、1に該当する場合はKFSG62019-Eメッセージ、2に該当する場合はKFSG62020-Eメッセージ、3に該当する場合はKFSG62021-Eメッセージを出力し、java.lang.IllegalStateExceptionを送出します。

戻り値がnullである場合

戻り値の文字列の長さが1〜256バイトの範囲内ではない場合

同一のTCC-Participant内のほかのTccServiceと同じOperationIdを返した場合

また、TCC-Participantが再起動した際は再起動前と同じ文字列を返す必要があります。

2.2.14　業務ロジックからのexecuteTryメソッドの呼び出し（TCC-Participant限定）

業務ロジックからのexecuteTryメソッドの呼び出しの実装は、Entity-Service(TCC)のアプリケーションで実装してください。

TCC-ParticipantではOrchestratorからAPIが呼び出されたあと、executeTryメソッドが実行されることを想定し、executeTryメソッドが実行されたタイミングからトランザクション制御を開始します。API呼び出し後の業務ロジックの中でexecuteTryメソッドの呼び出しを実施する必要があります。

なお、executeConfirmメソッド、executeCancelメソッド、executeRecoverメソッド、getOperationIdメソッドに関しては、TCC-Participantがトランザクション制御を行う過程でTCC-Participantから呼び出すため、業務ロジックの中で呼び出す必要はありません。

executeTryメソッドの呼び出しでのHMP-PCTOのエラー発生条件とその動作を次に示します。

HMP-PCTOがトランザクションブランチ情報の取得に失敗した場合：

HMP-PCTOは、KFSG62002-Eメッセージを出力し、executeTryメソッドの呼び出し元の業務ロジックに対して、java.lang.IllegalStateExceptionを送出します。

@Tccアノテーションの付与対象がTccServiceになっていない場合：

HMP-PCTOは、KFSG62003-Eメッセージを出力し、executeTryメソッドの呼び出し元の業務ロジックに対して、java.lang.IllegalStateExceptionを送出します。

1つのトランザクション内で、同一のOperationIdを持つTccServiceのexecuteTryメソッドを複数回実行した場合：

HMP-PCTOは、KFSG62013-Eメッセージを出力し、executeTryメソッドの呼び出し元の業務ロジックに対して、java.lang.IllegalStateExceptionを送出します。

2.2.15　TP1-Bridgeの使用（通常版かつTP1-Bridge限定）

TP1-Bridgeを使用するアプリケーションの開発方法について説明します。

TP1-Bridgeの機能を使用する処理は、次のアプリケーションで実装してください。

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

TP1-Bridgeを使用する場合は、OpenTP1のSPPに接続するためのサービスグループ名とサービス名、およびOpenTP1のSPPへの要求電文となるJSON形式のデータが必要です。

TP1-Bridgeを使用するためには、org.springframework.web.client.RestTemplateクラスを使用してTP1-Bridgeを呼び出します。

TP1-Bridgeを呼び出す前提として、トランザクションを伝搬する処理の実装が必要です。TP1-Bridgeを呼び出すために必要なHMP-PCTOのライブラリは、トランザクションの伝搬で必要なライブラリに含まれています。

(1)　コーディング例

サービスグループ名とサービス名は、TP1-Bridgeに通信するためのURLのパスに設定します。

次に示す形式で設定してください。

http://<TP1-Bridgeのホスト名>:<TP1-Bridgeのポート番号>/tp1bridge/<サービスグループ名>/<サービス名>

JSONデータは、TP1-Bridgeに通信する要求電文のBodyに設定してください。また、要求電文はPOSTで送信してください。

String url = "http://xxxx:xxxx/tp1bridge/serviceg1/service1";     // TP1-BridgeのURLとサービスグループ名サービス名を用意

RestTemplate restTemplate = new RestTemplate();                 // RestTemplateのインスタンス作成
String jsonData = "{¥"Data1¥":¥"AAAA¥",¥"Data2¥":¥"BBBB¥"}";    // String型のJsonデータを用意
RequestEntity.BodyBuilder rb = RequestEntity.post(url);         // TP1-BridgeのURL設定
RequestEntity<?> request = rb.body(jsonData);                   // JsonデータをBodyに設定
ResponseEntity<String> response = restTemplate.exchange(request, String.class); // 通信実行
String responseBody = response.getBody();                       // 応答電文のJsonデータをBody部から取り出し

注

この例では、インタセプタの登録（トランザクションの伝搬）に関する記述を省略しています。

(2)　エラーハンドリング

RestTemplateを使用した通信で例外が発生した場合は、RestTemplateが送出する例外、例外のメッセージ、およびステータスコードを参照してください。

HMP-PCTOが送出するstatuscodeについては、取扱説明書「HMP-PCTO テクニカルガイド」のTP1-Acceptorの機能のHTTPステータスマッピングに関する説明を参照してください。

(3)　JSONの形式に関する注意事項

TP1-Bridgeは、JSON形式のデータをバイナリ形式に変換する際に、uCosminexus Service PlatformのJSON-XML変換APIを使用します。そのため、TP1-Bridgeを使用する際のJSON形式のデータは、uCosminexus Service PlatformのJSON-XML変換APIの仕様が定める形式としてください。

JSON形式の詳細については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、JSON-XML変換で扱うJSONと標準仕様のJSONとの差異に関する説明を参照してください。

2.2.16　ロギングライブラリの設定ファイルのカスタマイズ

アプリケーションでロギングライブラリLogbackを使用する場合、その設定はlogback-spring.xmlに定義します。このファイルを記載する場合、HMP-PCTOのメッセージログ機能に関するカスタマイズが必要です。詳細については、「(4)　メッセージログ機能が参照するファイル」を参照してください。

次にカスタマイズ例を示します。

(1)　メッセージログをファイルに出力するためのカスタマイズ例

メッセージログをファイルに出力するためのカスタマイズ例および出力手順を次に示します。

(a)　logback-spring.xmlの作成

メッセージログをファイルとして出力する場合、logback-spring.xmlとして次の設定で定義を作成する必要があります。設定の詳細や変更方法については、Logbackの公式ドキュメントを参照してください。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
<conversionRule conversionWord="hostname" class="jp.co.Hitachi.soft.hmppcto.common.log.HostNameConverter"/>

<!-- rootロガー用 変更可 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <target>System.out</target>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %hostname %thread %class{1} ${PID:- } %msg%n</pattern>
        <charset>UTF-8</charset>
    </encoder>
</appender>

<!-- ファイル出力 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>/deployments/logs/${HMPPCTO_POD_NAMESPACE}_${HMPPCTO_POD_NAME}.%d{yyyyMMdd}.log</fileNamePattern>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %hostname %thread %class{1} ${PID:- } %msg%n</pattern>
        <charset>UTF-8</charset>
    </encoder>
</appender>

<!-- ロガー名PCTO用 の設定-->
<include resource="hmppcto-include.xml"/>
<logger name="HMPPCTO_STDOUT" level="INFO" additivity="false">
    <appender-ref ref="HMPPCTO_STDOUT" />
    <appender-ref ref="FILE" />
</logger>
<logger name="HMPPCTO_STDERR" level="ERROR" additivity="false">
    <appender-ref ref="HMPPCTO_STDERR" />
    <appender-ref ref="FILE" />
</logger>

<!-- rootロガー -->
<root level="INFO">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>
</configuration>

この設定によって、HMP-PCTOのメッセージログおよびLogbackを使用したアプリケーションのメッセージがコンテナ内の/deployments/logs配下にログファイル「<namespace名>_<Pod名>.yyyymmdd.log」として出力されます。また、日単位でログファイルがローテーションされ、現在日から最大で過去30日分のバックアップファイル「<namespace名>_<Pod名>.yyyymmdd.log」が作成されます。作成されるログファイルの例を次示します。

重要

この設定をした場合、必ずLogbackを使用してログを出力してください。Logbackを使用しないでログを出力した場合、ログファイルに保存されません。（例：java.lang.Throwable.printStackTrace()による例外情報およびスタックトレースの出力）

ログファイルはログの出力された時刻を判定し、カレントファイルの作成およびファイルのローテーションを実施します。そのため、日単位でログの出力がない場合、該当日のファイルは作成されず、ファイルのローテーションは実施されません。そのため、バックアップファイルの日付が連続していない場合があります。

(b)　logback-spring.xmlの配置

作成したlogback-spring.xmlをHMP-PCTOの各Kubernetesアプリケーションのリソースディレクトリ「src/main/resources」の直下に格納してください。Mediatorについては、「Mediator用Javaプロジェクトディレクトリ」（java-projects/mediator）配下にリソースディレクトリ「src/main/resources」を作成し、logback-spring.xmlを格納してください。

また、Hitachi Microservices Platform - Bridge Option for OpenTP1を使用している場合は、「TP1-Bridge用Javaプロジェクトディレクトリ」（java-projects/tp1-bridge）配下にリソースディレクトリ「src/main/resources」を作成し、logback-spring.xmlを格納してください。

(c)　メッセージログのファイル出力用永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成

＜永続ボリュームの作成要領＞

各永続ボリュームの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。

各永続ボリュームの.spec.capacity.storageフィールドに、以下に示す値以上のサイズを指定してください。

指定サイズ＝「(a)×(b)×(c)」以上のサイズ
(a)ログファイル1つ当たりのファイルサイズ
(b)ログファイルの世代数（TimeBasedRollingPolicyのmaxHistoryプロパティ設定値＋1）
(c)メッセージログをNFSサーバに出力するPod数
(d)エラーなどでメッセージログが継続して出力される場合を想定した安全率（200%）

例として、(a)が「10Mi」の場合、「10Mi×31×10×200%」＝「6200Mi」以上となるため、.spec.capacity.storageフィールドには「7Gi」（7ギビバイト）を指定します。この計算式による値は目安としていただき、実際に必要とするサイズについては、実測するようお願いします。

各永続ボリュームの.spec.accessModesフィールドに、「ReadWriteMany」を指定してください。各Podが、どのノードからでも永続ボリュームにメッセージログをログファイルに出力できるようになります。

永続ボリュームの種類がNFSストレージの場合は、永続ボリュームの.spec.nfsフィールドに、NFSのサーバアドレスとディレクトリパスを指定してください。

永続ボリュームの.persistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。

＜永続ボリューム要求の作成要領＞

各永続ボリューム要求の名称（.metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

各永続ボリューム要求のNamespace（.metadata.namespaceフィールド）に、Podで使用しているNamespace名を指定してください。

各永続ボリューム要求の.spec.accessModesフィールドに、「ReadWriteMany」を指定してください。

各永続ボリューム要求の.spec.resources.requests.storageフィールドに、前述の永続ボリュームで指定したサイズを指定してください。

<永続ボリュームおよび永続ボリューム要求の記述例>

メッセージログのファイル出力用永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの記述例を次に示します。

永続ボリュームをNFSストレージとする場合

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-pod-logs
  namespace: my-namespace
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 7Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-pod-logs
  namespace: my-namespace
spec:
  capacity:
    storage: 7Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: nfs-server.example.com
    path: /nfs/logs
  persistentVolumeReclaimPolicy: Retain

(d)　メッセージログのファイル出力用永続ボリュームおよび永続ボリューム要求のデプロイ

メッセージログのファイル出力用永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストをデプロイしてください。

コマンド例を次に示します。

kubectl apply -f ./ pod-logs-volume.yaml

この例では、Kubernetesマニフェストのファイル名を「pod-logs-volume.yaml」としています。

＜コマンドの実行結果の例＞

persistentvolume/pv-pod-logs created

上記のように各Kubernetesオブジェクトの作成に成功した旨のメッセージが出力されていることを確認してください。

メッセージログのファイル出力用永続ボリュームをデプロイしたあと、次のコマンド例のように、永続ボリュームのデプロイが期待どおり成功していること（STATUS列が"Available"になっていること）を確認してください。

kubectl get pv

＜コマンドの実行結果の例＞

上記の例では、メッセージログのファイル出力用永続ボリュームだけを記載しています。実行環境によっては、そのほかに存在する永続ボリュームも一覧に表示されます。

なお、各列に表示される値は実行環境によって異なります。また、kubectlのdescribeサブコマンドを使用すると、各Kubernetesオブジェクトのさらに詳細な情報を参照できます。

(e)　HMP-PCTOのKubernetesマニフェストのカスタマイズ

HMP-PCTOの各Kubernetesマニフェストに次の内容を追加してください。

メッセージログのファイル出力用永続ボリュームおよび永続ボリューム要求の設定

次の設定によって、メッセージログのファイル出力用永続ボリュームが/deployments/logsとしてマウントされます。

ベースディレクトリとして/deployments/logsをマウントするため、.spec.template.spec.containers.volumeMountsに次の値を設定してください。

        - name: nfs-logs-volume
          mountPath: /deployments/logs

永続ボリュームを/deployments/logsとしてマウントするため、.spec.template.spec.volumesに次の値を設定してください。

      - name: nfs-logs-volume
        persistentVolumeClaim:
          claimName: pvc-pod-logs

メッセージログのファイル名に使用する環境変数の設定

logback-spring.xmlファイルでメッセージログのファイル名に使用する環境変数「HMPPCTO_POD_NAMESPACE」および「HMPPCTO_POD_NAME」を設定します。

Podが動作しているネームスペースを環境変数として設定するため、.spec.template.spec.containers.envに次の値を設定してください。

        - name: HMPPCTO_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace

Pod名称を環境変数として設定するために.spec.template.spec.containers.envに次の値を設定してください。

        - name: HMPPCTO_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name

(f)　HMP-PCTOのHelmチャートの修正

MediatorのHelmチャートへメッセージログのファイル出力用永続ボリュームおよびストレージクラスの設定および、メッセージログのファイル名に使用する環境変数の設定する際の手順を記載します。また、Hitachi Microservices Platform - Bridge Option for OpenTP1を使用している場合は、TP1-BridgeのHelmチャートを同様に修正してください。

Helmチャートの展開

作業ディレクトリで次のコマンドを実行し、tgzファイルからHelmチャートを展開します。

tar -xzf mediator-<V.R.S>※tgz

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

statefulset.yamlファイルの修正

Helmチャートは以下の構成で展開されます。templatesフォルダ内のstatefulset.yamlファイルを開きます。

ファイル／ディレクトリ構成

<作業ディレクトリ>/

mediator

.helmignore

Chart.yaml

values.schema.json

values.yaml

templates

includes

mediator-config-map.yaml

service.yaml

serviceaccount.yaml

statefulset.yaml

ucars-config-map.yaml

メッセージログのファイル出力用永続ボリュームおよびストレージクラスの設定

statefulset.yamlファイルに次の設定を追加します。これによって、メッセージログのファイル出力用永続ボリュームが/deployments/logsとしてマウントされます。

ベースディレクトリとして/deployments/logsをマウントするため、.spec.template.spec.containers.volumeMountsに次の値を設定してください。

        - name: nfs-logs-volume
          mountPath: /deployments/logs

永続ボリュームを/deployments/logsとしてマウントするため、.spec.template.spec.volumesに次の値を設定してください。

      - name: nfs-logs-volume
        persistentVolumeClaim:
          claimName: pvc-pod-logs

メッセージログのファイル名に使用する環境変数の設定

statefulset.yamlファイルに以下の設定を追加します。これによってlogback-spring.xmlファイルで、メッセージログのファイル名に使用する環境変数「HMPPCTO_POD_NAMESPACE」および「HMPPCTO_POD_NAME」を設定します。

Podが動作しているネームスペースを環境変数として設定するため、.spec.template.spec.containers.envに次の値を設定してください。

        - name: HMPPCTO_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace

Pod名称を環境変数として設定するために.spec.template.spec.containers.envに次の値を設定してください。

        - name: HMPPCTO_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name

パッケージの再作成

statefulset.yamlファイルの修正が完了したら、作業ディレクトリへ移動します。次のコマンドを実行し、修正したHelmチャートを再度パッケージ化します。作成されたHelmチャートを使用してMediatorをデプロイしてください。

helm package ./mediator

2.2.17　分散トレース機能の設定

分散トレース機能の設定をするアプリケーションの開発方法について説明します。

分散トレース機能の設定は、次のアプリケーションで実装してください。

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

(1)　ライブラリの組み込み

分散トレース機能を使用する場合、使用する分散トレース収集アプリケーションまたはサービスによって異なるライブラリを組み込む必要があります。

(a)　Jaegerを使用する場合

分散トレース収集サービスにJaegerを使用する場合、hmppcto-observability-modules-jaeger-thriftライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-observability-modules-jaeger-thrift:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(b)　Azure Monitor Application Insightsを使用する場合

分散トレース収集サービスにAzure Monitor Application Insightsを使用する場合、hmppcto-observability-modules-azureライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-observability-modules-azure:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(c)　Google Cloud PlatformのCloud Traceを使用する場合

分散トレース収集サービスにCloud Traceを使用する場合、hmppcto-observability-modules-gcpライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-observability-modules-gcp:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(d)　OpenTelemetry Collectorを使用する場合

分散トレース保存サービスにNew Relicを使用する場合、分散トレース収集サービスOpenTelemetry Collectorを使用するため、hmppcto-observability-modules-otlp-httpライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-observability-modules-otlp-http:<V.R.S>※'
}

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(2)　ライブラリの使用優先順位

分散トレースは１つの分散トレース収集アプリケーションまたはサービスだけ使用できます。複数のライブラリがアプリケーションに組み込まれた場合、次のライブラリの優先順位によって、使用するライブラリを決定します。

表2‒7　 分散トレース機能で使用されるライブラリの優先順位

優先順位

ライブラリ

1

hmppcto-observability-modules-jaeger-thrift

2

hmppcto-observability-modules-otlp-http

3

hmppcto-observability-modules-azure

4

hmppcto-observability-modules-gcp

2.2.18　Quartzスケジューラ機能の利用

アプリケーションでジョブスケジューリングライブラリQuartzを使用する場合、スケジューラはデフォルトスケジューラを使用するか、または専用のスケジューラを作成して使用してください。

また、HMP-PCTOで定義しているQuartzスケジューラ用の設定ファイル「hmppcto_quartz.properties」と同名のファイルは作成、または使用しないでください。

2.2.19　アプリケーションが出力するメッセージの文字コード

アプリケーションで標準出力および標準出力エラー出力にメッセージを出力する場合、文字コードはUTF-8を指定してください。標準出力および標準出力エラー出力には、アプリケーションが出力するメッセージと、文字コードがUTF-8のHMP-PCTOのメッセージが出力されるため、アプリケーションでそのほかの文字コードを使用した場合に複数の文字コードが混在してしまい、ASCIIの範囲外の文字が文字化けします。

uCosminexus Application Runtime for Spring Boot使用時には、プロセスモニタのエンコーディングをUTF-8に設定するため、monitor.jvm.optionsパラメタにUTF-8を指定してください。

2.3　コンテナイメージ作成

ここでは、ユーザ責務のコンテナイメージ作成方法について説明します。

コンテナイメージビルド環境のコンテナエンジンはユーザ任意のものを使用してください。説明中のコンテナエンジンのコマンド例は、Dockerを使用した場合を例に記述しています。Red Hat OpenShift Container Platformを使用する場合は、適宜「docker」コマンドを「podman」コマンドに読み替えてください。コンテナエンジンの各コマンドの詳細については、使用するコンテナエンジンのマニュアルなどを参照してください。

重要

コンテナイメージのビルドに出力されるメッセージについて

Dockerを使用してコンテナイメージのビルドを行った場合、次のメッセージが出力されることがあります。このメッセージは出力されても問題ないため、無視してください。

「javaコマンド」の引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」を設定するために、Containerfileにshell形式（例：CMD java -jar /deployments/orchestrator-V.R.S.jar）を指定していることから、このメッセージが出力されます。

JSONArgsRecommended: JSON arguments recommended for ENTRYPOINT/CMD to prevent unintended behavior related to OS signals

2.3.1　作業項目の一覧

コンテナイメージ作成の作業項目の一覧を次の表に示します。

表2‒8　コンテナイメージ作成の作業項目の一覧

作業項目

備考

参照先

事前準備

必ず実施します。

2.3.2　事前準備

uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）

uCosminexus Application Runtime for Spring Bootを導入するコンテナイメージのベースイメージに利用します。

2.3.3　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）

JDKコンテナベースイメージの作成

uCosminexus Application Runtime for Spring Bootを導入しないコンテナイメージのベースイメージに利用します。

2.3.4　JDKコンテナベースイメージの作成

Orchestrator-Serviceコンテナイメージの作成

−

2.3.5　Orchestrator-Serviceコンテナイメージの作成

Relay-Serviceコンテナイメージの作成

−

2.3.6　Relay-Serviceコンテナイメージの作成

Entity-Service(SQL)コンテナイメージの作成

−

2.3.7　Entity-Service(SQL)コンテナイメージの作成（SQL-Participant限定）

Entity-Service(TCC)コンテナイメージの作成

−

2.3.8　Entity-Service(TCC)コンテナイメージの作成（TCC-Participant限定）

Orchestrator-Service(SQL)コンテナイメージ

−

2.3.9　Orchestrator-Service(SQL)コンテナイメージの作成（SQL-Participant限定）

Alternate-Serviceコンテナイメージ

−

2.3.10　Alternate-Serviceコンテナイメージの作成

Alternate-Service(SQL)コンテナイメージ

−

2.3.11　Alternate-Service(SQL)コンテナイメージの作成（SQL-Participant限定）

（凡例）−：なし。

2.3.2　事前準備

コンテナイメージを登録するためのコンテナレジストリ、およびコンテナイメージをビルドするためのDockerなどのコンテナエンジンをインストールしたコンテナイメージビルド環境を用意してください。

詳細については、「3.4.2　事前準備（通常版限定）」を参照してください。

2.3.3　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）

このコンテナベースイメージは、通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime for Spring Bootを導入する場合だけ作成します。

uCosminexus Application Runtime for Spring Bootコンテナベースイメージは、uCosminexus Application Runtime for Spring Bootを導入するユーザ責務のコンテナイメージのベースイメージとして使用します。uCosminexus Application Runtime for Spring Bootのインストール部分を共通のベースイメージとして作成することで、各種コンテナイメージのContainerfileの記述量の軽減、およびビルドした各種コンテナイメージのサイズを低減できるメリットがあります。

uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成方法について説明します。

(1)　Containerfileの作成

「6.3.1　uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（通常版限定）」に記載されている要件を満たすように、uCosminexus Application Runtime for Spring BootコンテナベースイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212 AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HL0R ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212     …5
COPY --from=builder /opt /opt     …6
RUN microdnf install ¥     …7
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        dnf ¥
    && dnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        --allowerasing ¥
        java-21-openjdk-headless ¥     …8
        curl-minimal ¥
        jq ¥
        <uCosminexus Application Runtime for Spring Bootの前提RPMパッケージ>     …9
        :
    && dnf clean all ¥
    && rm -rf /var/cache/dnf/*
ENV PATH=/usr/lib/jvm/java-21-openjdk-21.0.7.0.6-1.el9.x86_64/bin:$PATH     …8

RUN chgrp -R 1001 /opt/hitachi/ucars     …10

USER 1001:0     …11
WORKDIR /deployments     …12

記述例の番号は、説明の番号と対応しています。

＜説明＞

マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「gzip」の行で、uCosminexus Application Runtime for Spring Bootのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。

「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HL0R ./」の行で、uCosminexus Application Runtime for Spring Bootのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HL0R」（uCosminexus Application Runtime for Spring Boot）を指定して実行してください）。

このオレンジ色の背景で示す行は、uCosminexus Application Runtime for Spring Bootの修正パッチを適用する場合だけ記述します。

uCosminexus Application Runtime for Spring Bootの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

マルチステージビルド用のコンテナイメージからuCosminexus Application Runtime for Spring Bootのインストール先ディレクトリ「/opt」をコピーします。これによって、このコンテナイメージにuCosminexus Application Runtime for Spring Bootをインストールした状態となります。

「RUN microdnf install ¥」の行から「jq ¥」の行で、HMP-PCTOの前提RPMパッケージをインストールします。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」の場合を記載しています。コンテナベースイメージがUBI 8の場合は、curl-minimalをcurlに変更してください。

他社製のJava VMを指定します。この例では、Java SE 21準拠のJDKとして「OpenJDK 21」を使用しています。環境変数PATHの先頭に、他社製のJava VMのコマンド群がインストールされているディレクトリを追加します。

uCosminexus Application Runtime for Spring Bootの前提RPMパッケージをインストールします。uCosminexus Application Runtime for Spring Bootのリリースノートを参照し、uCosminexus Application Runtime for Spring Bootに必要な前提RPMパッケージを記述してください。

このオレンジ色の背景で示す行は、Red Hat OpenShift Container Platformを使用し、SCC（Security Context Constraints）の設定でコンテナ実行時にrootユーザでの実行を許容しない場合に記述してください。uCARSのインストールディレクトリ配下の所有グループを実行ユーザが属するグループに変更してください。

任意のコンテナ実行ユーザ・グループを指定します。

アプリケーション配置用ディレクトリを作成します。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒9　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

X64LIN

(uCosminexus Application Runtime for Spring Bootのインストーラ)

日立

uCosminexus Application Runtime for Spring BootのインストールCD-ROMに格納されているX64LINディレクトリをコピーしてください。

PACK_TAR.Z

(uCosminexus Application Runtime for Spring Bootの修正パッチ)

日立

uCosminexus Application Runtime for Spring Bootの修正パッチを適用する場合だけ格納してください。

DigiCertGlobalRootG2.crt

（DigiCertGlobalRootG2 CA証明書）

ユーザ

分散トレース収集サービスにAzure Monitor Application Insightsを使用する場合だけ格納してください。

GTS Root R1.pem

GTS Root R2.pem

GTS Root R3.pem

GTS Root R4.pem

（GTS Root R1、GTS Root R2、GTS Root R3、GTS Root R4証明書）

ユーザ

分散トレース収集サービスにGoogle Cloud PlatformのCloud Traceを使用する場合だけ格納してください。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

uCosminexus Application Runtime for Spring Bootコンテナベースイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]ucars:<uCosminexus Application Runtime for Spring Bootバージョン>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/ucars:01-12-01 .

この例では、uCosminexus Application Runtime for Spring Bootのバージョンを「01-12-01」としています。

(4)　コンテナイメージの登録

ビルドしたuCosminexus Application Runtime for Spring Bootコンテナベースイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.3.4　JDKコンテナベースイメージの作成

このコンテナベースイメージは、トライアル版の場合、または通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime for Spring Bootを導入しない場合だけ作成します。

JDKコンテナベースイメージは、uCosminexus Application Runtime for Spring Bootを導入しないユーザ責務のコンテナイメージのベースイメージとして使用します。JDKのインストール部分を共通のベースイメージとして作成することで、各種コンテナイメージのContainerfileの記述量の軽減、およびビルドした各種コンテナイメージのサイズを低減できるメリットがあります。

JDKコンテナベースイメージの作成方法について説明します。

(1)　Containerfileの作成

「6.3.2　JDKコンテナベースイメージ」に記載されている要件を満たすように、JDKコンテナベースイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        java-21-openjdk-headless ¥
        curl-minimal ¥
        jq ¥
    && microdnf clean all ¥
    && rm -rf /var/cache/dnf/*
USER 1001:0     …3
WORKDIR /deployments     …4

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「&& rm -rf /var/cache/dnf/*」の行で、前提RPMパッケージをインストールします。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」の場合、かつJava SE 21準拠のJDKとして「OpenJDK 21」を使用しています。コンテナベースイメージがUBI 8の場合は、curl-minimalをcurlに変更してください。

任意のコンテナ実行ユーザ・グループを指定します。

アプリケーション配置用ディレクトリを作成します。

■トライアル版の場合

FROM quay.io/almalinuxorg/9-minimal:9.5     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        java-21-openjdk-headless ¥
        curl-minimal ¥
        jq ¥
    && microdnf clean all ¥
    && rm -rf /var/cache/dnf/*
USER 1001:0     …3
WORKDIR /deployments     …4

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとしてAlmalinux 9 Minimal 9.5を指定します。

「RUN microdnf install ¥」の行から「&& rm -rf /var/cache/dnf/*」の行で、前提RPMパッケージをインストールします。この例では、Java SE 21準拠のJDKとして「OpenJDK 21」を使用しています。

任意のコンテナ実行ユーザ・グループを指定します。

アプリケーション配置用ディレクトリを作成します。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒10　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

JDKコンテナベースイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<JDKコンテナベースイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/jdk:latest .

この例では、JDKコンテナベースイメージのイメージ名・タグ名を「jdk:latest」としています。

(4)　コンテナイメージの登録

ビルドしたJDKコンテナベースイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.3.5　Orchestrator-Serviceコンテナイメージの作成

Orchestrator-Serviceコンテナイメージの作成方法について説明します。

(1)　Containerfileの作成

「6.4.1　Orchestrator-Serviceコンテナイメージ」に記載されている要件を満たすように、Orchestrator-ServiceコンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

FROM myregistry.example.com/myproject/ucars:01-12-01     …1
COPY --chown=1001:0 --chmod=0440 ./orchestrator-V.R.S※.jar /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …4
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-V.R.S※.jar     …5

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.3　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:01-12-01」を指定しています。

「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」の名前を「orchestrator-V.R.S※.jar」としています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0440 ./orchestrator-V.R.S※.jar /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …4
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-V.R.S※.jar     …5

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」の名前を「orchestrator-V.R.S※.jar」としています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0440 ./orchestrator-V.R.S※.jar /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …4
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-V.R.S※.jar     …5

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」の名前を「orchestrator-V.R.S※.jar」としています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒11　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

<ユーザのOrchestrator-ServiceアプリケーションのJARファイル>

ユーザ

−

health_check.sh

（HMP-PCTOのトランザクションヘルスチェックスクリプト）

日立

−

wait_transactions.sh

（HMP-PCTOの未決着トランザクション待機スクリプト）

日立

−

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Orchestrator-Serviceコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Orchestrator-Serviceコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/orchestrator:latest .

この例では、Orchestrator-Serviceコンテナイメージのイメージ名・タグ名を「orchestrator:latest」としています。

(4)　コンテナイメージの登録

ビルドしたOrchestrator-Serviceコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.3.6　Relay-Serviceコンテナイメージの作成

Relay-Serviceコンテナイメージの作成方法について説明します。

ユーザ責務のKubernetesアプリケーションのRelay-Serviceコンテナの数だけ、このコンテナイメージのContainerfileを作成しビルドしてください。

(1)　Containerfileの作成

「6.4.2　Relay-Serviceコンテナイメージ」に記載されている要件を満たすように、Relay-ServiceコンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

FROM myregistry.example.com/myproject/ucars:01-12-01     …1
COPY --chown=1001:0 --chmod=0440 ./relay-service-V.R.S※.jar /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/    …3
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/relay-service-V.R.S※.jar     …4

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.3　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:01-12-01」を指定しています。

「ユーザのRelay-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのRelay-ServiceアプリケーションのJARファイル」の名前を「relay-service-V.R.S※.jar」としています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのRelay-ServiceアプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0440 ./relay-service-V.R.S※.jar /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …3
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/relay-service-V.R.S※.jar     …4

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「ユーザのRelay-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのRelay-ServiceアプリケーションのJARファイル」の名前を「relay-service-V.R.S※.jar」としています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのRelay-ServiceアプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0440 ./relay-service-V.R.S※.jar /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …3
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/relay-service-V.R.S※.jar     …4

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「ユーザのRelay-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのRelay-ServiceアプリケーションのJARファイル」の名前を「relay-service-V.R.S※.jar」としています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのRelay-ServiceアプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおりContainerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒12　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

<ユーザのRelay-ServiceアプリケーションのJARファイル>

ユーザ

−

health_check.sh

（HMP-PCTOのトランザクションヘルスチェックスクリプト）

日立

−

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Relay-Serviceコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Relay-Serviceコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/relay-service:latest .

この例では、Relay-Serviceコンテナイメージのイメージ名・タグ名を「relay-service:latest」としています。

(4)　コンテナイメージの登録

ビルドしたRelay-Serviceコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.3.7　Entity-Service(SQL)コンテナイメージの作成（SQL-Participant限定）

Entity-Service(SQL)コンテナイメージの作成方法について説明します。

(1)　Containerfileの作成

「6.4.3　Entity-Service(SQL)コンテナイメージ（SQL-Participant限定）」に記載されている要件を満たすように、Entity-Service(SQL)コンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM myregistry.example.com/myproject/ucars:01-12-01     …5
RUN mkdir /deployments/eads-lib ¥     …6
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./sql-participant.jar /deployments/     …11
COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/     …12
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …13
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …14
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …15
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/sql-participant.jar     …16

記述例の番号は、説明の番号と対応しています。

＜説明＞

マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。

「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください）。

このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとして「2.3.3　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:01-12-01」を指定しています。

「RUN mkdir /deployments/eads-lib ¥」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」の名前を「sql-participant.jar」としています。

「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「pdjdbc4.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、Entity-Service(SQL)のjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

13と同じです。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト（starter.sh）」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」を指定します。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM myregistry.example.com/myproject/jdk:latest     …5
RUN mkdir /deployments/eads-lib ¥     …6
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./sql-participant.jar /deployments/     …11
COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/     …12
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …13
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …14
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …15
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/sql-participant.jar     …16

記述例の番号は、説明の番号と対応しています。

＜説明＞

マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。

「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください）。

このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「RUN mkdir /deployments/eads-lib ¥」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」の名前を「sql-participant.jar」としています。

「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「pdjdbc4.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

13と同じです。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」を指定します。

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0440 ./sql-participant.jar /deployments/     …4
COPY --chown=1001:0 --chmod=0440 ./postgresql-42.2.22.jar /deployments/     …5
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …6
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …7
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …8
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/sql-participant.jar     …9

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」の名前を「sql-participant.jar」としています。

「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「postgresql-42.2.22.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

6と同じです。

SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合、HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナ実行ユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」を指定します。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒13　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

ユーザのEntity-Service(SQL)アプリケーションのJARファイル

ユーザ

−

<JDBC DriverのJARファイル>

ユーザ

−

health_check.sh

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

日立

−

wait_transactions.sh

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

日立

−

X64LIN

(Hitachi Elastic Application Data Store Client for Javaのインストーラ)

日立

通常版の場合だけ、この製品に同梱しているHitachi Elastic Application Data Store Client for JavaのインストーラのX64LINディレクトリをコピーしてください。

PACK_TAR.Z

(Hitachi Elastic Application Data Store Client for Javaの修正パッチ)

日立

通常版の場合で、この製品にHitachi Elastic Application Data Store Client for Javaの修正パッチが同梱されている場合だけ格納してください。同梱されていない場合は格納不要です。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Entity-Service(SQL)コンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Entity-Service(SQL)コンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/sql-participant:latest .

この例では、Entity-Service(SQL)コンテナイメージのイメージ名・タグ名を「sql-participant:latest」としています。

(4)　コンテナイメージの登録

ビルドしたEntity-Service(SQL)コンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.3.8　Entity-Service(TCC)コンテナイメージの作成（TCC-Participant限定）

Entity-Service(TCC)コンテナイメージの作成方法について説明します。

また、ユーザ責務のKubernetesアプリケーションのEntity-Service(TCC)コンテナの数だけ、このコンテナイメージのContainerfileを作成しビルドしてください。

(1)　Containerfileの作成

「6.4.4　Entity-Service(TCC)コンテナイメージ（TCC-Participant限定）」に記載されている要件を満たすように、Entity-Service(TCC)コンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM myregistry.example.com/myproject/ucars:01-12-01     …5
RUN mkdir /deployments/eads-lib ¥     …6
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./entity-module-tcc-participant-V.R.S※.jar /deployments/     …11
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/entity-module-tcc-participant-V.R.S※.jar     …12

記述例の番号は、説明の番号と対応しています。

＜説明＞

マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。

「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください）。

このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとして「2.3.3　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:01-12-01」を指定しています。

「RUN mkdir /deployments/eads-lib ¥」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」の名前を「entity-module-tcc-participant-V.R.S※.jar」としています。

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM myregistry.example.com/myproject/jdk:latest     …5
RUN mkdir /deployments/eads-lib ¥     …6
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./entity-module-tcc-participant-V.R.S※.jar /deployments/     …11
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/entity-module-tcc-participant-V.R.S※.jar     …12

記述例の番号は、説明の番号と対応しています。

＜説明＞

マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。

「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください）。

このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「RUN mkdir /deployments/eads-lib ¥」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」の名前を「entity-module-tcc-participant-V.R.S※.jar」としています。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0440 ./entity-module-tcc-participant-V.R.S※.jar /deployments/     …4
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/entity-module-tcc-participant-V.R.S※.jar     …5

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」の名前を「entity-module-tcc-participant-V.R.S※.jar」としています。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒14　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

<ユーザのEntity-Service(TCC)アプリケーションのJARファイル>

ユーザ

−

health_check.sh

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

日立

−

wait_transactions.sh

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

日立

−

X64LIN

(Hitachi Elastic Application Data Store Client for Javaのインストーラ)

日立

通常版の場合だけ、この製品に同梱しているHitachi Elastic Application Data Store Client for JavaのインストーラのX64LINディレクトリをコピーしてください。

PACK_TAR.Z

(Hitachi Elastic Application Data Store Client for Javaの修正パッチ)

日立

通常版の場合で、この製品にHitachi Elastic Application Data Store Client for Javaの修正パッチが同梱されている場合だけ格納してください。同梱されていない場合は格納不要です。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Entity-Service(TCC)コンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Entity-Service(TCC)コンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/entity-module-tcc-participant:latest .

この例では、Entity-Service(TCC)コンテナイメージのイメージ名・タグ名を「entity-module-tcc-participant:latest」としています。

(4)　コンテナイメージの登録

ビルドしたEntity-Service(TCC)コンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.3.9　Orchestrator-Service(SQL)コンテナイメージの作成（SQL-Participant限定）

このコンテナイメージは、Orchestrator-ServiceでJDBC Proxy Driverを使用する場合に作成します。

Orchestrator-Service(SQL)コンテナイメージの作成方法について説明します。

(1)　Containerfileの作成

「6.4.5　Orchestrator-Service(SQL)コンテナイメージ（SQL-Participant限定）」に記載されている要件を満たすように、Orchestrator-Service(SQL)コンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM myregistry.example.com/myproject/ucars:01-12-01     …5
RUN mkdir /deployments/eads-lib ¥     …6
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./orchestrator-sql.jar /deployments/     …11
COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/     …12
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …13
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …14
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …15
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-sql.jar     …16

記述例の番号は、説明の番号と対応しています。

＜説明＞

マルチステージビルド用のコンテナベースイメージとしてUBI 9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。

「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください）。

このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとして「2.3.3　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:01-12-01」を指定しています。

「RUN mkdir /deployments/eads-lib ¥」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」の名前を「orchestrator-sql.jar」としています。

「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「pdjdbc4.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

13と同じです。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト（starter.sh）」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」を指定します。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM myregistry.example.com/myproject/jdk:latest     …5
RUN mkdir /deployments/eads-lib ¥     …6
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./orchestrator-sql.jar /deployments/     …11
COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/     …12
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …13
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …14
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …15
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-sql.jar     …16

記述例の番号は、説明の番号と対応しています。

＜説明＞

マルチステージビルド用のコンテナベースイメージとしてUBI 9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。

「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください）。

このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「RUN mkdir /deployments/eads-lib ¥」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」の名前を「orchestrator-sql.jar」としています。

「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「pdjdbc4.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

13と同じです。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」を指定します。

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0440 ./orchestrator-sql.jar /deployments/     …4
COPY --chown=1001:0 --chmod=0440 ./postgresql-42.2.22.jar /deployments/     …5
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …6
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …7
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …8
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-sql.jar     …9

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」の名前を「orchestrator-sql.jar」としています。

「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「postgresql-42.2.22.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

6と同じです。

SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合、HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナ実行ユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」を指定します。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒15　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル

ユーザ

−

<JDBC DriverのJARファイル>

ユーザ

−

health_check.sh

（HMP-PCTOのトランザクションヘルスチェックスクリプト）

日立

−

wait_transactions.sh

（HMP-PCTOの未決着トランザクション待機スクリプト）

日立

−

X64LIN

（Hitachi Elastic Application Data Store Client for Javaのインストーラ）

日立

通常版の場合だけ、この製品に同梱しているHitachi Elastic Application Data Store Client for JavaのインストーラのX64LINディレクトリをコピーしてください。

PACK_TAR.Z

（Hitachi Elastic Application Data Store Client for Javaの修正パッチ）

日立

通常版の場合で、この製品にHitachi Elastic Application Data Store Client for Javaの修正パッチが同梱されている場合だけ格納してください。同梱されていない場合は格納不要です。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Orchestrator-Service(SQL)コンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Orchestrator-Service(SQL)コンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/orchestrator-sql:latest .

この例では、Orchestrator-Service(SQL)コンテナイメージのイメージ名・タグ名を「orchestrator-sql:latest」としています。

(4)　コンテナイメージの登録

ビルドしたOrchestrator-Service(SQL)コンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.3.10　Alternate-Serviceコンテナイメージの作成

Alternate-Serviceコンテナイメージの作成方法について説明します。

(1)　Containerfileの作成

「6.4.6　Alternate-Serviceコンテナイメージ」に記載されている要件を満たすように、Alternate-ServiceコンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

FROM myregistry.example.com/myproject/ucars:01-12-01     …1
COPY --chown=1001:0 --chmod=0440 ./alternate-service-V.R.S※.jar /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …4
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/alternate-service-V.R.S※.jar     …5

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.3　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:01-12-01」を指定しています。

「ユーザのAlternate-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのAlternate-ServiceアプリケーションのJARファイル」の名前を「alternate-service-V.R.S※.jar」としています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-ServiceアプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0440 ./alternate-service-V.R.S※.jar /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …4
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/alternate-service-V.R.S※.jar     …5

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「ユーザのAlternate-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのAlternate-ServiceアプリケーションのJARファイル」の名前を「alternate-service-V.R.S※.jar」としています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-ServiceアプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0440 ./alternate-service-V.R.S※.jar /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …4
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/alternate-service-V.R.S※.jar     …5

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「ユーザのAlternate-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのAlternate-ServiceアプリケーションのJARファイル」の名前を「alternate-service-V.R.S※.jar」としています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-ServiceアプリケーションのJARファイル」を指定します。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒16　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

<ユーザのAlternate-ServiceアプリケーションのJARファイル>

ユーザ

−

wait_transactions.sh

（HMP-PCTOの未決着トランザクション待機スクリプト）

日立

−

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Alternate-Serviceコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Alternate-Serviceコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/alternate-service:latest .

この例では、Alternate-Serviceコンテナイメージのイメージ名・タグ名を「alternate-service:latest」としています。

(4)　コンテナイメージの登録

ビルドしたAlternate-Serviceコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.3.11　Alternate-Service(SQL)コンテナイメージの作成（SQL-Participant限定）

このコンテナイメージは、Alternate-ServiceでJDBC Proxy Driver を使用する場合に作成します。

Alternate-Service(SQL)コンテナイメージの作成方法について説明します。

(1)　Containerfileの作成

「6.4.7　Alternate-Service(SQL)コンテナイメージ（SQL-Participant限定）」に記載されている要件を満たすように、Alternate-Service(SQL)コンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM myregistry.example.com/myproject/ucars:01-12-01     …5
RUN mkdir /deployments/eads-lib ¥     …6
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./alternate-service-sql.jar /deployments/     …11
COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/     …12
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …13
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …14
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …15
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/alternate-service-sql.jar     …16

記述例の番号は、説明の番号と対応しています。

＜説明＞

マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。

「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください）。

このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとして「2.3.3　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:01-12-01」を指定しています。

「RUN mkdir /deployments/eads-lib ¥」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」の名前を「alternate-service-sql.jar」としています。

「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「pdjdbc4.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

13と同じです。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト（starter.sh）」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を指定します。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）の場合

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch     …4
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM myregistry.example.com/myproject/jdk:latest     …5
RUN mkdir /deployments/eads-lib ¥     …6
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log
ENV LOADER_PATH=/deployments/eads-lib     …7
COPY --from=builder --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib     …8
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …9
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …10
COPY --chown=1001:0 --chmod=0440 ./alternate-service-sql.jar /deployments/     …11
COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/     …12
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …13
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …14
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …15
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/alternate-service-sql.jar     …16

記述例の番号は、説明の番号と対応しています。

＜説明＞

マルチステージビルド用のコンテナベースイメージとしてUBI 8または9の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 9 Minimal 9.5」を使用しています。

「RUN microdnf install ¥」の行から「gzip」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。コンテナベースイメージがUBI 8の場合は、ncompressもインストールしてください。

「RUN mkdir ./X64LIN」の行から「RUN ./X64LIN/setup -f -c HC13 ./」の行で、Hitachi Elastic Application Data Store Client for Javaのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HC13」(Hitachi Elastic Application Data Store Client for Java)を指定して実行してください）。

このオレンジ色の背景で示す行は、Hitachi Elastic Application Data Store Client for Javaの修正パッチを適用する場合だけ記述します。

Hitachi Elastic Application Data Store Client for Javaの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「RUN mkdir /deployments/eads-lib ¥」の行から「&& chmod 770 /deployments/eads-log」の行で、Hitachi Elastic Application Data Store Client for Javaのライブラリをコピーするディレクトリを作成します。ディレクトリ名は任意ですが、この例では/deployments/eads-libとしています。

また、Hitachi Elastic Application Data Store Client for Javaのログを出力するディレクトリを作成します。ディレクトリ名は/deployments/eads-logとしてください。

環境変数「LOADER_PATH」に、Hitachi Elastic Application Data Store Client for Javaのライブラリのディレクトリを設定します。6.で作成したディレクトリ名を指定します。

マルチステージビルド用のコンテナイメージからHitachi Elastic Application Data Store Client for Javaのインストール先ディレクトリ「/opt/hitachi/xeads/javaclient/lib/」をコピーし、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。コピー先は6.で作成したディレクトリ名を指定します。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」の名前を「alternate-service-sql.jar」としています。

「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「pdjdbc4.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

13と同じです。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を指定します。

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:latest     …1
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/     …2
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/     …3
COPY --chown=1001:0 --chmod=0440 ./alternate-service-sql.jar /deployments/     …4
COPY --chown=1001:0 --chmod=0440 ./postgresql-42.2.22.jar /deployments/     …5
COPY --chown=1001:0 --chmod=0440 ./xdb-23.6.0.24.10.jar /deployments/     …6
COPY --chown=1001:0 --chmod=0440 ./xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar /deployments/     …7
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …8
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/alternate-service-sql.jar     …9

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.3.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:latest」を指定しています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」の名前を「alternate-service-sql.jar」としています。

「JDBC DriverのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「JDBC DriverのJARファイル」の名前を「postgresql-42.2.22.jar」としています。ここで「JDBC DriverのJARファイル」を格納したパスが、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.pathパラメタに設定する値となります。

このオレンジ色の背景で示す行は、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「OracleDatabase」、かつXMLType型を利用する場合だけ記述します。必要な追加ライブラリを配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。ライブラリの詳細については、SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタを参照してください。

ここで格納したライブラリをSQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに設定してください。

6と同じです。

SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタに設定する値が「HiRDB」の場合、HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナ実行ユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を指定します。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、事前に割り当てられた一定範囲内のUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒17　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

ユーザのAlternate-Service(SQL)アプリケーションのJARファイル

ユーザ

−

<JDBC DriverのJARファイル>

ユーザ

−

health_check.sh

（HMP-PCTOのトランザクションヘルスチェックスクリプト）

日立

−

wait_transactions.sh

（HMP-PCTOの未決着トランザクション待機スクリプト）

日立

−

X64LIN

（Hitachi Elastic Application Data Store Client for Javaのインストーラ）

日立

通常版の場合だけ、この製品に同梱しているHitachi Elastic Application Data Store Client for JavaのインストーラのX64LINディレクトリをコピーしてください。

PACK_TAR.Z

（Hitachi Elastic Application Data Store Client for Javaの修正パッチ）

日立

通常版の場合で、この製品にHitachi Elastic Application Data Store Client for Javaの修正パッチが同梱されている場合だけ格納してください。同梱されていない場合は格納不要です。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Alternate-Service(SQL)コンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Alternate-Service(SQL)コンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/alternate-service-sql:latest .

この例では、Alternate-Service(SQL)コンテナイメージのイメージ名・タグ名を「alternate-service-sql:latest」としています。

(4)　コンテナイメージの登録

ビルドしたAlternate-Service(SQL)コンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.4　永続ボリュームとプロビジョニング方法の選定（通常版限定）

HMP-PCTOが使用する永続ボリュームの選定について説明します。HMP-PCTOがサポートしている永続ボリュームのストレージ種別と、そのプロビジョニング方法の一覧を次の表に示します。この表を参照して、プロビジョニング方法を選定してください。

表2‒18　HMP-PCTOでサポートしている永続ボリュームのストレージ種別と、そのプロビジョニング方法の一覧

ストレージの種別

Kubernetes環境

マネージドファイルサービス

プロビジョニング方法

説明

静的

動的

ローカル永続ボリューム

規定しません

該当しません

○

−

ストレージクラスなどの詳細は用途によって異なります。詳細は「2.6　Kubernetesマニフェスト作成」を参照してください。

NFS

オンプレミス環境

該当しません

○※

−

ストレージクラスなどの詳細は用途によって異なります。詳細は「2.6　Kubernetesマニフェスト作成」を参照してください。

また、作業の詳細は各システムで異なります。HMP-PCTOとしての作業については、「2.5　共有ファイルシステムでの作業（通常版限定）」を参照してください。

Red Hat OpenShift Container Platform環境

該当しません

○※

−

Microsoft Azure環境

Azure Files

○

−

NFSをサポートしているため、永続ボリュームとして使用できます。プロビジョニングする方法については、Microsoft Azureの公式ドキュメントを参照してください。

HMP-PCTOとして必要な作業は、「2.5　共有ファイルシステムでの作業（通常版限定）」を参照してください。

Azure Blob Storage

−

○

Google Cloud Platform環境

Filestore

○

○

NFSをサポートしているため、永続ボリュームとして使用できます。プロビジョニングする方法については、Google Cloud Platformの公式ドキュメントを参照してください。

HMP-PCTOとして必要な作業は、「2.5　共有ファイルシステムでの作業（通常版限定）」を参照してください。

（凡例）

○：サポートしています。HMP-PCTOおよびEADSで動作検証が実施済みの構成です。

−：サポートしていません。HMP-PCTOおよびEADSで動作検証が未実施の構成です。この構成を使用する場合は、ユーザ責任で動作検証を実施してください。

注※　目的によっては使用できない場合があります。詳細な選定方法は「2.6　Kubernetesマニフェスト作成」を参照してください。

2.5　共有ファイルシステムでの作業（通常版限定）

HMP-PCTOが前提とする共有ファイルシステムでの作業について説明します。

共有ファイルシステムでの作業の詳細については、OS、各製品のマニュアルなどを参照してください。

2.5.1　作業項目の一覧（通常版限定）

HMP-PCTOが前提とする共有ファイルシステムでの作業項目の一覧を次の表に示します。

表2‒19　HMP-PCTOが前提とする共有ファイルシステムでの作業項目の一覧

作業項目

備考

参照先

マネージドファイルサービスでのプロビジョニング（通常版限定）

Microsoft Azure環境またはGoogle Cloud Platform環境で、uCosminexus Application Runtime for Spring Bootを導入するときだけ、次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

2.5.2　マネージドファイルサービスでのプロビジョニング（通常版限定）

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

通常版の場合で、uCosminexus Application Runtime for Spring Bootを導入するときだけ、次のどちらかをデプロイするための作業時に作成します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTO のコントロールプレーンのKubernetesアプリケーションおよびRAS

2.5.3　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

2.5.2　マネージドファイルサービスでのプロビジョニング（通常版限定）

Microsoft Azure環境またはGoogle Cloud Platform環境の場合でNFSストレージが必要なときは、次のどちらかをデプロイするための作業時に、マネージドファイルサービスでのプロビジョニングを実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

詳細については、「3.6.2　マネージドファイルサービスでのプロビジョニング」を参照してください。

2.5.3　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリを、次の要領で全ワーカーノードで共有可能なNFSに作成してください。この作業は、次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

詳細については、「3.6.5　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）」を参照してください。

2.6　Kubernetesマニフェスト作成

ユーザ責務のKubernetesアプリケーションの、Kubernetesマニフェストの作成方法について説明します。

Kubernetesマニフェストの記述仕様の詳細は、Kubernetesのマニュアルなどを参照してください。

SQL-Participantを構成するPodを定義したKubernetesのServiceのService名とNamespace名の長さの合計は、40バイト以下としてください。

TCC-Participantを構成するPodを定義したKubernetesのServiceのService名とNamespace名の長さの合計は、40バイト以下としてください。

Kubernetesマニフェスト作成時のログおよびトラブルシュート情報の取得の設定については、「3.11.1　ログおよびトラブルシュート情報の取得の設定」を参照してください。

2.6.1　作業項目の一覧

Kubernetesマニフェスト作成の作業項目の一覧を次の表に示します。

表2‒20　Kubernetesマニフェスト作成の作業項目の一覧

作業項目

備考

参照先

Orchestrator-ServiceのKubernetesマニフェストの作成

−

2.6.2　Orchestrator-ServiceのKubernetesマニフェストの作成

Relay-ServiceのKubernetesマニフェストの作成

−

2.6.3　Relay-ServiceのKubernetesマニフェストの作成

Entity-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）

SQL-Participantを使用する場合だけ作成します。

2.6.4　Entity-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）

Entity-Service(TCC)のKubernetesマニフェストの作成（TCC-Participant限定）

TCC-Participantを使用する場合だけ作成します。

2.6.5　Entity-Service(TCC)のKubernetesマニフェストの作成（TCC-Participant限定）

Orchestrator-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）

−

2.6.6　Orchestrator-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）

Alternate-ServiceのKubernetesマニフェストの作成

−

2.6.7　Alternate-ServiceのKubernetesマニフェストの作成

Alternate-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）

−

2.6.8　Alternate-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）

Kubernetesリソース取得用ロールおよびロールバインディングのKubernetesマニフェストの作成

必ず作成します。

2.6.9　Kubernetesリソース取得用ロールおよびロールバインディングのKubernetesマニフェストの作成

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

次のどちらかのKubernetesマニフェスト作成時に作成します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

2.6.10　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

通常版の場合で、uCosminexus Application Runtime for Spring Bootを導入するときだけ作成します。次のどちらかのKubernetesマニフェスト作成時に作成します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

（凡例）−：なし。

2.6.2　Orchestrator-ServiceのKubernetesマニフェストの作成

「7.5.1　Orchestrator-Serviceの要件」に記載されている要件を満たすように、Orchestrator-ServiceをデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1
kind: Deployment     …1
metadata:
  name: orchestrator
  namespace: my-namespace
spec:
  replicas: 1     …18
  selector:
    matchLabels:
      app.kubernetes.io/name: orchestrator
  template:
    metadata:
      labels:
        app.kubernetes.io/name: orchestrator
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/path: '/hmppcto/metrics'     …24
        prometheus.io/port: '8080'     …4
    spec:
      serviceAccount: orchestrator-service-account     …6
      securityContext:     …22
        fsGroup: 0
      imagePullSecrets:     …23
      - name: regcred
      initContainers:
      - name: dependency-checker     …2
        image: myregistry.example.com/myproject/dependency-checker:V.R.S※2
        args:
        - "30"
        - "10"
        - "10"
        - "10"
        - my-namespace/deployments/sql-participant※1
      containers:
      - name: orchestrator     …3
        image: myregistry.example.com/myproject/orchestrator:V.R.S※2
        resources:     …14
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: http
          containerPort: 8080
          protocol: TCP
        - name: ucars     …13
          containerPort: 28081
          protocol: TCP
        env:
        - name: TZ     …7
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS     …10
          value: -XX:+UseG1GC
        volumeMounts:
        - name: config     …5
          mountPath: /deployments/config
        - name: ucars-config     …11
          mountPath: /opt/hitachi/ucars/conf
        - name: snapshot-volume     …12
          mountPath: /ucars-snapshots
        - name: tomcat     …8
          mountPath: /deployments/tomcat
        livenessProbe:     …20
          exec:
            command:
            - /deployments/health_check.sh
            - "0"
            - "0"
            - "10"
            - "10"
            - "8080"
          initialDelaySeconds: 180
          periodSeconds: 30
          failureThreshold: 3
          timeoutSeconds: 10
        lifecycle:
          postStart:     …21
            exec:
              command:
              - /deployments/health_check.sh
              - "30"
              - "10"
              - "10"
              - "10"
              - "8080"
          preStop:     …17
            exec:
              command:
              - /deployments/wait_transactions.sh
              - "10"
              - "10"
              - "10"
              - "10"
              - "8080"
      - name: filebeat-sidecar     …9
        image: myregistry.example.com/myproject/filebeat:V.R.S※2
        resources:     …19
          limits:
            cpu: 1000m
            memory: 2Gi
          requests:
            cpu: 1000m
            memory: 2Gi
        args:
        - "-e"
        - "-E"
        - "http.enabled=true"
        env:     …15
        - name: HMPPCTO_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: HMPPCTO_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: HMPPCTO_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        livenessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                curl --fail 127.0.0.1:5066
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                filebeat test output
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        securityContext:
          runAsUser: 0
        volumeMounts:
         - name: beatconfig
           mountPath: /usr/share/filebeat/filebeat.yml
           readOnly: true
           subPath: filebeat.yml
         - name: tomcat     …8
           mountPath: /deployments/tomcat
      terminationGracePeriodSeconds: 180     …16
      volumes:
      - name: config     …5
        configMap:
          name: orchestrator-config
          items:
          - key: application.properties
            path: application.properties
      - name: ucars-config     …11
        configMap:
          name: orchestrator-ucars-config
          items:
            - key: config.properties
              path: config.properties
      - name: snapshot-volume     …12
        persistentVolumeClaim:
          claimName: snapshot-volume
      - name: beatconfig    …9
        configMap:
          name: orchestrator-filebeat-sidecar-config
      - name: tomcat     …8
---
apiVersion: v1
kind: Service
metadata:
  name: orchestrator
  namespace: my-namespace
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: orchestrator
  ports:
  - name: http     …4
    protocol: TCP
    port: 8080
    targetPort: http
  - name: ucars    …13
    protocol: TCP
    port: 28081
    targetPort: ucars
---
apiVersion: v1    …5
kind: ConfigMap
metadata:
  name: orchestrator-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    server.shutdown=graceful
    spring.lifecycle.timeout-per-shutdown-phase=20s
    jp.co.Hitachi.soft.hmppcto.learner.consensus-type=Three-Quarters
    jp.co.Hitachi.soft.hmppcto.mediator.name=mediator
    jp.co.Hitachi.soft.hmppcto.mediator.name-suffix=.mediator.my-namespace.svc.cluster.local
    jp.co.Hitachi.soft.hmppcto.mediator.size=5
    jp.co.Hitachi.soft.hmppcto.instance-id=orchestrator
    jp.co.Hitachi.soft.hmppcto.tracing.instance-id=Orchestrator-Service_001
    jp.co.Hitachi.soft.hmppcto.tracing.url=http://jaeger-collector:14268/api/traces
    jp.co.Hitachi.soft.hmppcto.use-scaling=true
    jp.co.Hitachi.soft.hmppcto.set-routing=inner
---
apiVersion: v1     …11
kind: ConfigMap
metadata:
  name: orchestrator-ucars-config
  namespace: my-namespace
data:
  config.properties: |
    monitor.rest.bindaddress=0.0.0.0
    monitor.rest.port=28081     …13
    snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot
    monitor.jvm.options=-Dfile.encoding=UTF-8
    healthcheck.startdelay.timeout=60000
    healthcheck.startdelay.actions.failure.retrymax=4
---
apiVersion: v1     …9
kind: ConfigMap
metadata:
  name: orchestrator-filebeat-sidecar-config
  namespace: my-namespace
data:
  filebeat.yml: |
    filebeat.inputs:
      - type: filestream
        id: "tomcat"
        paths:
          - '/deployments/tomcat/logs/access_log.*.log'
    processors:     …15
      - add_fields:
          target: kubernetes
          fields:
            namespace: ${HMPPCTO_POD_NAMESPACE}
            pod:
              name: ${HMPPCTO_POD_NAME}
            node:
              name: ${HMPPCTO_NODE_NAME}
    output.logstash:
      hosts: ["logstash.my-namespace.svc.cluster.local:5044"]
---
apiVersion: v1     …6
kind: ServiceAccount
metadata:
  name: orchestrator-service-account
  namespace: my-namespace

注※1

SQL-Participantを使用する場合の例を記述しています。

TCC-Participantを使用するときは、次の記述に置き換えてください。

- my-namespace/deployments/tcc-participant

TP1連携機能を使用するときは、次の記述に置き換えてください。<リリース名>は、「(15)　Kubernetesアプリケーションのデプロイ」でhelmコマンドに指定するリリース名を指定してください。

- my-namespace/deployments/<リリース名>

（例）

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

注※2

V.R.Sは使用するHMP-PCTOとFilebeatのバージョンに合わせて読み替えてください。

記述例の番号は、説明の番号と対応しています。

＜説明＞

この例では、各KubernetesオブジェクトのNamespace名（.metadata.namespaceフィールド）は、「my-namespace」としています。

ワークロードリソースを定義します。この例では、ワークロードリソースを「Deployment」としています。

「- name: dependency-checker」の行から「- my-namespace/deployments/sql-participant」の行で、初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

「- name: orchestrator」の行から「preStop:」の「- "8080"」の行で、コンテナ構成にOrchestrator-Serviceコンテナを定義します。「2.3.5　Orchestrator-Serviceコンテナイメージの作成」で作成したコンテナイメージを指定します。

「prometheus.io/port: '8080'」の行、および「- name: http」の行から「targetPort: http」の行で、ユーザ責務のKubernetesアプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

「- name: config」の行から「mountPath: /deployments/config」の行、「- name: config」の行から「path: application.properties」の行、および「apiVersion: v1」の行から「jp.co.Hitachi.soft.hmppcto.set-routing=inner」の行で、Orchestrator-Serviceコンテナのパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、設定するパラメタは最小限の例としています。

「serviceAccount: orchestrator-service-account」の行、および「apiVersion: v1」の行から「namespace: my-namespace」の行で、Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

「- name: TZ」の行から「value: Asia/Tokyo」の行で、Orchestrator-Serviceコンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

「- name: tomcat」の行から「mountPath: /deployments/tomcat」の行、および「- name: tomcat」の行で、Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

このオレンジ色の背景で示す行（「- name: filebeat-sidecar」の行から「mountPath: /deployments/tomcat」の行、「- name: beatconfig」の行から「name: orchestrator-filebeat-sidecar-config」の行、および「apiVersion: v1」の行から「hosts: ["logstash.my-namespace.svc.cluster.local:5044"]」の行）は、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ記述します。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントし、 /deployments/tomcat にTomcatのログディレクトリをマウントします。この設定によってTomcatからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

「- name: HMPPCTO_JAVA_OPTIONS」の行から「value: -XX:+UseG1GC」の行で、Orchestrator-ServiceのJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

このオレンジ色の背景で示す行（「- name: ucars-config」の行から「mountPath: /opt/hitachi/ucars/conf」の行、「- name: ucars-config」の行から「path: config.properties」の行、および「apiVersion: v1」の行から「healthcheck.startdelay.actions.failure.retrymax=4」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootの設定ファイル(config.properties)をOrchestrator-Serviceコンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「11.6.2　情報の収集方法」を参照して設定してください。

monitor.jvm.options=-Dfile.encoding=UTF-8

プロセスモニタのエンコーディングにUTF-8を設定します。

healthcheck.startdelay.timeout=60000

モニタ対象プロセス（Orchestrator-Service）開始完了通知待ちタイムアウト時間を定義します。Orchestrator-Serviceの起動時に、設定した時間が経過するとsnapshot.log.filepathで指定した先にスナップショットを出力します。モニタ対象プロセス開始完了通知待ちタイムアウト時間の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

healthcheck.startdelay.actions.failure.retrymax=4

モニタ対象プロセス（Orchestrator-Service）開始完了通知待ちタイムアウトが発生した場合に、モニタ対象プロセス開始完了待ちをリトライする最大回数を定義します。最大リトライ回数を超えると、デフォルトの設定ではモニタ対象プロセスを停止します。モニタ対象プロセス開始完了待ちリトライ回数の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間（下記のA）とOrchestrator-Serviceの開始に掛かる時間（下記のB）の関係を、「A＞B」にしてください。

A：モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間

healthcheck.startdelay.timeoutに指定した値×（healthcheck.startdelay.actions.failure.retrymaxに指定した値＋1）

B：Orchestrator-Service起動時に、トランザクションの合意に必要なMediatorが起動しているかのチェックのリトライ時間

jp.co.Hitachi.soft.hmppcto.mediator.discovery-interval-in-millisに指定した値×jp.co.Hitachi.soft.hmppcto.mediator.discovery-retry-countに指定した値

AをBよりも大きな値とするのは、モニタ対象プロセス開始完了通知待ちタイムアウトによるプロセス停止が、Orchestrator-Service起動時のトランザクションの合意に必要なMediatorが起動しているかのチェック処理を中止することを防ぐためです。

この記述例では、Orchestrator-Serviceの開始に掛かる時間（180秒）の間に、スナップショットを複数回（3回）出力するように設定しています。

このオレンジ色の背景で示す行（「- name: snapshot-volume」の行から「mountPath: /ucars-snapshots」の行および「- name: snapshot-volume」の行から「claimName: snapshot-volume」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームをOrchestrator-Serviceコンテナ内にマウントします。

.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

このオレンジ色の背景で示す行（「- name: ucars」の行から「protocol: TCP」の行、「- name: ucars」の行から「targetPort: ucars」の行、および「monitor.rest.port=28081」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

「resources:」の行から「memory: 512Mi」の行で、Orchestrator-Serviceコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「env:」の行から「fieldPath: spec.nodeName」の行、および「processors:」の行から「name: ${HMPPCTO_NODE_NAME}」の行で、Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

Podライフサイクル設定のterminationGracePeriodSecondsを定義します。

「preStop:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpreStopフックを定義します。

オートスケールを使用しない場合だけ、replicasを設定します。

「resources:」の行から「requests:」の「memory: 2Gi」の行で、Filebeatコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「livenessProbe:」の行から「timeoutSeconds: 10」の行で、コンテナライフサイクル設定のLiveness Probeを定義します。

「postStart:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpostStartフックを定義します。

このオレンジ色の背景で示す行は、Google Cloud Platform環境の場合だけ記述します。securityContextを設定します。fsGroupにはコンテナ実行グループと同等の設定をしてください。

このオレンジ色の背景で示す行は、コンテナイメージをPullする際に資格情報が必要な場合に記述します。Red Hat OpenShift Container Platform環境で資格情報が不要な場合はimagePullSecrets: []を指定してください。

この記述例では、コンテキストパスを設定していない場合の「prometheus.io/path」の例を記載しています。

コンテキストパスを設定する場合は、パスを次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

2.6.3　Relay-ServiceのKubernetesマニフェストの作成

「7.5.2　Relay-Serviceの要件」に記載されている要件を満たすように、Relay-ServiceをデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1
kind: Deployment     …1
metadata:
  name: relay-service
  namespace: my-namespace
spec:
  replicas: 1     …17
  selector:
    matchLabels:
      app.kubernetes.io/name: relay-service
  template:
    metadata:
      labels:
        app.kubernetes.io/name: relay-service
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/path: '/hmppcto/metrics'     …24
        prometheus.io/port: '8080'     …4
    spec:
      serviceAccount: relay-service-service-account     …6
      securityContext:     …21
        fsGroup: 0
      imagePullSecrets:     …22
      - name: regcred
      initContainers:
      - name: dependency-checker     …2
        image: myregistry.example.com/myproject/dependency-checker:V.R.S※2
        args:
        - "30"
        - "10"
        - "10"
        - "10"
        - my-namespace/statefulsets/mediator
        - my-namespace/deployments/sql-participant※1
      containers:
      - name: relay-service     …3
        image: myregistry.example.com/myproject/relay-service:V.R.S※2
        resources:     …14
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: http     …4
          containerPort: 8080
          protocol: TCP
        - name: ucars     …13
          containerPort: 28081
          protocol: TCP
        env:
        - name: TZ     …7
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS     …10
          value: -XX:+UseG1GC
        volumeMounts:
        - name: relay-service-config     …5
          mountPath: /deployments/config
        - name: ucars-config     …11
          mountPath: /opt/hitachi/ucars/conf
        - name: snapshot-volume     …12
          mountPath: /ucars-snapshots
        - name: tomcat                …8
          mountPath: /deployments/tomcat
        livenessProbe:     …19
          exec:
            command:
            - /deployments/health_check.sh
            - "0"
            - "0"
            - "10"
            - "10"
            - "8080"
          initialDelaySeconds: 180
          periodSeconds: 30
          failureThreshold: 3
          timeoutSeconds: 10
        lifecycle:
          postStart:     …20
            exec:
              command:
              - /deployments/health_check.sh
              - "30"
              - "10"
              - "10"
              - "10"
              - "8080"
          preStop:     …23
            exec:
              command:
              - /bin/sh
              - -c
              - sleep 20
      - name: filebeat-sidecar     …9
        image: myregistry.example.com/myproject/filebeat:V.R.S※2
        resources:     …18
          limits:
            cpu: 1000m
            memory: 2Gi
          requests:
            cpu: 1000m
            memory: 2Gi
        args:
        - "-e"
        - "-E"
        - "http.enabled=true"
        env:     …15
        - name: HMPPCTO_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: HMPPCTO_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: HMPPCTO_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        livenessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                curl --fail 127.0.0.1:5066
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                filebeat test output
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        securityContext:
          runAsUser: 0
        volumeMounts:
         - name: beatconfig
           mountPath: /usr/share/filebeat/filebeat.yml
           readOnly: true
           subPath: filebeat.yml
         - name: tomcat     …8
           mountPath: /deployments/tomcat
      terminationGracePeriodSeconds: 180     …16
      volumes:
      - name: relay-service-config     …5
        configMap:
          name: relay-service-config
          items:
          - key: application.properties
            path: application.properties
      - name: ucars-config     …11
        configMap:
          name: relay-service-ucars-config
          items:
            - key: config.properties
              path: config.properties
      - name: snapshot-volume     …12
        persistentVolumeClaim:
          claimName: snapshot-volume
      - name: beatconfig  …9
        configMap:
          name: es-filebeat-sidecar-config
      - name: tomcat     …8
---
apiVersion: v1
kind: Service
metadata:
  name: relay-service
  namespace: my-namespace
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: relay-service
  ports:
  - name: http     …4
    protocol: TCP
    port: 8080
    targetPort: http
  - name: ucars     …13
    protocol: TCP
    port: 28081
    targetPort: ucars
---
apiVersion: v1     …5
kind: ConfigMap
metadata:
  name: relay-service-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    server.shutdown=graceful
    spring.lifecycle.timeout-per-shutdown-phase=140s
    jp.co.Hitachi.soft.hmppcto.client.proposer.type=SQL
    jp.co.Hitachi.soft.hmppcto.tracing.instance-id=Relay-Service_001
    jp.co.Hitachi.soft.hmppcto.tracing.url=http://jaeger-collector:14268/api/traces
    spring.datasource.type=jp.co.Hitachi.soft.hmppcto.jdbc.client.PctoDataSource
    spring.datasource.driver-class-name=jp.co.Hitachi.soft.hmppcto.jdbc.client.PctoDriver
    spring.datasource.url=http://localhost:20553
    spring.datasource.username=dummy
    spring.datasource.password=dummy
    jp.co.Hitachi.soft.hmppcto.use-scaling=true
    jp.co.Hitachi.soft.hmppcto.set-routing=inner
---
apiVersion: v1  …11
kind: ConfigMap
metadata:
  name: relay-service-ucars-config
  namespace: my-namespace
data:
  config.properties: |
    monitor.rest.bindaddress=0.0.0.0
    monitor.rest.port=28081     …13
    snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot
    monitor.jvm.options=-Dfile.encoding=UTF-8
---
apiVersion: v1  …9
kind: ConfigMap
metadata:
  name: es-filebeat-sidecar-config
  namespace: my-namespace
data:
  filebeat.yml: |
    filebeat.inputs:
      - type: filestream
        id: "tomcat"
        paths:
          - '/deployments/tomcat/logs/access_log.*.log'
    processors:     …15
      - add_fields:
          target: kubernetes
          fields:
            namespace: ${HMPPCTO_POD_NAMESPACE}
            pod:
              name: ${HMPPCTO_POD_NAME}
            node:
              name: ${HMPPCTO_NODE_NAME}
    output.logstash:
      hosts: ["logstash.my-namespace.svc.cluster.local:5044"]
---
apiVersion: v1
kind: ServiceAccount     …6
metadata:
  name: relay-service-service-account
  namespace: my-namespace

注※1

SQL-Participantを使用する場合の例を記述しています。

TCC-Participantを使用するときは、次の記述に置き換えてください。

- my-namespace/deployments/tcc-participant

TP1連携機能を使用するときは、次の記述に置き換えてください。<リリース名>は、「(15)　Kubernetesアプリケーションのデプロイ」でhelmコマンドに指定するリリース名を指定してください。

- my-namespace/deployments/<リリース名>

（例）

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

注※2

V.R.Sは使用するHMP-PCTOとFilebeatのバージョンに合わせて読み替えてください。

記述例の番号は、説明の番号と対応しています。

＜説明＞

この例では、各KubernetesオブジェクトのNamespace名（.metadata.namespaceフィールド）は、「my-namespace」としています。

ワークロードリソースを定義します。この例では、ワークロードリソースを「Deployment」としています。

「- name: dependency-checker」の行から「- my-namespace/deployments/sql-participant」の行で、初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

「- name: relay-service」の行から「- sleep 20」の行で、コンテナ構成にRelay-Serviceコンテナを定義します。「2.3.6　Relay-Serviceコンテナイメージの作成」で作成したコンテナイメージを指定します。

「prometheus.io/port: '8080'」の行、「- name: http」の行から「protocol: TCP」の行、および「- name: http」の行から「targetPort: http」の行で、ユーザ責務のKubernetesアプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

「- name: relay-service-config」の行から「mountPath: /deployments/config」の行、「- name: relay-service-config」の行から「path: application.properties」の行、および「apiVersion: v1」の行から「jp.co.Hitachi.soft.hmppcto.set-routing=inner」の行で、Relay-Serviceコンテナのパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。

「serviceAccount: relay-service-service-account」の行、および「apiVersion: v1」の行から「namespace: my-namespace」の行で、Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

「- name: TZ」の行から「value: Asia/Tokyo」の行で、Relay-Serviceコンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

「- name: tomcat」の行から「mountPath: /deployments/tomcat」の行、および「- name: tomcat」の行で、Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

このオレンジ色の背景で示す行（「- name: filebeat-sidecar」の行から「mountPath: /deployments/tomcat」の行、「- name: beatconfig」の行から「name: es-filebeat-sidecar-config」の行、および「apiVersion: v1」の行から「hosts: ["logstash.my-namespace.svc.cluster.local:5044"]」の行）は、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ記述します。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントし、 /deployments/tomcat にTomcatのログディレクトリをマウントします。この設定によってTomcatからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

「- name: HMPPCTO_JAVA_OPTIONS」の行から「value: -XX:+UseG1GC」の行で、Relay-ServiceのJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

このオレンジ色の背景で示す行（「- name: ucars-config」の行から「mountPath: /opt/hitachi/ucars/conf」の行、「- name: ucars-config」の行から「path: config.properties」の行、および「apiVersion: v1」の行から「monitor.jvm.options=-Dfile.encoding=UTF-8」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootの設定ファイル(config.properties)をRelay-Serviceコンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「11.6.2　情報の収集方法」を参照して設定してください。

monitor.jvm.options=-Dfile.encoding=UTF-8

プロセスモニタのエンコーディングにUTF-8を設定します。

このオレンジ色の背景で示す行（「- name: snapshot-volume」の行から「mountPath: /ucars-snapshots」の行、および「- name: snapshot-volume」の行から「claimName: snapshot-volume」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームをRelay-Serviceコンテナ内にマウントします。

.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

このオレンジ色の背景で示す行（「- name: ucars」の行から「protocol: TCP」の行、「- name: ucars」の行から「targetPort: ucars」の行、および「monitor.rest.port=28081」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

「resources:」の行から「memory: 512Mi」の行で、Relay-Serviceコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「env:」の行から「fieldPath: spec.nodeName」の行、および「processors:」の行から「name: ${HMPPCTO_NODE_NAME}」の行で、Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

Podライフサイクル設定のterminationGracePeriodSecondsを定義します。

オートスケールを使用しない場合だけ、replicasを設定します。

「resources:」の行から「requests:」の「memory: 2Gi」の行で、Filebeatコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「livenessProbe:」の行から「timeoutSeconds: 10」の行で、コンテナライフサイクル設定のLiveness Probeを定義します。

「postStart:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpostStartフックを定義します。

このオレンジ色の背景で示す行は、Google Cloud Platform環境の場合だけ記述します。securityContextを設定します。fsGroupにはコンテナ実行グループと同等の設定をしてください。

このオレンジ色の背景で示す行は、コンテナイメージをPullする際に資格情報が必要な場合に記述します。Red Hat OpenShift Container Platform環境で資格情報が不要な場合はimagePullSecrets: []を指定してください。

「preStop:」の行から「- sleep 20」の行で、コンテナライフサイクル設定のpreStopフックを定義します。

この記述例では、コンテキストパスを設定していない場合の「prometheus.io/path」の例を記載しています。

コンテキストパスを設定する場合は、パスを次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

2.6.4　Entity-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）

「7.5.3　Entity-Service(SQL)の要件（SQL-Participant限定）」に記載されている要件を満たすように、Entity-Service(SQL)をデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストは、通常版とトライアル版で差異があります。トライアル版のKubernetesマニフェストを基に通常版のKubernetesマニフェストを作成する場合は、通常版の記述例に従って修正してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1
kind: Deployment     …1
metadata:
  name: sql-participant
  namespace: my-namespace
spec:
  replicas: 1     …24
  selector:
    matchLabels:
      app.kubernetes.io/name: sql-participant     …26
  template:
    metadata:
      labels:
        app.kubernetes.io/name: sql-participant
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/path: '/hmppcto/metrics'     …29
        prometheus.io/port: '8080'     …13
    spec:
      serviceAccount: sql-participant-service-account     …10
      securityContext:     …27
        fsGroup: 0
      imagePullSecrets:     …28
      - name: regcred
      initContainers:
      - name: dependency-checker     …2
        image: myregistry.example.com/myproject/dependency-checker:V.R.S※1
        args:
        - "30"
        - "10"
        - "1"
        - "10"
        - my-namespace/statefulsets/mediator
        - my-namespace/statefulsets/eads-server※2
        - my-namespace/statefulsets/postgresql
      containers:
      - name: sql-participant     …3
        image: myregistry.example.com/myproject/sql-participant:V.R.S※1
        resources:     …21
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: http     …13
          containerPort: 8080
          protocol: TCP
        - name: ucars-sql  …20
          containerPort: 28081
          protocol: TCP
        env:
        - name: TZ     …12
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS     …17
          value: -XX:+UseG1GC
        volumeMounts:
        - name: sql-participant-config
          mountPath: /deployments/config
        - name: sql-participant-ucars-config  …18
          mountPath: /opt/hitachi/ucars/conf
        - name: snapshot-volume  …19
          mountPath: /ucars-snapshots
        - name: eads-config     …11
          mountPath: /eads-properties
        - name: tomcat     …15
          mountPath: /deployments/tomcat
        - name: eads   …16
          mountPath: /deployments/eads-log
        livenessProbe:     …6
          exec:
            command:
            - /deployments/health_check.sh
            - "0"
            - "0"
            - "10"
            - "10"
            - "8080"
          initialDelaySeconds: 180
          periodSeconds: 30
          failureThreshold: 3
          timeoutSeconds: 10
        lifecycle:
          postStart:     …7
            exec:
              command:
              - /deployments/health_check.sh
              - "30"
              - "10"
              - "10"
              - "10"
              - "8080"
          preStop:     …8
            exec:
              command:
              - /deployments/wait_transactions.sh
              - "10"
              - "10"
              - "10"
              - "10"
              - "8080"
      - name: filebeat-sidecar     …14
        image: myregistry.example.com/myproject/filebeat:V.R.S※1
        resources:     …25
          limits:
            cpu: 1000m
            memory: 2Gi
          requests:
            cpu: 1000m
            memory: 2Gi
        args:
        - "-e"
        - "-E"
        - "http.enabled=true"
        env:     …22
        - name: HMPPCTO_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: HMPPCTO_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: HMPPCTO_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        livenessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                curl --fail 127.0.0.1:5066
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                filebeat test output
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        securityContext:
          runAsUser: 0
        volumeMounts:
          - name: beatconfig
            mountPath: /usr/share/filebeat/filebeat.yml
            readOnly: true
            subPath: filebeat.yml
          - name: tomcat     …15
            mountPath: /deployments/tomcat
          - name: eads     …16
            mountPath: /deployments/eads-log
      terminationGracePeriodSeconds: 180     …9
      volumes:
      - name: snapshot-volume     …19
        persistentVolumeClaim:
          claimName: snapshot-volume
      - name: sql-participant-config
        configMap:
          name: sql-participant-config
          items:
          - key: application.properties
            path: application.properties
      - name: sql-participant-ucars-config …18
        configMap:
          name: sql-participant-ucars-config
          items:
            - key: config.properties
              path: config.properties
      - name: eads-config     …11
        configMap:
          name: eads-config
          items:
          - key: hmp-pcto.eads-client.properties
            path: hmp-pcto.eads-client.properties
      - name: beatconfig     …14
        configMap:
          name: sql-p-filebeat-sidecar-config
      - name: tomcat     …15
      - name: eads     …16
---
apiVersion: v1
kind: Service
metadata:
  name: sp
  namespace: my-namespace
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: sql-participant     …26
  ports:
  - name: http     …13
    protocol: TCP
    port: 8080
    targetPort: http
  - name: ucars-sql     …20
    protocol: TCP
    port: 28081
    targetPort: ucars-sql
---
apiVersion: v1     …5
kind: ConfigMap
metadata:
  name: sql-participant-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    server.shutdown=graceful
    spring.lifecycle.timeout-per-shutdown-phase=20s
    jp.co.Hitachi.soft.hmppcto.client.proposer.type=SQL
    spring.datasource.type=jp.co.Hitachi.soft.hmppcto.jdbc.client.PctoDataSource
    spring.datasource.driver-class-name=jp.co.Hitachi.soft.hmppcto.jdbc.client.PctoDriver
    spring.datasource.url=pctodriver
    spring.datasource.username=dummy
    spring.datasource.password=dummy
    spring.sql.init.mode=never
    jp.co.Hitachi.soft.hmppcto.sql.pod.service-name=sp.my-namespace
    jp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.path=/deployments/postgresql-42.2.22.jar
    jp.co.Hitachi.soft.hmppcto.sql.datasource.class-name=org.postgresql.xa.PGXADataSource
    jp.co.Hitachi.soft.hmppcto.sql.datasource.property.values=serverName=postgresql;portNumber=5432;databaseName=appuser1;user=appuser1;password=appuser1
    jp.co.Hitachi.soft.hmppcto.sql.pool.max-pool-size=10
    jp.co.Hitachi.soft.hmppcto.mediator.name=mediator
    jp.co.Hitachi.soft.hmppcto.mediator.name-suffix=.mediator.my-namespace.svc.cluster.local
    jp.co.Hitachi.soft.hmppcto.mediator.port=20551
    jp.co.Hitachi.soft.hmppcto.sql.db-type=PostgreSQL     …23
    jp.co.Hitachi.soft.hmppcto.tracing.instance-id=Entity-Service-SQL_001
    jp.co.Hitachi.soft.hmppcto.tracing.url=http://jaeger-collector:14268/api/traces
    jp.co.Hitachi.soft.hmppcto.use-scaling=true
    jp.co.Hitachi.soft.hmppcto.set-routing=inner
---
apiVersion: v1 …18
kind: ConfigMap
metadata:
  name: sql-participant-ucars-config
  namespace: my-namespace
data:
  config.properties: |
    monitor.rest.bindaddress=0.0.0.0
    monitor.rest.port=28081 …20
    snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot
    monitor.jvm.options=-Dfile.encoding=UTF-8
    healthcheck.startdelay.timeout=90000
    healthcheck.startdelay.actions.failure.retrymax=4
---
apiVersion: v1     …11
kind: ConfigMap
metadata:
  name: eads-config
  namespace: my-namespace
data:
  hmp-pcto.eads-client.properties: |
    eads.client.connect.servers=sv1,sv2,sv3
    eads.client.sv1.address=eads-service-eads-service-0.my-namespace
    eads.client.sv1.port=24600
    eads.client.sv2.address=eads-service-eads-service-1.my-namespace
    eads.client.sv2.port=24600
    eads.client.sv3.address=eads-service-eads-service-2.my-namespace
    eads.client.sv3.port=24600
    eads.client.logger.dir=eads-log
    eads.client.connectionPool.poolsize=1
---
apiVersion: v1     …10
kind: ServiceAccount
metadata:
  name: sql-participant-service-account
  namespace: my-namespace
---
apiVersion: v1     …14
kind: ConfigMap
metadata:
  name: sql-p-filebeat-sidecar-config
  namespace: my-namespace
data:
  filebeat.yml: |
    filebeat.inputs:
      - type: filestream
        id: "eads"
        paths:
          - '/deployments/eads-log/eads_client_message*.log'
          - '/deployments/eads-log/maintenance/eads_client_maintenance*.log'
      - type: filestream
        id: "tomcat"
        paths:
          - '/deployments/tomcat/logs/access_log.*.log'
    processors:     …22
      - add_fields:
          target: kubernetes
          fields:
            namespace: ${HMPPCTO_POD_NAMESPACE}
            pod:
              name: ${HMPPCTO_POD_NAME}
            node:
              name: ${HMPPCTO_NODE_NAME}
    output.logstash:
      hosts: ["logstash.my-namespace.svc.cluster.local:5044"]

注※1

V.R.Sは使用するHMP-PCTOとFilebeatのバージョンに合わせて読み替えてください。

注※2

通常版の場合はmy-namespace/statefulsets/eads-serverを記載してください。トライアル版の場合はmy-namespace/deployments/ext-consを記載してください。

記述例の番号は、説明の番号と対応しています。

＜説明＞

この例では、各KubernetesオブジェクトのNamespace名（.metadata.namespaceフィールド）は、「my-namespace」としています。

ワークロードリソースを定義します。この例では、ワークロードリソースを「Deployment」としています。

「- name: dependency-checker」の行から「- my-namespace/statefulsets/postgresql」の行で、初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

Dependency-Checkerの対象として接続するRDBMSのKubernetesオブジェクトを指定する必要があります。

この例では、「- my-namespace/statefulsets/postgresql」を指定しています。

「- name: sql-participant」の行から「preStop:」の「- "8080"」の行で、コンテナ構成にEntity-Service(SQL)コンテナを定義します。「2.3.7　Entity-Service(SQL)コンテナイメージの作成（SQL-Participant限定）」で作成したコンテナイメージを指定します。

欠番

「apiVersion: v1」の行から「jp.co.Hitachi.soft.hmppcto.set-routing=inner」の行で、Entity-Service(SQL)のパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。

「livenessProbe:」の行から「timeoutSeconds: 10」の行で、コンテナライフサイクル設定のLiveness Probeを定義します。

「postStart:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpostStartフックを定義します。

「preStop:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpreStopフックを定義します。

Podライフサイクル設定のterminationGracePeriodSecondsを定義します。

「serviceAccount: sql-participant-service-account」の行、および「apiVersion: v1」の行から「kind: ServiceAccount」の「namespace: my-namespace」の行で、Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

「- name: eads-config」の行から「mountPath: /eads-properties」の行、「- name: eads-config」の行から「path: hmp-pcto.eads-client.properties」の行、および「apiVersion: v1」の行から「eads.client.connectionPool.poolsize=1」の行で、EADSクライアント定義のパラメタを、EADSクライアント定義ファイルのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。EADSクライアント定義ファイルのディレクトリおよび名称は「9.2.5　SQL-Participant」のパラメタjp.co.Hitachi.soft.hmppcto.external-consensus.eads.propertiesに指定した値と合わせる必要があります。

トライアル版の場合、この定義は必要ありません。

「- name: TZ」の行から「value: Asia/Tokyo」の行で、Entity-Service(SQL)コンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

「prometheus.io/port: '8080'」の行、「- name: http」の行から「protocol: TCP」の行、および「- name: http」の行から「targetPort: http」の行で、ユーザ責務のKubernetes アプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

このオレンジ色の背景で示す行（「- name: filebeat-sidecar」の行から「mountPath: /deployments/eads-log」の行、「- name: beatconfig」の行から「name: sql-p-filebeat-sidecar-config」の行、および「apiVersion: v1」の行から「hosts: ["logstash.my-namespace.svc.cluster.local:5044"]」の行）は、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ記述します。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントします。この設定によってEADSからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

「- name: tomcat」の行から「mountPath: /deployments/tomcat」の行、および「- name: tomcat」の行で、Tomcatのベースディレクトリとして/deployments/tomcatをマウントします。

「- name: eads」の行から「mountPath: /deployments/eads-log」の行、および「- name: eads」の行で、EADSのログ出力ディレクトリとして/deployments/eads-logをマウントします。

「- name: HMPPCTO_JAVA_OPTIONS」の行から「value: -XX:+UseG1GC」の行で、Entity-Service(SQL)のJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

このオレンジ色の背景で示す行（「- name: sql-participant-ucars-config」の行から「mountPath: /opt/hitachi/ucars/conf」の行、「- name: sql-participant-ucars-config」の行から「path: config.properties」の行、および「apiVersion: v1」の行から「healthcheck.startdelay.actions.failure.retrymax=4」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootの設定ファイル(config.properties)をEntity-Service(SQL)コンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「11.6.2　情報の収集方法」を参照して設定してください。

monitor.jvm.options=-Dfile.encoding=UTF-8

プロセスモニタのエンコーディングにUTF-8を設定します。

healthcheck.startdelay.timeout=90000

モニタ対象プロセス（Entity-Service(SQL)）開始完了通知待ちタイムアウト時間を定義します。Entity-Service(SQL)の起動時に、設定した時間が経過するとsnapshot.log.filepathで指定した先にスナップショットを出力します。モニタ対象プロセス開始完了通知待ちタイムアウト時間の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

healthcheck.startdelay.actions.failure.retrymax=4

モニタ対象プロセス（Entity-Service(SQL)）開始完了通知待ちタイムアウトが発生した場合に、モニタ対象プロセス開始完了待ちをリトライする最大回数を定義します。最大リトライ回数を超えると、デフォルトの設定ではモニタ対象プロセスを停止します。モニタ対象プロセス開始完了待ちリトライ回数の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間（下記のA）とEntity-Service(SQL)の開始に掛かる時間（下記のB、およびC）の関係を、「A＞B＞C」にしてください。

A：モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間

healthcheck.startdelay.timeoutに指定した値×（healthcheck.startdelay.actions.failure.retrymaxに指定した値＋1）

B：postStartフックに指定するトランザクションヘルスチェックスクリプト（health_check.sh）の合計時間

リトライ回数×リトライ間隔秒数

C：コネクションプールの初期化で、DBとのコネクションの取得に失敗した場合に行うリトライの合計時間

sql.pool.connection-retry-interval-in-secondsに指定した値×sql.pool.connection-retry-limitに指定した値

AをBよりも大きな値にするのは、モニタ対象プロセス開始完了通知待ちタイムアウトによるプロセス停止が、postStartフックに指定するトランザクションヘルスチェックスクリプトによるEntity-Service(SQL)の開始完了待ちを中止することを防ぐためです。

BをCよりも大きな値とするのは、postStartフックに指定するトランザクションヘルスチェックスクリプトのタイムアウトによるEntity-Service(SQL)の停止が、Entity-Service(SQL)のコネクション接続処理を中止することを防ぐためです。

この記述例では、Entity-Service(SQL)の開始に掛かる時間（300秒）の間に、スナップショットを複数回（3回）出力するように設定しています。

このオレンジ色の背景で示す行（「- name: snapshot-volume」の行から「mountPath: /ucars-snapshots」の行、および「- name: snapshot-volume」の行から「claimName: snapshot-volume」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームをEntity-Service(SQL)コンテナ内にマウントします。.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

このオレンジ色の背景で示す行（「- name: ucars-sql」の行から「protocol: TCP」の行、「- name: ucars-sql」の行から「targetPort: ucars-sql」の行、および「monitor.rest.port=28081」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

「resources:」の行から「memory: 512Mi」の行で、Entity-Service(SQL)コンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「env:」の行から「fieldPath: spec.nodeName」の行、および「processors:」の行から「name: ${HMPPCTO_NODE_NAME}」の行で、Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

Entity-Service(SQL)が接続するRDBMSを指定します。PostgreSQLを指定する場合、「9.4.1　PostgreSQL（SQL-Participant限定）」のパラメタも確認してください。

オートスケールを使用しない場合だけ、replicasを設定します。

「resources」の行から「requests:」の「memory: 2Gi」の行で、Filebeatコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「app.kubernetes.io/name」を必ず指定してください。

「app.kubernetes.io/name」は、ほかのKubernetesアプリケーションに設定した値と異なる値を設定してください。

16バイト以内の文字列を指定してください。

Blue/Greenデプロイメントを実施する場合は、BlueとGreenの「app.kubernetes.io/name」には同一の値を設定してください。

このオレンジ色の背景で示す行は、Google Cloud Platform環境の場合だけ記述します。securityContextを設定します。fsGroupにはコンテナ実行グループと同等の設定をしてください。

このオレンジ色の背景で示す行は、コンテナイメージをPullする際に資格情報が必要な場合に記述します。Red Hat OpenShift Container Platform環境で資格情報が不要な場合はimagePullSecrets: []を指定してください。

この記述例では、コンテキストパスを設定していない場合の「prometheus.io/path」の例を記載しています。

コンテキストパスを設定する場合は、パスを次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

Entity-Service(SQL)を構成するPodを定義したKubernetesのServiceのService名とNamespace名の長さの合計は、40バイト以下としてください。

2.6.5　Entity-Service(TCC)のKubernetesマニフェストの作成（TCC-Participant限定）

「7.5.4　Entity-Service(TCC)の要件（TCC-Participant限定）」に記載されている要件を満たすように、Entity-Service(TCC)をデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストは、通常版とトライアル版で差異があります。トライアル版のKubernetesマニフェストを基に通常版のKubernetesマニフェストを作成する場合は、通常版の記述例に従って修正してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1
kind: Deployment     …1
metadata:
  name: tcc-participant
  namespace: my-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: tcc-participant
  template:
    metadata:
      labels:
        app.kubernetes.io/name: tcc-participant
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/path: '/hmppcto/metrics'     …25
        prometheus.io/port: '8080'     …4
    spec:
      serviceAccount: tcc-participant-service-account     …11
      securityContext:     …23
        fsGroup: 0
      imagePullSecrets:     …24
      - name: regcred
      initContainers:
      - name: dependency-checker     …2
        image: myregistry.example.com/myproject/dependency-checker:V.R.S※1
        args:
        - "30"
        - "10"
        - "10"
        - "10"
        - my-namespace/statefulsets/mediator
        - my-namespace/statefulsets/eads-server※2
      containers:
      - name: entity-module-tcc-participant     …3
        image: myregistry.example.com/myproject/entity-module-tcc-participant:V.R.S※1
        resources:     …21
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: http     …4
          containerPort: 8080
          protocol: TCP
        - name: ucars     …20
          containerPort: 28081
          protocol: TCP
        env:
        - name: TZ     …13
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS     …17
          value: -XX:+UseG1GC
        volumeMounts:
        - name: entity-module-tcc-participant-config     …6
          mountPath: /deployments/config
        - name: ucars-config     …18
          mountPath: /opt/hitachi/ucars/conf
        - name: snapshot-volume     …19
          mountPath: /ucars-snapshots
        - name: eads-config     …12
          mountPath: /eads-properties
        - name: tomcat     …15
          mountPath: /deployments/tomcat
        - name: eads     …16
          mountPath: /deployments/eads-log
        livenessProbe:     …7
          exec:
            command:
            - /deployments/health_check.sh
            - "0"
            - "0"
            - "10"
            - "10"
            - "8080"
          initialDelaySeconds: 180
          periodSeconds: 30
          failureThreshold: 3
          timeoutSeconds: 10
        lifecycle:
          postStart:     …8
            exec:
              command:
              - /deployments/health_check.sh
              - "30"
              - "10"
              - "10"
              - "10"
              - "8080"
          preStop:     …9
            exec:
              command:
              - /deployments/wait_transactions.sh
              - "10"
              - "10"
              - "10"
              - "10"
              - "8080"
      - name: filebeat-sidecar     …14
        image: myregistry.example.com/myproject/filebeat:V.R.S※1
        args:
        - "-e"
        - "-E"
        - "http.enabled=true"
        env:     …22
        - name: HMPPCTO_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: HMPPCTO_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: HMPPCTO_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        livenessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                curl --fail 127.0.0.1:5066
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                filebeat test output
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        securityContext:
          runAsUser: 0
        volumeMounts:
          - name: beatconfig
            mountPath: /usr/share/filebeat/filebeat.yml
            readOnly: true
            subPath: filebeat.yml
          - name: tomcat     …15
            mountPath: /deployments/tomcat
          - name: eads     …16
            mountPath: /deployments/eads-log
      terminationGracePeriodSeconds: 180     …10
      volumes:
      - name: entity-module-tcc-participant-config     …6
        configMap:
          name: entity-module-tcc-participant-config
          items:
          - key: application.properties
            path: application.properties
      - name: ucars-config     …18
        configMap:
          name: entity-module-tcc-participant-ucars-config
          items:
            - key: config.properties
              path: config.properties
      - name: snapshot-volume     …19
        persistentVolumeClaim:
          claimName: snapshot-volume
      - name: eads-config     …12
        configMap:
          name: eads-config
          items:
          - key: hmp-pcto.eads-client.properties
            path: hmp-pcto.eads-client.properties
      - name: beatconfig     …14
        configMap:
          name: tcc-p-filebeat-sidecar-config
      - name: tomcat     …15
      - name: eads     …16
---
apiVersion: v1
kind: Service
metadata:
  name: tp
  namespace: my-namespace
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: tcc-participant
  ports:
  - name: http     …4
    protocol: TCP
    port: 8080
    targetPort: http
  - name: ucars    …20
    protocol: TCP
    port: 28081
    targetPort: ucars
---
apiVersion: v1     …6
kind: ConfigMap
metadata:
  name: entity-module-tcc-participant-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    server.shutdown=graceful
    spring.lifecycle.timeout-per-shutdown-phase=20s
    jp.co.Hitachi.soft.hmppcto.tcc.pod.service-name=tp.my-namespace
    jp.co.Hitachi.soft.hmppcto.client.proposer.type=TCC
    jp.co.Hitachi.soft.hmppcto.mediator.name=mediator
    jp.co.Hitachi.soft.hmppcto.mediator.name-suffix=.mediator.my-namespace.svc.cluster.local
    jp.co.Hitachi.soft.hmppcto.mediator.port=20551
    jp.co.Hitachi.soft.hmppcto.tracing.instance-id=Entity-Service-TCC_001
    jp.co.Hitachi.soft.hmppcto.tracing.url=http://jaeger-collector:14268/api/traces
    jp.co.Hitachi.soft.hmppcto.use-scaling=false
---
apiVersion: v1     …18
kind: ConfigMap
metadata:
  name: entity-module-tcc-participant-ucars-config
  namespace: my-namespace
data:
  config.properties: |
    monitor.rest.bindaddress=0.0.0.0
    monitor.rest.port=28081     …20
    snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot
    monitor.jvm.options=-Dfile.encoding=UTF-8
---
apiVersion: v1     …12
kind: ConfigMap
metadata:
  name: eads-config
  namespace: my-namespace
data:
  hmp-pcto.eads-client.properties: |
    eads.client.connect.servers=sv1,sv2,sv3
    eads.client.sv1.address=eads-service-eads-service-0.my-namespace
    eads.client.sv1.port=24600
    eads.client.sv2.address=eads-service-eads-service-1.my-namespace
    eads.client.sv2.port=24600
    eads.client.sv3.address=eads-service-eads-service-2.my-namespace
    eads.client.sv3.port=24600
    eads.client.logger.dir=eads-log
    eads.client.connectionPool.poolsize=1
---
apiVersion: v1     …11
kind: ServiceAccount
metadata:
  name: tcc-participant-service-account
  namespace: my-namespace
---
apiVersion: v1     …14
kind: ConfigMap
metadata:
  name: tcc-p-filebeat-sidecar-config
  namespace: my-namespace
data:
  filebeat.yml: |
    filebeat.inputs:
      - type: filestream
        id: "eads"
        paths:
          - '/deployments/eads-log/eads_client_message*.log'
          - '/deployments/eads-log/maintenance/eads_client_maintenance*.log'
      - type: filestream
        id: "tomcat"
        paths:
          - '/deployments/tomcat/logs/access_log.*.log'
    processors:     …22
      - add_fields:
          target: kubernetes
          fields:
            namespace: ${HMPPCTO_POD_NAMESPACE}
            pod:
              name: ${HMPPCTO_POD_NAME}
            node:
              name: ${HMPPCTO_NODE_NAME}
    output.logstash:
      hosts: ["logstash.my-namespace.svc.cluster.local:5044"]

注※1

V.R.Sは使用するHMP-PCTOとFilebeatのバージョンに合わせて読み替えてください。

注※2

通常版の場合はmy-namespace/statefulsets/eads-serverを記載してください。トライアル版の場合はmy-namespace/deployments/ext-consを記載してください。

記述例の番号は、説明の番号と対応しています。

＜説明＞

この例では、各KubernetesオブジェクトのNamespace名（.metadata.namespaceフィールド）は、「my-namespace」としています。

ワークロードリソースを定義します。この例では、ワークロードリソースを「Deployment」としています。

「- name: dependency-checker」の行から「image: myregistry.example.com/myproject/dependency-checker:V.R.S」の行で、初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

「- name: tcc-participant」の行から「preStop:」の「- "8080"」の行で、コンテナ構成にEntity-Service(TCC)コンテナを定義します。「2.3.8　Entity-Service(TCC)コンテナイメージの作成（TCC-Participant限定）」で作成したコンテナイメージを指定します。

「prometheus.io/port: '8080'」の行、「- name: http」の行から「protocol: TCP」の行、および「- name: http」の行から「targetPort: http」の行で、ユーザ責務のKubernetesアプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

欠番

「- name: entity-module-tcc-participant-config」の行から「mountPath: /deployments/config」の行、「- name: entity-module-tcc-participant-config」の行から「path: application.properties」の行、および「apiVersion: v1」の行から「jp.co.Hitachi.soft.hmppcto.use-scaling=false」の行で、Entity-Service(TCC)コンテナのパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。

「livenessProbe:」の行から「timeoutSeconds: 10」の行で、コンテナライフサイクル設定のLiveness Probeを定義します。

「postStart:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpostStartフックを定義します。

「preStop:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpreStopフックを定義します。

Podライフサイクル設定のterminationGracePeriodSecondsを定義します。

「serviceAccount: tcc-participant-service-account」の行、および「apiVersion: v1」の行から「kind: ServiceAccount」の「namespace: my-namespace」の行で、Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

「- name: eads-config」の行から「mountPath: /eads-properties」の行、「- name: eads-config」の行から「path: hmp-pcto.eads-client.properties」の行、および「apiVersion: v1」の行から「eads.client.connectionPool.poolsize=1」の行で、EADSクライアント定義のパラメタを、EADSクライアント定義ファイルのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。EADSクライアント定義ファイルのディレクトリおよび名称は「9.2.6　TCC-Participant」のパラメタjp.co.Hitachi.soft.hmppcto.external-consensus.eads.propertiesに指定した値と合わせる必要があります。

トライアル版の場合、この定義は必要ありません。

「- name: TZ」の行から「value: Asia/Tokyo」の行で、Entity-Service(TCC)コンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

このオレンジ色の背景で示す行（「- name: filebeat-sidecar」の行から「mountPath: /deployments/eads-log」の行、「- name: beatconfig」の行から「name: tcc-p-filebeat-sidecar-config」の行、および「apiVersion: v1」の行から「hosts: ["logstash.my-namespace.svc.cluster.local:5044"]」の行）は、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ記述します。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントします。この設定によってEADSからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

「- name: tomcat」の行から「mountPath: /deployments/tomcat」の行、および「- name: tomcat」の行で、Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

「- name: eads」の行から「mountPath: /deployments/eads-log」の行、および「- name: eads」の行で、EADSのログ出力ディレクトリとして/deployments/eads-logをマウントします。

「- name: HMPPCTO_JAVA_OPTIONS」の行から「value: -XX:+UseG1GC」の行で、Entity-Service(TCC)のJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

このオレンジ色の背景で示す行（「- name: ucars-config」の行から「mountPath: /opt/hitachi/ucars/conf」の行、「- name: ucars-config」の行から「path: config.properties」の行、および「apiVersion: v1」の行から「monitor.jvm.options=-Dfile.encoding=UTF-8」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootの設定ファイル(config.properties)をEntity-Service(TCC)コンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「11.6.2　情報の収集方法」を参照して設定してください。

monitor.jvm.options=-Dfile.encoding=UTF-8

プロセスモニタのエンコーディングにUTF-8を設定します。

このオレンジ色の背景で示す行（「- name: snapshot-volume」の行から「mountPath: /ucars-snapshots」の行、および「- name: snapshot-volume」の行から「claimName: snapshot-volume」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームをEntity-Service(TCC)コンテナ内にマウントします。.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

このオレンジ色の背景で示す行（「- name: ucars」の行から「protocol: TCP」の行、「- name: ucars」の行から「targetPort: ucars」の行、および「monitor.rest.port=28081」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

「resources:」の行から「memory: 512Mi」の行で、Entity-Service(TCC)コンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールでMetrics-Serverを利用する場合は必ず指定してください。

「env:」の行から「fieldPath: spec.nodeName」の行、および「processors:」の行から「name: ${HMPPCTO_NODE_NAME}」の行で、Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

このオレンジ色の背景で示す行は、Google Cloud Platform環境の場合だけ記述します。securityContextを設定します。fsGroupにはコンテナ実行グループと同等の設定をしてください。

このオレンジ色の背景で示す行は、コンテナイメージをPullする際に資格情報が必要な場合に記述します。Red Hat OpenShift Container Platform環境で資格情報が不要な場合はimagePullSecrets: []を指定してください。

この記述例では、コンテキストパスを設定していない場合の「prometheus.io/path」の例を記載しています。

コンテキストパスを設定する場合は、パスを次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

Entity-Service(TCC)を構成するPodを定義したKubernetesのServiceのService名とNamespace名の長さの合計は、40バイト以下としてください。

2.6.6　Orchestrator-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）

「7.5.5　Orchestrator-Service(SQL)の要件（SQL-Participant限定）」に記載されている要件を満たすように、Orchestrator-Service(SQL)をデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストは、通常版とトライアル版で差異があります。トライアル版のKubernetesマニフェストを基に通常版のKubernetesマニフェストを作成する場合は、通常版の記述例に従って修正してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1
kind: Deployment     …1
metadata:
  name: orchestrator-sql
  namespace: my-namespace
spec:
  replicas: 1     …23
  selector:
    matchLabels:
      app.kubernetes.io/name: orchestrator-sql     …25
  template:
    metadata:
      labels:
        app.kubernetes.io/name: orchestrator-sql
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/path: '/hmppcto/metrics'     …28
        prometheus.io/port: '8080'     …12
    spec:
      serviceAccount: orchestrator-sql-service-account     …9
      securityContext:     …26
        fsGroup: 0
      imagePullSecrets:     …27
      - name: regcred
      initContainers:
      - name: dependency-checker     …2
        image: myregistry.example.com/myproject/dependency-checker:V.R.S※1
        args:
        - "30"
        - "10"
        - "10"
        - "10"
        - my-namespace/statefulsets/mediator
        - my-namespace/statefulsets/eads-server※2
        - my-namespace/statefulsets/postgresql
      containers:
      - name: orchestrator-sql     …3
        image: myregistry.example.com/myproject/orchestrator-sql:V.R.S※1
        resources:     …20
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: http     …12
          containerPort: 8080
          protocol: TCP
        - name: ucars     …19
          containerPort: 28081
          protocol: TCP
        env:
        - name: TZ     …11
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS     …16
          value: -XX:+UseG1GC
        volumeMounts:
        - name: orchestrator-sql-config
          mountPath: /deployments/config
        - name: orchestrator-sql-ucars-config  …17
          mountPath: /opt/hitachi/ucars/conf
        - name: snapshot-volume  …18
          mountPath: /ucars-snapshots
        - name: eads-config     …10
          mountPath: /eads-properties
        - name: tomcat     …14
          mountPath: /deployments/tomcat
        - name: eads   …15
          mountPath: /deployments/eads-log
        livenessProbe:     …5
          exec:
            command:
            - /deployments/health_check.sh
            - "0"
            - "0"
            - "10"
            - "10"
            - "8080"
          initialDelaySeconds: 180
          periodSeconds: 30
          failureThreshold: 3
          timeoutSeconds: 10
        lifecycle:
          postStart:     …6
            exec:
              command:
              - /deployments/health_check.sh
              - "30"
              - "10"
              - "10"
              - "10"
              - "8080"
          preStop:     …7
            exec:
              command:
              - /deployments/wait_transactions.sh
              - "10"
              - "10"
              - "10"
              - "10"
              - "8080"
      - name: filebeat-sidecar     …13
        image: myregistry.example.com/myproject/filebeat:V.R.S※1
        resources:     …24
          limits:
            cpu: 1000m
            memory: 2Gi
          requests:
            cpu: 1000m
            memory: 2Gi
        args:
        - "-e"
        - "-E"
        - "http.enabled=true"
        env:     …21
        - name: HMPPCTO_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: HMPPCTO_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: HMPPCTO_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        livenessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                curl --fail 127.0.0.1:5066
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                filebeat test output
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        securityContext:
          runAsUser: 0
        volumeMounts:
          - name: beatconfig
            mountPath: /usr/share/filebeat/filebeat.yml
            readOnly: true
            subPath: filebeat.yml
          - name: tomcat     …14
            mountPath: /deployments/tomcat
          - name: eads     …15
            mountPath: /deployments/eads-log
      terminationGracePeriodSeconds: 180     …8
      volumes:
      - name: snapshot-volume     …18
        persistentVolumeClaim:
          claimName: snapshot-volume
      - name: orchestrator-sql-config
        configMap:
          name: orchestrator-sql-config
          items:
          - key: application.properties
            path: application.properties
      - name: orchestrator-sql-ucars-config     …17
        configMap:
          name: orchestrator-sql-ucars-config
          items:
            - key: config.properties
              path: config.properties
      - name: eads-config     …10
        configMap:
          name: eads-config
          items:
          - key: hmp-pcto.eads-client.properties
            path: hmp-pcto.eads-client.properties
      - name: beatconfig     …13
        configMap:
          name: orchestrator-sql-filebeat-sidecar-config
      - name: tomcat     …14
      - name: eads     …15
---
apiVersion: v1
kind: Service
metadata:
  name: orchestrator-sql
  namespace: my-namespace
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: orchestrator-sql
  ports:
  - name: http     …12
    protocol: TCP
    port: 8080
    targetPort: http
  - name: ucars     …19
    protocol: TCP
    port: 28081
    targetPort: ucars
---
apiVersion: v1     …4
kind: ConfigMap
metadata:
  name: orchestrator-sql-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    server.shutdown=graceful
    spring.lifecycle.timeout-per-shutdown-phase=20s
    jp.co.Hitachi.soft.hmppcto.learner.consensus-type=Three-Quarters
    jp.co.Hitachi.soft.hmppcto.mediator.name=mediator
    jp.co.Hitachi.soft.hmppcto.mediator.name-suffix=.mediator.my-namespace.svc.cluster.local
    jp.co.Hitachi.soft.hmppcto.mediator.size=5
    jp.co.Hitachi.soft.hmppcto.instance-id=orchestratorsql
    jp.co.Hitachi.soft.hmppcto.client.proposer.type=SQL
    spring.datasource.type=jp.co.Hitachi.soft.hmppcto.jdbc.client.PctoDataSource
    spring.datasource.driver-class-name=jp.co.Hitachi.soft.hmppcto.jdbc.client.PctoDriver
    spring.datasource.url=pctodriver
    spring.datasource.username=dummy
    spring.datasource.password=dummy
    spring.sql.init.mode=never
    jp.co.Hitachi.soft.hmppcto.sql.pod.service-name=sp.my-namespace
    jp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.path=/deployments/postgresql-42.2.22.jar
    jp.co.Hitachi.soft.hmppcto.sql.datasource.class-name=org.postgresql.xa.PGXADataSource
    jp.co.Hitachi.soft.hmppcto.sql.datasource.property.values=serverName=postgresql;portNumber=5432;databaseName=appuser1;user=appuser1;password=appuser1
    jp.co.Hitachi.soft.hmppcto.sql.pool.max-pool-size=10
    jp.co.Hitachi.soft.hmppcto.mediator.port=20551
    jp.co.Hitachi.soft.hmppcto.sql.db-type=PostgreSQL     …22
    jp.co.Hitachi.soft.hmppcto.tracing.instance-id=Orchestrator-Service-SQL_001
    jp.co.Hitachi.soft.hmppcto.tracing.url=http://jaeger-collector:14268/api/traces
    jp.co.Hitachi.soft.hmppcto.use-scaling=true
    jp.co.Hitachi.soft.hmppcto.set-routing=inner
---
apiVersion: v1 …17
kind: ConfigMap
metadata:
  name: orchestrator-sql-ucars-config
  namespace: my-namespace
data:
  config.properties: |
    monitor.rest.bindaddress=0.0.0.0
    monitor.rest.port=28081 …19
    snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot
    monitor.jvm.options=-Dfile.encoding=UTF-8
    healthcheck.startdelay.timeout=90000
    healthcheck.startdelay.actions.failure.retrymax=4
---
apiVersion: v1     …10
kind: ConfigMap
metadata:
  name: eads-config
  namespace: my-namespace
data:
  hmp-pcto.eads-client.properties: |
    eads.client.connect.servers=sv1,sv2,sv3
    eads.client.sv1.address=eads-service-eads-service-0.my-namespace
    eads.client.sv1.port=24600
    eads.client.sv2.address=eads-service-eads-service-1.my-namespace
    eads.client.sv2.port=24600
    eads.client.sv3.address=eads-service-eads-service-2.my-namespace
    eads.client.sv3.port=24600
    eads.client.logger.dir=eads-log
    eads.client.connectionPool.poolsize=1
---
apiVersion: v1     …9
kind: ServiceAccount
metadata:
  name: orchestrator-sql-service-account
  namespace: my-namespace
---
apiVersion: v1     …13
kind: ConfigMap
metadata:
  name: orchestrator-sql-filebeat-sidecar-config
  namespace: my-namespace
data:
  filebeat.yml: |
    filebeat.inputs:
      - type: filestream
        id: "eads"
        paths:
          - '/deployments/eads-log/eads_client_message*.log'
          - '/deployments/eads-log/maintenance/eads_client_maintenance*.log'
      - type: filestream
        id: "tomcat"
        paths:
          - '/deployments/tomcat/logs/access_log.*.log'
    processors:     …21
      - add_fields:
          target: kubernetes
          fields:
            namespace: ${HMPPCTO_POD_NAMESPACE}
            pod:
              name: ${HMPPCTO_POD_NAME}
            node:
              name: ${HMPPCTO_NODE_NAME}
    output.logstash:
      hosts: ["logstash.my-namespace.svc.cluster.local:5044"]

注※1

V.R.Sは使用するHMP-PCTOとFilebeatのバージョンに合わせて読み替えてください。

注※2

通常版の場合はmy-namespace/statefulsets/eads-serverを記載してください。トライアル版の場合はmy-namespace/deployments/ext-consを記載してください。

記述例の番号は、説明の番号と対応しています。

＜説明＞

この例では、各KubernetesオブジェクトのNamespace名（.metadata.namespaceフィールド）は、「my-namespace」としています。

ワークロードリソースを定義します。この例では、ワークロードリソースを「Deployment」としています。

「- name: dependency-checker」の行から「- my-namespace/statefulsets/postgresql」の行で、初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

Dependency-Checkerの対象として接続するRDBMSのKubernetesオブジェクトを指定する必要があります。

この例では、「- my-namespace/statefulsets/postgresql」を指定しています。

「- name: orchestrator-sql」の行から「preStop:」の「- "8080"」の行で、コンテナ構成にOrchestrator-Service(SQL)コンテナを定義します。「2.3.9　Orchestrator-Service(SQL)コンテナイメージの作成（SQL-Participant限定）」で作成したコンテナイメージを指定します。

「apiVersion: v1」の行から「jp.co.Hitachi.soft.hmppcto.set-routing=inner」の行で、Orchestrator-Service(SQL)のパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。

「livenessProbe:」の行から「timeoutSeconds: 10」の行で、コンテナライフサイクル設定のLiveness Probeを定義します。

「postStart:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpostStartフックを定義します。

「preStop:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpreStopフックを定義します。

Podライフサイクル設定のterminationGracePeriodSecondsを定義します。

「serviceAccount: orchestrator-sql-service-account」の行、および「apiVersion: v1」の行から「kind: ServiceAccount」の「namespace: my-namespace」の行で、Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

「- name: eads-config」の行から「mountPath: /eads-properties」の行、「- name: eads-config」の行から「path: hmp-pcto.eads-client.properties」の行、および「apiVersion: v1」の行から「eads.client.connectionPool.poolsize=1」の行で、EADSクライアント定義のパラメタを、EADSクライアント定義ファイルのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。EADSクライアント定義ファイルのディレクトリおよび名称は「9.2.5　SQL-Participant」のパラメタjp.co.Hitachi.soft.hmppcto.external-consensus.eads.propertiesに指定した値と合わせる必要があります。

トライアル版の場合、この定義は必要ありません。

「- name: TZ」の行から「value: Asia/Tokyo」の行で、Orchestrator-Service(SQL)コンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

「prometheus.io/port: '8080'」の行、「- name: http」の行から「protocol: TCP」の行、および「- name: http」の行から「targetPort: http」の行で、ユーザ責務のKubernetes アプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

このオレンジ色の背景で示す行（「- name: filebeat-sidecar」の行から「mountPath: /deployments/eads-log」の行、「- name: beatconfig」の行から「name: orchestrator-sql-filebeat-sidecar-config」の行、および「apiVersion: v1」の行から「hosts: ["logstash.my-namespace.svc.cluster.local:5044"]」の行）は、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ記述します。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントします。この設定によってEADSからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

「- name: tomcat」の行から「mountPath: /deployments/tomcat」の行、および「- name: tomcat」の行で、Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

「- name: eads」の行から「mountPath: /deployments/eads-log」の行、および「- name: eads」の行で、EADSのログ出力ディレクトリとして/deployments/eads-logをマウントします。

「- name: HMPPCTO_JAVA_OPTIONS」の行から「value: -XX:+UseG1GC」の行で、Orchestrator-Service(SQL)のJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

このオレンジ色の背景で示す行（「- name: orchestrator-sql-ucars-config」の行から「mountPath: /opt/hitachi/ucars/conf」の行、「- name: orchestrator-sql-ucars-config」の行から「path: config.properties」の行、および「apiVersion: v1」の行から「healthcheck.startdelay.actions.failure.retrymax=4」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootの設定ファイル(config.properties)をOrchestrator-Service(SQL)コンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「11.6.2　情報の収集方法」を参照して設定してください。

monitor.jvm.options=-Dfile.encoding=UTF-8

プロセスモニタのエンコーディングにUTF-8を設定します。

healthcheck.startdelay.timeout=90000

モニタ対象プロセス（Orchestrator-Service(SQL)）開始完了通知待ちタイムアウト時間を定義します。Orchestrator-Service(SQL)の起動時に、設定した時間が経過するとsnapshot.log.filepathで指定した先にスナップショットを出力します。モニタ対象プロセス開始完了通知待ちタイムアウト時間の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

healthcheck.startdelay.actions.failure.retrymax=4

モニタ対象プロセス（Orchestrator-Service(SQL)）開始完了通知待ちタイムアウトが発生した場合に、モニタ対象プロセス開始完了待ちをリトライする最大回数を定義します。最大リトライ回数を超えると、デフォルトの設定ではモニタ対象プロセスを停止します。モニタ対象プロセス開始完了待ちリトライ回数の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間（下記のA）とOrchestrator-Service(SQL)の開始に掛かる時間（下記のB、およびC）の関係を、「A＞B＞C」にしてください。

A：モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間

healthcheck.startdelay.timeoutに指定した値×（healthcheck.startdelay.actions.failure.retrymaxに指定した値＋1）

B：postStartフックに指定するトランザクションヘルスチェックスクリプト（health_check.sh）の合計時間

リトライ回数×リトライ間隔秒数

C：コネクションプールの初期化で、DBとのコネクションの取得に失敗した場合に行うリトライの合計時間

sql.pool.connection-retry-interval-in-secondsに指定した値×sql.pool.connection-retry-limitに指定した値

AをBよりも大きな値にするのは、モニタ対象プロセス開始完了通知待ちタイムアウトによるプロセス停止が、postStartフックに指定するトランザクションヘルスチェックスクリプトによるOrchestrator-Service(SQL)の開始完了待ちを中止することを防ぐためです。

BをCよりも大きな値とするのは、postStartフックに指定するトランザクションヘルスチェックスクリプトのタイムアウトによるOrchestrator-Service(SQL)の停止が、Orchestrator-Service(SQL)のコネクション接続処理を中止することを防ぐためです。

この記述例では、Orchestrator-Service(SQL)の開始に掛かる時間（300秒）の間に、スナップショットを複数回（3回）出力するように設定しています。

このオレンジ色の背景で示す行（「- name: snapshot-volume」の行から「mountPath: /ucars-snapshots」の行、および「- name: snapshot-volume」の行から「claimName: snapshot-volume」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームをOrchestrator-Service(SQL)コンテナ内にマウントします。.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

このオレンジ色の背景で示す行（「- name: ucars」の行から「protocol: TCP」の行、「- name: ucars」の行から「targetPort: ucars」の行、および「monitor.rest.port=28081」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

「resources:」の行から「memory: 512Mi」の行で、Orchestrator-Service(SQL)コンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「env:」の行から「fieldPath: spec.nodeName」の行、および「processors:」の行から「name: ${HMPPCTO_NODE_NAME}」の行で、Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

Orchestrator-Service(SQL)が接続するRDBMSを指定します。PostgreSQLを指定する場合、「9.4.1　PostgreSQL（SQL-Participant限定）」のパラメタも確認してください。

オートスケールを使用しない場合だけ、replicasを設定します。

「resources:」の行から「requests:」の「memory: 2Gi」の行で、Filebeatコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「app.kubernetes.io/name」を必ず指定してください。

「app.kubernetes.io/name」は、ほかのKubernetesアプリケーションに設定した値と異なる値を設定してください。

16バイト以内の文字列を指定してください。

Blue/Greenデプロイメントを実施する場合は、BlueとGreenの「app.kubernetes.io/name」には同一の値を設定してください。

このオレンジ色の背景で示す行は、Google Cloud Platform環境の場合だけ記述します。securityContextを設定します。fsGroupにはコンテナ実行グループと同等の設定をしてください。

このオレンジ色の背景で示す行は、コンテナイメージをPullする際に資格情報が必要な場合に記述します。Red Hat OpenShift Container Platform環境で資格情報が不要な場合はimagePullSecrets: []を指定してください。

この記述例では、コンテキストパスを設定していない場合の「prometheus.io/path」の例を記載しています。

コンテキストパスを設定する場合は、パスを次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

Orchestrator-Service(SQL)を構成するPodを定義したKubernetesのServiceのService名とNamespace名の長さの合計は、40バイト以下としてください。

2.6.7　Alternate-ServiceのKubernetesマニフェストの作成

「7.5.6　Alternate-Serviceの要件」に記載されている要件を満たすように、Alternate-ServiceをデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1
kind: Deployment     …1
metadata:
  name: alternate-service
  namespace: my-namespace
spec:
  replicas: 1     …18
  selector:
    matchLabels:
      app.kubernetes.io/name: alternate-service
  template:
    metadata:
      labels:
        app.kubernetes.io/name: alternate-service
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/path: '/hmppcto/metrics'     …24
        prometheus.io/port: '8080'     …4
    spec:
      serviceAccount: alternate-service-service-account
      securityContext:     …22
        fsGroup: 0
      imagePullSecrets:     …23
      - name: regcred
      initContainers:
      - name: dependency-checker     …2
        image: myregistry.example.com/myproject/dependency-checker:V.R.S※1
        args:
        - "30"
        - "10"
        - "10"
        - "10"
        - my-namespace/deployments/sql-participant※2
      containers:
      - name: alternate-service     …3
        image: myregistry.example.com/myproject/alternate-service:V.R.S※1
        resources:     …14
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: http
          containerPort: 8080
          protocol: TCP
        - name: ucars     …13
          containerPort: 28081
          protocol: TCP
        env:
        - name: TZ     …7
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS     …10
          value: -XX:+UseG1GC
        volumeMounts:
        - name: config     …5
          mountPath: /deployments/config
        - name: ucars-config     …11
          mountPath: /opt/hitachi/ucars/conf
        - name: snapshot-volume     …12
          mountPath: /ucars-snapshots
        - name: tomcat     …8
          mountPath: /deployments/tomcat
        livenessProbe:      …20
          exec:
            command:
            - /deployments/health_check.sh
            - "0"
            - "0"
            - "10"
            - "10"
            - "8080"
          initialDelaySeconds: 180
          periodSeconds: 30
          failureThreshold: 3
          timeoutSeconds: 10
        lifecycle:
          postStart:     …21
            exec:
              command:
              - /deployments/health_check.sh
              - "30"
              - "10"
              - "10"
              - "10"
              - "8080"
          preStop:     …17
            exec:
              command:
              - /deployments/wait_transactions.sh
              - "10"
              - "10"
              - "10"
              - "10"
              - "8080"
      - name: filebeat-sidecar     …9
        image: myregistry.example.com/myproject/filebeat:V.R.S※1
        resources:     …19
          limits:
            cpu: 1000m
            memory: 2Gi
          requests:
            cpu: 1000m
            memory: 2Gi
        args:
        - "-e"
        - "-E"
        - "http.enabled=true"
        env:     …15
        - name: HMPPCTO_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: HMPPCTO_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: HMPPCTO_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        livenessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                curl --fail 127.0.0.1:5066
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                filebeat test output
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        securityContext:
          runAsUser: 0
        volumeMounts:
         - name: beatconfig
           mountPath: /usr/share/filebeat/filebeat.yml
           readOnly: true
           subPath: filebeat.yml
         - name: tomcat     …8
           mountPath: /deployments/tomcat
      terminationGracePeriodSeconds: 180     …16
      volumes:
      - name: config     …5
        configMap:
          name: alternate-service-config
          items:
          - key: application.properties
            path: application.properties
      - name: ucars-config     …11
        configMap:
          name: alternate-service-ucars-config
          items:
            - key: config.properties
              path: config.properties
      - name: snapshot-volume     …12
        persistentVolumeClaim:
          claimName: snapshot-volume
      - name: beatconfig    …9
        configMap:
          name: alternate-service-filebeat-sidecar-config
      - name: tomcat     …8
---
apiVersion: v1
kind: Service
metadata:
  name: alternate-service
  namespace: my-namespace
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: alternate-service
  ports:
  - name: http     …4
    protocol: TCP
    port: 8080
    targetPort: http
  - name: ucars    …13
    protocol: TCP
    port: 28081
    targetPort: ucars
---
apiVersion: v1     …5
kind: ConfigMap
metadata:
  name: alternate-service-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    server.shutdown=graceful
    spring.lifecycle.timeout-per-shutdown-phase=20s
    jp.co.Hitachi.soft.hmppcto.learner.consensus-type=Three-Quarters
    jp.co.Hitachi.soft.hmppcto.mediator.name=mediator
    jp.co.Hitachi.soft.hmppcto.mediator.name-suffix=.mediator.my-namespace.svc.cluster.local
    jp.co.Hitachi.soft.hmppcto.mediator.size=5
    jp.co.Hitachi.soft.hmppcto.instance-id=alternate-service
    jp.co.Hitachi.soft.hmppcto.tracing.instance-id=Alternate-Service_001
    jp.co.Hitachi.soft.hmppcto.tracing.url=http://jaeger-collector:14268/api/traces
    jp.co.Hitachi.soft.hmppcto.client.proposer.type=SQL
    jp.co.Hitachi.soft.hmppcto.use-scaling=true
    jp.co.Hitachi.soft.hmppcto.set-routing=inner
---
apiVersion: v1     …11
kind: ConfigMap
metadata:
  name: alternate-service-ucars-config
  namespace: my-namespace
data:
  config.properties: |
    monitor.rest.bindaddress=0.0.0.0
    monitor.rest.port=28081     …13
    snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot
    monitor.jvm.options=-Dfile.encoding=UTF-8
    healthcheck.startdelay.timeout=60000
    healthcheck.startdelay.actions.failure.retrymax=4
---
apiVersion: v1     …9
kind: ConfigMap
metadata:
  name: alternate-service-filebeat-sidecar-config
  namespace: my-namespace
data:
  filebeat.yml: |
    filebeat.inputs:
      - type: filestream
        id: "tomcat"
        paths:
          - '/deployments/tomcat/logs/access_log.*.log'
    processors:     …15
      - add_fields:
          target: kubernetes
          fields:
            namespace: ${HMPPCTO_POD_NAMESPACE}
            pod:
              name: ${HMPPCTO_POD_NAME}
            node:
              name: ${HMPPCTO_NODE_NAME}
    output.logstash:
      hosts: ["logstash.my-namespace.svc.cluster.local:5044"]
---
apiVersion: v1     …6
kind: ServiceAccount
metadata:
  name: alternate-service-service-account
  namespace: my-namespace

注※1

V.R.Sは使用するHMP-PCTOとFilebeatのバージョンに合わせて読み替えてください。

注※2

SQL-Participantを使用する場合の例を記述しています。

TCC-Participantを使用するときは、次の記述に置き換えてください。

- my-namespace/deployments/tcc-participant

TP1連携機能を使用するときは、次の記述に置き換えてください。<リリース名>は、「(15)　Kubernetesアプリケーションのデプロイ」でhelmコマンドに指定するリリース名を指定してください。

- my-namespace/deployments/<リリース名>

（例）

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

記述例の番号は、説明の番号と対応しています。

＜説明＞

この例では、各KubernetesオブジェクトのNamespace名（.metadata.namespaceフィールド）は、「my-namespace」としています。

ワークロードリソースを定義します。この例では、ワークロードリソースを「Deployment」としています。

「- name: dependency-checker」の行から「- my-namespace/deployments/sql-participant」の行で、初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

「- name: alternate-service」の行から「preStop:」の「- "8080"」の行で、コンテナ構成にAlternate-Serviceコンテナを定義します。「2.3.10　Alternate-Serviceコンテナイメージの作成」で作成したコンテナイメージを指定します。

「prometheus.io/port: '8080'」の行、および「- name: http」の行から「targetPort: http」の行で、ユーザ責務のKubernetesアプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

「- name: config」の行から「mountPath: /deployments/config」の行、「- name: config」の行から「path: application.properties」の行、および「apiVersion: v1」の行から「jp.co.Hitachi.soft.hmppcto.set-routing=inner」の行で、Alternate-Serviceコンテナのパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、設定するパラメタは最小限の例としています。

「apiVersion: v1」の行から「kind: ServiceAccount」の「namespace: my-namespace」の行で、Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

「- name: TZ」の行から「value: Asia/Tokyo」の行で、Alternate-Serviceコンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

「- name: tomcat」の行から「mountPath: /deployments/tomcat」の行、および「- name: tomcat」の行で、Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

このオレンジ色の背景で示す行（「- name: filebeat-sidecar」の行から「mountPath: /deployments/tomcat」の行、「- name: beatconfig」の行から「name: alternate-service-filebeat-sidecar-config」の行、および「apiVersion: v1」の行から「hosts: ["logstash.my-namespace.svc.cluster.local:5044"]」の行）は、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ記述します。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントし、 /deployments/tomcat にTomcatのログディレクトリをマウントします。この設定によってTomcatからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

「- name: HMPPCTO_JAVA_OPTIONS」の行から「value: -XX:+UseG1GC」の行で、Alternate-ServiceのJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

このオレンジ色の背景で示す行（「- name: ucars-config」の行から「mountPath: /opt/hitachi/ucars/conf」の行、「- name: ucars-config」の行から「path: config.properties」の行、および「apiVersion: v1」の行から「healthcheck.startdelay.actions.failure.retrymax=4」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootの設定ファイル(config.properties)をAlternate-Serviceコンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「11.6.2　情報の収集方法」を参照して設定してください。

monitor.jvm.options=-Dfile.encoding=UTF-8

プロセスモニタのエンコーディングにUTF-8を設定します。

healthcheck.startdelay.timeout=60000

モニタ対象プロセス（Alternate-Service）開始完了通知待ちタイムアウト時間を定義します。Alternate-Serviceの起動時に、設定した時間が経過するとsnapshot.log.filepathで指定した先にスナップショットを出力します。モニタ対象プロセス開始完了通知待ちタイムアウト時間の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

healthcheck.startdelay.actions.failure.retrymax=4

モニタ対象プロセス（Alternate-Service）開始完了通知待ちタイムアウトが発生した場合に、モニタ対象プロセス開始完了待ちをリトライする最大回数を定義します。最大リトライ回数を超えると、デフォルトの設定ではモニタ対象プロセスを停止します。モニタ対象プロセス開始完了待ちリトライ回数の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間（下記のA）とAlternate-Serviceの開始に掛かる時間（下記のB）の関係を、「A＞B」にしてください。

A：モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間

healthcheck.startdelay.timeoutに指定した値×（healthcheck.startdelay.actions.failure.retrymaxに指定した値＋1）

B：Alternate-Service起動時に、トランザクションの合意に必要なMediatorが起動しているかのチェックのリトライ時間

jp.co.Hitachi.soft.hmppcto.mediator.discovery-interval-in-millisに指定した値×jp.co.Hitachi.soft.hmppcto.mediator.discovery-retry-countに指定した値

AをBよりも大きな値とするのは、モニタ対象プロセス開始完了通知待ちタイムアウトによるプロセス停止が、Alternate-Service起動時のトランザクションの合意に必要なMediatorが起動しているかのチェック処理を中止することを防ぐためです。

この記述例では、Alternate-Serviceの開始に掛かる時間（180秒）の間に、スナップショットを複数回（3回）出力するように設定しています。

このオレンジ色の背景で示す行（「- name: snapshot-volume」の行から「mountPath: /ucars-snapshots」の行、および「- name: snapshot-volume」の行から「claimName: snapshot-volume」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームをAlternate-Serviceコンテナ内にマウントします。

.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

このオレンジ色の背景で示す行（「- name: ucars」の行から「protocol: TCP」の行、「- name: ucars」の行から「targetPort: ucars」の行、および「monitor.rest.port=28081」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

「resources:」の行から「memory: 512Mi」の行で、Alternate-Serviceコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「env:」の行から「fieldPath: spec.nodeName」の行、および「processors:」の行から「name: ${HMPPCTO_NODE_NAME}」の行で、Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

Podライフサイクル設定のterminationGracePeriodSecondsを定義します。

「preStop:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpreStopフックを定義します。

オートスケールを使用しない場合だけ、replicasを設定します。

「resources:」の行から「requests:」の「memory: 2Gi」の行で、Filebeatコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「livenessProbe:」の行から「timeoutSeconds: 10」の行で、コンテナライフサイクル設定のLiveness Probeを定義します。

「postStart:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpostStartフックを定義します。

このオレンジ色の背景で示す行は、Google Cloud Platform環境の場合だけ記述します。securityContextを設定します。fsGroupにはコンテナ実行グループと同等の設定をしてください。

このオレンジ色の背景で示す行は、コンテナイメージをPullする際に資格情報が必要な場合に記述します。Red Hat OpenShift Container Platform環境で資格情報が不要な場合はimagePullSecrets: []を指定してください。

この記述例では、コンテキストパスを設定していない場合の「prometheus.io/path」の例を記載しています。

コンテキストパスを設定する場合は、パスを次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

2.6.8　Alternate-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）

「7.5.7　Alternate-Service(SQL)の要件（SQL-Participant限定）」に記載されている要件を満たすように、Alternate-Service(SQL)）をデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストは、通常版とトライアル版で差異があります。トライアル版のKubernetesマニフェストを基に通常版のKubernetesマニフェストを作成する場合は、通常版の記述例に従って修正してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1
kind: Deployment     …1
metadata:
  name: alternate-service-sql
  namespace: my-namespace
spec:
  replicas: 1     …23
  selector:
    matchLabels:
      app.kubernetes.io/name: alternate-service-sql     …25
  template:
    metadata:
      labels:
        app.kubernetes.io/name: alternate-service-sql
      annotations:
        prometheus.io/scrape: 'true'
        prometheus.io/path: '/hmppcto/metrics'     …28
        prometheus.io/port: '8080'     …12
    spec:
      serviceAccount: alternate-service-sql-service-account     …9
      securityContext:     …26
        fsGroup: 0
      imagePullSecrets:     …27
      - name: regcred
      initContainers:
      - name: dependency-checker     …2
        image: myregistry.example.com/myproject/dependency-checker:V.R.S※1
        args:
        - "30"
        - "10"
        - "10"
        - "10"
        - my-namespace/statefulsets/mediator
        - my-namespace/statefulsets/eads-server※2
        - my-namespace/statefulsets/postgresql
      containers:
      - name: alternate-service-sql     …3
        image: myregistry.example.com/myproject/alternate-service-sql:V.R.S※1
        resources:     …20
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: http     …12
          containerPort: 8080
          protocol: TCP
        - name: ucars     …19
          containerPort: 28081
          protocol: TCP
        env:
        - name: TZ     …11
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS     …16
          value: -XX:+UseG1GC
        volumeMounts:
        - name: alternate-service-sql-config
          mountPath: /deployments/config
        - name: alternate-service-sql-ucars-config  …17
          mountPath: /opt/hitachi/ucars/conf
        - name: snapshot-volume  …18
          mountPath: /ucars-snapshots
        - name: eads-config     …10
          mountPath: /eads-properties
        - name: tomcat     …14
          mountPath: /deployments/tomcat
        - name: eads   …15
          mountPath: /deployments/eads-log
        livenessProbe:     …5
          exec:
            command:
            - /deployments/health_check.sh
            - "0"
            - "0"
            - "10"
            - "10"
            - "8080"
          initialDelaySeconds: 180
          periodSeconds: 30
          failureThreshold: 3
          timeoutSeconds: 10
        lifecycle:
          postStart:     …6
            exec:
              command:
              - /deployments/health_check.sh
              - "30"
              - "10"
              - "10"
              - "10"
              - "8080"
          preStop:     …7
            exec:
              command:
              - /deployments/wait_transactions.sh
              - "10"
              - "10"
              - "10"
              - "10"
              - "8080"
      - name: filebeat-sidecar     …13
        image: myregistry.example.com/myproject/filebeat:V.R.S※1
        resources:     …24
          limits:
            cpu: 1000m
            memory: 2Gi
          requests:
            cpu: 1000m
            memory: 2Gi
        args:
        - "-e"
        - "-E"
        - "http.enabled=true"
        env:     …21
        - name: HMPPCTO_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: HMPPCTO_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: HMPPCTO_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        livenessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                curl --fail 127.0.0.1:5066
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command:
              - sh
              - -c
              - |
                #!/usr/bin/env bash -e
                filebeat test output
          initialDelaySeconds: 10
          periodSeconds: 10
          failureThreshold: 3
          timeoutSeconds: 5
        securityContext:
          runAsUser: 0
        volumeMounts:
          - name: beatconfig
            mountPath: /usr/share/filebeat/filebeat.yml
            readOnly: true
            subPath: filebeat.yml
          - name: tomcat     …14
            mountPath: /deployments/tomcat
          - name: eads     …15
            mountPath: /deployments/eads-log
      terminationGracePeriodSeconds: 180     …8
      volumes:
      - name: snapshot-volume     …18
        persistentVolumeClaim:
          claimName: snapshot-volume
      - name: alternate-service-sql-config
        configMap:
          name: alternate-service-sql-config
          items:
          - key: application.properties
            path: application.properties
      - name: alternate-service-sql-ucars-config …17
        configMap:
          name: alternate-service-sql-ucars-config
          items:
            - key: config.properties
              path: config.properties
      - name: eads-config     …10
        configMap:
          name: eads-config
          items:
          - key: hmp-pcto.eads-client.properties
            path: hmp-pcto.eads-client.properties
      - name: beatconfig     …13
        configMap:
          name: alternate-service-sql-filebeat-sidecar-config
      - name: tomcat     …14
      - name: eads     …15
---
apiVersion: v1
kind: Service
metadata:
  name: alternate-service-sql
  namespace: my-namespace
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: alternate-service-sql
  ports:
  - name: http     …12
    protocol: TCP
    port: 8080
    targetPort: http
  - name: ucars     …19
    protocol: TCP
    port: 28081
    targetPort: ucars
---
apiVersion: v1     …4
kind: ConfigMap
metadata:
  name: alternate-service-sql-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    server.shutdown=graceful
    spring.lifecycle.timeout-per-shutdown-phase=20s
    jp.co.Hitachi.soft.hmppcto.learner.consensus-type=Three-Quarters
    jp.co.Hitachi.soft.hmppcto.mediator.name=mediator
    jp.co.Hitachi.soft.hmppcto.mediator.name-suffix=.mediator.my-namespace.svc.cluster.local
    jp.co.Hitachi.soft.hmppcto.mediator.size=5
    jp.co.Hitachi.soft.hmppcto.instance-id=alternate-service-sql
    jp.co.Hitachi.soft.hmppcto.client.proposer.type=SQL
    spring.datasource.type=jp.co.Hitachi.soft.hmppcto.jdbc.client.PctoDataSource
    spring.datasource.driver-class-name=jp.co.Hitachi.soft.hmppcto.jdbc.client.PctoDriver
    spring.datasource.url=pctodriver
    spring.datasource.username=dummy
    spring.datasource.password=dummy
    spring.sql.init.mode=never
    jp.co.Hitachi.soft.hmppcto.sql.pod.service-name=sp.my-namespace
    jp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.path=/deployments/postgresql-42.2.22.jar
    jp.co.Hitachi.soft.hmppcto.sql.datasource.class-name=org.postgresql.xa.PGXADataSource
    jp.co.Hitachi.soft.hmppcto.sql.datasource.property.values=serverName=postgresql;portNumber=5432;databaseName=appuser1;user=appuser1;password=appuser1
    jp.co.Hitachi.soft.hmppcto.sql.pool.max-pool-size=10
    jp.co.Hitachi.soft.hmppcto.mediator.port=20551
    jp.co.Hitachi.soft.hmppcto.sql.db-type=PostgreSQL     …22
    jp.co.Hitachi.soft.hmppcto.tracing.instance-id=Alternate-Service-SQL_001
    jp.co.Hitachi.soft.hmppcto.tracing.url=http://jaeger-collector:14268/api/traces
    jp.co.Hitachi.soft.hmppcto.use-scaling=true
    jp.co.Hitachi.soft.hmppcto.set-routing=inner
---
apiVersion: v1 …17
kind: ConfigMap
metadata:
  name: alternate-service-sql-ucars-config
  namespace: my-namespace
data:
  config.properties: |
    monitor.rest.bindaddress=0.0.0.0
    monitor.rest.port=28081 …19
    snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot
    monitor.jvm.options=-Dfile.encoding=UTF-8
    healthcheck.startdelay.timeout=90000
    healthcheck.startdelay.actions.failure.retrymax=4
---
apiVersion: v1     …10
kind: ConfigMap
metadata:
  name: eads-config
  namespace: my-namespace
data:
  hmp-pcto.eads-client.properties: |
    eads.client.connect.servers=sv1,sv2,sv3
    eads.client.sv1.address=eads-service-eads-service-0.my-namespace
    eads.client.sv1.port=24600
    eads.client.sv2.address=eads-service-eads-service-1.my-namespace
    eads.client.sv2.port=24600
    eads.client.sv3.address=eads-service-eads-service-2.my-namespace
    eads.client.sv3.port=24600
    eads.client.logger.dir=eads-log
    eads.client.connectionPool.poolsize=1
---
apiVersion: v1     …9
kind: ServiceAccount
metadata:
  name: alternate-service-sql-service-account
  namespace: my-namespace
---
apiVersion: v1     …13
kind: ConfigMap
metadata:
  name: alternate-service-sql-filebeat-sidecar-config
  namespace: my-namespace
data:
  filebeat.yml: |
    filebeat.inputs:
      - type: filestream
        id: "eads"
        paths:
          - '/deployments/eads-log/eads_client_message*.log'
          - '/deployments/eads-log/maintenance/eads_client_maintenance*.log'
      - type: filestream
        id: "tomcat"
        paths:
          - '/deployments/tomcat/logs/access_log.*.log'
    processors:     …21
      - add_fields:
          target: kubernetes
          fields:
            namespace: ${HMPPCTO_POD_NAMESPACE}
            pod:
              name: ${HMPPCTO_POD_NAME}
            node:
              name: ${HMPPCTO_NODE_NAME}
    output.logstash:
      hosts: ["logstash.my-namespace.svc.cluster.local:5044"]

注※1

V.R.Sは使用するHMP-PCTOとFilebeatのバージョンに合わせて読み替えてください。

注※2

通常版の場合はmy-namespace/statefulsets/eads-serverを記載してください。トライアル版の場合はmy-namespace/deployments/ext-consを記載してください。

記述例の番号は、説明の番号と対応しています。

＜説明＞

この例では、各KubernetesオブジェクトのNamespace名（.metadata.namespaceフィールド）は、「my-namespace」としています。

ワークロードリソースを定義します。この例では、ワークロードリソースを「Deployment」としています。

「- name: dependency-checker」の行から「- my-namespace/statefulsets/postgresql」の行で、初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

Dependency-Checkerの対象として接続するRDBMSのKubernetesオブジェクトを指定する必要があります。

この例では、「- my-namespace/statefulsets/postgresql」を指定しています。

「- name: alternate-service-sql」の行から「preStop」の「- "8080"」の行で、コンテナ構成にAlternate-Service(SQL)コンテナを定義します。「2.3.11　Alternate-Service(SQL)コンテナイメージの作成（SQL-Participant限定）」で作成したコンテナイメージを指定します。

「apiVersion: v1」の行から「jp.co.Hitachi.soft.hmppcto.set-routing=inner」の行で、Alternate-Service(SQL)のパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。

「livenessProbe:」の行から「timeoutSeconds: 10」の行で、コンテナライフサイクル設定のLiveness Probeを定義します。

「postStart:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpostStartフックを定義します。

「preStop:」の行から「- "8080"」の行で、コンテナライフサイクル設定のpreStopフックを定義します。

Podライフサイクル設定のterminationGracePeriodSecondsを定義します。

「serviceAccount: alternate-service-sql-service-account」の行、および「apiVersion: v1」の行から「kind: ServiceAccount」の「namespace: my-namespace」の行で、Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

「- name: eads-config」の行から「mountPath: /eads-properties」の行、「- name: eads-config」の行から「path: hmp-pcto.eads-client.properties」の行、および「apiVersion: v1」の行から「eads.client.connectionPool.poolsize=1」の行で、EADSクライアント定義のパラメタを、EADSクライアント定義ファイルのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。EADSクライアント定義ファイルのディレクトリおよび名称は「9.2.5　SQL-Participant」のパラメタjp.co.Hitachi.soft.hmppcto.external-consensus.eads.propertiesに指定した値と合わせる必要があります。

トライアル版の場合、この定義は必要ありません。

「- name: TZ」の行から「value: Asia/Tokyo」の行で、Alternate-Service(SQL)コンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

「prometheus.io/port: '8080'」の行、「- name: http」の行から「protocol: TCP」の行、および「- name: http」の行から「targetPort: http」の行で、ユーザ責務のKubernetes アプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

このオレンジ色の背景で示す行（「- name: filebeat-sidecar」の行から「mountPath: /deployments/eads-log」の行、「- name: beatconfig」の行から「name: alternate-service-sql-filebeat-sidecar-config」の行、および「apiVersion: v1」の行から「hosts: ["logstash.my-namespace.svc.cluster.local:5044"]」の行）は、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ記述します。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントします。この設定によってEADSからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

「- name: tomcat」の行から「mountPath: /deployments/tomcat」の行、および「- name: tomcat」の行で、Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

「- name: eads」の行から「mountPath: /deployments/eads-log」の行、および「- name: eads」の行で、EADSのログ出力ディレクトリとして/deployments/eads-logをマウントします。

「- name: HMPPCTO_JAVA_OPTIONS」の行から「value: -XX:+UseG1GC」の行で、Alternate-Service(SQL)のJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

このオレンジ色の背景で示す行（「- name: alternate-service-sql-ucars-config」の行から「mountPath: /opt/hitachi/ucars/conf」の行、「- name: alternate-service-sql-ucars-config」の行から「path: config.properties」の行、および「apiVersion: v1」の行から「healthcheck.startdelay.actions.failure.retrymax=4」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootの設定ファイル(config.properties)をAlternate-Service(SQL)コンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「11.6.2　情報の収集方法」を参照して設定してください。

monitor.jvm.options=-Dfile.encoding=UTF-8

プロセスモニタのエンコーディングにUTF-8を設定します。

healthcheck.startdelay.timeout=90000

モニタ対象プロセス（Alternate-Service(SQL)）開始完了通知待ちタイムアウト時間を定義します。Alternate-Service(SQL)の起動時に、設定した時間が経過するとsnapshot.log.filepathで指定した先にスナップショットを出力します。モニタ対象プロセス開始完了通知待ちタイムアウト時間の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

healthcheck.startdelay.actions.failure.retrymax=4

モニタ対象プロセス（Alternate-Service(SQL)）開始完了通知待ちタイムアウトが発生した場合に、モニタ対象プロセス開始完了待ちをリトライする最大回数を定義します。最大リトライ回数を超えると、デフォルトの設定ではモニタ対象プロセスを停止します。モニタ対象プロセス開始完了待ちリトライ回数の詳細は、マニュアル「uCosminexus Application Runtime for Spring Bootユーザーズガイド」を参照してください。

モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間（下記のA）とAlternate-Service(SQL)の開始に掛かる時間（下記のB、およびC）の関係を、「A＞B＞C」にしてください。

A：モニタ対象プロセス開始完了通知待ちタイムアウトの合計時間

healthcheck.startdelay.timeoutに指定した値×（healthcheck.startdelay.actions.failure.retrymaxに指定した値＋1）

B：postStartフックに指定するトランザクションヘルスチェックスクリプト（health_check.sh）の合計時間

リトライ回数×リトライ間隔秒数

C：コネクションプールの初期化で、DBとのコネクションの取得に失敗した場合に行うリトライの合計時間

sql.pool.connection-retry-interval-in-secondsに指定した値×sql.pool.connection-retry-limitに指定した値

AをBよりも大きな値にするのは、モニタ対象プロセス開始完了通知待ちタイムアウトによるプロセス停止が、postStartフックに指定するトランザクションヘルスチェックスクリプトによるAlternate-Service(SQL)の開始完了待ちを中止することを防ぐためです。

BをCよりも大きな値とするのは、postStartフックに指定するトランザクションヘルスチェックスクリプトのタイムアウトによるAlternate-Service(SQL)の停止が、Alternate-Service(SQL)のコネクション接続処理を中止することを防ぐためです。

この記述例では、Alternate-Service(SQL)の開始に掛かる時間（300秒）の間に、スナップショットを複数回（3回）出力するように設定しています。

このオレンジ色の背景で示す行（「- name: snapshot-volume」の行から「mountPath: /ucars-snapshots」の行、および「- name: snapshot-volume」の行から「claimName: snapshot-volume」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームをAlternate-Service(SQL)コンテナ内にマウントします。.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

このオレンジ色の背景で示す行（「- name: ucars」の行から「protocol: TCP」の行、「- name: ucars」の行から「targetPort: ucars」の行、および「monitor.rest.port=28081」の行）は、通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合だけ記述します。

uCosminexus Application Runtime for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

「resources:」の行から「memory: 512Mi」の行で、Alternate-Service(SQL)コンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「env:」の行から「fieldPath: spec.nodeName」の行、および「processors:」の行から「name: ${HMPPCTO_NODE_NAME}」の行で、Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

Alternate-Service(SQL)が接続するRDBMSを指定します。PostgreSQLを指定する場合、「9.4.1　PostgreSQL（SQL-Participant限定）」のパラメタも確認してください。

オートスケールを使用しない場合だけ、replicasを設定します。

「resources:」の行から「requests:」の「memory: 2Gi」の行で、Filebeatコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

オートスケールのメトリクスの監視にMetrics Serverを使用する場合は必ず指定してください。

「app.kubernetes.io/name」を必ず指定してください。

「app.kubernetes.io/name」は、ほかのKubernetesアプリケーションに設定した値と異なる値を設定してください。

16バイト以内の文字列を指定してください。

Blue/Greenデプロイメントを実施する場合は、BlueとGreenの「app.kubernetes.io/name」には同一の値を設定してください。

このオレンジ色の背景で示す行は、Google Cloud Platform環境の場合だけ記述します。securityContextを設定します。fsGroupにはコンテナ実行グループと同等の設定をしてください。

このオレンジ色の背景で示す行は、コンテナイメージをPullする際に資格情報が必要な場合に記述します。Red Hat OpenShift Container Platform環境で資格情報が不要な場合はimagePullSecrets: []を指定してください。

この記述例では、コンテキストパスを設定していない場合の「prometheus.io/path」の例を記載しています。

コンテキストパスを設定する場合は、パスを次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

Alternate-Service(SQL)を構成するPodを定義したKubernetesのServiceのService名とNamespace名の長さの合計は、40バイト以下としてください。

2.6.9　Kubernetesリソース取得用ロールおよびロールバインディングのKubernetesマニフェストの作成

次に示す要件を満たすように、Kubernetesリソース取得用ロールおよびロールバインディングのKubernetesマニフェストを作成してください。

このロールおよびロールバインディングを使用することで、対象コンテナがKubernetesリソース取得時に必要なKubernetesオブジェクトにアクセスできるようにします。

Kubernetesリソース取得用ロールおよびロールバインディングのKubernetesマニフェストの作成要領を次に示します。

＜ロールの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleリソースを指定してください。

ロールの名称（.metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

ロールのルール（.rulesフィールド）に、次のとおり指定してください。

APIグループ（apiGroups）

空（コアグループ）

リソース（resources）

services、endpoints、pods

アクセス許可（verbs）

get、list、watch

＜ロールバインディングの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleBindingリソースを指定してください。

ロールバインディングの名称（.metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

バインドするロール（.roleRefフィールド）は、次のとおり指定してください。

.roleRef.apiGroupフィールドに、「rbac.authorization.k8s.io」を指定してください。

.roleRef.kindフィールドに、「ClusterRole」を指定してください。

.roleRef.nameフィールドに、ロールで指定したロールの名称を指定してください。

バインドする対象物（.subjectsフィールド）は、次のとおり指定してください。

リストの要素数は、次に示すKubernetesリソースの取得を実施するKubernetesアプリケーションの中で、利用するKubernetesアプリケーション数と同じ数にします。

＜Kubernetesリソースの取得を実施するKubernetesアプリケーション＞

・Orchestrator-Service

・Relay-Service

・Entity-Service(SQL)

・Entity-Service(TCC)

・Orchestrator-Service(SQL)

・Alternate-Service

・Alternate-Service(SQL)

・TP1-Bridge

.subjects[].kindフィールドに、「ServiceAccount」を指定してください。

.subjects[].nameフィールドに、Kubernetesリソースの取得を実施するKubernetesアプリケーションのServiceAccountリソースの.metadata.nameフィールドに指定した名称を指定してください。

.subjects[].namespaceフィールドに、Kubernetesリソースの取得を実施するKubernetesアプリケーションのServiceAccountリソースの.metadata.namespaceフィールドに指定したNamespaceを指定してください。

Kubernetesリソース取得用ロールおよびロールバインディングのKubernetesマニフェストの記述例を次に示します。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: lb-role
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - services
  - endpoints
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: lb-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: lb-role
subjects:
- kind: ServiceAccount
  name: orchestrator-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: relay-service-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: sql-participant-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: tcc-participant-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: orchestrator-sql-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: alternate-service-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: alternate-service-sql-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: <tp1-bridgeのservice-account>※
  namespace: my-namespace

注※

<tp1-bridgeのservice-account>は、「name: <リリース名>-service-account」で指定してください。

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

例：リリース名がtp1-bridge1の場合

name: tp1-bridge1-service-account

2.6.10　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストは、次のどちらかのKubernetesマニフェスト作成時に作成します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

詳細については、「3.7.6　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成」を参照してください。

2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストは、次のどちらかのKubernetesマニフェスト作成時に作成します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

詳細については、「3.7.10　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」を参照してください。

2.7　ユーザ責務のKubernetesアプリケーションのデプロイとアンデプロイ

ユーザ責務のKubernetesアプリケーションのデプロイ、アンデプロイ方法を説明します。

2.7.1　作業項目の一覧

ユーザ責務のKubernetesアプリケーションをデプロイするための作業項目の一覧を次に示します。作業対象はKubernetesコントロールプレーンです。表の上から順に作業を実行してください。

表2‒21　ユーザ責務のKubernetesアプリケーションをデプロイするための作業項目の一覧

作業項目

備考

参照先

各種資材の配置

必ず実施します。

(1)　各種資材の配置

Namespaceの作成

次のどちらかをデプロイするための作業時に作成します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

(2)　Namespaceの作成

OrchestratorおよびParticipantのgRPC通信機能の暗号化通信用シークレットの作成

gRPC通信機能で暗号化通信をする場合だけ作成します。

(3)　OrchestratorおよびParticipantのgRPC通信機能の暗号化通信用シークレットの作成

Kubernetesリソース取得用ロールおよびロールバインディングのデプロイ

必ず実施します。

(4)　Kubernetesリソース取得用ロールおよびロールバインディングのデプロイ

デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

(5)　デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

通常版の場合で、uCosminexus Application Runtime for Spring Bootを導入するときだけ作成します。次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

(6)　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

Kubernetesアプリケーションのデプロイ

必ず実施します。

(7)　ユーザ責務のKubernetesアプリケーションのデプロイ

Kubernetesアプリケーションのアンデプロイ

(8)　ユーザ責務のKubernetesアプリケーションのアンデプロイ

2.7.2　Kubernetesコントロールプレーンでの作業

(1)　各種資材の配置

Kubernetesコントロールプレーンの任意のパスへ、次の各種資材を配置してください。

表2‒22　Kubernetesコントロールプレーンに配置する資材の一覧

資材

備考

ユーザ責務のKubernetesアプリケーションのKubernetesマニフェスト

「2.6.2　Orchestrator-ServiceのKubernetesマニフェストの作成」で作成したもの

「2.6.3　Relay-ServiceのKubernetesマニフェストの作成」で作成したもの

「2.6.4　Entity-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）」で作成したもの

「2.6.5　Entity-Service(TCC)のKubernetesマニフェストの作成（TCC-Participant限定）」で作成したもの

「2.6.6　Orchestrator-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）」で作成したもの

「2.6.7　Alternate-ServiceのKubernetesマニフェストの作成」で作成したもの

「2.6.8　Alternate-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）」で作成したもの

Participantが使用するDB/外部サービスのKubernetesマニフェスト（Participantを使用する場合）

ユーザが適宜作成したもの

Kubernetesリソース取得用ロールおよびロールバインディングのKubernetesマニフェスト

「2.6.9　Kubernetesリソース取得用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェスト

「2.6.10　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

次のどちらかをデプロイするための作業時に配置します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェスト（通常版限定）

「2.6.11　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成したもの

通常版の場合で、uCosminexus Application Runtime for Spring Bootを導入するときだけ実施します。次のどちらかをデプロイするための作業時に配置します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

(2)　Namespaceの作成

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespaceを作成してください。この作業は、次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

詳細については、「(2)　Namespaceの作成」を参照してください。

(3)　OrchestratorおよびParticipantのgRPC通信機能の暗号化通信用シークレットの作成

HMP-PCTOのgRPC通信機能で暗号化通信をする場合だけ実施します。

Kubernetesコントロールプレーンの任意のパスへ、次のとおりHMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備してください。

表2‒23　HMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルの一覧

対象Kubernetesアプリケーション

対応するHMP-PCTOの機能

ファイル

備考

Orchestrator-Service

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

Orchestrator

接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

必ず準備します。

自クライアント証明書ファイル（PEM形式）

クライアント認証を行う場合だけ準備します。

自クライアント証明書を作成した秘密鍵ファイル

クライアント認証を行う場合だけ準備します。

Entity-Service(SQL)

Entity-Service(TCC)

Orchestrator-Service(SQL)

Alternate-Service(SQL)

Participant（SQL-Participant、TCC-Participant）

接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

必ず準備します。

自クライアント証明書ファイル（PEM形式）

クライアント認証を行う場合だけ準備します。

自クライアント証明書を作成した秘密鍵ファイル

クライアント認証を行う場合だけ準備します。

HMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備したディレクトリ/ファイル構成の例を次に示します。

クライアント認証を行わない場合

<任意のパス>/
    ca.crt              # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル

クライアント認証を行う場合

<任意のパス>/
    ca.crt              # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
    orchestrator/
        client.crt      # Orchestratorの自クライアント証明書ファイル(PEM形式)
        client.key      # Orchestratorの自クライアント証明書を作成した秘密鍵ファイル
    participant/
        client.crt      # Participantの自クライアント証明書ファイル(PEM形式)
        client.key      # Participantの自クライアント証明書を作成した秘密鍵ファイル

準備したファイルを使用してOrchestratorおよびParticipantのgRPC通信機能の暗号化通信用シークレットを作成します。

ユーザ責務のKubernetesアプリケーションのgRPC通信機能の暗号化通信用シークレットは、ユーザ要件に合わせて作成してください。

Orchestrator、SQL-Participant、およびTCC-ParticipantのgRPC通信機能の暗号化通信用シークレットを作成するコマンド例を次に示します。

ユーザ責務のKubernetesアプリケーションのgRPC通信機能の暗号化通信用シークレットの作成コマンドの一例です。ユーザ要件に合わせて作成してください。

Orchestrator用シークレット名：「orchestrator-secret」

SQL-Participant、TCC-Participant用シークレット名：「participant-secret」

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespace：「my-namespace」

クライアント認証を行わない場合

kubectl create secret generic --save-config orchestrator-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  -n my-namespace

kubectl create secret generic --save-config participant-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  -n my-namespace

クライアント認証を行う場合

kubectl create secret generic --save-config orchestrator-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  --from-file=server.crt=./orchestrator/server.crt ¥
  --from-file=server.key=./orchestrator/server.key ¥
  -n my-namespace

kubectl create secret generic --save-config participant-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  --from-file=client.crt=./participant/client.crt ¥
  --from-file=client.key=./participant/client.key ¥
  -n my-namespace

＜コマンドの実行結果の例＞

secret/orchestrator-secret created

secret/participant-secret created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

(4)　Kubernetesリソース取得用ロールおよびロールバインディングのデプロイ

「(1)　各種資材の配置」で配置したKubernetesリソース取得用ロールおよびロールバインディングのKubernetesマニフェストをデプロイしてください。

コマンド例を次に示します。

kubectl apply -f ./lb-role.yaml

この例では、Kubernetesマニフェストのファイル名を「lb-role.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

clusterrole.rbac.authorization.k8s.io/lb-role created
clusterrolebinding.rbac.authorization.k8s.io/lb-role-binding created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

(5)　デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

「(1)　各種資材の配置」で配置したデプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストをデプロイしてください。この作業は、次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

詳細については、「(10)　デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ」を参照してください。

(6)　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

「(1)　各種資材の配置」で配置したuCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストをデプロイしてください。この作業は、次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

詳細については、「(14)　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）」を参照してください。

(7)　ユーザ責務のKubernetesアプリケーションのデプロイ

「(1)　各種資材の配置」で配置した各KubernetesアプリケーションのKubernetesマニフェストをデプロイしてください。

なお、HMP-PCTOの各Kubernetesアプリケーションは次の順序でデプロイする必要があります。

Elasticsearch※1

Logstash※1、Jaeger-query※1、Jaeger-collector※1、Prometheus※1、Metricbeat※1、Filebeat※1

Mediator、EADSサーバ（通常版だけ）※2、Ext-Cons（トライアル版だけ）、Participantが使用するDB/外部サービス

Relay-Service、Entity-Service(SQL)、Entity-Service(TCC)、TP1-Bridge※3

Orchestrator-Service、Orchestrator-Service(SQL)、Alternate-Service、Alternate-Service(SQL)

注※1

これらのKubernetesアプリケーションは、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけデプロイしてください。

注※2

EADSサーバをデプロイしたあとに「(21)　EADSのセットアップ（通常版限定）」を実施してから、Participantの機能を使用するKubernetesアプリケーションをデプロイしてください。

注※3

TP1連携機能を使用する場合、TP1-Bridgeをデプロイする前に、OpenTP1のrapリスナーとrapサーバを起動してください。

メモ

上記以外の順序でデプロイした場合※

各Kubernetesアプリケーションの初期化コンテナとして構成しているDependency-Checkerコンテナで、上記のとおり依存するKubernetesアプリケーションが先にデプロイされるまで待機します。待機処理がリトライオーバーし、初期化コンテナが異常終了した場合、Podの状態はCrashLoopBackOffになります。その場合は、Dependency-Checkerコンテナが実行しているデプロイ依存関係チェックスクリプトのエラーメッセージに従い対処してください。

そのあとで、EADSサーバとParticipantの機能を使用するKubernetesアプリケーションをアンデプロイして、正しい順序でデプロイし直してください。

注※　「(8)　ユーザ責務のKubernetesアプリケーションのアンデプロイ」を実施しないでクラスタを再起動する場合も含みます。

デプロイしたKubernetesアプリケーションの起動に失敗したとき、KubernetesのERRORメッセージが出力されることがあります。詳細については、「(8)　ユーザ責務のKubernetesアプリケーションのアンデプロイ」の「Kubernetesアプリケーションの停止時に出力されるKubernetesのERRORメッセージについて」を参照してください。

ユーザ責務のKubernetesアプリケーションは、ユーザ任意の方法でデプロイしてください。

kubectlコマンドでデプロイするコマンド例を次に示します。

kubectl apply -f ./orchestrator.yaml

この例では、Kubernetesマニフェストのファイル名を「orchestrator.yaml」としています。また、各ファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

service/orchestrator created
serviceaccount/orchestrator-service-account created
deployment.apps/orchestrator created
configmap/orchestrator-config created
configmap/orchestrator-ucars-config created
configmap/orchestrator-filebeat-sidecar-config created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

HMP-PCTOの各Kubernetesアプリケーションをデプロイしたあと、次のコマンド例のように、各Kubernetesアプリケーションが期待どおり起動していること（STATUS列が"Running"になっていることや、NODE列でPodが意図したワーカーノードに割り当てられていることなど）を確認してください。

kubectl get pods -n my-namespace -o wide

＜コマンドの実行結果の例（SQL-Participantを使用する場合）＞

＜コマンドの実行結果の例（TCC-Participantを使用する場合）＞

なお、各列に表示される値は実行環境によって異なります。また、kubectlのdescribeサブコマンドを使用すると、各Kubernetesオブジェクトの詳細な情報を参照できます。

(8)　ユーザ責務のKubernetesアプリケーションのアンデプロイ

デプロイしたHMP-PCTOの各Kubernetesアプリケーションをアンデプロイする方法について説明します。

なお、HMP-PCTOの各Kubernetesアプリケーションは、次の順序でアンデプロイする必要があります。

Orchestrator-Service、Orchestrator-Service(SQL)、Alternate-Service、Alternate-Service(SQL)

Relay-Service、Entity-Service(SQL)、Entity-Service(TCC)、TP1-Bridge※1

Mediator、EADSサーバ（通常版だけ）、Ext-Cons（トライアル版だけ）、Participantが使用するDB/外部サービス

Logstash※2、Jaeger-query※2、Jaeger-collector※2、Prometheus※2、Metricbeat※2、Filebeat※2

Elasticsearch※2

注※1

TP1連携機能を使用している場合、TP1-Bridgeをアンデプロイしたあとに、OpenTP1のrapリスナーとrapサーバを停止してください。

注※2

これらのKubernetesアプリケーションは、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけデプロイしてください。

クラスタを停止する前には、上記の順序でアンデプロイしてください。アンデプロイする前にクラスタを停止した場合は、クラスタを再起動したあとに、アンデプロイしてから「(7)　ユーザ責務のKubernetesアプリケーションのデプロイ」で示す順序で再デプロイしてください。

重要

上記以外の順序でアンデプロイした場合に発生する問題※

上記以外の順序でアンデプロイした場合、トラブルシュートに必要な情報が収集できなかったり、処理中のトランザクションが適切に終了しなかったりなどの問題が発生するおそれがあります。

注※　アンデプロイする前にクラスタを停止する場合も含みます。

Kubernetesアプリケーションの停止時に出力されるKubernetesのERRORメッセージについて

Kubernetesアプリケーションの停止時（起動失敗時を含む）に、KubernetesアプリケーションのメッセージログにKubernetesのclientでjava.lang.InterruptedExceptionが発生したことを示すERRORメッセージが出力されることがあります。このメッセージは出力されても問題ないため、無視してください。

ERRORメッセージの出力例の一部を次に示します。

■メッセージ出力例１

ERROR sql-participant-dc47fd869-khlgp pool-13-thread-1 io.kubernetes.client.informer.cache.ProcessorListener 87 processor interrupted: {}

■メッセージ出力例２

ERROR sql-participant-dc47fd869-khlgp informer-controller-V1Endpoints io.kubernetes.client.informer.cache.Controller 87 DefaultController#processLoop get interrupted null

ユーザ責務のKubernetesアプリケーションは、ユーザ任意の方法でアンデプロイしてください。

kubectlコマンドでアンデプロイするコマンド例を次に示します。

kubectl delete -f ./orchestrator.yaml

重要

「--grace-period=0 --force」オプションの指定について

Kubernetesオブジェクトをすぐに削除する「--grace-period=0 --force」オプションは指定しないでください。このオプションを指定してKubernetesオブジェクトを削除した場合、トランザクション結果が不整合になるおそれがあります。

この例では、Kubernetesマニフェストのファイル名を「orchestrator.yaml」としています。また、各ファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけアンデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

service/orchestrator deleted
serviceaccount/orchestrator-service-account deleted
deployment.apps/orchestrator deleted
configmap/orchestrator-config deleted
configmap/orchestrator-ucars-config deleted
configmap/orchestrator-filebeat-sidecar-config deleted

このように、各Kubernetesオブジェクトの削除に成功したメッセージが出力されていることを確認してください。

HMP-PCTOの各Kubernetesアプリケーションをアンデプロイしたあと、次のコマンド例のように、各Kubernetesアプリケーションが期待どおり停止していること（一覧に出力されないこと）を確認してください。

kubectl get pods -n my-namespace -o wide

＜コマンドの実行結果の例＞

No resources found in my-namespace namespace.

第3編　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイ

3　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイ

3.1　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイの流れ

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイの流れについて説明します。

デプロイ後のシステム運用時の注意事項については、「付録D　システム運用時の注意事項」を参照してください。

重要

トライアル版HMP-PCTOを使用して構築した環境は、通常版HMP-PCTOにそのまま移行できません。トライアル版HMP-PCTOを使用してデプロイまで完了している場合に、通常版HMP-PCTOを使用して環境を構築したいときは、「(25)　Kubernetesアプリケーションのアンデプロイ」を実施したあと、「HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイの流れ」の手順を1から実施してください。各手順で通常版、トライアル版で説明が分かれている場合は通常版の手順で実施してください。

3.1.1　オンプレミス環境の場合

オンプレミス環境の場合、HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASは次の流れでデプロイします。スケーリング対応機能を使用する場合は、「4.　スケーリング対応機能の運用」も併せて参照してください。

表3‒1　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイの流れ（オンプレミス環境の場合）

項番

項目

説明

参照先

1

Mediatorのビルド

HMP-PCTOの提供物を使用してMediatorをビルドします。通常版の場合だけ実施します。

3.2　Mediatorのビルド（通常版限定）

2

TP1-Bridgeのビルド（通常版かつTP1-Bridge限定）

HMP-PCTOの提供物を使用してTP1-Bridgeをビルドします。通常版の場合でTP1-Bridgeを使用するときだけ実施します。

3.3　TP1-Bridgeのビルド（通常版かつTP1-Bridge限定）

3

HMP-PCTOのコントロールプレーンのコンテナイメージ作成

コンテナイメージは、HMP-PCTOが提供するDockerfileを基にビルドします。通常版の場合だけ実施します。

3.4　コンテナイメージ作成（通常版限定）

4

永続ボリュームとプロビジョニング方法の選定

HMP-PCTOで使用する永続ボリュームのストレージ種別と、そのプロビジョニング方法を選定します。

3.5　永続ボリュームとプロビジョニング方法の選定

5

共有ファイルシステムでの作業

共有ファイルシステムで、HMP-PCTOおよび関連製品で必要なディレクトリを用意します。

3.6　共有ファイルシステムでの作業

6

Kubernetesマニフェスト作成

HMP-PCTOが提供するKubernetesマニフェストの記述例を基にKubernetesマニフェストを作成します。

3.7　Kubernetesマニフェスト作成

7

Helmチャートのカスタマイズ

HMP-PCTOが提供するHelmチャートのカスタマイズ例を基にHelmチャートをカスタマイズします。

3.8　Helmチャートのカスタマイズ

8

デプロイ

KubernetesマニフェストまたはHelmを使用してKubernetesクラスタにデプロイします。

3.9　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用

3.1.2　Red Hat OpenShift Container Platform環境の場合

Red Hat OpenShift Container Platform環境の場合、HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASは次の流れでデプロイします。スケーリング対応機能を使用する場合は、「4.　スケーリング対応機能の運用」も併せて参照してください。

表3‒2　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイの流れ（Red Hat OpenShift Container Platform環境の場合）

項番

項目

説明

参照先

1

Mediatorのビルド

HMP-PCTOの提供物を使用してMediatorをビルドします。通常版の場合だけ実施します。

3.2　Mediatorのビルド（通常版限定）

2

TP1-Bridgeのビルド（通常版かつTP1-Bridge限定）

HMP-PCTOの提供物を使用してTP1-Bridgeをビルドします。通常版の場合でTP1-Bridgeを使用するときだけ実施します。

3.3　TP1-Bridgeのビルド（通常版かつTP1-Bridge限定）

3

HMP-PCTOのコントロールプレーンのコンテナイメージ作成

コンテナイメージは、HMP-PCTOが提供するDockerfileを基にビルドします。通常版の場合だけ実施します。

3.4　コンテナイメージ作成（通常版限定）

4

永続ボリュームとプロビジョニング方法の選定

HMP-PCTOで使用する永続ボリュームのストレージ種別と、そのプロビジョニング方法を選定します。

3.5　永続ボリュームとプロビジョニング方法の選定

5

共有ファイルシステムでの作業

共有ファイルシステムで、HMP-PCTOおよび関連製品で必要なディレクトリを用意します。

3.6　共有ファイルシステムでの作業

6

Kubernetesマニフェスト作成

HMP-PCTOが提供するKubernetesマニフェストの記述例を基にKubernetesマニフェストを作成します。

3.7　Kubernetesマニフェスト作成

7

Helmチャートのカスタマイズ

HMP-PCTOが提供するHelmチャートのカスタマイズ例を基にHelmチャートをカスタマイズします。

3.8　Helmチャートのカスタマイズ

8

New Relicを使用する場合の作業

HMP-PCTOのトラブルシュート情報を収集するためにNew Relicを使用する場合だけ実施します。

3.10.1　New Relicを使用する場合の作業

9

デプロイ

KubernetesマニフェストまたはHelmを使用してKubernetesクラスタにデプロイします。

3.9　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用

重要

Red Hat OpenShift Container Platform環境を使用している場合、HMP-PCTOが提供しているRASのKubernetesアプリケーションを使用できません。そのため、Red Hat OpenShift Container Platform環境を使用している場合、New Relicを使用して、HMP-PCTOのトラブルシュート情報を収集することを推奨します。

3.1.3　Microsoft Azure環境の場合

Microsoft Azure環境の場合、HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASは次の流れでデプロイします。スケーリング対応機能を使用する場合は、「4.　スケーリング対応機能の運用」も併せて参照してください。

表3‒3　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイの流れ（Microsoft Azure環境を使用する場合）

項番

項目

説明

参照先

1

Mediatorのビルド

HMP-PCTOの提供物を使用してMediatorをビルドします。通常版の場合だけ実施します。

3.2　Mediatorのビルド（通常版限定）

2

TP1-Bridgeのビルド（通常版かつTP1-Bridge限定）

HMP-PCTOの提供物を使用してTP1-Bridgeをビルドします。通常版の場合でTP1-Bridgeを使用するときだけ実施します。

3.3　TP1-Bridgeのビルド（通常版かつTP1-Bridge限定）

3

HMP-PCTOのコントロールプレーンのコンテナイメージ作成

コンテナイメージは、HMP-PCTOが提供するDockerfileを基にビルドします。通常版の場合だけ実施します。

3.4　コンテナイメージ作成（通常版限定）

4

Azure Container Registryの有効化およびコンテナイメージの登録

Azure Kubernetes Serviceで作成したAKSクラスタから参照可能なコンテナレジストリAzure Container Registryに、コンテナイメージを登録します。

Microsoft Azureの公式ドキュメント

5

永続ボリュームとプロビジョニング方法の選定

HMP-PCTOで使用する永続ボリュームのストレージ種別と、そのプロビジョニング方法を選定します。

3.5　永続ボリュームとプロビジョニング方法の選定

6

Microsoft Azureのマネージドストレージサービスのプロビジョニング

HMP-PCTOおよび関連製品で使用する共有ファイルシステムをプロビジョニングします。

Microsoft Azureの公式ドキュメント

3.6　共有ファイルシステムでの作業

7

Kubernetesマニフェスト作成

HMP-PCTOが提供するKubernetesマニフェストの記述例を基にKubernetesマニフェストを作成します。

Microsoft Azureの公式ドキュメント

3.7　Kubernetesマニフェスト作成

8

永続ボリュームのKubernetesマニフェストの作成

共有ファイルシステムを永続ボリュームとして使用するためのKubernetesマニフェストを作成します。

Microsoft Azureの公式ドキュメント

9

Helmチャートのカスタマイズ

HMP-PCTOが提供するHelmチャートのカスタマイズ例を基にHelmチャートをカスタマイズします。

3.8　Helmチャートのカスタマイズ

10

デプロイ

KubernetesマニフェストまたはHelmを使用してKubernetesクラスタにデプロイします。

3.9　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用

11

Azure Monitor Log Analyticsワークスペースの作成

HMP-PCTOのメッセージログを収集および閲覧するためにAzure Monitor Log Analyticsワークスペースを作成します。

Microsoft Azureの公式ドキュメント

12

Azure Monitor Application Insightsワークスペースの作成

HMP-PCTOの分散トレースを収集および閲覧するためにAzure Monitor Application Insightsワークスペースを作成します。

13

Azure Monitorワークスペースの作成

HMP-PCTOのメトリクスを保管するためにAzure Monitorワークスペースを作成します。

14

マネージドPrometheusの有効化

HMP-PCTOのメトリクスを収集するためにマネージドPrometheusを有効化します。

15

Azure Managed Grafanaの有効化

HMP-PCTOのメトリクスを閲覧するためにAzure Managed Grafanaを有効化します。

3.1.4　Google Cloud Platform環境の場合

Google Cloud Platform環境の場合、HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASは次の流れでデプロイします。スケーリング対応機能を使用する場合は、「4.　スケーリング対応機能の運用」も併せて参照してください。

表3‒4　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイの流れ（Google Cloud Platform環境を使用する場合）

項番

項目

説明

参照先

1

Mediatorのビルド

HMP-PCTOの提供物を使用してMediatorをビルドします。通常版の場合だけ実施します。

3.2　Mediatorのビルド（通常版限定）

2

TP1-Bridgeのビルド（通常版かつTP1-Bridge限定）

HMP-PCTOの提供物を使用してTP1-Bridgeをビルドします。通常版の場合でTP1-Bridgeを使用するときだけ実施します。

3.3　TP1-Bridgeのビルド（通常版かつTP1-Bridge限定）

3

HMP-PCTOのコントロールプレーンのコンテナイメージ作成

コンテナイメージは、HMP-PCTOが提供するDockerfileを基にビルドします。通常版の場合だけ実施します。

3.4　コンテナイメージ作成（通常版限定）

4

Artifact Registryの有効化およびコンテナイメージの登録

Google Kubernetes Engineで作成したGKEクラスタから参照可能なコンテナレジストリArtifact Registryにコンテナイメージを登録します。

Google Cloud Platformの公式ドキュメント

5

永続ボリュームとプロビジョニング方法の選定

HMP-PCTOで使用する永続ボリュームのストレージ種別と、そのプロビジョニング方法を選定します。通常版の場合だけ実施します。

3.5　永続ボリュームとプロビジョニング方法の選定

6

Google Cloud Platformのマネージドストレージサービスのプロビジョニング

HMP-PCTOおよび関連製品で使用する共有ファイルシステムをプロビジョニングします。

Google Cloud Platformの公式ドキュメント

3.6　共有ファイルシステムでの作業

7

Kubernetesマニフェスト作成

HMP-PCTOが提供するKubernetesマニフェストの記述例を基にKubernetesマニフェストを作成します。

Google Cloud Platformの公式ドキュメント

3.7　Kubernetesマニフェスト作成

8

Helmチャートのカスタマイズ

HMP-PCTOが提供するHelmチャートのカスタマイズ例を基にHelmチャートをカスタマイズします。

3.8　Helmチャートのカスタマイズ

9

永続ボリュームのKubernetesマニフェストの作成

共有ファイルシステムを永続ボリュームとして使用するためのKubernetesマニフェストを作成します。

Google Cloud Platformの公式ドキュメント

10

Cloud Traceを出力する権限の付与

HMP-PCTOの分散トレースを収集するため、Cloud Traceを出力する権限を付与します。

「3.7　Kubernetesマニフェスト作成」で作成した、各Podが使用するサービスアカウントに対して、cloudtrace.agentロールを付与してください。

Google Cloud Platformの公式ドキュメント

11

デプロイ

KubernetesマニフェストまたはHelmを使用してKubernetesクラスタにデプロイします。

3.9　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用

12

Google Cloud Managed Service for Prometheusの有効化

HMP-PCTOのメトリクスを収集するために有効化します。

Google Cloud Platformの公式ドキュメント

3.7　Kubernetesマニフェスト作成

3.2　Mediatorのビルド（通常版限定）

HMP-PCTOライブラリを使用したMediatorのビルドについて説明します。

Mediatorのビルドは、通常版の場合だけ実施します。

Javaアプリケーションの開発環境のビルド自動化システムにはGradleを使用する前提で説明します。説明中のGradleの構文例は、Gradle 8xを使用した場合を例に記述しています。

3.2.1　作業項目の一覧（通常版限定）

Mediatorのビルドの作業項目の一覧を次の表に示します。

表3‒5　Mediatorのビルドの作業項目の一覧

分類

作業項目

備考

参照先

共通

事前準備（通常版限定）

通常版の場合だけ実施します。

3.2.2　事前準備（通常版限定）

ライブラリのセットアップ（通常版限定）

3.2.3　ライブラリのセットアップ（通常版限定）

Mediatorのビルド

JARファイルのビルド（通常版限定）

3.2.4　JARファイルのビルド（通常版限定）

3.2.2　事前準備（通常版限定）

HMP-PCTOライブラリを使用したアプリケーションの開発は、Gradleの利用を前提としています。これらのソフトウェアを開発環境にインストールしてください。

重要

使用可能なGradleのバージョンについて

使用可能なGradleのバージョンは、Spring Bootのシステム要件に従って決定されます。

使用するSpring Boot のバージョンによって要件は異なるため、詳細はSpring Bootの公式ドキュメントを参照してください。

3.2.3　ライブラリのセットアップ（通常版限定）

(1)　HMP-PCTOライブラリ

HMP-PCTOおよびオプション製品の提供媒体のHMP-PCTOライブラリ格納フォルダを、アプリケーション開発環境のローカルMavenリポジトリにコピーします。

HMP-PCTOライブラリ格納フォルダ（コピー元）：

<HMP-PCTOおよびオプション製品の提供媒体のルートフォルダ>¥libsの下のフォルダ

ローカルMavenリポジトリ（コピー先）：

%USERPROFILE%¥.m2¥repository

これはデフォルトのローカルMavenリポジトリです。デフォルトからパスを変更している場合は、変更先のローカルMavenリポジトリをコピー先としてください。

build.gradleには、Mavenローカルリポジトリを参照するための記述を追加してください。

コーディング例

repositories {
    mavenLocal()
    mavenCentral()
}

HMP-PCTOライブラリを格納するMavenリポジトリとして、ローカルMavenリポジトリ以外の任意のMavenリポジトリを利用することもできます。

(2)　依存ライブラリ

HMP-PCTOが依存するライブラリのうちTP1/Client/Jのライブラリ以外は、HMP-PCTOライブラリを組み込むとGradleがダウンロードします。ダウンロードはインターネット接続環境で行う必要があります。もし、インターネット接続のない閉塞環境で開発を行う場合は、一度インターネット接続環境でそれらのダウンロードを実行したあと、ダウンロード先であるローカルMavenリポジトリおよびGradleキャッシュを、フォルダごと閉塞環境の同じ場所にコピーしてください。

また、TP1連携機能を使用する場合は、TP1/Client/Jのインストールが必要です。TP1/Client/Jのインストール方法は、マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」を参照してください。

3.2.4　JARファイルのビルド（通常版限定）

「HMP-PCTOのMediatorアプリケーションのJARファイル（mediator-V.R.S※.jar）」は、HMP-PCTOの提供物を使用してビルドします。

HMP-PCTOが提供するトラブルシュート機能を使用して分散トレースを出力する場合、「Mediator用Javaプロジェクトディレクトリ」（java-projects/mediator）の「Mediator用build.gradleファイル」（build.gradle）を「2.2.17　分散トレース機能の設定」に従って修正し、ライブラリをアプリケーションに組み込んでください。

そのあと、HMP-PCTOが提供する「Mediator用Javaプロジェクトディレクトリ」（java-projects/mediator）で、次に示すGradleのコマンドを実行してJARファイルをビルドしてください。

cd java-projects/mediator
gradle build

ビルドに成功すると、次に示すパスに「HMP-PCTOのMediatorアプリケーションのJARファイル（mediator-V.R.S※.jar）」が生成されます。

java-projects/mediator/build/lib/mediator-V.R.S※.jar

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

3.3　TP1-Bridgeのビルド（通常版かつTP1-Bridge限定）

HMP-PCTOライブラリを使用したTP1-Bridgeのビルドについて説明します。

TP1-Bridgeのビルドは、通常版の場合で、TP1-Bridgeを使用するときだけ実施します。

Javaアプリケーションの開発環境のビルド自動化システムにはGradleを使用する前提で説明します。説明中のGradleの構文例は、Gradle 8xを使用した場合を例に記述しています。

3.3.1　作業項目の一覧（通常版かつTP1-Bridge限定）

TP1-Bridgeのビルドの作業項目の一覧を次の表に示します。

表3‒6　TP1-Bridgeのビルドの作業項目の一覧

分類

作業項目

備考

参照先

共通

事前準備（通常版かつTP1-Bridge限定）

通常版の場合だけ実施します。

3.3.2　事前準備（通常版かつTP1-Bridge限定）

ライブラリのセットアップ（通常版かつTP1-Bridge限定）

3.3.3　ライブラリのセットアップ（通常版かつTP1-Bridge限定）

TP1-Bridgeのビルド

JARファイルのビルド（通常版かつTP1-Bridge限定）

3.3.4　JARファイルのビルド（通常版かつTP1-Bridge限定）

3.3.2　事前準備（通常版かつTP1-Bridge限定）

HMP-PCTOライブラリを使用したアプリケーションの開発は、Gradleの利用を前提としています。これらのソフトウェアを開発環境にインストールしてください。

重要

使用可能なGradleのバージョンについて

使用可能なGradleのバージョンは、Spring Bootのシステム要件に従って決定されます。

使用するSpring Boot のバージョンによって要件は異なるため、詳細はSpring Bootの公式ドキュメントを参照してください。

3.3.3　ライブラリのセットアップ（通常版かつTP1-Bridge限定）

ライブラリのセットアップ方法は、Mediatorの場合と同じです。「3.2.3　ライブラリのセットアップ（通常版限定）」を参照してください。

3.3.4　JARファイルのビルド（通常版かつTP1-Bridge限定）

「HMP-PCTOのTP1-BridgeアプリケーションのJARファイル（tp1-bridge-V.R.S※.jar）」は、Hitachi Microservices Platform - Bridge Option for OpenTP1の提供物を使用してビルドします。

Hitachi Microservices Platform - Bridge Option for OpenTP1が提供する「TP1-Bridge用外部ライブラリ格納ディレクトリ」（java-projects/tp1-bridge/libs）に、TP1/Client/Jをインストールした環境からTP1Client.jarをコピーしてください。

HMP-PCTOが提供するトラブルシュート機能を使用して分散トレースを出力する場合、「TP1-Bridge用Javaプロジェクトディレクトリ」（java-projects/tp1-bridge）の「TP1-Bridge用build.gradleファイル」（build.gradle）を「2.2.17　分散トレース機能の設定」に従って修正し、ライブラリをアプリケーションに組み込んでください。

そのあと、「TP1-Bridge用Javaプロジェクトディレクトリ」（java-projects/tp1-bridge）で、次に示すGradleのコマンドを実行してJARファイルをビルドしてください。

cp TP1Client.jar java-projects/tp1-bridge/libs
cd java-projects/tp1-bridge
gradle build

ビルドに成功すると、次に示すパスに「HMP-PCTOのTP1-BridgeアプリケーションのJARファイル（tp1-bridge-V.R.S※.jar）」が生成されます。

java-projects/tp1-bridge/build/libs/tp1-bridge-V.R.S※.jar

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

3.4　コンテナイメージ作成（通常版限定）

ここでは、HMP-PCTOのコントロールプレーンのコンテナイメージ作成方法について説明します。HMP-PCTOのコントロールプレーンのコンテナイメージは、通常版の場合だけ作成します。

コンテナイメージビルド環境のコンテナエンジンはユーザ任意のものを使用してください。説明中のコンテナエンジンのコマンド例は、Dockerを使用した場合を例に記述しています。Red Hat OpenShift Container Platformを使用する場合は、適宜「docker」コマンドを「podman」コマンドに読み替えてください。コンテナエンジンの各コマンドの詳細については、使用するコンテナエンジンのマニュアルなどを参照してください。

3.4.1　作業項目の一覧（通常版限定）

コンテナイメージ作成の作業項目の一覧を次の表に示します。

表3‒7　コンテナイメージ作成の作業項目の一覧

作業項目

備考

参照先

事前準備（通常版限定）

通常版の場合だけ実施します。

3.4.2　事前準備（通常版限定）

Mediatorコンテナイメージの作成（通常版限定）

通常版の場合だけ作成します。トライアル版の場合は提供ファイルに含まれるコンテナイメージを使用します。

3.4.3　Mediatorコンテナイメージの作成（通常版限定）

TP1-Bridgeコンテナイメージの作成（通常版かつTP1-Bridge限定）

通常版の場合で、TP1-Bridgeを使用するときだけ作成します。

3.4.4　TP1-Bridgeコンテナイメージの作成（通常版かつTP1-Bridge限定）

Dependency-Checkerコンテナイメージの作成（通常版限定）

通常版の場合だけ作成します。トライアル版の場合は提供ファイルに含まれるコンテナイメージを使用します。

3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）

EADSサーバ用コンテナイメージの作成（通常版限定）

通常版の場合だけ作成します。

3.4.6　EADSサーバ用コンテナイメージの作成（通常版限定）

EADSコマンド実行用コンテナイメージの作成（通常版限定）

3.4.7　EADSコマンド実行用コンテナイメージの作成（通常版限定）

3.4.2　事前準備（通常版限定）

コンテナイメージを登録するためのコンテナレジストリ、およびコンテナイメージをビルドするためのDockerなどのコンテナエンジンをインストールしたコンテナイメージビルド環境を用意してください。

また、以降に示すContainerfileの記述例、およびHMP-PCTOが提供するContainerfileのテンプレートは、次のすべての設定が完了していることを前提としています。

ホストはRHELを想定※

コンテナ内のインターネット接続

プロキシ設定

RPMリポジトリ設定

コンテナレジストリ設定

注※

ベースイメージにUBIを使用するとき、ホストRHELのサブスクリプション情報を共有されることで、UBIコンテナ内からRHELのリポジトリが利用できるようになります。なお、RHELのバージョンはUBIと一致している必要はありません。

これらの設定が完了している場合は、コンテナベースイメージのプル、およびコンテナ内でdnfコマンドなどによるRPMパッケージのオンラインインストールができます。設定が完了していない場合は、先に設定を完了させてください。または、Containerfileを作成する際にdnfコマンドなどによるインストールの設定を組み込んでください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、一度インターネット接続環境でダウンロードした資材をコンテナイメージビルド環境にコピーしたりするなどの方法で対応してください。

3.4.3　Mediatorコンテナイメージの作成（通常版限定）

Mediatorコンテナイメージの作成方法について説明します。

このコンテナイメージは通常版の場合だけ作成します。トライアル版の場合は提供ファイルに含まれるコンテナイメージを使用します。

(1)　Containerfileのテンプレートの修正

HMP-PCTOが提供するContainerfileのテンプレートについて、次の修正をしてください。

「3.4.2　事前準備（通常版限定）」に示すとおり、ユーザの開発環境に合わせてdnfコマンドなどによるオンラインインストールの設定を組み込むなどの方法で修正してください。

uCosminexus Application Runtime with Java for Spring Bootのリリースノートを参照し、オレンジ色の背景の1.（「<uCosminexus Application Runtime with Java for Spring Bootの前提RPMパッケージ>」の行から「:」の行）に、uCosminexus Application Runtime with Java for Spring Bootに必要な前提RPMパッケージを記述してください。※1

オレンジ色の背景の2.（「COPY ./DigiCertGlobalRootG2.crt /opt/Cosminexus/jdk17/lib/security/」の行から「RUN keytool -import -alias AzureCACert -trustcacerts ¥」の「-noprompt」の行）は、分散トレース収集サービスにAzure Monitor Application Insightsを使用する場合だけ記述します。

Azure Monitor Application Insightsに接続するためにJavaのキーストアにルートCA証明書として、DigiCertGlobalRootG2 CAをインポートします。

keytoolコマンドの-storepassオプションに設定するパスワードは環境に合わせて変更してください。

オレンジ色の背景の3.（「COPY ./gtsrootr1.pem /opt/Cosminexus/jdk17/lib/security/」の行から「RUN keytool -import -alias gtsrootr4 -trustcacerts ¥」の「-noprompt」の行）は、分散トレース収集サービスにGoogle Cloud PlatformのCloud Traceを使用する場合だけ記述します。

Cloud Traceに接続するために、JavaのキーストアにルートCA証明書として、GTS Root R1、GTS Root R2、GTS Root R3、GTS Root R4をインポートします。

keytoolコマンドの-storepassオプションに設定するパスワードは環境に合わせて変更してください。

オレンジ色の背景の4.の行は、Red Hat OpenShift Container Platformを使用し、SCC（Security Context Constraints）の設定で、コンテナ実行時にrootユーザでの実行を許容しない場合だけ記述します。Cosminexus Application Runtime with Java for Spring Bootのインストールディレクトリ配下の所有グループを実行ユーザが属するグループに変更してください。

uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合のContainerfileのテンプレートの内容を次に記載しています。Containerfileのテンプレートに対する修正内容は、uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合と修正パッチがある場合のどちらも同じです。

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212 AS builder
RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        alsa-lib ¥
        cups-libs ¥
        findutils ¥
        lksctp-tools ¥
        nss ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HL0S ./

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212
COPY --from=builder /opt /opt
COPY --from=builder /etc/.java /etc/.java
RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        dnf ¥
    && dnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        --allowerasing ¥
        curl-minimal ¥
        jq ¥
        glibc ¥
        <uCosminexus Application Runtime with Java for Spring Bootの前提RPMパッケージ>※1     …1
        :
    && dnf clean all ¥
    && rm -rf /var/cache/dnf/*
ENV PATH=/opt/Cosminexus/jdk17/bin:$PATH

RUN chgrp -R 1001 /opt/hitachi/ucars     …4

COPY ./DigiCertGlobalRootG2.crt /opt/Cosminexus/jdk17/lib/security/※1     …2
RUN keytool -import -alias AzureCACert -trustcacerts ¥※1
    -file /opt/Cosminexus/jdk17/lib/security/DigiCertGlobalRootG2.crt ¥※1
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥※1
    -storepass changeit ¥※1
    -noprompt※1
COPY ./gtsrootr1.pem /opt/Cosminexus/jdk17/lib/security/     …3
COPY ./gtsrootr2.pem /opt/Cosminexus/jdk17/lib/security/
COPY ./gtsrootr3.pem /opt/Cosminexus/jdk17/lib/security/
COPY ./gtsrootr4.pem /opt/Cosminexus/jdk17/lib/security/
RUN keytool -import -alias gtsrootr1 -trustcacerts ¥
    -file /opt/Cosminexus/jdk17/lib/security/gtsrootr1.pem ¥
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥
    -storepass changeit ¥
    -noprompt
RUN keytool -import -alias gtsrootr2 -trustcacerts ¥
    -file /opt/Cosminexus/jdk17/lib/security/gtsrootr2.pem ¥
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥
    -storepass changeit ¥
    -noprompt
RUN keytool -import -alias gtsrootr3 -trustcacerts ¥
    -file /opt/Cosminexus/jdk17/lib/security/gtsrootr3.pem ¥
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥
    -storepass changeit ¥
    -noprompt
RUN keytool -import -alias gtsrootr4 -trustcacerts ¥
    -file /opt/Cosminexus/jdk17/lib/security/gtsrootr4.pem ¥
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥
    -storepass changeit ¥
    -noprompt
USER 1001:0
WORKDIR /deployments
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/
COPY --chown=1001:0 --chmod=0440 ./libhmppcto-mediator-V.R.S※2.so /deployments/
COPY --chown=1001:0 --chmod=0440 ./mediator-V.R.S※2.jar /deployments/
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/mediator-V.R.S※2.jar

注※1

オレンジ色の背景で示す個所以外の内容は、HMP-PCTOが提供するContainerfileのテンプレートの実際の内容と多少異なる場合があります。

注※2

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表3‒8　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

■uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合

HMP-PCTOの提供ファイル「templates/container-files/<RHELバージョン>/mediator/normal/Containerfile」を使用してください。

■uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合

HMP-PCTOの提供ファイル「templates/container-files/<RHELバージョン>/mediator/patch/Containerfile」を使用してください。

mediator-V.R.S.jar

(HMP-PCTOのMediatorアプリケーションのJARファイル)

ユーザ

「3.2.4　JARファイルのビルド（通常版限定）」で作成したもの

libhmppcto-mediator-V.R.S.so

(HMP-PCTOのMediatorアプリケーションのダイレクトIO用ライブラリファイル)

日立

−

health_check.sh

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

日立

−

wait_transactions.sh

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

日立

−

X64LIN

(uCosminexus Application Runtime with Java for Spring Bootのインストーラ)

日立

uCosminexus Application Runtime with Java for Spring BootのインストールCD-ROMに格納されているX64LINディレクトリをコピーしてください。

PACK_TAR.Z

(uCosminexus Application Runtime with Java for Spring Bootの修正パッチ)

日立

uCosminexus Application Runtime with Java for Spring Bootの修正パッチを適用する場合だけ格納してください。

DigiCertGlobalRootG2.crt

（DigiCertGlobalRootG2 CA証明書）

ユーザ

分散トレース収集サービスにAzure Monitor Application Insightsを使用する場合だけ格納してください。

GTS Root R1.pem

GTS Root R2.pem

GTS Root R3.pem

GTS Root R4.pem

（GTS Root R1、GTS Root R2、GTS Root R3、GTS Root R4証明書）

ユーザ

分散トレース収集サービスにGoogle Cloud PlatformのCloud Traceを使用する場合だけ格納してください。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Mediatorコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]mediator:<HMP-PCTOバージョン(V.R.S※)>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/mediator:V.R.S※ .

この例では、HMP-PCTOバージョンを「V.R.S※」としています。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(4)　コンテナイメージの登録

ビルドしたMediatorコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

3.4.4　TP1-Bridgeコンテナイメージの作成（通常版かつTP1-Bridge限定）

TP1-Bridgeコンテナイメージの作成方法について説明します。

このコンテナイメージは通常版の場合で、TP1-Bridgeを使用するときに作成します。

(1)　Containerfileのテンプレートの修正

uCosminexus Application Runtime with Java for Spring Bootの修正パッチがあるかどうかを確認して、使用するHitachi Microservices Platform - Bridge Option for OpenTP1が提供するTP1-Bridge用Containerfileのテンプレートを選択してください。選択したテンプレートに、次の修正をしてください。

「3.4.2　事前準備（通常版限定）」に示すとおり、ユーザの開発環境に合わせてdnfコマンドなどによるオンラインインストールの設定を組み込むなどの方法で修正してください。

オレンジ色の背景の1.（「COPY ./DigiCertGlobalRootG2.crt /opt/Cosminexus/jdk17/lib/security/」の行から「RUN keytool -import -alias AzureCACert -trustcacerts ¥」の「-noprompt」の行）は、分散トレース収集サービスにAzure Monitor Application Insightsを使用する場合だけ記述します。

Azure Monitor Application Insightsに接続するためにJavaのキーストアにルートCA証明書として、DigiCertGlobalRootG2 CAをインポートします。

keytoolコマンドの-storepassオプションに設定するパスワードは環境に合わせて変更してください。

オレンジ色の背景の2.（「COPY ./gtsrootr1.pem /opt/Cosminexus/jdk17/lib/security/」の行から「RUN keytool -import -alias gtsrootr4 -trustcacerts ¥」の「-noprompt」の行）は、分散トレース収集サービスにGoogle Cloud PlatformのCloud Traceを使用する場合だけ記述します。

Cloud Traceに接続するためにJavaのキーストアにルートCA証明書として、GTS Root R1、GTS Root R2、GTS Root R3、GTS Root R4をインポートします。

keytoolコマンドの-storepassオプションに設定するパスワードは環境に合わせて変更してください。

オレンジ色の背景の3.の行は、Red Hat OpenShift Container Platformを使用し、SCC（Security Context Constraints）の設定で、コンテナ実行時にrootユーザでの実行を許容しない場合だけ記述します。Cosminexus Application Runtime with Java for Spring Bootのインストールディレクトリ配下の所有グループを実行ユーザが属するグループに変更してください。

uCosminexus Application Runtime with Java for Spring Bootのリリースノートを参照し、オレンジ色の背景の4.（「<uCosminexus Application Runtime with Java for Spring Bootの前提RPMパッケージ>」の行から「:」の行）に、uCosminexus Application Runtime with Java for Spring Bootに必要な前提RPMパッケージを記述してください。

uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合のContainerfileのテンプレートの例を、次に示します。

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212 AS builder
RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        alsa-lib ¥
        cups-libs ¥
        findutils ¥
        lksctp-tools ¥
        nss ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN
COPY ucars/X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HL0S ./
RUN mkdir patch
WORKDIR patch
COPY ucars/PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212 AS ucars
COPY --from=builder /opt /opt
COPY --from=builder /etc/.java /etc/.java
RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        dnf ¥
    && dnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        --allowerasing ¥
        curl-minimal ¥
        jq ¥
        glibc ¥
        <uCosminexus Application Runtime with Java for Spring Bootの前提RPMパッケージ>     …4
        :
    && dnf clean all ¥
    && rm -rf /var/cache/dnf/*
ENV PATH=/opt/Cosminexus/jdk17/bin:$PATH

RUN chgrp -R 1001 /opt/hitachi/ucars     …3

COPY ./DigiCertGlobalRootG2.crt /opt/Cosminexus/jdk17/lib/security/     …1
RUN keytool -import -alias AzureCACert -trustcacerts ¥
    -file /opt/Cosminexus/jdk17/lib/security/DigiCertGlobalRootG2.crt ¥
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥
    -storepass changeit ¥
    -noprompt
COPY ./gtsrootr1.pem /opt/Cosminexus/jdk17/lib/security/     …2
COPY ./gtsrootr2.pem /opt/Cosminexus/jdk17/lib/security/
COPY ./gtsrootr3.pem /opt/Cosminexus/jdk17/lib/security/
COPY ./gtsrootr4.pem /opt/Cosminexus/jdk17/lib/security/
RUN keytool -import -alias gtsrootr1 -trustcacerts ¥
    -file /opt/Cosminexus/jdk17/lib/security/gtsrootr1.pem ¥
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥
    -storepass changeit ¥
    -noprompt
RUN keytool -import -alias gtsrootr2 -trustcacerts ¥
    -file /opt/Cosminexus/jdk17/lib/security/gtsrootr2.pem ¥
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥
    -storepass changeit ¥
    -noprompt
RUN keytool -import -alias gtsrootr3 -trustcacerts ¥
    -file /opt/Cosminexus/jdk17/lib/security/gtsrootr3.pem ¥
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥
    -storepass changeit ¥
    -noprompt
RUN keytool -import -alias gtsrootr4 -trustcacerts ¥
    -file /opt/Cosminexus/jdk17/lib/security/gtsrootr4.pem ¥
    -keystore /opt/Cosminexus/jdk17/lib/security/cacerts ¥
    -storepass changeit ¥
    -noprompt

USER 1001:0

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212 AS ucars_eads
RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        dnf ¥
    && dnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        --allowerasing ¥
        curl-minimal ¥
        jq ¥
        glibc ¥
    && dnf clean all ¥
    && rm -rf /var/cache/dnf/*

RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN
COPY /X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HC13 ./
RUN mkdir patch
WORKDIR patch
COPY PACK_TAR.Z .
RUN tar xzvf PACK_TAR.Z && ./UPDATE -f; export RET=$?; if [ ${RET} -ne 0 -a ${RET} -ne 1 ]; then exit ${RET}; fi

FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1742914212
RUN mkdir -p /deployments/eads-lib ¥
    && mkdir -p /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log ¥
    && mkdir -p /deployments/tp1-log ¥
    && chown 1001:0 /deployments/tp1-log ¥
    && chmod 770 /deployments/tp1-log
ENV LOADER_PATH=/deployments/eads-lib
ENV PATH=/opt/Cosminexus/jdk17/bin:$PATH
COPY --from=ucars /opt /opt
COPY --from=ucars /etc/.java /etc/.java
RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        dnf ¥
    && dnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        --allowerasing ¥
        curl-minimal ¥
        jq ¥
        glibc ¥
    && dnf clean all ¥
    && rm -rf /var/cache/dnf/*
WORKDIR /deployments
COPY --from=ucars_eads --chown=1001:0 --chmod=0440 /opt/hitachi/xeads/javaclient/lib/ /deployments/eads-lib
COPY --chown=1001:0 --chmod=0550 ./health_check.sh /deployments/
COPY --chown=1001:0 --chmod=0550 ./wait_transactions.sh /deployments/
COPY --chown=1001:0 --chmod=0440 ./tp1-bridge-V.R.S※.jar /deployments/
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/tp1-bridge-V.R.S※.jar

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表3‒9　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

■uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合

HMP-PCTOの提供ファイル「templates/container-files/<RHELバージョン>/tp1-bridge/normal/Containerfile」を使用してください。

■uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合

HMP-PCTOの提供ファイル「templates/<RHELバージョン>/container-files/tp1-bridge/patch/Containerfile」を使用してください。

tp1-bridgeV.R.S.jar

(HMP-PCTOのTP1-BridgeアプリケーションのJARファイル)

ユーザ

「3.3.4　JARファイルのビルド（通常版かつTP1-Bridge限定）」で作成したもの

health_check.sh

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

日立

−

wait_transactions.sh

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

日立

−

X64LIN

(Hitachi Elastic Application Data Store Client for Javaのインストーラ)

日立

HMP-PCTOに同梱されているHitachi Elastic Application Data Store Client for JavaのインストーラのX64LINディレクトリをコピーしてください。

PACK_TAR.Z

(Hitachi Elastic Application Data Store Client for Javaの修正パッチ)

日立

HMP-PCTOにHitachi Elastic Application Data Store Client for Javaの修正パッチが同梱されている場合だけ格納してください。

ucars

ユーザ

−

X64LIN

（uCosminexus Application Runtime with Java for Spring Bootのインストーラ）

日立

uCosminexus Application Runtime with Java for Spring BootのインストールCD-ROMに格納されているX64LINディレクトリをコピーしてください。

PACK_TAR.Z

（uCosminexus Application Runtime with Java for Spring Bootの修正パッチ）

日立

uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合だけ格納してください。

DigiCertGlobalRootG2.crt

（DigiCertGlobalRootG2 CA証明書）

ユーザ

分散トレース収集サービスにAzure Monitor Application Insightsを使用する場合だけ格納してください。

GTS Root R1.pem

GTS Root R2.pem

GTS Root R3.pem

GTS Root R4.pem

（GTS Root R1、GTS Root R2、GTS Root R3、GTS Root R4証明書）

ユーザ

分散トレース収集サービスにGoogle Cloud PlatformのCloud Traceを使用する場合だけ格納してください。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

TP1-Bridgeコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<TP1-Bridgeコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/tp1-bridge:latest .

この例では、TP1-Bridgeコンテナイメージのイメージ名・タグ名を「tp1-bridge:latest」としています。

(4)　コンテナイメージの登録

ビルドしたTP1-Bridgeコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）

Dependency-Checkerコンテナイメージの作成方法について説明します。

このコンテナイメージは通常版の場合だけ作成します。トライアル版の場合は提供ファイルに含まれるコンテナイメージを使用します。

(1)　Containerfileのテンプレートの修正

HMP-PCTOが提供するContainerfileのテンプレートについて、「3.4.2　事前準備（通常版限定）」に示すとおり、ユーザの開発環境に合わせてdnfコマンドなどによるオンラインインストールの設定を組み込むなどの方法で修正してください。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表3‒10　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

dependency_check.sh

(HMP-PCTOのデプロイ依存関係チェックスクリプト)

日立

−

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Dependency-Checkerコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]dependency-checker:<HMP-PCTOバージョン(V.R.S※)>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/dependency-checker:V.R.S※ .

この例では、HMP-PCTOバージョンを「V.R.S※」としています。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

(4)　コンテナイメージの登録

ビルドしたDependency-Checkerコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

3.4.6　EADSサーバ用コンテナイメージの作成（通常版限定）

EADSサーバ用コンテナイメージを作成し、コンテナレジストリに登録してください。詳細については、取扱説明書「EADSコンテナオーケストレーションツール対応機能」を参照してください。

3.4.7　EADSコマンド実行用コンテナイメージの作成（通常版限定）

EADSコマンド実行用コンテナイメージを作成し、コンテナレジストリに登録してください。詳細については、取扱説明書「EADSコンテナオーケストレーションツール対応機能」を参照してください。

3.5　永続ボリュームとプロビジョニング方法の選定

HMP-PCTOが使用する永続ボリュームの選定について説明します。HMP-PCTOがサポートしている永続ボリュームのストレージ種別と、そのプロビジョニング方法の一覧を次の表に示します。この表を参照して、プロビジョニング方法を選定してください。

表3‒11　HMP-PCTOでサポートしている永続ボリュームのストレージ種別と、そのプロビジョニング方法の一覧

ストレージの種別

Kubernetes環境

マネージドファイルサービス

プロビジョニング方法

説明

静的

動的

ローカル永続ボリューム

規定しません

該当しません

○

−

ストレージクラスなどの詳細は用途によって異なります。詳細は「3.7　Kubernetesマニフェスト作成」を参照してください。

NFS

オンプレミス環境

該当しません

○※

−

ストレージクラスなどの詳細は用途によって異なります。詳細は「3.7　Kubernetesマニフェスト作成」を参照してください。

また、作業の詳細は各システムで異なります。HMP-PCTOとしての作業については、「3.6　共有ファイルシステムでの作業」を参照してください。

Red Hat OpenShift Container Platform環境

該当しません

○※

−

Microsoft Azure環境

Azure Files

○

−

NFSをサポートしているため、Azure FilesおよびAzure Blob Storageを永続ボリュームとして使用できます。プロビジョニングする方法については、Microsoft Azureの公式ドキュメントを参照してください。

HMP-PCTOとして必要な作業は、「3.6　共有ファイルシステムでの作業」を参照してください。

Azure Blob Storage

−

○

Google Cloud Platform環境

Filestore

○

○

NFSをサポートしているため、Filestoreを永続ボリュームとして使用できます。プロビジョニングする方法については、Google Cloud Platformの公式ドキュメントを参照してください。

HMP-PCTOとして必要な作業は、「3.6　共有ファイルシステムでの作業」を参照してください。

（凡例）

○：サポートしています。HMP-PCTOおよびEADSで動作検証が実施済みの構成です。

−：サポートしていません。HMP-PCTOおよびEADSで動作検証が未実施の構成です。この構成を使用する場合は、ユーザ責任で動作検証を実施してください。

注※　目的によっては使用できない場合があります。詳細な選定方法は「3.7　Kubernetesマニフェスト作成」を参照してください。

3.6　共有ファイルシステムでの作業

HMP-PCTOが前提とする共有ファイルシステムでの作業について説明します。

共有ファイルシステムでの作業の詳細については、OS、各製品のマニュアルなどを参照してください。

3.6.1　作業項目の一覧

HMP-PCTOが前提とする共有ファイルシステムでの作業項目の一覧を次の表に示します。

表3‒12　HMP-PCTOが前提とする共有ファイルシステムでの作業項目の一覧

作業項目

備考

参照先

マネージドファイルサービスでのプロビジョニング

Microsoft Azure環境またはGoogle Cloud Platform環境の場合で、NFSストレージが必要なときだけ実施します。

3.6.2　マネージドファイルサービスでのプロビジョニング

MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）

MediatorのConsensusLogのマウント用ディレクトリをNFSストレージとする場合だけ作成します。

3.6.3　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）

Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリの作成

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

3.6.4　Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリの作成

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

通常版の場合で、uCosminexus Application Runtime for Spring Bootを導入するときだけ作成します。

3.6.5　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

EADSの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）

通常版の場合で、EADSの永続ボリュームをNFSストレージとするときだけ作成します。

3.6.6　EADSの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）

3.6.2　マネージドファイルサービスでのプロビジョニング

Microsoft Azure環境またはGoogle Cloud Platform環境の場合でNFSストレージが必要なときは、次のどちらかをデプロイするための作業時に、マネージドファイルサービスでのプロビジョニングを実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

HMP-PCTOは共有ファイルシステムとしてNFSを前提としています。このため、NFSをサポートしている次のマネージドファイルサービスを使用できます。

Microsoft Azure環境

Azure Files

Azure Blob Storage

Google Cloud Platform環境

Filestore

(1)　Azure FilesをNFSストレージとしてプロビジョニングする

Azure Filesを永続ボリュームとして使用する場合は、次の項目を実施してください。

NFSプロトコルを使用してマウントしてください。NFSプロトコルを使用する場合は、Premiumプランを選択する必要があります。

ストレージクラスには、「azurefile-csi-premium」を指定してください。

永続ボリュームとして使用するAzure FilesはAzure Files CSIドライバのPersistentVolumesの次のパラメタを設定することで決定されます。

spec.csi.volumeAttributes.storageAccount：使用するAzureストレージアカウントを指定

spec.csi.volumeAttributes.shareName：使用するAzure Files名を指定

spec.csi.volumeAttributes.folderName：任意指定。Azure Files内の共有ディレクトリ名を指定

spec.csi.volumeAttributes.protocol：使用するプロトコルとして「nfs」を指定

上記のパラメタを設定することで、永続ボリュームとして次がマウントされます。

/<Azureストレージアカウント>/<Azure Files名>/<共有ディレクトリ名>

Azure FilesをNFSストレージとしてプロビジョニングする方法については、Microsoft Azureの公式ドキュメントを参照してください。

また、Azure FilesをNFSストレージとしてプロビジョニングする際は、次の点を考慮してください。

Azure Filesの動的プロビジョニングおよび静的プロビジョニングによる永続ボリュームの作成が使用できます。

動的プロビジョニングを使用することで、永続ボリュームクレームが発行された時点でKubernetesによって自動で「pvc-」から始まる名前が付いた永続ボリュームがプロビジョニングされるため、事前に永続ボリュームを作成する必要がなくなります。

静的プロビジョニングを使用する場合は、事前に永続ボリュームを手動で作成する必要があります。

(2)　Azure Blob StorageをNFSストレージとしてプロビジョニングする

Azure Blob Storageを永続ボリュームとして使用する場合は、次の項目を実施してください。

NFSプロトコルを使用してマウントしてください。NFSプロトコルを使用する場合はPremiumプランを選択する必要があります。

ストレージクラスには、「azureblob-nfs-premium」を指定してください。

永続ボリュームとして使用するBLOBコンテナはAzure Blob Storage CSIドライバのPersistentVolumesの次のパラメタを設定することで決定されます。

spec.csi.volumeAttributes.storageAccount：使用するAzureストレージアカウントを指定

spec.csi.volumeAttributes.containerName：使用するBLOBコンテナ名を指定

spec.csi.volumeAttributes.protocol：使用するプロトコルとして「nfs」を指定

上記のパラメタを設定することで、永続ボリュームとして次がマウントされます。

/<Azureストレージアカウント>/<BLOBコンテナ>

Azure Blob StorageをNFSストレージとしてプロビジョニングする方法については、Microsoft Azureの公式ドキュメントを参照してください。

また、Azure Blob StorageをNFSストレージとしてプロビジョニングする際は、次の点を考慮してください。

BLOBコンテナがマウントされるディレクトリとなるため、目的に応じたBLOBコンテナを作成することでファイルの混在を防止できます。

Azure Blob Storageの動的プロビジョニングおよび静的プロビジョニングによる永続ボリュームの作成が使用できます。

動的プロビジョニングを使用することで、永続ボリュームクレームが発行された時点でKubernetesによって自動で「pvc-」から始まる名前が付いた永続ボリュームがプロビジョニングされるため、事前に永続ボリュームを作成する必要がなくなります。

静的プロビジョニングを使用する場合は、事前に永続ボリュームを手動で作成する必要があります。

(3)　Google Cloud PlatformのFilestoreをNFSストレージとしてプロビジョニングする

FilestoreをNFSストレージとしてプロビジョニングする方法については、Google Cloud Platformの公式ドキュメントを参照してください。

3.6.3　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）

MediatorのConsensusLogのマウント用ディレクトリをNFSストレージとする場合は、次の作業を実施してください。

Mediatorが存在する各ワーカーノードでアクセスできるNFSに、MediatorのConsensusLogの永続ボリュームマウント用ディレクトリを次の要領で作成してください。

＜MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成要領＞

ディレクトリのグループにGID「0」（root）を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

ディレクトリ名に制限はありません。

なお、「3.7.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」の例では、ディレクトリ名を「/mediator-consensus-log-volume」としています。

GID「0」（root）で書き込みできる状態で、NFSでディレクトリを公開してください。

各Mediatorで使用するConsensusLogを、Mediator単位で異なるNFSサーバに配置することを推奨します。これによって、障害時の影響範囲を最小化できます。

Mediator数分のNFSサーバを用意することが難しい場合は、1台以上のNFSサーバに複数のMediatorのConsensusLogを分散して配置してください。1台のNFSサーバに複数のMediatorのConsensusLogを配置した場合、NFSサーバが単一障害点となるおそれがあるため、NFSサーバの冗長化などの対策を検討してください。

3.6.4　Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリの作成

Elastic Stack、JaegerおよびPrometheus を使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリを、次の要領でNFSやクラウドストレージなどの全ワーカーノードで共有可能な場所に作成してください。

＜Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリの作成要領＞

ディレクトリのグループにGID「0」（root）を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

GID「0」（root）で書き込みできる状態で、NFSでディレクトリを公開してください。

3.6.5　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリを、次の要領で全ワーカーノードで共有可能なNFSに作成してください。この作業は、次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

＜uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリの作成要領＞

ディレクトリのグループにGID「0」（root）を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

GID「0」（root）で書き込みできる状態で、NFSでディレクトリを公開してください。

3.6.6　EADSの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）

EADSの永続ボリュームをNFSストレージとする場合、次の作業を実施してください。

EADSの永続ボリュームマウント用ディレクトリを、EADSが存在する各ワーカーノードでアクセスできるNFSに次の要領で作成してください。

＜EADSの永続ボリュームマウント用ディレクトリの作成要領＞

ディレクトリのグループにGID「0」（root）を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

ディレクトリ名に制限はありません。

なお、「3.7.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）」の例では、ログファイル用のディレクトリ名を「/eads-logs-volume」、キャッシュデータファイルおよびキャッシュインデックスファイル用のディレクトリ名を「/eads-cache-volume」、ストアデータファイル用のディレクトリ名を「/eads-store-volume」としています。

GID「0」（root）で書き込みできる状態で、NFSでディレクトリを公開してください。

3.7　Kubernetesマニフェスト作成

HMP-PCTOのKubernetesマニフェスト作成方法について説明します。

Kubernetesマニフェストの記述仕様の詳細は、Kubernetesのマニュアルなどを参照してください。

Kubernetesマニフェスト作成時のログおよびトラブルシュート情報の取得の設定については、「3.11.1　ログおよびトラブルシュート情報の取得の設定」を参照してください。

3.7.1　作業項目の一覧

Kubernetesマニフェスト作成の作業項目の一覧を次の表に示します。

表3‒13　Kubernetesマニフェスト作成の作業項目の一覧

作業項目

備考

参照先

MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

必ず作成します。

3.7.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

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

3.7.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

3.7.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）

EADSの永続ボリュームの種類を選択する判断基準は、「3.7.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）」を参照してください。

3.7.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

次のどちらかのKubernetesマニフェスト作成時に作成します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

3.7.6　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

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

3.7.7　コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

3.7.8　メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの作成

3.7.9　メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの作成

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

通常版の場合で、uCosminexus Application Runtime for Spring Bootを導入するときだけ作成します。次のどちらかのKubernetesマニフェスト作成時に作成します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

3.7.10　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

Microsoft AzureのマネージドPrometheusによるメトリクス収集のKubernetesマニフェストの作成

Microsoft Azure環境でマネージドPrometheusを使用してHMP-PCTOのメトリクスを収集するときだけ作成します。

3.7.11　Microsoft AzureのマネージドPrometheusによるメトリクス収集のKubernetesマニフェストの作成

Google Cloud PlatformのマネージドPrometheusによるメトリクス収集のKubernetesマニフェスト作成

Google Cloud Platform環境でマネージドPrometheusを使用してHMP-PCTOのメトリクスを収集するときだけ作成します。

3.7.12　Google Cloud PlatformのマネージドPrometheusによるメトリクス収集のKubernetesマニフェスト作成

New Relicによるメトリクス収集のKubernetesマニフェスト作成

New Relicを使用してHMP-PCTOのメトリクスを収集するときだけ作成します。

3.7.13　New Relicによるメトリクス収集のKubernetesマニフェスト作成

PrometheusのKubernetesマニフェスト作成

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

3.7.14　PrometheusのKubernetesマニフェスト作成

3.7.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

「7.5.8　Mediatorの要件」に記載されているMediatorのConsensusLogの永続ボリュームの要件を満たすように、MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストを作成してください。

マネージドファイルサービスを使用する場合、次のマネージドファイルサービスを永続ボリュームとしてマウントするために必要なKubernetesマニフェストについては、それぞれの公式ドキュメントを参照してください。

Microsoft Azure環境

Azure Files

Azure Blob Storage

Google Cloud Platform環境

Filestore

永続ボリュームの種類を選択する判断基準の例を示します。

Blue/Greenデプロイメントのように、MediatorのPodをデプロイするノードを固定したくない場合は、NFSストレージを選択してください。

NFSサーバを用意しないで、最小限の構成としたい場合は、ローカル永続ボリューム（local）を選択してください。

ローカル永続ボリューム（local）を選択すると、NFSストレージよりも永続ボリュームへアクセスする性能が高くなります。

ローカル永続ボリューム（local）を選択すると、ノードが障害になったときの稼働率が安定します。MediatorのPodをデプロイするノードを固定することで、Mediatorをノードに均等に配置するためです。

永続ボリュームの種類がローカル永続ボリューム（local）の場合は、Mediatorで使用する永続ボリュームの種類を「ローカル永続ボリューム（local）」とし、KubernetesのnodeAffinityで永続ボリュームの割り当てノードを固定することで、その永続ボリュームを使用するMediatorのPodはKubernetesスケジューラによって必ず永続ボリュームと同一ノードに割り当てられるようになります。これによって、MediatorのPodが必ずノードにアタッチされたローカルストレージデバイスを使用できるようにします。

また、Mediator専用のストレージクラスを作成することで、MediatorのConsensusLogの永続ボリュームとMediatorのConsensusLogの永続ボリュームクレームのバインドを必ず一対一になるようにします。

永続ボリュームの種類がNFSストレージの場合は、Mediatorで使用する永続ボリュームの種類を「NFSストレージ」とし、KubernetesのnodeAffinityで永続ボリュームの割り当てノードを固定しないことで、MediatorのPodを不特定のノード上に割り当てます。

MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成要領を次に示します。

＜ストレージクラスの作成要領＞

ストレージクラスの名称（metadata.nameフィールド）に、ユーザ任意の名称を指定してください。ここで指定した名称は、各永続ボリュームのstorageClassNameフィールド、およびMediatorのHelmチャートのconsensusLog.storageClassNameパラメタの値に指定します。

ストレージクラスのprovisionerフィールドに、「kubernetes.io/no-provisioner」を指定してください。

＜永続ボリュームの作成要領＞

オートスケールを使用しない場合は、Kubernetesクラスタに起動するMediatorの数と同じ数だけ、永続ボリュームを作成するよう定義したKubernetesマニフェストを作成してください。

オートスケールを使用する場合は、「4.2.4　HPAのKubernetesマニフェストの作成」で作成したMediator用のHPAのマニフェストファイルに指定した「スケールアウトできる最大のPod数」と同じ数だけ、永続ボリュームを作成するよう定義したKubernetesマニフェストを作成してください。

各永続ボリュームの名称（metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

永続ボリュームの種類によって、次のどちらかの作業を実施してください。

永続ボリュームの種類がローカル永続ボリューム（local）の場合

各永続ボリュームの.spec.localフィールドに、「(1)　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）」で作成するワーカーノード上のボリュームマウント用ディレクトリパスを指定してください。

永続ボリュームの種類がNFSストレージの場合

各永続ボリュームの.spec.nfsフィールドに、「3.6.3　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）」で作成するNFSのサーバアドレスとディレクトリパスを指定してください。

永続ボリュームの種類がローカル永続ボリューム（local）の場合、各永続ボリュームのnodeAffinityフィールドに、Mediatorを配置する個々のワーカーノードを決めてノード名を指定してください。

例として、Kubernetesクラスタに起動するMediatorの最大台数が「5」で、ワーカーノードが5台（「ワーカーノード-0」、「ワーカーノード-1」、「ワーカーノード-2」、「ワーカーノード-3」、「ワーカーノード-4」）がある場合、次のように指定します。

「永続ボリューム-0」のnodeAffinityフィールドに、「ワーカーノード-0」を指定する

「永続ボリューム-1」のnodeAffinityフィールドに、「ワーカーノード-1」を指定する

「永続ボリューム-2」のnodeAffinityフィールドに、「ワーカーノード-2」を指定する

「永続ボリューム-3」のnodeAffinityフィールドに、「ワーカーノード-3」を指定する

「永続ボリューム-4」のnodeAffinityフィールドに、「ワーカーノード-4」を指定する

永続ボリュームの種類がNFSストレージの場合、各永続ボリュームの.spec.nodeAffinityフィールドで、Mediatorを配置しないノード（コントロールプレーンなど）を決め、それ以外のノードに配置されるように指定してください。例として、.spec.nodeAffinity.required.nodeSelectorTerms.matchExpressionsフィールドに「operator: NotIn」「values:- control-plane-0」のように指定します。

各永続ボリュームのcapacity.storageフィールドに、次に示す値以上のサイズを指定してください。

指定サイズ＝「(a) × (b) ＋ (c)」以上のサイズ
(a) MediatorのHelmチャートの.consensusLog.sizeパラメタに指定した値
(b) 1,024(1つのConsensusLogのサイズ)
(c) 1,048,576(ボリュームの書き込み容量不足にならないための予備サイズ(1MB))

例として、(a)が「256」の場合、「256×1,024＋1,048,576」＝「1,310,720」以上となるため、capacity.storageフィールドには「2Mi」（2メビバイト）を指定します。

各永続ボリュームのaccessModesフィールドに、「ReadWriteOnce」を指定してください。

各永続ボリュームのpersistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。

各永続ボリュームのstorageClassNameフィールドに、前述のストレージクラスで指定した名称を指定してください。

＜ストレージクラスおよび永続ボリュームの記述例＞

ローカル永続ボリューム（local）とする場合と、NFSストレージとする場合の、MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの記述例を次に示します。

＜永続ボリュームをローカル永続ボリューム（local）とする場合＞

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: mediator-consensus-log
provisioner: kubernetes.io/no-provisioner
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-0
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  local:
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-0
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-1
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  local:
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-1
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-2
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  local:
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-2
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-3
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  local:
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-3
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-4
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  local:
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-4

この例では、Kubernetesクラスタに起動するMediatorの数を「5」、ワーカーノードを5台としています。

＜永続ボリュームをNFSストレージとする場合＞

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: mediator-consensus-log
provisioner: kubernetes.io/no-provisioner
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-0
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  nfs:
    server: nfs-server.example.com
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-1
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  nfs:
    server: nfs-server.example.com
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-2
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  nfs:
    server: nfs-server.example.com
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-3
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  nfs:
    server: nfs-server.example.com
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mediator-consensus-log-4
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: mediator-consensus-log
  nfs:
    server: nfs-server.example.com
    path: /mediator-consensus-log-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0

この例では、Kubernetesクラスタに起動するMediatorの数を「5」、ワーカーノードを5台としています。

3.7.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

「7.5.16　Elasticsearchの要件」に記載されているElasticsearchデータディレクトリの永続ボリュームの要件を満たすように、Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストを作成してください。

また、Elasticsearchデータディレクトリ専用のストレージクラスを作成することで、Elasticsearchの永続ボリュームとElasticsearchデータディレクトリの永続ボリュームクレームのバインドを必ず一対一になるようにします。クラスタ構成で構築する場合、マスターノード用、データノード用の2つのストレージクラスを作成してください。

Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成要領を次に示します。

＜ストレージクラスの作成要領＞

ストレージクラスの名称（metadata.nameフィールド）に、ユーザ任意の名称を指定してください。ここで指定した名称は、各永続ボリュームのstorageClassNameフィールド、およびElasticsearchのHelmチャートのdata.storage-class-nameパラメタの値に指定します。

ストレージクラスのprovisionerフィールドに、「kubernetes.io/no-provisioner」を指定してください。

＜永続ボリュームの作成要領＞

Kubernetesクラスタに起動するElasticsearchのノード数と同じ数だけ、永続ボリュームのKubernetesマニフェストを作成してください。クラスタ構成の場合はマスターノードとデータノードの数の合計の数だけ作成してください。

各永続ボリュームの名称（metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

各永続ボリュームの.spec.nodeAffinityフィールドに、Elasticsearchを配置する個々のワーカーノードを決めてノード名を指定してください。マスターノード内で同じワーカーノードを指定しないでください。また、クラスタ構成で構築する場合、データノード内で同じワーカーノードを指定しないでください。

例として、Kubernetesクラスタに起動するElasticsearchのマスターノードの数が「3」、データノードの数が「3」で、ワーカーノードが3台（「ワーカーノード-1」、「ワーカーノード-2」、「ワーカーノード-3」）がある場合、次のように指定します。

マスターノード向け「永続ボリューム-1」の.spec.nodeAffinityフィールドに、「ワーカーノード-1」を指定する

マスターノード向け「永続ボリューム-2」の.spec.nodeAffinityフィールドに、「ワーカーノード-2」を指定する

マスターノード向け「永続ボリューム-3」の.spec.nodeAffinityフィールドに、「ワーカーノード-3」を指定する

データノード向け「永続ボリューム-1」の.spec.nodeAffinityフィールドに、「ワーカーノード-1」を指定する

データノード向け「永続ボリューム-2」の.spec.nodeAffinityフィールドに、「ワーカーノード-2」を指定する

データノード向け「永続ボリューム-3」の.spec.nodeAffinityフィールドに、「ワーカーノード-3」を指定する

各永続ボリュームの.spec.capacity.storageフィールドにElasticsearchデータディレクトリとして割り当てる永続ボリュームのサイズを指定します。データ量については次の式を目安とし、実測するようお願いします。

[必要なデータ量] = ((A) + (B) + (C)) × (D) × (E) 以上のサイズ
(A) 分散トレースで使用する1時間当たりのindexサイズ(MB)
(B) メッセージログで使用する1時間当たりのindexサイズ(MB)
(C) メトリクスで使用する1時間当たりのindexサイズ(MB)
(D) 1日当たりのシステムの想定稼働時間(h)
(E) 保存期間(日)

(A)分散トレースで使用する1時間当たりのindexサイズ
indexサイズ = ((a) + ((b) × (c))) × (h)
(a) Orchestrator-Service、Alternate-Service、Relay-ServiceおよびMediatorが出力する分散トレースのサイズ：300MB
(b) Entity-Service(SQL)、Orchestrator-Service(SQL)、Alternate-Service(SQL)、Entity-Service(TCC)、TP1-Bridgeが出力する分散トレースのサイズ：100MB
(c) Entity-Service(SQL)、Orchestrator-Service(SQL)、Alternate-Service(SQL)、Entity-Service(TCC)、TP1-BridgeのPod数
(h) 想定する1秒間のトランザクション数

(B)メッセージログで使用する1時間当たりのindexサイズ
indexサイズ = (a)
(a) 1時間当たりの使用量:100MB(エラーなどによってメッセージログが継続して出力される場合を想定した推奨値)

(C)メトリクスで使用する1時間当たりのindexサイズ
indexサイズ = ((a) + ((b) × (c))) × 15 / (h)
(a) Orchestrator-Service、Alternate-Service、Relay-ServiceおよびMediatorが出力するメトリクスのサイズ：1000MB
(b) Entity-Service(SQL)、Orchestrator-Service(SQL)、Alternate-Service(SQL)、Entity-Service(TCC)、TP1-Bridgeが出力するメトリクスのサイズ：100MB
(c) Entity-Service(SQL)、Orchestrator-Service(SQL)、Alternate-Service(SQL)、Entity-Service(TCC)、TP1-BridgeのPod数
(h) メトリクスの取得間隔。Prometheusのパラメタglobal.scrape_intervalの指定値の単位を秒に変換した値

シングル構成の場合: 「必要なデータ量」の式から計算した値を記載してください。

クラスタ構成の場合

・マスターノードについては3GBを指定してください。

・データノードについては、「必要なデータ量」で計算した値を各ノードに配置されるプライマリシャード、レプリカシャードの合計数倍してください。

注　製品調査時のディスク使用量

障害発生時など製品の調査を行う場合、当社のサポート部署から次のパラメタをtrue に設定するよう依頼することがあります。その場合、「(A)分散トレースで使用する1時間当たりのindexサイズ」の見積もり式よりもディスク使用量が増加するため、保存期間が短くなることがあります。

・jp.co.Hitachi.soft.hmppcto.tracing.debugパラメタ

・jp.co.Hitachi.soft.hmppcto.tracing.jdbc.debugパラメタ

・jp.co.Hitachi.soft.hmppcto.tracing.grpc.debugパラメタ

各永続ボリュームのaccessModesフィールドに、「ReadWriteOnce」を指定してください。

各永続ボリュームのpersistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。

各永続ボリュームのstorageClassNameフィールドに、ストレージクラスで指定した名称を指定してください。

Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの記述例を次に示します。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: elasticsearch-data-masternode
provisioner: kubernetes.io/no-provisioner
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: elasticsearch-data-datanode
provisioner: kubernetes.io/no-provisioner
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-data-masternode-0
spec:
  capacity:
    storage: 3Gi
  storageClassName: elasticsearch-data-masternode
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /elasticsearch-data-volume-masternode
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
            - worker-1
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-data-masternode-1
spec:
  capacity:
    storage: 3Gi
  storageClassName: elasticsearch-data-masternode
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /elasticsearch-data-volume-masternode
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
            - worker-2
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-data-masternode-2
spec:
  capacity:
    storage: 3Gi
  storageClassName: elasticsearch-data-masternode
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /elasticsearch-data-volume-masternode
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
            - worker-3
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-data-datanode-0
spec:
  capacity:
    storage: 3Gi
  storageClassName: elasticsearch-data-datanode
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /elasticsearch-data-volume-datanode
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
            - worker-1
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-data-datanode-1
spec:
  capacity:
    storage: 3Gi
  storageClassName: elasticsearch-data-datanode
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /elasticsearch-data-volume-datanode
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
            - worker-2
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-data-datanode-2
spec:
  capacity:
    storage: 3Gi
  storageClassName: elasticsearch-data-datanode
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /elasticsearch-data-volume-datanode
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
            - worker-3

この例では、Kubernetesクラスタに起動するElasticsearchのマスターノードの数を「3」、データノードの数を「3」、ワーカーノードを3台としています。

3.7.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

「7.5.16　Elasticsearchの要件」に記載されているElasticsearchリポジトリディレクトリの永続ボリュームの要件を満たすように、Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストを作成してください。

また、Elasticsearchリポジトリディレクトリ専用のストレージクラスを作成することで、Elasticsearchの永続ボリュームとElasticsearchリポジトリディレクトリの永続ボリュームクレームのバインドを必ず一対一になるようにします。

Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成要領を次に示します。

＜ストレージクラスの作成要領＞

ストレージクラスの名称（metadata.nameフィールド）に、ユーザ任意の名称を指定してください。ここで指定した名称は、後述の永続ボリュームのstorageClassNameフィールド、およびElasticsearchのHelmチャートのrepo.storage-class-nameパラメタの値に指定します。

＜永続ボリュームの作成要領＞

Kubernetesクラスタに起動するElasticsearchのノード数と同じ数だけ、永続ボリュームのKubernetesマニフェストを作成してください。クラスタ構成の場合はマスターノードとデータノードの数の合計の数だけ作成してください。

永続ボリュームの名称（metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

永続ボリュームの.spec.capacity.storageフィールドにElasticsearchリポジトリディレクトリとして割り当てる永続ボリュームのサイズを指定します。データディレクトリの永続ボリュームで指定した値を目安とし、実測してください。

永続ボリュームのaccessModesフィールドに、「ReadWriteMany」を指定してください。

永続ボリュームのpersistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。

永続ボリュームのnfsフィールドに、Kubernetes各ワーカーノードに「3.6.4　Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリの作成」で作成するNFSのサーバアドレスとディレクトリを指定してください。

次に示す記述例では、ディレクトリ名を「/elasticsearch-repo-volume」としています。

Elasticsearchリポジトリディレクトリの永続ボリュームのKubernetesマニフェストの記述例を次に示します。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: elasticsearch-repo
provisioner: kubernetes.io/no-provisioner
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-repo-master-0
spec:
  capacity:
    storage: 3Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: elasticsearch-repo
  nfs:
    server: nfs-server.example.com
    path: /elasticsearch-repo-volume
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-repo-master-1
spec:
  capacity:
    storage: 3Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: elasticsearch-repo
  nfs:
    server: nfs-server.example.com
    path: /elasticsearch-repo-volume
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-repo-master-2
spec:
  capacity:
    storage: 3Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: elasticsearch-repo
  nfs:
    server: nfs-server.example.com
    path: /elasticsearch-repo-volume
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-repo-data-0
spec:
  capacity:
    storage: 3Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: elasticsearch-repo
  nfs:
    server: nfs-server.example.com
    path: /elasticsearch-repo-volume
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-repo-data-1
spec:
  capacity:
    storage: 3Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: elasticsearch-repo
  nfs:
    server: nfs-server.example.com
    path: /elasticsearch-repo-volume
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-repo-data-2
spec:
  capacity:
    storage: 3Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: elasticsearch-repo
  nfs:
    server: nfs-server.example.com
    path: /elasticsearch-repo-volume

3.7.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）

EADSの永続ボリュームのKubernetesマニフェストを作成してください。詳細については、取扱説明書「EADSコンテナオーケストレーションツール対応機能」を参照してください。

マネージドファイルサービスを使用する場合、次のマネージドファイルサービスを永続ボリュームとしてマウントするために必要なKubernetesマニフェストについては、それぞれの公式ドキュメントを参照してください。

Microsoft Azure環境

Azure Files

Azure Blob Storage

Google Cloud Platform環境

Filestore

永続ボリュームの種類を選択する判断基準の例を、次に示します。

Blue/Greenデプロイメントのように、EADSのPodをデプロイするノードを固定したくない場合には、NFSストレージを選択してください。

NFSサーバを用意せず、最小限の構成としたい場合は、ローカル永続ボリューム（local）を選択してください。

ローカル永続ボリューム（local）を選択すると、NFSストレージよりも永続ボリュームへアクセスする性能が高くなります。

ローカル永続ボリューム（local）を選択すると、ノードが障害になった時の稼働率が安定します。

EADSのPodをデプロイするノードを固定することで、EADSをノードに均等に配置するためです。

永続ボリュームの種類がNFSストレージの場合は、EADSで使用する永続ボリュームの種類を「NFSストレージ」とし、KubernetesのnodeAffinityで永続ボリュームの割り当てノードを固定しないことで、EADSのPodを不特定のノード上に割り当てます。

永続ボリュームの種類がローカル永続ボリューム（local）の場合は、EADSで使用する永続ボリュームの種類を「ローカル永続ボリューム（local）」とし、KubernetesのnodeAffinityで永続ボリュームの割り当てノードを固定することで、その永続ボリュームを使用するEADSのPodはKubernetesスケジューラによって必ず永続ボリュームと同一ノードに割り当てられます。これによって、EADSのPodが必ずノードにアタッチされたローカルストレージデバイスを使用できるようにします。

また、永続ボリュームにどの永続ボリュームクレームにバインドさせるかを指定することで、EADSの永続ボリュームとEADSの永続ボリュームクレームのバインドを必ず一対一になるようにします。

EADSの永続ボリュームのKubernetesマニフェストの作成要領を次に示します。

＜見積もり要領＞

デプロイするEADSの構成（EADSサーバ台数、多重度、キャッシュなど）を決め、マニュアル「Elastic Application Data Store ユーザーズガイド」を参考にしてEADSサーバの各種見積もり量（使用メモリ量・ログファイル用ディスク容量・キャッシュデータファイル、およびキャッシュインデックスファイル用ディスク容量・ストアデータファイル用ディスク容量）を見積もってください。

＜PVCの種類と個数について＞

EADSサーバが定義するPVC（永続ボリュームクレーム）を満たすボリュームを決めて、対応するリソースのマニフェストファイルを作成してデプロイします。

表3‒14　EADSサーバで定義しているPVCの種類と個数

ボリューム種類

PVC命名規則

個数

ログファイル

logs-pvc-<Serverリリース名>-eads-server-<複製インデックス>

EADSサーバ台数

ストアデータファイル

store-pvc-<Serverリリース名>-eads-server-<複製インデックス>

EADSサーバ台数

キャッシュデータファイルおよびキャッシュインデックスファイル

cache-pvc-<キャッシュ定義インデックス※1>-<Serverリリース名>-eads-server-<複製インデックス>

キャッシュ数×EADSサーバ台数

追加ボリューム

vol-pvc-<追加ボリューム定義インデックス※2>-<Serverリリース名>-eads-server-<複製インデックス>

追加ボリューム数※3×EADSサーバ台数

注※1

「3.8.5　EADSのHelmチャートのカスタマイズ（通常版限定）」で説明するEADSサーバチャート用values.yamlのcachesフィールド下に登録したキャッシュ定義配列のインデックス（0から始まる）です。キャッシュ定義数分のPVCが追加されます。ただし、nameが重複した要素はインデックスから除外されます。

注※2

「3.8.5　EADSのHelmチャートのカスタマイズ（通常版限定）」で説明するEADSサーバチャート用values.yamlのvolumesフィールド下に登録した追加ボリューム定義配列のインデックス（0から始まる）です。ただし、nameが重複した要素はインデックスから除外されます。

注※3

「3.8.5　EADSのHelmチャートのカスタマイズ（通常版限定）」で説明するEADSサーバチャート用values.yamlのvolumesフィールド下に登録した追加ボリューム定義配列の総数です。ただし、nameが重複した要素は総数から除外されます。

＜永続ボリュームの作成要領＞

Kubernetesクラスタに起動するEADSの数×3（ログファイル用ボリューム1個、ストアデータファイル用ボリューム1個、キャッシュデータファイルおよびキャッシュインデックスファイル用ボリューム1個、追加ボリューム用ボリューム0個の計3個）と同じ数だけ、永続ボリュームのKubernetesマニフェストを作成してください。

各永続ボリュームの名称（metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

永続ボリュームの種類がNFSストレージの場合は、StorageClassを定義し、各永続ボリュームの.spec.storageClassNameフィールドに、定義したStorageClassの名称を指定してください。

永続ボリュームの種類によって、次のどちらかを実施してください。

永続ボリュームの種類がNFSストレージの場合は、各永続ボリュームの.spec.nfsフィールドに、「3.6.6　EADSの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）」で作成するNFSのサーバアドレスとディレクトリパスを指定してください。

永続ボリュームの種類がローカル永続ボリューム（local）の場合は、各永続ボリュームの.spec.localフィールドに、「(3)　EADSの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）」で作成するノード上のボリュームマウント用ディレクトリパスを指定してください。

永続ボリュームの種類がNFSストレージの場合は、各永続ボリュームの.spec.nodeAffinityフィールドで、EADSを配置しないノード（コントロールプレーンなど）を決めて、それ以外のノードに配置されるように指定してください。例えば、.spec.nodeAffinity.required.nodeSelectorTerms.matchExpressionsフィールドに「operator: NotIn」、「values:- control-plane-0」のように指定します。

永続ボリュームの種類がローカル永続ボリューム（local）の場合は、各永続ボリュームのnodeAffinityフィールドに、EADSを配置する個々のノードを決めてノード名を指定してください。

例として、Kubernetesクラスタに起動するEADSの数が「3」で、ノードが3台（「ノード-1」、「ノード-2」、「ノード-3」）がある場合、次のように指定します。

「永続ボリューム-1」のnodeAffinityフィールドに、「ノード-1」を指定する

「永続ボリューム-2」のnodeAffinityフィールドに、「ノード-2」を指定する

「永続ボリューム-3」のnodeAffinityフィールドに、「ノード-3」を指定する

各永続ボリュームのcapacity.storageフィールドに、次に示す値以上のサイズを指定してください。

(a)EADSのHelmチャートのvalues.yamlのchaches-pvc-capacityパラメタに指定した値
(b)EADSのHelmチャートのvalues.yamlのlogs-capacityパラメタに指定した値
(c)EADSのHelmチャートのvalues.yamlのstore-capacityパラメタに指定した値

永続ボリュームの種類がNFSストレージの場合は、ログファイル用ボリューム、キャッシュデータファイルおよびキャッシュインデックスファイル用ボリュームの.spec.accessModesフィールドに「ReadWriteMany」を、ストアデータファイル用ボリュームの.spec.accessModesフィールドに「ReadWriteOnce」を指定してください。

永続ボリュームの種類がローカル永続ボリューム（local）の場合は、各永続ボリュームのaccessModesフィールドに、「ReadWriteOnce」を指定してください。

各永続ボリュームのpersistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。

各永続ボリュームのclaimRefフィールドに、EADSを配置する個々のノードを決めてEADSのPVC（「表3‒14　EADSサーバで定義しているPVCの種類と個数」の「PVC命名規則」列参照）を指定してください。

例として、Kubernetesクラスタに起動するEADSが3台（「Pod-0」、「Pod-1」、「Pod-2」）の数が「3」で、ノードが3台（「ノード-1」、「ノード-2」、「ノード-3」）がある場合、次のように指定します。

nodeAffinityフィールドが「ノード-1」に指定してある永続ボリュームのclaimRefフィールドに、「Pod-0」のPVCを指定する

nodeAffinityフィールドが「ノード-2」に指定してある永続ボリュームのclaimRefフィールドに、「Pod-1」のPVCを指定する

nodeAffinityフィールドが「ノード-3」に指定してある永続ボリュームのclaimRefフィールドに、「Pod-2」のPVCを指定する

永続ボリュームをローカル永続ボリューム（local）とする場合とNFSストレージとする場合の、EADSの永続ボリュームのKubernetesマニフェストの記述例を次に示します。

■永続ボリュームをローカル永続ボリューム（local）とする場合

apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-cache-0
spec:
  storageClassName: ""
  capacity:
    storage: "514Mi"
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /eads-cache-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-1
  claimRef:
    name: cache-pvc-0-eads-server-eads-server-0
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-logs-0
spec:
  storageClassName: ""
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /eads-logs-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-1
  claimRef:
    name: logs-pvc-eads-server-eads-server-0
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-store-0
spec:
  storageClassName: ""
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /eads-store-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-1
  claimRef:
    name: store-pvc-eads-server-eads-server-0
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-cache-1
spec:
  storageClassName: ""
  capacity:
    storage: "514Mi"
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /eads-cache-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-2
  claimRef:
    name: cache-pvc-0-eads-server-eads-server-1
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-logs-1
spec:
  storageClassName: ""
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /eads-logs-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-2
  claimRef:
    name: logs-pvc-eads-server-eads-server-1
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-store-1
spec:
  storageClassName: ""
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /eads-store-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-2
  claimRef:
    name: store-pvc-eads-server-eads-server-1
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-cache-2
spec:
  storageClassName: ""
  capacity:
    storage: "514Mi"
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /eads-cache-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-3
  claimRef:
    name: cache-pvc-0-eads-server-eads-server-2
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-logs-2
spec:
  storageClassName: ""
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /eads-logs-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-3
  claimRef:
    name: logs-pvc-eads-server-eads-server-2
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-store-2
spec:
  storageClassName: ""
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  local:
    path: /eads-store-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - worker-3
  claimRef:
    name: store-pvc-eads-server-eads-server-2
    namespace: my-namespace

■永続ボリュームをNFSストレージとする場合

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: eads-storage
provisioner: kubernetes.io/no-provisioner
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-cache-0
spec:
  capacity:
    storage: "514Mi"
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: eads-storage
  nfs:
    server: nfs-server.example.com
    path: /eads-cache-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
  claimRef:
    name: cache-pvc-0-eads-server-eads-server-0
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-logs-0
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: eads-storage
  nfs:
    server: nfs-server.example.com
    path: /eads-logs-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
  claimRef:
    name: logs-pvc-eads-server-eads-server-0
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-store-0
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: eads-storage
  nfs:
    server: nfs-server.example.com
    path: /eads-store-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
  claimRef:
    name: store-pvc-eads-server-eads-server-0
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-cache-1
spec:
  capacity:
    storage: "514Mi"
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: eads-storage
  nfs:
    server: nfs-server.example.com
    path: /eads-cache-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
  claimRef:
    name: cache-pvc-0-eads-server-eads-server-1
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-logs-1
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: eads-storage
  nfs:
    server: nfs-server.example.com
    path: /eads-logs-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
  claimRef:
    name: logs-pvc-eads-server-eads-server-1
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-store-1
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: eads-storage
  nfs:
    server: nfs-server.example.com
    path: /eads-store-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
  claimRef:
    name: store-pvc-eads-server-eads-server-1
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-cache-2
spec:
  capacity:
    storage: "514Mi"
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: eads-storage
  nfs:
    server: nfs-server.example.com
    path: /eads-cache-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
  claimRef:
    name: cache-pvc-0-eads-server-eads-server-2
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-logs-2
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: eads-storage
  nfs:
    server: nfs-server.example.com
    path: /eads-logs-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
  claimRef:
    name: logs-pvc-eads-server-eads-server-2
    namespace: my-namespace
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: eads-store-2
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: eads-storage
  nfs:
    server: nfs-server.example.com
    path: /eads-store-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: NotIn
          values:
          - control-plane-0
  claimRef:
    name: store-pvc-eads-server-eads-server-2
    namespace: my-namespace

3.7.6　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

次に示す要件を満たすように、デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストを作成してください。この作業は、次のどちらかのKubernetesマニフェスト作成時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

このロールおよびロールバインディングを使用することで、各KubernetesアプリケーションのDependency-Checkerコンテナがデプロイ依存関係チェック機能に必要なKubernetesオブジェクトにアクセスできるようにします。

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成要領を次に示します。

＜ロールの作成要領＞

リソースの種類（.kindフィールド）は、次のとおり指定してください。

Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※のNamespaceがすべて同一の場合：

Roleリソースを指定

Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※のNamespaceが1つでも異なる場合：

ClusterRoleリソースを指定

注※

Dependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「7.5　各Kubernetesアプリケーションの作成要件」を参照してください。

ロールの名称（.metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

Roleリソースの場合、ロールのNamespace（.metadata.namespaceフィールド）に、Dependency-Checkerコンテナを含むKubernetesアプリケーションと同一のNamespaceを指定してください。

ClusterRoleリソースの場合、Namespaceは指定しません。

ロールのルール（.rulesフィールド）に、次のとおり指定してください。

APIグループ（apiGroups）

空（コアグループ）、apps

リソース（resources）

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可（verbs）

get、list

＜ロールバインディングの作成要領＞

リソースの種類（.kindフィールド）は、次のとおり指定してください。

Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※のNamespaceがすべて同一の場合：

RoleBindingリソースを指定

Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※のNamespaceが1つでも異なる場合：

ClusterRoleBindingリソースを指定

注※

Dependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「7.5　各Kubernetesアプリケーションの作成要件」を参照してください。

ロールバインディングの名称（.metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

RoleBindingリソースの場合、ロールバインディングのNamespace（.metadata.namespaceフィールド）に、Dependency-Checkerコンテナを含むKubernetesアプリケーションと同一のNamespaceを指定してください。

ClusterRoleBindingリソースの場合、Namespaceは指定しません。

バインドするロール（.roleRefフィールド）は、次のとおり指定してください。

.roleRef.apiGroupフィールドに、「rbac.authorization.k8s.io」を指定してください。

.roleRef.kindフィールドに、「Role」を指定してください。

.roleRef.nameフィールドに、ロールで指定したロールの名称を指定してください。

バインドする対象物（.subjectsフィールド）は、次のとおり指定してください。

リストの要素数はDependency-Checkerコンテナを含むKubernetesアプリケーションと同じ数にします。

.subjects[].kindフィールドに、「ServiceAccount」を指定してください。

.subjects[].nameフィールドは、Dependency-Checkerコンテナを含むKubernetesアプリケーションのServiceAccountリソースの.metadata.nameフィールドに指定した名称を指定してください。HMP-PCTOのコントロールプレーンのKubernetesアプリケーション、およびRASのKubernetesアプリケーションのServiceAccountの名称は次のとおりです。

Kubernetesアプリケーション

備考

ServiceAccountの名称

TP1-Bridge

TP1連携機能を使用する場合だけ作成します。

<リリース名>-service-account※

Mediator

必ず作成します。

mediator-service-account

Ext-Cons

トライアル版の場合だけ作成します。

ext-cons-service-account

Filebeat

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

filebeat-service-account

Jaeger-query

jaeger-query-service-account

Jaeger-collector

jaeger-collector-service-account

Prometheus

prometheus-service-account

Metricbeat

metricbeat-service-account

Logstash

logstash-service-account

注※

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

例：リリース名がtp1-bridge1の場合

tp1-bridge1-service-account

.subjects[].namespaceフィールドに、Dependency-Checkerコンテナを含むKubernetesアプリケーションのServiceAccountリソースの.metadata.namespaceフィールドに指定した名称を指定してください。

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの記述例を次に示します。

■Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※¹のNamespaceがすべて同一の場合

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: dependency-checker-role
  namespace: my-namespace
rules:
- apiGroups:
  - ""
  - apps
  resources:
  - pods
  - replicasets
  - deployments
  - statefulsets
  - daemonsets
  verbs:
  - get
  - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: dependency-checker-role-binding
  namespace: my-namespace
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: dependency-checker-role
subjects:
- kind: ServiceAccount
  name: orchestrator-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: relay-service-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: sql-participant-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: tcc-participant-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: orchestrator-sql-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: alternate-service-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: alternate-service-sql-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: <tp1-bridgeのservice-account>※2
  namespace: my-namespace
- kind: ServiceAccount
  name: mediator-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: ext-cons-service-account※3
  namespace: my-namespace
- kind: ServiceAccount
  name: filebeat-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: jaeger-query-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: jaeger-collector-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: prometheus-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: metricbeat-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: logstash-service-account
  namespace: my-namespace

注※1

Dependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「7.5　各Kubernetesアプリケーションの作成要件」を参照してください。

注※2

<tp1-bridgeのservice-account>は、「name: <リリース名>-service-account」で指定してください。

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

例：リリース名がtp1-bridge1の場合

name: tp1-bridge1-service-account

注※3

トライアル版の場合だけ記述します。

■Dependency-Checkerコンテナを含むKubernetesアプリケーションとDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※¹のNamespaceが1つでも異なる場合

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: dependency-checker-role
rules:
- apiGroups:
  - ""
  - apps
  resources:
  - pods
  - replicasets
  - deployments
  - statefulsets
  - daemonsets
  verbs:
  - get
  - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dependency-checker-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: dependency-checker-role
subjects:
- kind: ServiceAccount
  name: orchestrator-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: relay-service-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: sql-participant-service-account※2
  namespace: my-namespace
- kind: ServiceAccount
  name: mediator-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: ext-cons-service-account※3
  namespace: my-namespace
- kind: ServiceAccount
  name: filebeat-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: jaeger-query-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: jaeger-collector-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: prometheus-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: metricbeat-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: logstash-service-account
  namespace: my-namespace

注※1

Dependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群については、「7.5　各Kubernetesアプリケーションの作成要件」を参照してください。

注※2

SQL-Participantを使用する場合の例を記述しています。

TCC-Participantを使用する場合は、「name: tcc-participant-service-account」に置き換えてください。

TP1-Bridgeを使用する場合は、「name: <リリース名>-service-account」に置き換えてください。

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

例：リリース名がtp1-bridge1の場合

name: tp1-bridge1-service-account

注※3

トライアル版の場合だけ記述します。

3.7.7　コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

次に示す要件を満たすように、コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストを作成してください。

このロールおよびロールバインディングを使用することで、Filebeatコンテナがコンテナログ収集に必要なKubernetesオブジェクトにアクセスできるようにします。

コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの作成要領を次に示します。

＜ロールの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleリソースを指定してください。

ロールの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。

ロールのルール（.rulesフィールド）に、次のとおり指定してください。

APIグループ(apiGroups)

リソース(resources)

アクセス許可(verbs)

空(コアグループ)

pods、nodes、namespaces

get、watch、list

＜ロールバインディングの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleBindingリソースを指定してください。

ロールバインディングの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。

バインドするロール(.roleRefフィールド)は、次のとおりとしてください。

.roleRef.apiGroupフィールドに、「rbac.authorization.k8s.io」を指定してください。

.roleRef.kindフィールドに、「ClusterRole」を指定してください。

.roleRef.nameフィールドに、前述のロールで指定したロールの名称を指定してください。

バインドする対象物(.subjectsフィールド)は、次のとおりとしてください。

リストの要素数は1つにします。

.subjects[].kindフィールドに、「ServiceAccount」を指定してください。

.subjects[].nameフィールドは、「filebeat-service-account」を指定してください。

.subjects[].namespaceフィールドに、FilebeatのServiceAccountリソースの.metadata.namespaceで指定した値を指定してください。

コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの記述例を示します。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: filebeat-role
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - nodes
  - namespaces
  verbs:
  - get
  - watch
  - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: filebeat-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: filebeat-role
subjects:
- kind: ServiceAccount
  name: filebeat-service-account
  namespace: my-namespace

3.7.8　メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

次に示す要件を満たすように、メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストを作成してください。

このロールおよびロールバインディングを使用することで、Prometheusコンテナがメトリクス収集に必要なKubernetesオブジェクトにアクセスできるようにします。

メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの作成要領を次に示します。

＜ロールの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleリソースを指定してください。

ロールの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。

ロールのルール（.rulesフィールド）に、次のとおり指定してください。

APIグループ(apiGroups)

リソース(resources)

アクセス許可(verbs)

空(コアグループ)

pods、nodes、nodes/proxy、services、endpoints

get、watch、list

＜ロールバインディングの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleBindingリソースを指定してください。

ロールバインディングの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。

バインドするロール(.roleRefフィールド)は、次のとおりとしてください。

.roleRef.apiGroupフィールドに、「rbac.authorization.k8s.io」を指定してください。

.roleRef.kindフィールドに、「ClusterRole」を指定してください。

.roleRef.nameフィールドに、前述のロールで指定したロールの名称を指定してください。

バインドする対象物(.subjectsフィールド)は、次のとおりとしてください。

リストの要素数は1つにします。

.subjects[].kindフィールドに、「ServiceAccount」を指定してください。

.subjects[].nameフィールドは、「prometheus-service-account」を指定してください。

.subjects[].namespaceフィールドに、PrometheusのServiceAccountリソースの.metadata.namespaceで指定した値を指定してください。

メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの記述例を示します。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: prometheus-role
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - nodes
  - nodes/proxy
  - services
  - endpoints
  verbs:
  - get
  - watch
  - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: prometheus-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus-role
subjects:
- kind: ServiceAccount
  name: prometheus-service-account
  namespace: my-namespace

3.7.9　メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

次に示す要件を満たすように、メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストを作成してください。

このロールおよびロールバインディングを使用することで、MetricbeatコンテナがKubernetesメタデータ付与に必要なKubernetesオブジェクトにアクセスできるようにします。

メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの作成要領を次に示します。

＜ロールの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleリソースを指定してください。

ロールの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。

ロールのルール（.rulesフィールド）に、次のとおり指定してください。

APIグループ(apiGroups)

リソース(resources)

アクセス許可(verbs)

空(コアグループ)

pods、nodes、namespaces、events

get、watch、list

＜ロールバインディングの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleBindingリソースを指定してください。

ロールバインディングの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。

バインドするロール(.roleRefフィールド)は、次のとおりとしてください。

.roleRef.apiGroupフィールドに、「rbac.authorization.k8s.io」を指定してください。

.roleRef.kindフィールドに、「ClusterRole」を指定してください。

.roleRef.nameフィールドに、前述のロールで指定したロールの名称を指定してください。

バインドする対象物(.subjectsフィールド)は、次のとおりとしてください。

リストの要素数は1つにします。

.subjects[].kindフィールドに、「ServiceAccount」を指定してください。

.subjects[].nameフィールドは、「metricbeat-service-account」を指定してください。

.subjects[].namespaceフィールドに、MetricbeatのServiceAccountリソースの.metadata.namespaceで指定した値を指定してください。

メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの記述例を示します。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: metricbeat-role
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - nodes
  - namespaces
  - events
  verbs:
  - get
  - watch
  - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: metricbeat-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: metricbeat-role
subjects:
- kind: ServiceAccount
  name: metricbeat-service-account
  namespace: my-namespace

3.7.10　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

以降に示す要件を満たすように、uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストを作成してください。この作業は、次のどちらかのKubernetesマニフェスト作成時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームの種類を「NFS」とし、アクセスモード(accessModes)を「ReadWriteMany」とすることで、uCosminexus Application Runtime for Spring Bootをインストールした各Podがどのノードからでも永続ボリュームにスナップショットログを出力できるようにします。

マネージドファイルサービスを使用する場合、次のマネージドファイルサービスを永続ボリュームとしてマウントするために必要なKubernetesマニフェストについては、それぞれの公式ドキュメントを参照してください。

Microsoft Azure環境

Azure Files

Azure Blob Storage

Google Cloud Platform環境

Filestore

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成要領を次に示します。

＜永続ボリュームの作成要領＞

uCosminexus Application Runtime for Spring BootをインストールしたPodで使用しているNamespace名の数と同じ数だけ、永続ボリュームのKubernetesマニフェストを作成してください。

例1）

Mediator/Orchestrator-Service/Entity-Service(SQL)のNamespace名が「my-namespace」の場合、Namespace名の数は1つであるため、Kubernetesマニフェストを1つ作成します。

例2）

MediatorのNamespace名が「my-namespace-0」、Orchestrator-Service/Entity-Service(SQL)のNamespace名が「my-namespace-1」の場合、Namespace名の数は2つであるため、Kubernetesマニフェストを2つ作成します。

各永続ボリュームの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。なお、名称はKubernetesマニフェストごとに一意にする必要があります。ここで指定した名称は、後述の各永続ボリューム要求の.spec.volumeNameフィールドの値に指定します。

各永続ボリュームの.spec.capacity.storageフィールドに、スナップショットログの出力先となる永続ボリュームのサイズを指定してください。

各永続ボリュームの.spec.accessModesフィールドに、「ReadWriteMany」を指定してください。

各永続ボリュームの.persistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。

各永続ボリュームは、ボリュームの種類を「NFS」とし、「3.6.5　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）」で作成するNFS上のボリュームマウント用ディレクトリパスを指定してください。

以降に示す記述例では、ディレクトリ名を「/ucars-snapshots」としています。

＜永続ボリューム要求の作成要領＞

＜永続ボリュームの作成要領＞と同様に、永続ボリューム要求についても、uCosminexus Application Runtime for Spring BootをインストールしたPodで使用しているNamespace名の数と同じ数だけ、永続ボリューム要求のKubernetesマニフェストを作成してください。

各永続ボリューム要求の名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。なお、名称はKubernetesマニフェストごとに一意にする必要はありません（KubernetesマニフェストごとにNamespaceが異なり同一Namespace内で名称が重複しないため）。ここで指定した名称は、uCosminexus Application Runtime for Spring Bootをインストールしたユーザ責務のKubernetesアプリケーションのKubernetesマニフェストの.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールド、および、MediatorのHelmチャートの.ucars.snapshots.claimNameパラメタの値に指定します。

各永続ボリューム要求のNamespace(.metadata.namespaceフィールド)に、uCosminexus Application Runtime for Spring BootをインストールしたPodで使用しているNamespace名を指定します。

各永続ボリューム要求の.spec.accessModesフィールドに、「ReadWriteMany」を指定してください。

各永続ボリューム要求の.spec.volumeNameフィールドに、前述の永続ボリュームで指定した名称を指定してください。

各永続ボリューム要求の.spec.resources.requests.storageフィールドに、スナップショットログの出力に必要なサイズを指定してください。

uCosminexus Application Runtime for Spring Bootスナップショットログ の永続ボリュームおよびストレージクラスのKubernetesマニフェストの記述例を次に示します。

■uCosminexus Application Runtime for Spring BootをインストールしたPodで使用しているNamespace名の数が1つである場合

apiVersion: v1
kind: PersistentVolume
metadata:
  name: snapshot-volume
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: nfs-server.example.com
    path: /ucars-snapshots
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: snapshot-volume
  namespace: my-namespace
spec:
  accessModes:
  - ReadWriteMany
  volumeName: snapshot-volume
  resources:
    requests:
      storage: 500Mi

■uCosminexus Application Runtime for Spring BootをインストールしたPodで使用しているNamespace名の数が2つである場合

apiVersion: v1
kind: PersistentVolume
metadata:
  name: snapshot-volume-0
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: nfs-server.example.com
    path: /ucars-snapshots
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: snapshot-volume
  namespace: my-namespace-0
spec:
  accessModes:
  - ReadWriteMany
  volumeName: snapshot-volume-0
  resources:
    requests:
      storage: 500Mi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: snapshot-volume-1
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: nfs-server.example.com
    path: /ucars-snapshots
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: snapshot-volume
  namespace: my-namespace-1
spec:
  accessModes:
  - ReadWriteMany
  volumeName: snapshot-volume-1
  resources:
    requests:
      storage: 500Mi

3.7.11　Microsoft AzureのマネージドPrometheusによるメトリクス収集のKubernetesマニフェストの作成

Microsoft Azure環境でマネージドPrometheusを使用してHMP-PCTOのメトリクスを収集する場合、次の手順を実施してください。

Microsoft Azure環境のマネージドPrometheusでは、サービスを起動しただけではHMP-PCTOのメトリクスを収集できないため、次のどちらかの定義を設定してください。詳細については、Microsoft Azureの公式ドキュメントを参照してください。

configmap

カスタムリソース定義

設定例として、configmapによる設定方法の一つであるama-metrics-prometheus-configの記述例およびデプロイ手順を示します。

Kubernetesマニフェストに設定されたアノテーションprometheus.io/*の値を使用してメトリクスを収集します。HMP-PCTOの各Kubernetesマニフェストの.spec.template.metadata.annotationsに次の内容を指定してください。MediatorおよびTP1-Bridgeについては、Helmチャート内で各アノテーションが設定されています。

キー名

値

備考

prometheus.io/scrape

true

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

prometheus.io/path

/hmppcto/metrics※

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

prometheus.io/port

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

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

注※

ここでは、コンテキストパスを設定していない場合の「prometheus.io/path」の値を記載しています。

コンテキストパスを設定する場合は、次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

ama-metrics-prometheus-configに設定するパラメタ内容および設定値の詳細については、Microsoft AzureおよびPrometheusの公式ドキュメントを参照してください。

(1)　Kubernetesマニフェストの記述例

Kubernetesマニフェストの記述例を次に示します。この例では、Kubernetesマニフェストのファイル名を「ama-metrics-prometheus-config.yaml」としています。

apiVersion: v1
kind: ConfigMap
metadata:
  name: ama-metrics-prometheus-config
  namespace: kube-system
data:
  prometheus-config: |
    global:
      scrape_interval: 30s
    scrape_configs:
      - job_name: 'hmppcto-metrics-scraper'
        kubernetes_sd_configs:
          - role: pod
        relabel_configs:
          - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
            action: keep
            regex: "true"
          - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
            action: replace
            target_label: __metrics_path__
            regex: (.+)
          - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
            action: replace
            regex: (.+):(?:¥d+);(¥d+)
            replacement: ${1}:${2}
            target_label: __address__
          - source_labels: [__meta_kubernetes_namespace]
            action: replace
            target_label: namespace
          - source_labels: [__meta_kubernetes_pod_name]
            action: replace
            target_label: pod_name
          - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
            action: replace
            target_label: label_app_kubernetes_io_name
          - source_labels: [__meta_kubernetes_pod_container_name]
            regex: "dependency-checker"
            action: drop

重要

metadata.namespaceパラメタの設定値を「kube-system」から変更しないでください。

(2)　Kubernetesマニフェストのデプロイ

作成したKubernetesマニフェストをデプロイしてください。コマンド例を次に示します。

kubectl apply -f ama-metrics-prometheus-config.yaml

3.7.12　Google Cloud PlatformのマネージドPrometheusによるメトリクス収集のKubernetesマニフェスト作成

Google Cloud Platform環境でマネージドPrometheusを使用してHMP-PCTOのメトリクスを収集する場合、次の手順を実施してください。詳細については、Google Cloud Platformの公式ドキュメントを参照してください。

カスタムリソース定義

設定例として、カスタムリソースによる設定方法の一つであるgcp-metrics-prometheus-podmonitoring.yamlの記述例およびデプロイ手順を示します。

収集対象を設定するmatchLabelsパラメタにはHMP-PCTOのPodが起動しているspec.selector.matchLabelsを設定してください。

(1)　Kubernetesマニフェストの記述例

Kubernetesマニフェストの記述例を次に示します。この例では、Kubernetesマニフェストのファイル名を「gcp-metrics-prometheus-podmonitoring.yaml」としています。

apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: mediator-podmonitoring
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: mediator
  endpoints:
  - port: http
    path: /hmppcto/metrics
---
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: sqlparticipant-podmonitoring
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: sql-participant
  endpoints:
  - port: http
    path: /hmppcto/metrics     …1
---
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: tccparticipant-podmonitoring
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: tcc-participant
  endpoints:
  - port: http
    path: /hmppcto/metrics     …1
---
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: entity-podmonitoring
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: relay-service
  endpoints:
  - port: http
    path: /hmppcto/metrics     …1
---
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: tp1bridge-podmonitoring
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: tp1-bridge
  endpoints:
  - port: http
    path: /hmppcto/metrics
---
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: orchestrator-podmonitoring
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: orchestrator
  endpoints:
  - port: http
    path: /hmppcto/metrics     …1

記述例の番号は、説明の番号と対応しています。

＜説明＞

この記述例では、コンテキストパスを設定していない場合の「spec.endpoints.path」の例を記載しています。

コンテキストパスを設定する場合は、パスを次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

(2)　Kubernetesマニフェストのデプロイ

作成したKubernetesマニフェストをデプロイしてください。コマンド例を次に示します。

kubectl apply -f gcp-metrics-prometheus-podmonitoring.yaml

3.7.13　New Relicによるメトリクス収集のKubernetesマニフェスト作成

New Relicを使用してHMP-PCTOのメトリクスを収集する場合、次の手順を実施してください。詳細については、New Relicの公式ドキュメントを参照してください。

設定例として、設定方法の一つであるKubernetesマニフェストに設定されたアノテーションによるメトリクスの収集の実施例を示します。

(1)　Kubernetesマニフェストへのアノテーションの追加

New Relicでは、Kubernetesマニフェストに設定されたアノテーションprometheus.io/*の値を使用してメトリクスを収集します。HMP-PCTOの各Kubernetesマニフェストの.spec.template.metadata.annotationsに次の内容を指定してください。MediatorおよびTP1-Bridgeについては、Helmチャート内で各アノテーションが設定されています。

キー名

値

備考

prometheus.io/scrape

true

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

prometheus.io/path

/hmppcto/metrics※

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

prometheus.io/port

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

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

注※

ここでは、コンテキストパスを設定していない場合の「prometheus.io/path」の値を記載しています。

コンテキストパスを設定する場合は、次のように修正してください。

/<コンテキストパス>/hmppcto/metrics

3.7.14　PrometheusのKubernetesマニフェスト作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

(1)　Prometheusのマニフェスト作成

Prometheusの公式ドキュメントを参考に、ConfigMap以外のKubernetesマニフェストを作成してください。パラメタの内容および設定値の詳細については、Prometheusの公式ドキュメントを参照してください。

(2)　ConfigMapの作成

メトリクス収集対象の定義、およびにMetricbeatへのメトリクス送信のため、KubernetesマニフェストのConfigMapを作成してください。次に記述例を示します。

apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: my-namespace
data:
  prometheus.yml: |
    global:
      scrape_interval: 15s
      evaluation_interval: 30s
    scrape_configs:                         …1
      - job_name: 'hmppcto-metrics-scraper'
        kubernetes_sd_configs:
          - role: pod
        relabel_configs:
          - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
            action: keep
            regex: "true"
          - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
            action: replace
            target_label: __metrics_path__
            regex: ([^¥n]+)
          - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
            action: replace
            regex: (.+):(?:¥d+);(¥d+)
            replacement: ${1}:${2}
            target_label: __address__
          - source_labels: [__meta_kubernetes_namespace]
            action: replace
            target_label: namespace
          - source_labels: [__meta_kubernetes_pod_name]
            action: replace
            target_label: pod_name
          - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
            action: replace
            target_label: label_app_kubernetes_io_name
          - source_labels: [__meta_kubernetes_pod_container_name]
            regex: "dependency-checker"
            action: drop
          - source_labels: [__meta_kubernetes_pod_container_name]
            regex: "filebeat-sidecar"
            action: drop
      - job_name: 'jaeger-collector-scraper'  …2
        kubernetes_sd_configs:
        - role: endpoints
        metrics_path: /metrics
        relabel_configs:
        - source_labels: [__address__]
          regex: (.+):¥d+
          replacement: ${1}:14269
          target_label: __address__
          action: replace
        - source_labels: [__meta_kubernetes_service_name]
          regex: jaeger-collector
          action: keep
        - source_labels: [__meta_kubernetes_namespace]
          action: replace
          target_label: namespace
        - source_labels: [__meta_kubernetes_pod_name]
          action: replace
          target_label: pod_name
        - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
          action: replace
          target_label: label_app_kubernetes_io_name
    remote_write:                           …3
    - url: http://metricbeat:9201/write
      queue_config:
        capacity: 10000
        max_shards: 50
        max_samples_per_send: 2000
      enable_http2: true                     …4

記述例の番号は、説明の番号と対応しています。

この例では、各KubernetesオブジェクトのNamespace名（metadata.namespaceフィールド）は、「my-namespace」としています。

＜説明＞

「scrape_configs:」の行から「- job_name: 'jaeger-collector-scraper'」の1つ上の「action: drop」の行で、HMP-PCTOのメトリクスを収集します。

次の設定で、Kubernetesマニフェストの.spec.template.metadata.annotationsに設定されている3つのキーの値を参照して、メトリクスを収集します。この設定は変更しないでください。

prometheus.io/scrape

prometheus.io/path

prometheus.io/port

- job_name: 'hmppcto-metrics-scraper'
   kubernetes_sd_configs:
     - role: pod
   relabel_configs:
    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
      action: keep
      regex: "true"
    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
      action: replace
      target_label: __metrics_path__
      regex: (.+)
    - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
      action: replace
      regex: (.+):(?:¥d+);(¥d+)
      replacement: ${1}:${2}
      target_label: __address__

次の設定で、Podに設定されているKubernetesのメタデータをラベルとして設定します。追加されるラベルを次に示します。ラベルに関する設定は必要に応じて追加してください。

namespace：Podの名前空間

pod_name：Pod名

label_app_kubernetes_io_name：Podの.spec.template.metadata.labelsの「app.kubernetes.io/name」に設定されている値

  - source_labels: [__meta_kubernetes_namespace]
    action: replace
    target_label: namespace
  - source_labels: [__meta_kubernetes_pod_name]
    action: replace
    target_label: pod_name
  - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
    action: replace
    target_label: label_app_kubernetes_io_name

次の設定で、HMP-PCTOのPod内に存在するコンテナを、メトリクスの収集対象から除く設定をします。この設定は変更しないでください。

  - source_labels: [__meta_kubernetes_pod_container_name]
    regex: "dependency-checker"
    action: drop
  - source_labels: [__meta_kubernetes_pod_container_name]
    regex: "filebeat-sidecar"
    action: drop

「- job_name: 'jaeger-collector-scraper'」の行から「target_label: label_app_kubernetes_io_name」の行で、Jaeger-collectorのメトリクスを収集します。Jaeger-collectorのメトリクスを収集することで、受信したSpanを格納する内部キューの使用状況を確認し、チューニングができます。Jaeger-collectorを使用する場合に設定してください。

次の設定で、Jaeger-collectorのメトリクスを収集します。この設定は変更しないでください。

  - job_name: 'jaeger-collector-scraper'
    kubernetes_sd_configs:
    - role: endpoints
    metrics_path: /metrics
    relabel_configs:
    - source_labels: [__address__]
      regex: (.+):¥¥d+
      replacement: ${1}:14269
      target_label: __address__
      action: replace
    - source_labels: [__meta_kubernetes_service_name]
      regex: jaeger-collector
      action: keep

次の設定で、Podに設定されているKubernetesのメタデータをラベルとして設定します。追加されるラベルを次に示します。ラベルに関する設定は必要に応じて追加してください。

namespace：Podの名前空間

pod_name：Pod名

label_app_kubernetes_io_name：Podの.spec.template.metadata.labelsの「app.kubernetes.io/name」に設定されている値

    - source_labels: [__meta_kubernetes_namespace]
      action: replace
      target_label: namespace
    - source_labels: [__meta_kubernetes_pod_name]
      action: replace
      target_label: pod_name
    - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name]
      action: replace
      target_label: label_app_kubernetes_io_name

「remote_write:」の行から「max_samples_per_send: 2000」の行で、Metricbeatにメトリクスを送信するための設定を定義します。

Metricbeatはデータを送信する際の通信プロトコルとしてHTTP/2に対応しているため、HTTP/2の通信を利用できるように明示的に設定します。

3.8　Helmチャートのカスタマイズ

「7.1　Kubernetesアプリケーションのデプロイ方法」に示すとおり、HMP-PCTOのKubernetesアプリケーションのうち、HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションについては、HMP-PCTOがHelmチャートを提供し、ユーザがHelmチャートをカスタマイズします。

ただし、Prometheusについては、Prometheusの公式ドキュメントを参照の上、Kubernetesマニフェストの作成が必要です。詳細は「3.7.14　PrometheusのKubernetesマニフェスト作成」を参照してください。

ここでは、Helmチャートのカスタマイズ方法について説明します。

なお、TP1-Bridgeを構成するPodを定義したKubernetesのServiceのService名とNamespace名の長さの合計は、40バイト以下としてください。TP1-BridgeのService名は、「(15)　Kubernetesアプリケーションのデプロイ」の「表3‒23　helmコマンドに指定するコマンド引数」のリリース名を参照してください。

3.8.1　作業項目の一覧

Helmチャートのカスタマイズの作業項目の一覧を次の表に示します。

表3‒15　Helmチャートのカスタマイズの作業項目の一覧

作業項目

備考

参照先

Helmチャートへのパラメタ追加

必要に応じて実施します。

3.8.2　Helmチャートへのパラメタ追加

MediatorのHelmチャートのカスタマイズ

必ず実施します。

3.8.3　MediatorのHelmチャートのカスタマイズ

TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）

通常版の場合で、TP1-Bridgeを使用するときだけ実施します。

3.8.4　TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）

EADSのHelmチャートのカスタマイズ（通常版限定）

通常版の場合だけ実施します。

3.8.5　EADSのHelmチャートのカスタマイズ（通常版限定）

Ext-ConsのHelmチャートのカスタマイズ（トライアル版限定）

トライアル版の場合だけ実施します。

3.8.6　Ext-ConsのHelmチャートのカスタマイズ（トライアル版限定）

FilebeatのHelmチャートのカスタマイズ

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

3.8.7　FilebeatのHelmチャートのカスタマイズ

Jaeger-queryのHelmチャートのカスタマイズ

3.8.8　Jaeger-queryのHelmチャートのカスタマイズ

Jaeger-collectorのHelmチャートのカスタマイズ

3.8.9　Jaeger-collectorのHelmチャートのカスタマイズ

MetricbeatのHelmチャートのカスタマイズ

3.8.10　MetricbeatのHelmチャートのカスタマイズ

ElasticsearchのHelmチャートのカスタマイズ

3.8.11　ElasticsearchのHelmチャートのカスタマイズ

LogstashのHelmチャートのカスタマイズ

3.8.12　LogstashのHelmチャートのカスタマイズ

3.8.2　Helmチャートへのパラメタ追加

HMP-PCTOが提供するHelmチャートには、HMP-PCTOのトラブルシュート機能で使用する次のOSSを動作させるために必要な最低限のパラメタだけが記載されています。

Jaeger-collector

Jaeger-query

Elasticsearch

Filebeat

Logstash

Metricbeat

HMP-PCTOのトラブルシュート機能で使用するOSSに対して、Helmチャートに記載のないOSSパラメタを使用したい場合は、次の手順に従ってパラメタを追加してください。なお、この手順では、Jaeger-collectorにcollector.queue-size-memoryパラメタを新規追加し、values.yamlでパラメタの値を設定する場合の例を示します。

Helmチャートを展開する

次のコマンドを実行し、tgzファイルからHelmチャートを展開します。

tar -xzf jaeger-collector-V.R.S.tgz

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

コマンドを実行すると、次に示す構成でHelmチャートが展開されます。編集対象のファイルを太字で示します。

ファイルまたはディレクトリ構成

<作業ディレクトリ>/

jaeger-collector

.helmignore

Chart.yaml

values.schema.json

values.yaml

templates

deployment.yaml

service.yaml

serviceaccount.yaml

deployment.yamlファイルを修正する

templatesフォルダ内のdeployment.yamlファイルを開き、新規パラメタを追加します。

次に示す例では、新規にcollector.queue-size-memoryパラメタを作成し、パラメタの値をJaeger-collectorのvalues.yamlで設定できるようにしています。オレンジ色の背景で示す行が追加した行です。

      containers:
      - name: jaeger-collector
        image: '{{ .Values.image }}'
        imagePullPolicy: {{ .Values.imagePullPolicy }}
        args:
        - "--collector.queue-size={{ .Values.collector.queueSize }}"
        - "--collector.num-workers={{ .Values.collector.numWorkers }}"
        - "--es.num-replicas={{ .Values.replicas }}"
        - "--es.num-shards={{ .Values.collector.numShards }}"
        - "--collector.queue-size-memory={{ .Values.collector.queueSizeMemory }}"

values.yamlを修正する

values.yamlファイルを開き、手順2で追加したパラメタの設定値を追加します。

次に示す例ではcollectorセクション内に、追加したパラメタとその設定値を追記しています。オレンジ色の背景で示す行が追記した行です。

collector:
  queueSize: "10000"
  numWorkers: "50"
  numShards: "5"
  queueSizeMemory: "設定値"

パッケージを再作成する

<作業ディレクトリ>（jaeger-collectorフォルダの上の階層）へ移動し、次のコマンドを実行してください。修正したHelmチャートが再度パッケージ化されます。

helm package ./jaeger-collector

上記の手順を実施することで、Jaeger-collectorに新規パラメタが追加され、その設定値が設定されます。このあと、「3.8.9　Jaeger-collectorのHelmチャートのカスタマイズ」※を参照して、values.yamlの抽出およびカスタマイズを実施してください。なお、デプロイ手順については「(15)　Kubernetesアプリケーションのデプロイ」を参照してください。

注※

ほかのOSSのHelmチャートにOSSパラメタを追加した場合は、そのOSSのHelmチャートのカスタマイズを実施してください。

3.8.3　MediatorのHelmチャートのカスタマイズ

MediatorのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、MediatorのHelmチャートパッケージファイル（mediator-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./mediator-V.R.S.tgz > ./mediator-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

「9.3.1　Mediator」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace
replicas: 5     …1
image: myregistry.example.com/myproject/mediator:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent
dependencyCheck:
  enabled: true
  image: myregistry.example.com/myproject/dependency-checker:V.R.S※
  imagePullPolicy: IfNotPresent
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10
  targets:
  - my-namespace/deployments/logstash
  - my-namespace/deployments/jaeger-query
  - my-namespace/deployments/jaeger-collector
  - my-namespace/deployments/metricbeat
  - my-namespace/daemonsets/filebeat
healthCheck:
  enabled: true
livenessProbe:
  initialDelaySeconds: 180
  periodSeconds: 30
  failureThreshold: 3
  timeoutSeconds: 10
  healthCheck:
    retryCount: 0
    retryIntervalSeconds: 0
    connectTimeoutSeconds: 10
    readTimeoutSeconds: 10
readinessProbe:
  initialDelaySeconds: 40
  timeoutSeconds: 80
postStart:
  healthCheck:
    retryCount: 30
    retryIntervalSeconds: 10
    connectTimeoutSeconds: 10
    readTimeoutSeconds: 10
preStop:
  waitTransactions:
    retryCount: 10
    retryIntervalSeconds: 10
    connectTimeoutSeconds: 10
    readTimeoutSeconds: 10
terminationGracePeriodSeconds: 160
affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    - labelSelector:
        matchExpressions:
        - key: app.kubernetes.io/name
          operator: In
          values:
          - mediator
      topologyKey: kubernetes.io/hostname
securityContext: {}
resources:
  limits:
    cpu: 2
    memory: 1Gi
  requests:
    cpu: 1
    memory: 512Mi
participant:
  sender:
    threadPoolSize: 30
    queueSize: 5120000
consensusLog:
  size: 256
  io:
    threadPoolSize: 12
    queueSize: 100
    watchInSeconds: 240
    blockSize: 4096
  storageClassName: mediator-consensus-log
http:
  port: 20554
grpc:
  port: 20551
  server:
    threadPoolSize: 30
    queueSize: 258000
  useTls: false
  skipAuth: false
  tls:
    secretName: ""
    clientAuth:
      enabled: false
  keepalive:
    intervalInSeconds: 0
    timeoutInSeconds: 60
  deduplication: true
mediator:
  judge:
    threadPoolSize: 30
    queueSize: 256000
    proposalLogLimitNum: 512
    transactionTerminatedLimitNum: 512
    transactionTerminatedConfirmNotifyIntervalInMillis: 60000
    prepareDelayTimeBaseInMillis: 100
    prepareRetryTimeBaseInMillis: 100
    prepareRetryMaxTimeInSeconds: 30
tracing:
  instanceId: Mediator
  url: http://jaeger-collector:14268/api/traces
  useTrace: true
  debug: false
  queueSize: 20000
  delayTimeInMillis: 1000
  batchSize: 2000
  grpc:
    debug: false
metrics:
  collection:
    intervalInMillis: 1000
timezone: Asia/Tokyo
java:
  options: -XX:+UseG1GC
logging:
  level:
    hmppctoSTDOUT: INFO
ucars:
  enabled: true
  snapshots:
    claimName: snapshot-volume
use-scaling: true

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

特定の条件でだけ指定するパラメタについては、省略しています（（例）暗号化通信を有効にした場合だけ指定するgrpc.tls接頭辞のパラメタなど）。

記述例の番号は、説明の番号と対応しています。

＜説明＞

オートスケールを使用しない場合だけ、replicasを設定します。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

重要

デプロイ依存関係チェックスクリプトの無効化

Azure MonitorまたはGoogle Cloud Platformを使用してトラブルシュート情報を収集する場合は、Elastic Stack、JaegerおよびPrometheusのPodが起動状態になるまで待機する必要がありません。このため、デプロイ依存関係チェックスクリプトのdependencyCheck.enabledパラメタをfalseに設定し、次のように編集してください。Elastic Stack、JaegerおよびPrometheusのPodの起動を待機しなくなります。

dependencyCheck:
  enabled: false
healthCheck:
  enabled: true

3.8.4　TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）

TP1-Bridgeを使用する場合、TP1-BridgeのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、Hitachi Microservices Platform - Bridge Option for OpenTP1が提供するTP1-BridgeのHelmチャートパッケージファイル（tp1-bridge-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./tp1-bridge-V.R.S.tgz > ./tp1-bridge-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

「9.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace
image: myregistry.example.com/myproject/tp1-bridge:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent
labels:
  appKubernetesIoName: tp1-bridge
dependencyCheck:
  enabled: true
  image: myregistry.example.com/myproject/dependency-checker:V.R.S※
  imagePullPolicy: IfNotPresent
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10
  targets:
  - my-namespace/statefulsets/mediator
  - my-namespace/statefulsets/eads-server
filebeat:
  enabled: true
  image: myregistry.example.com/myproject/filebeat:V.R.S※
  imagePullPolicy: IfNotPresent
  output:
    logstash:
      namespace: my-namespace
  livenessProbe:
    initialDelaySeconds: 10
    periodSeconds: 10
    failureThreshold: 3
    timeoutSeconds: 5
  readinessProbe:
    initialDelaySeconds: 10
    periodSeconds: 10
    failureThreshold: 3
    timeoutSeconds: 5
healthCheck:
  enabled: true
livenessProbe:
  initialDelaySeconds: 180
  periodSeconds: 30
  failureThreshold: 3
  timeoutSeconds: 10
  healthCheck:
    retryCount: 0
    retryIntervalSeconds: 0
    connectTimeoutSeconds: 10
    readTimeoutSeconds: 10
postStart:
  healthCheck:
    retryCount: 30
    retryIntervalSeconds: 10
    connectTimeoutSeconds: 10
    readTimeoutSeconds: 10
preStop:
  waitTransactions:
    retryCount: 30
    retryIntervalSeconds: 10
    connectTimeoutSeconds: 10
    readTimeoutSeconds: 10
terminationGracePeriodSeconds: 330
affinity: {}
securityContext: {}
resources:
  limits:
    cpu: 2
    memory: 1Gi
  requests:
    cpu: 1
    memory: 512Mi
server:
  tomcat:
    threads:
      max: 200
    maxSwallowSize: "2097152"
converter:
  host: converter
  port: 8008
  connectTimeInSeconds: 10
  watchTimeInSeconds: 10
tp1:
  cltj:
    dchost: tp1
    dcrapport: 5001
    dcwatchtim: 180
    dcwatchtiminherit: "N"
    dcwatchtimrpcinherit: "N"
    dccltdelay: 0
    dcuaptrace: "N"
    dcuaptracepath: /deployments/tp1-log
    dcuaptracesize: 4096
    dcdatatrace: "N"
    dcdatatracepath: /deployments/tp1-log
    dcdatatracesize: 4096
    dcdatatracemaxsize: 128
    dcerrtrace: "N"
    dcerrtracepath: /deployments/tp1-log
    dcerrtracesize: 4096
    dcmethodtrace: "N"
    dcmethodtracepath: /deployments/tp1-log
    dcmethodtracesize: 4096
    dccltrpcmaxmsgsize: 1
    dccltsendbuffsize: 8192
    dccltrecvbuffsize: 8192
  commit:
    retryLimit: -1
    retryIntervalInMillis: 1000
  rollback:
    retryLimit: -1
    retryIntervalInMillis: 1000
  pool:
    allocationWaitTimeInMillis: 60000
    maxPoolSize: 10
  pod:
    serviceName: tp1-bridge1.my-namespace
  transactionTermination:
    timeoutInMillis: 60000
    consensus:
      replayIntervalInMillis: 1000
  participantProcessing:
    threadPoolSize: 12
    queueSize: 4096000
externalConsensus:
  intervalInMillis: 1000
  eads:
    properties: /eads-properties/hmp-pcto.eads-client.properties
    cache: hmppctoCache
mediator:
  name: "mediator"
  nameSuffix: ".mediator.my-namespace.svc.cluster.local"
  port: 20552
mediatorProcessManagement:
  threadPoolSize: 30
mediatorCommunication:
  threadPoolSize: 30
  queueSize: 4096000
http:
  port: 20554
grpc:
  port: 20552
  useTls: false
  skipAuth: false
  tls:
    secretName: ""
    clientAuth:
      enabled: false
    session:
      cacheSize: 0
      timeoutInSeconds: 0
  keepalive:
    intervalInSeconds: 0
    timeoutInSeconds: 60
tracing:
  instanceId: TP1-Bridge_001
  url: http://jaeger-collector:14268/api/traces
  useTrace: true
  debug: false
  queueSize: 20000
  delayTimeInMillis: 1000
  batchSize: 2000
  grpc:
    debug: false
metrics:
  collection:
    intervalInMillis: 1000
timezone: Asia/Tokyo
java:
  options: -XX:+UseG1GC
logging:
  level:
    hmppctoSTDOUT: INFO
ucars:
  enabled: true
  snapshots:
    claimName: snapshot-volume
eads:
  client:
    properties: |
      eads.client.connect.servers=sv1,sv2,sv3
      eads.client.sv1.address=eads-service-eads-service-0.my-namespace
      eads.client.sv1.port=24600
      eads.client.sv2.address=eads-service-eads-service-1.my-namespace
      eads.client.sv2.port=24600
      eads.client.sv3.address=eads-service-eads-service-2.my-namespace
      eads.client.sv3.port=24600
      eads.client.logger.dir=eads-log
      eads.client.connectionPool.poolsize=1
use-scaling: false

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

特定の条件でだけ指定するパラメタについては、省略しています（（例）暗号化通信を有効にした場合だけ指定するgrpc.tls接頭辞のパラメタなど）。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

TP1-Bridgeを構成するPodを定義したKubernetesのServiceのService名とNamespace名の長さの合計は、40バイト以下としてください。TP1-BridgeのService名は、「(15)　Kubernetesアプリケーションのデプロイ」の「表3‒23　helmコマンドに指定するコマンド引数」のリリース名を参照してください。

3.8.5　EADSのHelmチャートのカスタマイズ（通常版限定）

EADSのHelmチャートのvalues.yamlを作成します。

「9.3.3　EADS（通常版限定）」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。EADSのvalues.yamlの詳細については、取扱説明書「EADSコンテナオーケストレーションツール対応機能」を参照してください。

3.8.6　Ext-ConsのHelmチャートのカスタマイズ（トライアル版限定）

Ext-ConsのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、Ext-ConsのHelmチャートパッケージファイル（ext-cons-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./ext-cons-V.R.S.tgz > ./ext-cons-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

「9.3.4　Ext-Cons（トライアル版限定）」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace
image: myregistry.example.com/myproject/ext-cons:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent
dependencyCheck:
  enabled: true
  image: myregistry.example.com/myproject/dependency-checker:V.R.S※
  imagePullPolicy: IfNotPresent
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10
  targets:
  - my-namespace/deployments/logstash
  - my-namespace/deployments/jaeger-query
  - my-namespace/deployments/jaeger-collector
  - my-namespace/deployments/metricbeat
  - my-namespace/daemonsets/filebeat
affinity: {}
http:
  port: 20556
timezone: Asia/Tokyo
java:
  options: -XX:+UseG1GC
logging:
  level:
    extCons: INFO

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

重要

デプロイ依存関係チェックスクリプトの無効化

Azure MonitorまたはGoogle Cloud Platformを使用してトラブルシュート情報を収集する場合は、Elastic Stack、JaegerおよびPrometheusのPodが起動状態になるまで待機する必要がありません。このため、デプロイ依存関係チェックスクリプトのdependencyCheck.enabledパラメタをfalseに設定し、次のように編集してください。Elastic Stack、JaegerおよびPrometheusのPodの起動を待機しなくなります。

dependencyCheck:
  enabled: true
  image: myregistry.example.com/myproject/dependency-checker:V.R.S
  imagePullPolicy: IfNotPresent
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10
  targets: []

3.8.7　FilebeatのHelmチャートのカスタマイズ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

FilebeatのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、FilebeatのHelmチャートパッケージファイル（filebeat-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./filebeat-V.R.S.tgz > ./filebeat-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

「9.3.5　Filebeat」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace
image: myregistry.example.com/myproject/filebeat:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent

requests:
  cpu: "1000m"
  memory: "2Gi"

limits:
  cpu: "1000m"
  memory: "2Gi"

# How long to wait for Filebeat pods to stop gracefully
terminationGracePeriodSeconds: 30

livenessProbe:
  initialDelaySeconds: 10
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 1
readinessProbe:
  initialDelaySeconds: 10
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 1
hmpPcto:
  namespaces: [ "my-namespace" ]

nodes:
  hostnames:
  - worker-1

filebeat:
  queue:
    maxSize: "10GB"
    readAhead: "512"
  output:
    maxRetries: "3"

dependencyCheck:
  image: myregistry.example.com/myproject/dependency-checker:V.R.S※
  imagePullPolicy: IfNotPresent
  enabled: true
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10

注※

V.R.Sは使用するHMP-PCTOとFilebeatのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

3.8.8　Jaeger-queryのHelmチャートのカスタマイズ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

Jaeger-queryのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、Jaeger-queryのHelmチャートパッケージファイル（jaeger-query-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./jaeger-query-V.R.S.tgz > ./jaeger-query-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

「9.3.6　Jaeger-query」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace

requests:
  cpu: "500m"
  memory: "1Gi"

limits:
  cpu: "500m"
  memory: "1Gi"

image: myregistry.example.com/myproject/jaeger-query:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent
terminationGracePeriodSeconds: 30
http:
  port: 30015
jaegerQuery:
  maxSpanAge: 168h0m0s
livenessProbe:
  initialDelaySeconds: 30
  periodSeconds: 15
  failureThreshold: 3
  timeoutSeconds: 10
  successThreshold: 1
readinessProbe:
  initialDelaySeconds: 30
  periodSeconds: 5
  failureThreshold: 3
  timeoutSeconds: 4
  successThreshold: 1
dependencyCheck:
  image: myregistry.example.com/myproject/dependency-checker:V.R.S※
  imagePullPolicy: IfNotPresent
  enabled: true
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10
tls:
  secretName: ""
  enabled: false

elasticUserSecretName: ""

注※

V.R.Sは使用するHMP-PCTOとJaeger-queryのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

3.8.9　Jaeger-collectorのHelmチャートのカスタマイズ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

Jaeger-collectorのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、Jaeger-collectorのHelmチャートパッケージファイル（Jaeger-collector-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./jaeger-collector-V.R.S.tgz > ./jaeger-collector-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

「9.3.7　Jaeger-collector」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace

replicas: 1

requests:
  cpu: "1000m"
  memory: "500Mi"

limits:
  cpu: "1000m"
  memory: "500Mi"

image: myregistry.example.com/myproject/jaeger-collector:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent
terminationGracePeriodSeconds: 30
livenessProbe:
  initialDelaySeconds: 300
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 1
readinessProbe:
  initialDelaySeconds: 60
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 3

affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
              - jaeger-collector
        topologyKey: "kubernetes.io/hostname"

collector:
  queueSize: "10000"
  numWorkers: "50"
  numShards: "5"

dependencyCheck:
  image: myregistry.example.com/myproject/dependency-checker:V.R.S※
  imagePullPolicy: IfNotPresent
  enabled: true
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10
tls:
  secretName: ""
  enabled: false

elasticUserSecretName: ""

注※

V.R.Sは使用するHMP-PCTOとJaeger-collectorのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

3.8.10　MetricbeatのHelmチャートのカスタマイズ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

MetricbeatのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、MetricbeatのHelmチャートパッケージファイル（metricbeat-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./metricbeat-V.R.S.tgz > ./metricbeat-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

「9.3.9　Metricbeat」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace
replicas: 1

image: myregistry.example.com/myproject/metricbeat:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent

requests:
  cpu: "1000m"
  memory: "2Gi"

limits:
  cpu: "1000m"
  memory: "2Gi"

livenessProbe:
  initialDelaySeconds: 10
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 1
readinessProbe:
  initialDelaySeconds: 10
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 1
terminationGracePeriodSeconds: 30
affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
              - metricbeat
        topologyKey: "kubernetes.io/hostname"
metricbeat:
  queue:
    maxSize: "10GB"
    readAhead: "512"
  output:
    maxRetries: "3"
dependencyCheck:
  image: myregistry.example.com/myproject/dependency-checker:V.R.S※
  imagePullPolicy: IfNotPresent
  enabled: true
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10
tls:
  secretName: ""
  enabled: false

elasticUserSecretName: ""

注※

V.R.Sは使用するHMP-PCTOとMetricbeatのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

3.8.11　ElasticsearchのHelmチャートのカスタマイズ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

ElasticsearchのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、ElasticsearchのHelmチャートパッケージファイル（elasticsearch-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./elasticsearch-V.R.S.tgz > ./elasticsearch-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

「9.3.10　Elasticsearch」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

クラスタ構成で構築する場合、抽出したvalues.yamlを基にマスターノード用values.yamlとデータノード用values.yamlの2つを用意してください。

クラスタ構成ではない場合のHelmチャートのカスタマイズ例を次に示します。

namespace: my-namespace

role: ""

requests:
  cpu: "2000m"
  memory: "4Gi"

limits:
  cpu: "2000m"
  memory: "4Gi"

replicas: 1

data:
  storageClassName: elasticsearch-data
  storageSize: 3Gi

repo:
  storageClassName: elasticsearch-repo
  storageSize: 3Gi

image: myregistry.example.com/myproject/elasticsearch:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent

http:
  port: 32580

# How long to wait for elasticsearch to stop gracefully
terminationGracePeriodSeconds: 120

sysctlVmMaxMapCount: 262144

affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
              - elasticsearch-master
        topologyKey: "kubernetes.io/hostname"

livenessProbe:
  initialDelaySeconds: 300
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 1
readinessProbe:
  initialDelaySeconds: 60
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 3

tls:
  secretName: ""
  enabled: false

elasticUserSecretName: ""

注※

V.R.Sは使用するElasticsearchのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

クラスタ構成の場合のマスターノード用Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace

role: master

requests:
  cpu: "2000m"
  memory: "4Gi"

limits:
  cpu: "2000m"
  memory: "4Gi"

replicas: 3

data:
  storageClassName: elasticsearch-data-masternode
  storageSize: 3Gi

repo:
  storageClassName: elasticsearch-repo
  storageSize: 3Gi

image: myregistry.example.com/myproject/elasticsearch:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent

http:
  port: 32580

# How long to wait for elasticsearch to stop gracefully
terminationGracePeriodSeconds: 120

sysctlVmMaxMapCount: 262144

affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
              - elasticsearch-master
        topologyKey: "kubernetes.io/hostname"

livenessProbe:
  initialDelaySeconds: 300
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 1
readinessProbe:
  initialDelaySeconds: 60
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 3

tls:
  secretName: ""
  enabled: false

elasticUserSecretName: ""

注※

V.R.Sは使用するElasticsearchのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

クラスタ構成の場合のデータノード用Helmチャートのカスタマイズ例を示します。

namespace: my-namespace

role: data

requests:
  cpu: "2000m"
  memory: "4Gi"

limits:
  cpu: "2000m"
  memory: "4Gi"

replicas: 3

data:
  storageClassName: elasticsearch-data-datanode
  storageSize: 3Gi

repo:
  storageClassName: elasticsearch-repo
  storageSize: 3Gi

image: myregistry.example.com/myproject/elasticsearch:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent

http:
  port: 32580

# How long to wait for elasticsearch to stop gracefully
terminationGracePeriodSeconds: 120

sysctlVmMaxMapCount: 262144

affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
              - elasticsearch-data
        topologyKey: "kubernetes.io/hostname"

livenessProbe:
  initialDelaySeconds: 300
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 1
readinessProbe:
  initialDelaySeconds: 60
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 3

tls:
  secretName: ""
  enabled: false

elasticUserSecretName: ""

注※

V.R.Sは使用するElasticsearchのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

3.8.12　LogstashのHelmチャートのカスタマイズ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

LogstashのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、LogstashのHelmチャートパッケージファイル（logstash-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./logstash-V.R.S.tgz > ./logstash-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

「9.3.11　Logstash」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace

replicas: 1

requests:
  cpu: "1000m"
  memory: "3Gi"

limits:
  cpu: "1000m"
  memory: "3Gi"

image: myregistry.example.com/myproject/logstash:V.R.S※
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent

# How long to wait for logstash to stop gracefully
terminationGracePeriodSeconds: 120

livenessProbe:
  initialDelaySeconds: 300
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 1
readinessProbe:
  initialDelaySeconds: 60
  periodSeconds: 10
  failureThreshold: 3
  timeoutSeconds: 5
  successThreshold: 3

affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
              - logstash
        topologyKey: "kubernetes.io/hostname"

logstash:
  pipeline:
    batchSize: "125"
  queue:
    event:
      enabled: true
      maxEvents: "0"
    byte:
      enabled: false
      maxBytes: ""

dependencyCheck:
  image: myregistry.example.com/myproject/dependency-checker:V.R.S※
  imagePullPolicy: IfNotPresent
  enabled: true
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10

tls:
  secretName: ""
  enabled: false

elasticUserSecretName: ""

注※

V.R.Sは使用するHMP-PCTOとLogstashのバージョンに合わせて読み替えてください。

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

3.9　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用

KubernetesやHelmチャートのコマンドを使用して、HMP-PCTOのKubernetesアプリケーションを運用するための作業項目について説明します。

説明中のKubernetesのコマンド例は、kubectlコマンドを使用した場合を例に記述しています。Red Hat OpenShift Container Platformを使用している場合でocコマンドでの操作が必要な作業項目についてはocコマンドの例を記述しています。kubectlやocなど、コンテナオーケストレーションのコマンドの詳細については、それぞれのマニュアルを参照してください。

3.9.1　作業項目の一覧

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションを運用するための作業項目の一覧を次に示します。表の上から順に作業を実行してください。

表3‒16　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションを運用するための作業項目の一覧

作業対象

作業項目

備考

参照先

Kubernetes各ワーカーノード

MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）

MediatorのConsensusLogのマウント用ディレクトリをローカル永続ボリューム（local）とする場合だけ作成します。

(1)　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）

Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリの作成

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

(2)　Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリの作成

EADSの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）

通常版の場合だけ作成します。

(3)　EADSの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）

Elasticsearchを使用するために必要な追加手順

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

(4)　Elasticsearchを使用するために必要な追加手順

Kubernetesコントロールプレーン

各種資材の配置

必ず実施します。

(1)　各種資材の配置

Namespaceの作成

次のどちらかをデプロイするための作業時に作成します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

(2)　Namespaceの作成

TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成

gRPC通信機能で暗号化通信をする場合だけ実施します。

(3)　TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成

MediatorのConsensusLogの永続ボリュームおよびストレージクラスのデプロイ

必ず実施します。

(4)　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのデプロイ

EADSの永続ボリュームのデプロイ（通常版限定）

通常版の場合だけ実施します。

(5)　EADSの永続ボリュームのデプロイ（通常版限定）

Elasticsearchのelasticユーザパスワード用シークレットの作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合で、ElasticsearchのTLS通信を行うときだけ作成します。

(6)　Elasticsearchのelasticユーザパスワード用シークレットの作成

ElasticsearchのTLS通信用シークレットの作成

(7)　ElasticsearchのTLS通信用シークレットの作成

Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのデプロイ

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

(8)　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのデプロイ

Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのデプロイ

(9)　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのデプロイ

デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

(10)　デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

コンテナログ収集用ロールおよびロールバインディングのデプロイ

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

(11)　コンテナログ収集用ロールおよびロールバインディングのデプロイ

メトリクス収集用ロールおよびロールバインディングのデプロイ

(12)　メトリクス収集用ロールおよびロールバインディングのデプロイ

メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのデプロイ

(13)　メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのデプロイ

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

通常版の場合で、uCosminexus Application Runtime for Spring Bootを導入するときだけ実施します。次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

(14)　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

Kubernetesアプリケーションのデプロイ

必ず実施します。

(15)　Kubernetesアプリケーションのデプロイ

Elasticsearchのスナップショットリポジトリの作成およびスナップショットライフサイクルポリシーの作成

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

(16)　Elasticsearchのスナップショットリポジトリの作成およびスナップショットライフサイクルポリシーの作成

Elasticsearchのindex設定変更および削除

(17)　Elasticsearchのindex設定変更および削除

Azure Monitorの設定

Microsoft Azure環境を使用してトラブルシュート情報を収集する場合だけ実施します。

(18)　Azure Monitorの設定

Cloud Logging、Cloud TraceおよびCloud Monitoringの設定

Google Cloud Platform環境を使用してトラブルシュート情報を収集する場合だけ実施します。

(19)　Cloud Logging、Cloud TraceおよびCloud Monitoringの設定

New Relicの設定

New Relicを使用してトラブルシュート情報を収集する場合だけ実施します。

(20)　New Relicの設定

EADSのセットアップ（通常版限定）

通常版の場合だけ実施します。

(21)　EADSのセットアップ（通常版限定）

EADSの生存監視ツールの起動

(22)　EADSの生存監視ツールの起動

EADSのアンセットアップ（通常版限定）

(23)　EADSのアンセットアップ（通常版限定）

EADSの生存監視ツールの停止

(24)　EADSの生存監視ツールの停止

Kubernetesアプリケーションのアンデプロイ

必ず実施します。

(25)　Kubernetesアプリケーションのアンデプロイ

3.9.2　Kubernetes各ワーカーノードでの作業

(1)　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）

MediatorのConsensusLogのマウント用ディレクトリをローカル永続ボリューム（local）とする場合は、次の作業を実施してください。

「3.7.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」でMediatorを配置する対象として決定した各ワーカーノードについて、MediatorのConsensusLogの永続ボリュームマウント用ディレクトリを次の要領で作成してください。Red Hat OpenShift Container Platformの場合は、次の要領に記載されたディレクトリを操作する権限を持つユーザで実施してください。

＜MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成要領＞

ディレクトリパスは、「3.7.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で永続ボリュームの.spec.local.pathフィールドに指定したディレクトリパスとしてください。

ディレクトリのグループにGID「0」（root）を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

MediatorのConsensusLogの永続ボリュームマウント用ディレクトリを作成するコマンド例を次に示します。

mkdir -p /mediator-consensus-log-volume
chgrp 0 /mediator-consensus-log-volume
chmod g+w /mediator-consensus-log-volume

次のコマンド例のように、MediatorのConsensusLogの永続ボリュームマウント用ディレクトリが期待どおり作成されていることを確認してください。

ls -ld /mediator-consensus-log-volume

＜コマンドの実行結果の例＞

drwxrwxr-x 2 root root 6  5月 10 12:34 /mediator-consensus-log-volume

(2)　Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリの作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合、次の手順を実施してください。

「3.7.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」でElasticsearchを配置する対象として決定した各ワーカーノードについて、Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリを次の要領で作成してください。

＜Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリの作成要領＞

Elasticsearchの永続ボリューム専用パーティションを作成してください。

ディレクトリに、Elasticsearchの永続ボリューム専用パーティションの割り当てを実施してください。ディレクトリパスは、「3.7.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で永続ボリュームの.spec.local.pathフィールドに指定したディレクトリパスとしてください。

ディレクトリのグループにGID「0」(root)を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリを作成するコマンド例を次に示します。

mkdir -p /elasticsearch-data-volume-masternode
mkdir -p /elasticsearch-data-volume-datanode
chown 1000:0 /elasticsearch-data-volume-masternode
chown 1000:0 /elasticsearch-data-volume-datanode
chmod g+w /elasticsearch-data-volume-masternode
chmod g+w /elasticsearch-data-volume-datanode

次のコマンド例のように、Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリが期待どおり作成されていることを確認してください。

ls -ld /elasticsearch-data-volume-masternode /elasticsearch-data-volume-datanode

＜コマンドの実行結果の例＞

drwxrwxr-x 2 user root 6  5月 10 12:34 /elasticsearch-data-volume-masternode
drwxrwxr-x 2 user root 6  5月 10 12:35 /elasticsearch-data-volume-datanode

(3)　EADSの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）

EADSの永続ボリューム（ログファイル用、キャッシュデータファイルおよびキャッシュインデックスファイル用）をローカル永続ボリューム（local）とする場合、次の作業を実施してください。

「3.7.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）」でEADSを配置する対象として決定した各ノードについて、EADSの永続ボリュームマウント用ディレクトリを次の要領で作成してください。Red Hat OpenShift Container Platformの場合は、次の要領に記載されたディレクトリを操作する権限を持つユーザで実施してください。

＜EADSの永続ボリュームマウント用ディレクトリの作成要領＞

ディレクトリパスは、「3.7.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）」で永続ボリュームの.spec.local.pathフィールドに指定したディレクトリパスとしてください。

ディレクトリのグループにGID「0」(root)を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

EADSの永続ボリュームマウント用ディレクトリを作成するコマンド例を次に示します。

mkdir -p /eads-cache-volume
mkdir -p /eads-logs-volume
mkdir -p /eads-store-volume
chgrp 0 /eads-cache-volume
chgrp 0 /eads-logs-volume
chgrp 0 /eads-store-volume
chmod g+w /eads-cache-volume
chmod g+w /eads-logs-volume
chmod g+w /eads-store-volume

次のコマンド例のように、EADSの永続ボリュームマウント用ディレクトリが期待どおり作成されていることを確認してください。

ls -ld /eads-cache-volume /eads-logs-volume /eads-store-volume

＜コマンドの実行結果の例＞

drwxrwxr-x. 2 root root 6  6月 27 07:25 /eads-cache-volume
drwxrwxr-x. 2 root root 6  6月 27 07:25 /eads-logs-volume
drwxrwxr-x. 2 root root 6  6月 27 07:25 /eads-store-volume

(4)　Elasticsearchを使用するために必要な追加手順

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合、次の手順を実施してください。

Elasticsearchを使用するためには、コンテナランタイムcontainerdにsystemd cgroupドライバを構成する必要があります。

containerdにsystemd cgroupドライバを構成するための作業要領

containerdのデフォルト設定を、ファイル「/etc/containerd/config.toml」に出力してください。

containerd config default > /etc/containerd/config.toml

config.tomlの内容で、[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]のSystemdCgroupをtrueにしてください。

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true

「systemctl daemon-reload」を実行したあと、containerdを再開始してください。

systemctl daemon-reload
systemctl restart containerd

3.9.3　Kubernetesコントロールプレーンでの作業

(1)　各種資材の配置

Kubernetesコントロールプレーンの任意のパスへ、次の各種資材を配置してください。

表3‒17　Kubernetesコントロールプレーンに配置する資材の一覧

資材

備考

MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェスト

「3.7.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成したもの

MediatorのHelmチャートパッケージファイル(mediator-V.R.S.tgz)

HMP-PCTO提供物

MediatorのHelmチャートのvalues.yaml

「3.8.3　MediatorのHelmチャートのカスタマイズ」でカスタマイズしたもの

TP1-BridgeのHelmチャートパッケージファイル（tp1-bridge-V.R.S.tgz）

HMP-PCTO提供物

通常版の場合で、TP1-Bridgeを使用するときだけ配置します。

TP1-BridgeのHelmチャートのvalues.yaml

「3.8.4　TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）」でカスタマイズしたもの

通常版の場合で、TP1-Bridgeを使用するときだけ配置します。

EADSの永続ボリュームのKubernetesマニフェスト

「3.7.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）」で作成したもの

通常版の場合だけ配置します。

EADSのHelmチャートパッケージファイル(eads-service-chart.tgz、eads-server-chart.tgz、eads-command-job-chart.tgz、eads-command-cronjob-chart.tgz、eads-health-cronjob-chart.tgz)

EADS提供物

通常版の場合だけ配置します。

EADSのHelmチャートのvalues.yaml

「3.8.5　EADSのHelmチャートのカスタマイズ（通常版限定）」でカスタマイズしたもの

通常版の場合だけ配置します。

Ext-ConsのHelmチャートパッケージファイル(ext-cons-V.R.S.tgz)

HMP-PCTO提供物

トライアル版の場合だけ配置します。

Ext-ConsのHelmチャートのvalues.yaml

「3.8.6　Ext-ConsのHelmチャートのカスタマイズ（トライアル版限定）」でカスタマイズしたもの

トライアル版の場合だけ配置します。

FilebeatのHelmチャートのパッケージファイル(filebeat-V.R.S.tgz)

HMP-PCTO提供物

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

FilebeatのHelmチャートのvalues.yaml

「3.8.7　FilebeatのHelmチャートのカスタマイズ」でカスタマイズしたもの

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

Jaeger-queryのHelmチャートのパッケージファイル(jaeger-query-V.R.S.tgz)

HMP-PCTO提供物

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

Jaeger-queryのHelmチャートのvalues.yaml

「3.8.8　Jaeger-queryのHelmチャートのカスタマイズ」でカスタマイズしたもの

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

Jaeger-collectorのHelmチャートのパッケージファイル(jaeger-collector-V.R.S.tgz)

HMP-PCTO提供物

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

Jaeger-collectorのHelmチャートのvalues.yaml

「3.8.9　Jaeger-collectorのHelmチャートのカスタマイズ」でカスタマイズしたもの

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

PrometheusのKubernetesマニフェスト

「3.7.14　PrometheusのKubernetesマニフェスト作成」で作成したもの

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

MetricbeatのHelmチャートのパッケージファイル(metricbeat-V.R.S.tgz)

HMP-PCTO提供物

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

MetricbeatのHelmチャートのvalues.yaml

「3.8.10　MetricbeatのHelmチャートのカスタマイズ」でカスタマイズしたもの

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

Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェスト

「3.7.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成したもの

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

Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェスト

「3.7.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成したもの

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

ElasticsearchのHelmチャートのパッケージファイル(elasticsearch-V.R.S.tgz)

HMP-PCTO提供物

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

ElasticsearchのHelmチャートのvalues.yaml

「3.8.11　ElasticsearchのHelmチャートのカスタマイズ」でカスタマイズしたもの

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

LogstashのHelmチャートのパッケージファイル(logstash-V.R.S.tgz)

HMP-PCTO提供物

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

LogstashのHelmチャートのvalues.yaml

「3.8.12　LogstashのHelmチャートのカスタマイズ」でカスタマイズしたもの

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

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェスト

「3.7.6　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

次のどちらかをデプロイするための作業時に配置します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェスト

「3.7.7　コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

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

メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェスト

「3.7.8　メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

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

メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェスト

「3.7.9　メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

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

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェスト

「3.7.10　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成したもの

通常版を使用する場合で、uCosminexus Application Runtime for Spring Bootを導入するときだけ、次のどちらかをデプロイするための作業時に配置します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

HPAのKubernetesマニフェスト

「4.3.5　HPAのKubernetesマニフェストの作成」で作成したもの

オートスケール機能を使用する場合だけ配置します。

(2)　Namespaceの作成

(a)　Red Hat OpenShift Container Platform環境以外の場合

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespaceを作成してください。この作業は、次のどちらかをデプロイするための作業時に実施します。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRAS

Namespaceの名称は任意です。また、Namespaceは、1つでも、複数のNamespaceに分けても、各Kubernetesアプリケーションをデプロイできます。Namespaceの設計・運用はユーザの要件に応じて対応してください。

ただし、RASのKubernetesアプリケーションの場合、デプロイするNamespaceは同一にする必要があります。RASのKubernetesアプリケーションについては、「1.1　HMP-PCTOのKubernetesアプリケーションの一覧と分類」の「表1‒1　HMP-PCTOのKubernetesアプリケーションの一覧と分類」を参照してください。

なお、ここで示すコマンドの実行例やKubernetesマニフェストの記述例は、1つのNamespaceで運用するケースで説明しています。

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespaceを「my-namespace」としたときのコマンド例を示します。

kubectl create namespace my-namespace

＜コマンドの実行結果の例＞

namespace/my-namespace created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

(b)　Red Hat OpenShift Container Platform環境の場合

Red Hat OpenShift Container Platform環境の場合は、Projectを作成してください。Projectの作成の延長で、Project名と同名のNamespaceが作成されます。Namespaceの作成ルール、コマンドの実行例、およびKubernetesマニフェストの記述例の前提については、「(a)　Red Hat OpenShift Container Platform環境以外の場合」を参照してください。

Red Hat OpenShift Container Platform環境で、HMP-PCTOのKubernetesアプリケーションをデプロイするProjectを「my-project」とした場合のコマンド例を示します。

oc new-project my-project

＜コマンドの実行結果の例＞

Now using project "my-project" on server "https://api.example.openshift.com:6443".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app rails-postgresql-example

to build a new example application in Ruby. Or use kubectl to deploy a simple Kubernetes application:

    kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.43 -- /agnhost serve-hostname

このように、Projectの作成に成功し、現在使用中のProjectが「my-project」に切り替わった旨のメッセージが出力されていることを確認してください。

(3)　TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成

HMP-PCTOのgRPC通信機能で暗号化通信をする場合だけ実施します。

Kubernetesコントロールプレーンの任意のパスへ、次のとおりHMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備してください。

表3‒18　HMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルの一覧

対象Kubernetesアプリケーション

対応するHMP-PCTOの機能

ファイル

備考

TP1-Bridge

Participant（TP1-Bridge）

接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

必ず準備します。

自クライアント証明書ファイル（PEM形式）

クライアント認証を行う場合だけ準備します。

自クライアント証明書を作成した秘密鍵ファイル

Mediator

Mediator

接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

必ず準備します。

自サーバ証明書（PEM形式）ファイル

自サーバ証明書を作成した秘密鍵ファイル

接続元クライアント（OrchestratorおよびParticipant）の秘密鍵が格納されているキーストア（pkcs12またはJKS）ファイル

クライアント認証を行う場合だけ準備します。

HMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備したディレクトリ/ファイル構成の例を次に示します。

クライアント認証を行わない場合

<任意のパス>/
    ca.crt              # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
    mediator/
        server.crt      # Mediatorの自サーバ証明書(PEM形式)ファイル
        server.key      # Mediatorの自サーバ証明書を作成した秘密鍵ファイル

クライアント認証を行う場合

<任意のパス>/
    ca.crt              # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
    participant/
        client.crt      # Participantの自クライアント証明書ファイル(PEM形式)
        client.key      # Participantの自クライアント証明書を作成した秘密鍵ファイル
    mediator/
        server.crt      # Mediatorの自サーバ証明書(PEM形式)ファイル
        server.key      # Mediatorの自サーバ証明書を作成した秘密鍵ファイル
        keystore.jks    # Mediatorの接続元クライアント(OrchestratorおよびParticipant)の秘密鍵が格納されている
                        # キーストア(pkcs12またはJKS)ファイル

準備したファイルを使用してTP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットを作成します。

TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成要領を次に示します。

表3‒19　TP1-BridgeのgRPC通信機能の暗号化通信用シークレットの作成要領

キー名

ファイル

ca.crt

接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

client.crt

自クライアント証明書（PEM形式）ファイル

client.key

自クライアント証明書を作成した秘密鍵ファイル

表3‒20　MediatorのgRPC通信機能の暗号化通信用シークレットの作成要領

キー名

ファイル

ca.crt

接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

server.crt

自サーバ証明書（PEM形式）ファイル

server.key

自サーバ証明書を作成した秘密鍵ファイル

keystore

接続元クライアント（orchestratorおよびparticipant）の秘密鍵が格納されているキーストア（pkcs12またはJKS）ファイル

keystore_password

キーストアファイルのパスワード

TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットを作成するコマンド例を次に示します。

TP1-Bridgeシークレット名：「participant-secret」

Mediator用シークレット名：「mediator-secret」

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespace：「my-namespace」

クライアント認証を行わない場合

kubectl create secret generic --save-config participant-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  -n my-namespace

kubectl create secret generic --save-config mediator-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  --from-file=server.crt=./mediator/server.crt ¥
  --from-file=server.key=./mediator/server.key ¥
  -n my-namespace

クライアント認証を行う場合

kubectl create secret generic --save-config participant-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  --from-file=client.crt=./participant/client.crt ¥
  --from-file=client.key=./participant/client.key ¥
  -n my-namespace

kubectl create secret generic --save-config mediator-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  --from-file=server.crt=./mediator/server.crt ¥
  --from-file=server.key=./mediator/server.key ¥
  --from-file=keystore=./mediator/keystore.jks ¥
  --from-literal=keystore_password=changeit ¥
  -n my-namespace

＜コマンドの実行結果の例＞

secret/participant-secret created

secret/mediator-secret created

このように、Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

(4)　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのデプロイ

「(1)　各種資材の配置」で配置したMediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストをデプロイしてください。

コマンド例を次に示します。

kubectl apply -f ./mediator-consensus-log-volume.yaml

この例では、Kubernetesマニフェストのファイル名を「mediator-consensus-log-volume.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

storageclass.storage.k8s.io/mediator-consensus-log created
persistentvolume/mediator-consensus-log-0 created
persistentvolume/mediator-consensus-log-1 created
persistentvolume/mediator-consensus-log-2 created
persistentvolume/mediator-consensus-log-3 created
persistentvolume/mediator-consensus-log-4 created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

MediatorのConsensusLogの永続ボリュームをデプロイしたあと、次のコマンド例のように、MediatorのConsensusLogの永続ボリュームのデプロイが期待どおり成功していること（STATUS列が"Available"になっていること）を確認してください。

kubectl get pv

＜コマンドの実行結果の例＞

上記の例では、MediatorのConsensusLogの永続ボリュームだけを記載しています。実行環境によっては、そのほかに存在する永続ボリュームも一覧に表示されます。

なお、各列に表示される値は実行環境によって異なります。また、kubectlのdescribeサブコマンドを使用すると、各Kubernetesオブジェクトのさらに詳細な情報を参照できます。

(5)　EADSの永続ボリュームのデプロイ（通常版限定）

「(1)　各種資材の配置」で配置したEADSの永続ボリュームのKubernetesマニフェストをデプロイしてください。

コマンド例を次に示します。

kubectl apply -f ./eads-volume.yaml

この例では、EADSの永続ボリュームのKubernetesマニフェストのファイル名を「eads-volume.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

persistentvolume/eads-cache-1 created
persistentvolume/eads-logs-1 created
persistentvolume/eads-store-1 created
persistentvolume/eads-cache-2 created
persistentvolume/eads-logs-2 created
persistentvolume/eads-store-2 created
persistentvolume/eads-cache-3 created
persistentvolume/eads-logs-3 created
persistentvolume/eads-store-3 created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

(6)　Elasticsearchのelasticユーザパスワード用シークレットの作成

この作業は、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合でElasticsearchのTLS通信を行うときだけ実施します。

Elasticsearchのelasticユーザのパスワードを設定するためのシークレットを作成してください。

次の例でElasticsearchのelasticユーザパスワード用シークレットを作成するコマンド例を示します。

Elasticsearchのelasticユーザパスワード用シークレット名：「user-secret」

elasticユーザパスワード：「password」

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespace：「my-namespace」

echo -n password > ./password
kubectl create secret generic --save-config user-secret --from-file=./password -n my-namespace

(7)　ElasticsearchのTLS通信用シークレットの作成

この作業は、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合でElasticsearchのTLS通信を行うときだけ実施します。

Kubernetesコントロールプレーンの任意のパスへ、次のとおりElasticsearchのTLS通信に必要なファイルを準備してください。

表3‒21　HMP-PCTOのElasticsearchのTLS通信に必要なファイルの一覧

対象Kubernetesアプリケーション

ファイル

備考

Elasticsearch

Elasticsearchのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

なし

自サーバ証明書（PEM形式）ファイル

拡張属性のExtended Key Usageを使用して、クライアント認証も可能な証明書として作成してください。

自サーバ証明書を作成した秘密鍵ファイル

なし

HMP-PCTOのElasticsearchのTLS通信に必要なファイルを準備したディレクトリ/ファイル構成の例を次に示します。

<任意のパス>/
    ca.crt              # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
    elasticsearch/
        elastic.crt      # 自サーバ証明書(PEM形式)ファイル
        elastic.key      # 自サーバ証明書を作成した秘密鍵ファイル

準備したファイルを使用してElasticsearchのTLS通信用シークレットを作成します。

Elasticsearch用シークレット名はelasticsearch-secretで作成してください。

ElasticsearchのTLS通信用シークレットの作成要領を次に示します。

表3‒22　ElasticsearchのTLS通信用シークレットの作成要領

キー名

ファイル

ca.crt

接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル

elastic.crt

自サーバ証明書(PEM形式)ファイル

elastic.key

自サーバ証明書を作成した秘密鍵ファイル

ElasticsearchのTLS通信用シークレットを作成するコマンド例を次に示します。

Elasticsearch用シークレット名：「elasticsearch-secret」

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespace：「my-namespace」

kubectl create secret generic --save-config elasticsearch-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  --from-file=elastic.crt=./elasticsearch/elastic.crt ¥
  --from-file=elastic.key=./elasticsearch/elastic.key ¥
  -n my-namespace

＜コマンドの実行結果の例＞

secret/elasticsearch-secret created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

(8)　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのデプロイ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

「(1)　各種資材の配置」で配置したElasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストをデプロイしてください。

コマンド例を次に示します。

kubectl apply -f ./elasticsearch-data-volume.yaml

この例では、Kubernetesマニフェストのファイル名を「elasticsearch-data-volume.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

storageclass.storage.k8s.io/elasticsearch-data-masternode created
storageclass.storage.k8s.io/elasticsearch-data-datanode created
persistentvolume/elasticsearch-data-masternode-0 created
persistentvolume/elasticsearch-data-masternode-1 created
persistentvolume/elasticsearch-data-masternode-2 created
persistentvolume/elasticsearch-data-datanode-0 created
persistentvolume/elasticsearch-data-datanode-1 created
persistentvolume/elasticsearch-data-datanode-2 created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

Elasticsearchデータディレクトリの永続ボリュームをデプロイしたあと、次のコマンド例のように、Elasticsearchデータディレクトリの永続ボリュームのデプロイが期待どおり成功していること（STATUS列が"Available"になっていること）を確認してください。

kubectl get pv

＜コマンドの実行結果の例＞

上記の例では、Elasticsearchデータディレクトリの永続ボリュームだけを記載しています。実行環境によっては、そのほかに存在する永続ボリュームも一覧に表示されます。

なお、各列に表示される値は実行環境によって異なります。また、kubectlのdescribeサブコマンドを使用すると、各Kubernetesオブジェクトのさらに詳細な情報を参照できます。

(9)　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのデプロイ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

「(1)　各種資材の配置」で配置したElasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストをデプロイしてください。

コマンド例を次に示します。

kubectl apply -f ./elasticsearch-repo-volume.yaml

この例では、Kubernetesマニフェストのファイル名を「elasticsearch-repo-volume.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

storageclass.storage.k8s.io/elasticsearch-repo created
persistentvolume/elasticsearch-repo-master-0 created
persistentvolume/elasticsearch-repo-master-1 created
persistentvolume/elasticsearch-repo-master-2 created
persistentvolume/elasticsearch-repo-data-0 created
persistentvolume/elasticsearch-repo-data-1 created
persistentvolume/elasticsearch-repo-data-2 created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

Elasticsearchリポジトリディレクトリの永続ボリュームをデプロイしたあと、次のコマンド例のように、Elasticsearchリポジトリディレクトリの永続ボリュームのデプロイが期待どおり成功していること（STATUS列が"Available"になっていること）を確認してください。

kubectl get pv

＜コマンドの実行結果の例＞

上記の例では、Elasticsearchリポジトリディレクトリの永続ボリュームだけを記載しています。実行環境によっては、そのほかに存在する永続ボリュームも一覧に表示されます。

なお、各列に表示される値は実行環境によって異なります。また、kubectlのdescribeサブコマンドを使用すると、各Kubernetesオブジェクトのさらに詳細な情報を参照できます。

(10)　デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

「(1)　各種資材の配置」で配置したデプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストをデプロイしてください。この作業は、ユーザ責務のKubernetesアプリケーション、またはHMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのどちらかをデプロイするための作業時に実施します。

コマンド例を次に示します。

kubectl apply -f ./dependency-checker-role.yaml

この例では、Kubernetesマニフェストのファイル名を「dependency-checker-role.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

role.rbac.authorization.k8s.io/dependency-checker-role created
rolebinding.rbac.authorization.k8s.io/dependency-checker-role-binding created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

(11)　コンテナログ収集用ロールおよびロールバインディングのデプロイ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

「(1)　各種資材の配置」で配置したコンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストをデプロイしてください。

次にコマンド例を示します。

kubectl apply -f ./filebeat-role.yaml

この例では、Kubernetesマニフェストのファイル名を「filebeat-role.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

clusterrole.rbac.authorization.k8s.io/filebeat-role created
clusterrolebinding.rbac.authorization.k8s.io/filebeat-role-binding created

上記のように各Kubernetesオブジェクトの作成に成功した旨のメッセージが出力されていることを確認してください。

(12)　メトリクス収集用ロールおよびロールバインディングのデプロイ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

「(1)　各種資材の配置」で配置したメトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストをデプロイしてください。

次にコマンド例を示します。

kubectl apply -f ./prometheus-role.yaml

この例では、Kubernetesマニフェストのファイル名を「prometheus-role.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

clusterrole.rbac.authorization.k8s.io/prometheus-role created
clusterrolebinding.rbac.authorization.k8s.io/prometheus-role-binding created

上記のように各Kubernetesオブジェクトの作成に成功した旨のメッセージが出力されていることを確認してください。

(13)　メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのデプロイ

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

「(1)　各種資材の配置」で配置したメトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストをデプロイしてください。

次にコマンド例を示します。

kubectl apply -f ./metricbeat-role.yaml

この例では、Kubernetesマニフェストのファイル名を「metricbeat-role.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

clusterrole.rbac.authorization.k8s.io/metricbeat-role created
clusterrolebinding.rbac.authorization.k8s.io/metricbeat-role-binding created

上記のように各Kubernetesオブジェクトの作成に成功した旨のメッセージが出力されていることを確認してください。

(14)　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

「(1)　各種資材の配置」で配置したuCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストをデプロイしてください。この作業は、ユーザ責務のKubernetesアプリケーション、またはHMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのどちらかをデプロイするための作業時に実施します。

次にコマンド例を示します。

kubectl apply -f ./ucars-snapshots.yaml

この例では、Kubernetesマニフェストのファイル名を「ucars-snapshots.yaml」としています。また、このファイルには、各Kubernetesマニフェストがすべて1つのファイル内に定義されている例としています。

もし、各Kubernetesマニフェストを別々のファイルで作成している場合は、作成したKubernetesマニフェストのファイルの分だけデプロイのコマンドを実行してください。

＜コマンドの実行結果の例＞

persistentvolume/snapshot-volume created
persistentvolumeclaim/snapshot-volume created

上記のように各Kubernetesオブジェクトの作成に成功した旨のメッセージが出力されていることを確認してください。

uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームをデプロイしたあと、次のコマンド例のように、uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームのデプロイが期待どおり成功していること（STATUS列が"Available"になっていること）を確認してください。

kubectl get pv

＜コマンドの実行結果の例＞

上記の例では、uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームだけを記載しています。実行環境によっては、そのほかに存在する永続ボリュームも一覧に表示されます。

なお、各列に表示される値は実行環境によって異なります。また、kubectlのdescribeサブコマンドを使用すると、各Kubernetesオブジェクトのさらに詳細な情報を参照できます。

(15)　Kubernetesアプリケーションのデプロイ

「(1)　各種資材の配置」で配置した各KubernetesアプリケーションのKubernetesマニフェストおよびHelmチャートをデプロイしてください。

なお、HMP-PCTOの各Kubernetesアプリケーションは次の順序でデプロイする必要があります。

Elasticsearch※1

Logstash※1、Jaeger-query※1、Jaeger-collector※1、Prometheus※1、Metricbeat※1、Filebeat※1

Mediator、EADSサーバ（通常版だけ）※2、Ext-Cons（トライアル版だけ）、Participantが使用するDB/外部サービス

Relay-Service、Entity-Service(TCC)、Entity-Service(SQL)、TP1-Bridge※3

Orchestrator-Service、Orchestrator-Service(SQL)、Alternate-Service、Alternate-Service(SQL)

注※1

これらのKubernetesアプリケーションは、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけデプロイしてください。

注※2

EADSサーバをデプロイしたあとに「(21)　EADSのセットアップ（通常版限定）」を実施してから、Participantの機能を使用するKubernetesアプリケーションをデプロイしてください。

注※3

TP1連携機能を使用する場合、TP1-Bridgeをデプロイする前に、OpenTP1のrapリスナーとrapサーバを起動してください。

メモ

上記以外の順序でデプロイした場合※

各Kubernetesアプリケーションの初期化コンテナとして構成しているDependency-Checkerコンテナで、上記のとおり依存するKubernetesアプリケーションが先にデプロイされるまで待機します。待機処理がリトライオーバーし、初期化コンテナが異常終了した場合、Podの状態はCrashLoopBackOffになります。その場合は、Dependency-Checkerコンテナが実行しているデプロイ依存関係チェックスクリプトのエラーメッセージに従い対処してください。

そのあとで、EADSサーバとParticipantの機能を使用するKubernetesアプリケーションをアンデプロイして、正しい順序でデプロイし直してください。

注※　「(25)　Kubernetesアプリケーションのアンデプロイ」を実施しないでクラスタを再起動する場合も含みます。

デプロイしたKubernetesアプリケーションの起動に失敗したとき、KubernetesのERRORメッセージが出力されることがあります。詳細については、「(25)　Kubernetesアプリケーションのアンデプロイ」の「Kubernetesアプリケーションの停止時に出力されるKubernetesのERRORメッセージについて」を参照してください。

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションは、次のとおりhelmコマンドでデプロイしてください。

helm△install△<リリース名>△<Helmチャートパッケージファイル名>△-f△<values.yamlファイル名>

（凡例）△：半角スペース1文字

<values.yamlファイル名>は、ユーザがカスタマイズしたvalues.yamlファイル名を指定してください。

<リリース名>および<Helmチャートパッケージファイル名>は、次のとおり指定してください。

Elasticsearchをクラスタ構成で構築する場合は、マスターノード用values.yamlを使用してhelmコマンドを実行し、その後データノード用values.yamlを使用してhelmコマンドを実行してください。

表3‒23　helmコマンドに指定するコマンド引数

Kubernetesアプリケーション

リリース名

Helmチャートパッケージファイル名

TP1-Bridge

tp1-bridge<通番>

<通番>には、デプロイするtp1-bridgeごとに一意な番号を付与してください。

例

tp1-bridgeを10台起動する場合

1台目：tp1-bridge1

2台目：tp1-bridge2

3台目：tp1-bridge3

：

10台目：tp1-bridge10

tp1-bridge-V.R.S※2.tgz

Mediator

Mediator

mediator-V.R.S※2.tgz

Ext-Cons

ext-cons

ext-cons-V.R.S※2.tgz

Filebeat

filebeat

filebeat-V.R.S※2.tgz

Jaeger-query

jaeger-query

jaeger-query-V.R.S※2.tgz

Jaeger-collector

jaeger-collector

jaeger-collector-V.R.S※2.tgz

Metricbeat

metricbeat

metricbeat-V.R.S※2.tgz

Elasticsearch

クラスタ構成ではない場合：

elasticsearch

クラスタ構成の場合：

elasticsearch-master(マスターノード)

elasticsearch-data(データノード)

elasticsearch-V.R.S※2.tgz

Logstash

logstash

logstash-V.R.S※2.tgz

eads※1

eads-service

eads-service-chart.tgz

eads-server

eads-server-chart.tgz

注※1

eads-service-chart.tgz→eads-server-chart.tgzの順番でデプロイしてください。

注※2

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションのうち、Prometheusは、ユーザ任意の方法でデプロイしてください。kubectlコマンドでデプロイするコマンド例を次に示します。

kubectl apply -f ./deployment.yaml

Mediatorをデプロイするコマンド例を次に示します。

helm install mediator ./mediator-V.R.S.tgz -f ./mediator-values.yaml

注　V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

＜コマンドの実行結果の例＞

NAME: mediator
LAST DEPLOYED: Thu May 11 12:34:56 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

このように、Helmチャートのインストールに成功したメッセージが出力されていることを確認してください。なお、コマンドの実行結果の中で「NAMESPACE:」部分に出力されるNamespace名は、values.yamlファイルに記述したNamespace名ではなく、このコマンドを実行したKubernetesコントロールプレーンのデフォルトNamespace名が表示されます(上記例では"default")。実際には、values.yamlファイルに記述したNamespace名でKubernetesアプリケーションがデプロイされています。

RASのKubernetesアプリケーションをデプロイしたあと、次のコマンド例のように、各KubernetesアプリケーションがElasticsearchと接続できることを確認してください。この手順はElastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合に実施してください。

Logstashの確認

kubectl -n my-namespace exec -it logstash-7765767b94-25wrc -- curl --cacert /usr/share/logstash/config/certs/ca.crt --key /usr/share/logstash/config/certs/elastic.key --cert /usr/share/logstash/config/certs/elastic.crt -u elastic:password -XGET 'https://elasticsearch-master:9200/_cat/health?v'

Namespace名がmy-namespace、LogstashのPod名がlogstash-7765767b94-25wrc、Elasticsearchのelasticユーザパスワードがpasswordの場合の例です。

＜コマンドの実行結果の例＞

上記のようにElasticsearchの状態が示されていることを確認してください。

Metricbeatの確認

kubectl -n my-namespace exec -it metricbeat-dffb85bc6-w5jlc -- metricbeat test output

Namespace名がmy-namespace、LogstashのPod名がmetricbeat-dffb85bc6-w5jlcの場合の例です。

＜コマンドの実行結果の例＞

Defaulted container "metricbeat" out of: metricbeat, dependency-checker (init)
elasticsearch: https://elasticsearch-master:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: 10.98.47.178
    dial up... OK
  TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.3
    dial up... OK
  talk to server... OK
  version: V.R.S※

注※

V.R.Sは使用するMetricbeatのバージョンに合わせて読み替えてください。

上記のように「talk to server」がOKになっていることを確認してください。

Jaeger-collectorおよびJaeger-query

Jaeger-collectorおよびJaeger-queryの起動の際にElasticsearchとの接続確認が行われます。次のコマンド例のように、各KubernetesアプリケーションのSTATUSが"Running"になっていることを確認してください。

kubectl get pods -n my-namespace -o wide

＜コマンドの実行結果の例＞

なお、各列に表示される値は実行環境によって異なります。

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションをデプロイしたあと、次のコマンド例のように、各Kubernetesアプリケーションが期待どおり起動していること（STATUS列が"Running"になっていることや、NODE列でPodが意図したワーカーノードに割り当てられていることなど）を確認してください。

kubectl get pods -n my-namespace -o wide

＜コマンドの実行結果の例（SQL-Participantを使用する場合）＞

＜コマンドの実行結果の例（TCC-Participantを使用する場合）＞

なお、各列に表示される値は実行環境によって異なります。また、kubectlのdescribeサブコマンドを使用すると、各Kubernetesオブジェクトの詳細な情報を参照できます。

(16)　Elasticsearchのスナップショットリポジトリの作成およびスナップショットライフサイクルポリシーの作成

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

Elasticsearchにスナップショットを保存するためのスナップショットリポジトリを設定してください。

REST APIリクエスト

PUT /_snapshot/<repository>

パスパラメタ

<repository>：（必須）リポジトリ名（string）

リクエストボディ

type：リポジトリタイプ。"fs"を指定してください。

settings.location：リポジトリの場所。/usr/share/elasticsearch/repository/<リポジトリ名>を指定してください。

コマンド例を次に示します（Elasticsearchのhttp.portが30203の場合）。

curl --cacert ca.crt --key elastic.key --cert elastic.crt -u elastic:password -H "Content-Type: application/json" -XPUT 'https://localhost:30203/_snapshot/backup' -d '{
    "type": "fs",
    "settings": {
        "location": "/usr/share/elasticsearch/repository/backup"
    }
}'

＜コマンドの実行結果の例＞

{"acknowledged":true}

次に示すコマンド例を基にリポジトリが作成できたことを確認してください（Elasticsearchのhttp.portが30203の場合）。

curl --cacert ca.crt --key elastic.key --cert elastic.crt -u elastic:password -XGET 'https://localhost:30203/_snapshot/?pretty'

＜コマンドの実行結果の例＞

{
  "backup" : {
    "type" : "fs",
    "settings" : {
      "location" : "/usr/share/elasticsearch/repository/backup"
    }
  }
}

Elasticsearchのスナップショットライフサイクルポリシーを作成して、リポジトリにスナップショットを定期的に取得するように設定してください。

REST APIリクエスト

PUT /_slm/policy/<snapshot-lifecycle-policy-id>

パスパラメタ

<snapshot-lifecycle-policy-id>：スナップショットライフサイクルポリシーID(string)

リクエストボディ

config.ignore_unavailable：データが破損していた場合の無視の有無。"true"を指定してください。

name：自動的に付与されるスナップショット名（string）。Date math support in index and index alias names | Elasticsearch Guide [7.17] | Elasticを使用して名前を指定できます。

repository：スナップショットの作成先のリポジトリ名。作成したリポジトリ名を指定してください。

schedule：スナップショットを取得するタイミング（cron形式）

コマンド例を次に示します（Elasticsearchのhttp.portが30203の場合）。

curl --cacert ca.crt --key elastic.key --cert elastic.crt -u elastic:password -H "Content-Type: application/json" -XPUT 'https://localhost:30203/_slm/policy/my-policy' -d '{
  "schedule": "0 0 13 * * ?",
  "name": "<snapshot-{now/d}>",
  "repository": "backup",
  "config": {
    "ignore_unavailable": true
  }
}'

＜コマンドの実行結果の例＞

{"acknowledged":true}

次に示すコマンド例を基にスナップショットライフサイクルポリシーが作成できたことを確認してください（Elasticsearchのhttp.portが30203の場合）。

curl --cacert ca.crt --key elastic.key --cert elastic.crt -u elastic:password -XGET 'https://localhost:30203/_slm/policy/?pretty'

＜コマンドの実行結果の例＞

{
  "my-policy" : {
    "version" : 1,
    "modified_date_millis" : 1689140931238,
    "policy" : {
      "name" : "<snapshot-{now/d}>",
      "schedule" : "0 0 13 * * ?",
      "repository" : "backup",
      "config" : {
        "ignore_unavailable" : true
      }
    },
    "next_execution_millis" : 1689166800000,
    "stats" : {
      "policy" : "my-policy",
      "snapshots_taken" : 0,
      "snapshots_failed" : 0,
      "snapshots_deleted" : 0,
      "snapshot_deletion_failures" : 0
    }
  }
}

(17)　Elasticsearchのindex設定変更および削除

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合は、次の手順を実施してください。

HMP-PCTOがElasticsearchに出力する情報はindexとして格納されます。これらのindexには、次のライフサイクルが設定されています。

表3‒24　Elasticsearchのindexのライフサイクルポリシー

項番

Elasticsearchのindex名のプレフィックス

indexのライフサイクルポリシー

Elasticsearch

ILMポリシー名

ポリシーの内容

1

「logstash」

「logstash-policy」

Elasticsearch ILMによって、次のポリシーが設定されます。

作成されてから30日が経過したとき、または50Gバイトを超えたときに、indexがロールオーバーされ、新たなindexが作成されて使用される。indexは自動的に削除されない。

2

「jaeger」

（なし）

作成されてから1日が経過したときに、indexがロールオーバーされ、新たなindexが作成されて使用される。indexは自動的に削除されない。

3

「metricbeat」

「metricbeat」

Elasticsearch ILMによって、次のポリシーが設定されます。

作成されてから30日が経過したとき、または50Gバイトを超えたときに、indexがロールオーバーされ、新たなindexが作成されて使用される。indexは自動的に削除されない。

■情報の確認方法

indexの一覧とボリューム使用量を確認する方法を次に示します。

Kubernetesコントロールプレーン上で、REST APIのGETメソッドを使用して、「IPアドレス:ポート番号/」のあとに「_cat/indices」を指定することでindexの一覧とボリューム使用量が表示されます。

次にコマンド例を示します（Elasticsearchのhttp.portが30202の場合）。

# curl -XGET 'localhost:30202/_cat/indices?v&s=index'

＜コマンドの実行結果の例＞

■情報のロールオーバー設定の変更方法

標準出力の情報およびメトリクスの情報は、それぞれ「logstash-policy」「metricbeat」という名前のElasticsearch ILMポリシーが設定されています。これらのILMポリシーにはロールオーバーする日数・上限サイズがあらかじめ設定されています。

まず、現在のILMポリシーの内容を確認します。

Kubernetesコントロールプレーン上で、REST APIのGETメソッドを使用して、「IPアドレス:ポート番号/_ilm/policy/」のあとにILMポリシー名を指定することで指定したILMポリシーを表示できます。

次にコマンド例を示します（Elasticsearchのhttp.portが30202の場合）。

# curl -XGET 'localhost:30202/_ilm/policy/logstash-policy?pretty'

＜コマンドの実行結果の例＞

{
  "logstash-policy" : {
(略)
    "policy" : {
      "phases" : {
        "hot" : {
          "min_age" : "0ms",
          "actions" : {
            "rollover" : {
              "max_size" : "50gb", …1
              "max_age" : "30d"
            }
          }
        }
      }
    },
(略)
  }
}

記述例の番号は、説明の番号と対応しています。

＜説明＞

ロールオーバーする上限のindexのサイズ(max_size)および日数(max_age)

上記の「policy」で表示されたポリシーのうち、変更したい部分だけを置き換えて、他の部分は表示された値のままで設定します。Kubernetesコントロールプレーン上で、REST APIのPUTメソッドを使用して、「IPアドレス:ポート番号/_ilm/policy/」のあとにILMポリシー名を指定し、後続に「policy」配下の設定をすべて記載することで、ILMポリシーの値を変更できます。

重要

ILMポリシー変更時の注意事項

必ずILMポリシーの「policy」以下のうち、変更したい部分だけを置き換えて、他の部分は表示された値をそのまま設定してください。もし他の部分を記載しなかった場合、記載しなかった部分は以前の設定から消えてしまいます。

バージョンアップ時の注意事項

HMP-PCTOの関連プログラムのElasticsearch、Jaeger、またはPrometheusをバージョンアップした際、インデックステンプレートが新規に作成されることがあります。カスタマイズしたILMポリシー設定を使用している場合、カスタマイズした設定内容は、新しいインデックステンプレートには反映されません。ILMポリシーを再設定してください。

次に、ロールオーバーする上限のindexのサイズ(max_size)を10Gバイトに、日数(max_age)を1日に変更する場合のコマンド例を示します（Elasticsearchのhttp.portが30202の場合）。

# curl -XPUT 'localhost:30202/_ilm/policy/logstash-policy' ¥
-H 'Content-Type: application/json; charset=utf-8' ¥
--data-binary @- << EOF
{
    "policy" : {
      "phases" : {
        "hot" : {
          "min_age" : "0ms",
          "actions" : {
            "rollover" : {
              "max_size" : "10gb",
              "max_age" : "1d"
            }
          }
        }
      }
    }
}
EOF

＜コマンドの実行結果の例＞

{"acknowledged":true}

■情報の削除方法

デフォルトのポリシーでは、Elasticsearchのボリューム使用量が増加し続けるため、不要なindexは削除してください。

indexを削除する方法を次に示します。

■indexを自動的に削除する方法

標準出力の情報およびメトリクスの情報は、それぞれ「logstash-policy」「metricbeat」という名前のElasticsearch ILMポリシーが設定されています。これらのILMポリシーに対して、削除のポリシーを追加します。

分散トレースの情報はElasticsearch ILMポリシーが設定されていないため、削除を実施するILMポリシーの設定と、ILMポリシーを適用するための設定を行います。

Logstash、Metricbeatのindexを自動的に削除する方法

まず、現在のILMポリシーの内容を確認します。確認の方法は「■情報のロールオーバー設定の変更方法」を参照してください。

indexを自動的に削除するためには、ILMポリシーの「policy.phases」に「delete」配下を追加し、deleteの「min_age」に、削除するまでに保持する日数を記載します。そのほかの部分は上記の確認結果で表示された値のままで設定します。

Kubernetesコントロールプレーン上で、REST APIのPUTメソッドを使用して、「IPアドレス:ポート番号/_ilm/policy/」のあとにILMポリシー名を指定し、後続に「policy」配下の設定をすべて記載することで、ILMポリシーの値を変更できます。

重要

ILMポリシー変更時の注意事項

必ずILMポリシーの「policy」以下のうち、変更したい部分だけを置き換えて、他の部分は表示された値をそのまま設定してください。もし他の部分を記載しなかった場合、記載しなかった部分は以前の設定から消えてしまいます。

バージョンアップ時の注意事項

HMP-PCTOの関連プログラムのElasticsearch、Jaeger、またはPrometheusをバージョンアップした際、インデックステンプレートが新規に作成されることがあります。カスタマイズしたILMポリシー設定を使用している場合、カスタマイズした設定内容は、新しいインデックステンプレートには反映されません。ILMポリシーを再設定してください。

次に、「policy.phases」に7日経過したらindexを削除する場合のコマンド例を示します（Elasticsearchのhttp.portが30202の場合）。

# curl -XPUT 'localhost:30202/_ilm/policy/logstash-policy' ¥
-H 'Content-Type: application/json; charset=utf-8' ¥
--data-binary @- << EOF
{
    "policy" : {
      "phases" : {
        "hot" : {
          "min_age" : "0ms",
          "actions" : {
            "rollover" : {
              "max_size" : "10gb",
              "max_age" : "1d"
            }
          }
        },
        "delete" : {
          "min_age" : "7d",
          "actions" : {
            "delete" : {}
          }
        }
      }
    }
}
EOF

＜コマンドの実行結果の例＞

{"acknowledged":true}

jaegerのindexを自動的に削除する方法

分散トレースの情報はElasticsearch ILMポリシーが設定されていません。そのため、次の(i)(ii)の操作が必要になります。

(i)分散トレースのILMポリシーの追加

自動的に削除するためには、ILMポリシーの「policy.phases」配下に「hot」と「delete」配下を追加し、deleteの「min_age」に、削除するまでに保持する日数を記載します（「hot」の「min_age」には即時反映を示す0msを指定します）。

Kubernetesコントロールプレーン上で、REST APIのPUTメソッドを使用して、「IPアドレス:ポート番号/_ilm/policy/」のあとにILMポリシー名「jaeger-ilm-policy」を指定し、後続に「policy」配下の設定をすべて記載することで、ILMポリシーを作成できます。

次に、「policy.phases」に7日経過したらindexを削除する場合のコマンド例を示します（Elasticsearchのhttp.portが30202の場合）。

# curl -XPUT 'localhost:30202/_ilm/policy/jaeger-ilm-policy' ¥
-H 'Content-Type: application/json; charset=utf-8' ¥
--data-binary @- << EOF
{
    "policy" : {
      "phases" : {
        "hot" : {
          "min_age" : "0ms",
          "actions" : {
          }
        },
        "delete" : {
          "min_age" : "7d",
          "actions" : {
            "delete" : {}
          }
        }
      }
    }
}
EOF

＜コマンドの実行結果の例＞

{"acknowledged":true}

(ii)分散トレースのindexのテンプレートの更新

新規に作成される分散トレースのindexに上記(i)で作成したILMポリシーを反映させるため、分散トレースの2つのindexテンプレート「jaeger-jaeger-service」「jaeger-jaeger-span」それぞれの設定に、(i)のILMポリシーを追加します。

まず、現在のindexテンプレートの内容を確認します。

Kubernetesコントロールプレーン上で、REST APIのGETメソッドを使用して、「IPアドレス:ポート番号/_template/」のあとにテンプレート名を指定することで指定したindexテンプレートを表示できます。

次にテンプレート名「jaeger-jaeger-service」を指定した場合のコマンド例を示します（Elasticsearchのhttp.portが30202の場合）。

# curl -XGET 'localhost:30202/_template/jaeger-jaeger-service?pretty'

＜コマンドの実行結果の例＞

{
  "jaeger-jaeger-service" : {
    "order" : 0,
    "index_patterns" : [
      "jaeger-jaeger-service-*"
    ],
    "settings" : {
      "index" : {
        "mapping" : {
          "nested_fields" : {
            "limit" : "50"
          }
        },
        "requests" : {
          "cache" : {
            "enable" : "true"
          }
        },
        "number_of_shards" : "5",
        "number_of_replicas" : "1"
      }
    },
    "mappings" : {
      "dynamic_templates" : [
        {
          "span_tags_map" : {
            "path_match" : "tag.*",
            "mapping" : {
              "ignore_above" : 256,
              "type" : "keyword"
            }
          }
        },
        {
          "process_tags_map" : {
            "path_match" : "process.tag.*",
            "mapping" : {
              "ignore_above" : 256,
              "type" : "keyword"
            }
          }
        }
      ],
      "properties" : {
        "operationName" : {
          "ignore_above" : 256,
          "type" : "keyword"
        },
        "serviceName" : {
          "ignore_above" : 256,
          "type" : "keyword"
        }
      }
    },
    "aliases" : { }
  }
}

indexテンプレートにILMポリシーを適用するためには、「settings.index」に「lifecycle」配下を追加し、「lifecycle.name」にILMポリシー名を記載します。そのほかの部分は上記の確認結果で表示された値のままで設定します。

Kubernetesコントロールプレーン上で、REST APIのPUTメソッドを使用して、「IPアドレス:ポート番号/_template/」のあとにindexテンプレート名を指定し、後続に「index_patterns」「settings」「mappings」「aliases」の設定をすべて記載することで、ILMポリシーを適用できます。

重要

indexテンプレート変更時の注意事項

必ず「settings.index」に「lifecycle」配下を追加し、他の部分は表示された値をそのまま設定してください。もし他の部分を記載しなかった場合、記載しなかった部分は以前の設定から消えてしまいます。

次に、indexテンプレート「jaeger-jaeger-service」にILMポリシー「jaeger-ilm-policy」を適用する場合のコマンド例を示します（Elasticsearchのhttp.portが30202の場合）。

# curl -XPUT 'localhost:30202/_template/jaeger-jaeger-service' ¥
-H 'Content-Type: application/json; charset=utf-8' ¥
--data-binary @- << EOF
{
    "index_patterns" : [
      "jaeger-jaeger-service-*"
    ],
    "settings" : {
      "index" : {
        "lifecycle" : {
           "name": "jaeger-ilm-policy"
         },
        "mapping" : {
          "nested_fields" : {
            "limit" : "50"
          }
        },
        "requests" : {
          "cache" : {
            "enable" : "true"
          }
        },
        "number_of_shards" : "5",
        "number_of_replicas" : "1"
      }
    },
    "mappings" : {
      "dynamic_templates" : [
        {
          "span_tags_map" : {
            "path_match" : "tag.*",
            "mapping" : {
              "ignore_above" : 256,
              "type" : "keyword"
            }
          }
        },
        {
          "process_tags_map" : {
            "path_match" : "process.tag.*",
            "mapping" : {
              "ignore_above" : 256,
              "type" : "keyword"
            }
          }
        }
      ],
      "properties" : {
        "operationName" : {
          "ignore_above" : 256,
          "type" : "keyword"
        },
        "serviceName" : {
          "ignore_above" : 256,
          "type" : "keyword"
        }
      }
    },
    "aliases" : { }
}
EOF

＜コマンドの実行結果の例＞

{"acknowledged":true}

分散トレースの2つのindexテンプレート「jaeger-jaeger-service」「jaeger-jaeger-span」それぞれに対して、ILMポリシーを適用してください。

■indexを手動で削除する方法

Kubernetesコントロールプレーン上で、REST APIのDELETEメソッドを使用して、「IPアドレス:ポート番号/」のあとに、index名を指定することで指定したindexを削除できます。

jaegerのindexは、同じ日付の名前を持つ「jaeger-jaeger-service XXXX-XX-XX」「jaeger-jaeger-span XXXX-XX-XX」の2種類があるため、同じ日付の名前のindexをペアで削除してください。

次にコマンド例を示します（Elasticsearchのhttp.portが30202の場合）。

# curl -XDELETE 'localhost:30202/metricbeat-X.XX.X-XXXX.XX.XX-XXXXXX'

＜コマンドの実行結果の例＞

{"acknowledged":true}

(18)　Azure Monitorの設定

Microsoft Azure環境を使用してトラブルシュート情報を収集する場合は、Azure Monitorの設定をしてください。

HMP-PCTOがAzure Monitorに出力する情報は、Azure Monitorのワークスペースに格納されます。保存量、保持期間、ライフサイクルなどの詳細はAzure Monitorの公式ドキュメントを参照してください。

(19)　Cloud Logging、Cloud TraceおよびCloud Monitoringの設定

Google Cloud Platform環境を使用してトラブルシュート情報を収集する場合は、Cloud Logging、Cloud TraceおよびCloud Monitoringの設定をしてください。

Cloud Logging、Cloud TraceおよびCloud Monitoringの保存量や保存期間の詳細については、Google Cloud Platformの公式ドキュメントを参照してください。

(20)　New Relicの設定

New Relic使用時のトラブルシュート情報の保存量や保持期間の詳細については、New Relicの公式ドキュメントを参照してください。

(21)　EADSのセットアップ（通常版限定）

「(15)　Kubernetesアプリケーションのデプロイ」でEADSをデプロイしたあと、「(1)　各種資材の配置」で配置したEADSのHelmチャートパッケージファイル（eads-command-job-chart.tgzおよびeads-command-cronjob-chart.tgz）とEADSのHelmチャートのvalues.yamlを使用して、EADSをセットアップしてください。

コマンド例を次に示します。なお、初デプロイ時と再デプロイ時（＝eztool createcacheコマンドを1回実行済みでキャッシュ用PV内にファイルが書き込まれている時）で、実行するコマンドは内容が一部異なります。また、オレンジ色の背景の「hmppctoCache」は、EADSのHelmチャートのvalues.yamlの.caches[].nameフィールドに指定した文字列に置き換えてください。

（初デプロイ時）
helm -n my-namespace install eads-command-createcache ./eads-command-job-chart.tgz -f ./eads-values.yaml --set args="createcache hmppctoCache"
kubectl -n my-namespace wait --for=condition=complete job/eads-command-createcache-eads-command-job --timeout=300s
helm -n my-namespace install eads-command-open ./eads-command-job-chart.tgz -f ./eads-values.yaml --set args="open"
kubectl -n my-namespace wait --for=condition=complete job/eads-command-open-eads-command-job --timeout=60s
helm -n my-namespace uninstall eads-command-createcache
helm -n my-namespace uninstall eads-command-open
helm -n my-namespace install eads-command-compaction-0 ./eads-command-cronjob-chart.tgz -f ./eads-values.yaml --set args="compaction",index=0
helm -n my-namespace install eads-command-compaction-1 ./eads-command-cronjob-chart.tgz -f ./eads-values.yaml --set args="compaction",index=1
helm -n my-namespace install eads-command-compaction-2 ./eads-command-cronjob-chart.tgz -f ./eads-values.yaml --set args="compaction",index=2

（再デプロイ時）
helm -n my-namespace install eads-command-resume ./eads-command-job-chart.tgz -f ./eads-values.yaml --set args="resume"
kubectl -n my-namespace wait --for=condition=complete job/eads-command-resume-eads-command-job --timeout=300s
helm -n my-namespace install eads-command-open ./eads-command-job-chart.tgz -f ./eads-values.yaml --set args="open"
kubectl -n my-namespace wait --for=condition=complete job/eads-command-open-eads-command-job --timeout=60s
helm -n my-namespace uninstall eads-command-resume
helm -n my-namespace uninstall eads-command-open
helm -n my-namespace install eads-command-compaction-0 ./eads-command-cronjob-chart.tgz -f ./eads-values.yaml --set args="compaction",index=0
helm -n my-namespace install eads-command-compaction-1 ./eads-command-cronjob-chart.tgz -f ./eads-values.yaml --set args="compaction",index=1
helm -n my-namespace install eads-command-compaction-2 ./eads-command-cronjob-chart.tgz -f ./eads-values.yaml --set args="compaction",index=2

この例では、EADSのHelmチャートのvalues.yamlのファイル名を「eads-values.yaml」としています。

＜コマンドの実行結果の例＞

（初デプロイ時）
NAME: eads-command-createcache
LAST DEPLOYED: Tue Jun 27 17:45:45 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
job.batch/eads-command-createcache-eads-command-job condition met
NAME: eads-command-open
LAST DEPLOYED: Tue Jun 27 17:46:30 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
job.batch/eads-command-open-eads-command-job condition met
release "eads-command-createcache" uninstalled
release "eads-command-open" uninstalled
NAME: eads-command-compaction-0
LAST DEPLOYED: Tue Jun 27 17:46:15 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
NAME: eads-command-compaction-1
LAST DEPLOYED: Tue Jun 27 17:46:20 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
NAME: eads-command-compaction-2
LAST DEPLOYED: Tue Jun 27 17:46:25 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None

（再デプロイ時）
NAME: eads-command-resume
LAST DEPLOYED: Tue Jun 27 17:45:45 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
job.batch/eads-command-resume-eads-command-job condition met
NAME: eads-command-open
LAST DEPLOYED: Tue Jun 27 17:46:30 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
job.batch/eads-command-open-eads-command-job condition met
release "eads-command-resume" uninstalled
release "eads-command-open" uninstalled
NAME: eads-command-compaction-0
LAST DEPLOYED: Tue Jun 27 17:46:15 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
NAME: eads-command-compaction-1
LAST DEPLOYED: Tue Jun 27 17:46:20 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
NAME: eads-command-compaction-2
LAST DEPLOYED: Tue Jun 27 17:46:25 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None

このように、各コマンドが成功したメッセージが出力されていることを確認してください。

(22)　EADSの生存監視ツールの起動

「(15)　Kubernetesアプリケーションのデプロイ」でEADSをデプロイしたあと、「(1)　各種資材の配置」で配置したEADSのHelmチャートパッケージファイル（eads-health-cronjob-chart.tgz）とEADSのHelmチャートのvalues.yamlを使用して、EADSの生存監視ツールを起動してください。

生存監視ツールは、縮退状態のEADSサーバを検知して自動で復旧を実行するツールです。生存監視ツールの詳細については、取扱説明書「EADS コンテナオーケストレーションツール対応機能」を参照してください。

コマンド例を次に示します。

helm -n my-namespace install eads-health ./eads-health-cronjob-chart.tgz -f ./eads-values.yaml

この例では、EADSのHelmチャートのvalues.yamlファイルのファイル名を「eads-values.yaml」としています。

＜コマンドの実行結果の例＞

NAME: eads-health
LAST DEPLOYED: Tue Jun 27 17:46:25 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None

このように、各コマンドが成功したメッセージが出力されていることを確認してください。

(23)　EADSのアンセットアップ（通常版限定）

「(25)　Kubernetesアプリケーションのアンデプロイ」でEADSをアンデプロイする前、「(1)　各種資材の配置」で配置したEADSのHelmチャートパッケージファイル（eads-command-job-chart.tgz）とEADSのHelmチャートのvalues.yamlを使用して、EADSをアンセットアップする手順を説明します。

コマンド例を次に示します。

helm -n my-namespace uninstall eads-command-compaction-0
helm -n my-namespace uninstall eads-command-compaction-1
helm -n my-namespace uninstall eads-command-compaction-2
helm -n my-namespace install eads-command-close ./eads-command-job-chart.tgz -f ./eads-values.yaml --set args="close"
kubectl -n my-namespace wait --for=condition=complete job/eads-command-close-eads-command-job --timeout=60s
helm -n my-namespace uninstall eads-command-close

この例では、EADSのHelmチャートのvalues.yamlファイルのファイル名を「eads-values.yaml」としています。

＜コマンドの実行結果の例＞

release "eads-command-compaction" uninstalled-0
release "eads-command-compaction" uninstalled-1
release "eads-command-compaction" uninstalled-2
NAME: eads-command-close
LAST DEPLOYED: Tue Jun 27 18:46:30 2023
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
job.batch/eads-command-close-eads-command-job condition met
release "eads-command-close" uninstalled

このように、各コマンドが成功したメッセージが出力されていることを確認してください。

(24)　EADSの生存監視ツールの停止

「(25)　Kubernetesアプリケーションのアンデプロイ」でEADSをアンデプロイする前、EADSの生存監視ツールを停止してください。

コマンド例を次に示します。

helm -n my-namespace uninstall eads-health

＜コマンドの実行結果の例＞

release "eads-health" uninstalled

このように、各コマンドが成功したメッセージが出力されていることを確認してください。

(25)　Kubernetesアプリケーションのアンデプロイ

デプロイしたHMP-PCTOの各Kubernetesアプリケーションをアンデプロイする方法について説明します。

なお、HMP-PCTOの各Kubernetesアプリケーションは、次の順序でアンデプロイする必要があります。

Orchestrator-Service、Orchestrator-Service(SQL)、Alternate-Service、Alternate-Service(SQL)

Entity-Service(TCC)、Entity-Service(SQL)、Relay-Service、TP1-Bridge※1

Mediator、EADSサーバ（通常版だけ）、Ext-Cons（トライアル版だけ）、Participantが使用するDB/外部サービス

Logstash※2、Jaeger-query※2、Jaeger-collector※2、Prometheus※2、Metricbeat※2、Filebeat※2

Elasticsearch※2

注※1

TP1連携機能を使用している場合、TP1-Bridgeをアンデプロイしたあとに、OpenTP1のrapリスナーとrapサーバを停止してください。

注※2

これらのKubernetesアプリケーションは、Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけデプロイしています。

クラスタを停止する前には、上記の順序でアンデプロイしてください。アンデプロイする前にクラスタを停止した場合は、クラスタを再起動したあとに、アンデプロイしてから「(15)　Kubernetesアプリケーションのデプロイ」で示す順序で再デプロイしてください。

重要

上記以外の順序でアンデプロイした場合に発生する問題※

上記以外の順序でアンデプロイした場合、トラブルシュートに必要な情報が収集できなかったり、処理中のトランザクションが適切に終了しなかったりなどの問題が発生するおそれがあります。

注※　アンデプロイする前にクラスタを停止する場合も含みます。

Kubernetesアプリケーションの停止時に出力されるKubernetesのERRORメッセージについて

Kubernetesアプリケーションの停止時（起動失敗時を含む）に、KubernetesアプリケーションのメッセージログにKubernetesのclientでjava.lang.InterruptedExceptionが発生したことを示すERRORメッセージが出力されることがあります。このメッセージは出力されても問題ないため、無視してください。

ERRORメッセージの出力例の一部を次に示します。

■メッセージ出力例１

ERROR sql-participant-dc47fd869-khlgp pool-13-thread-1 io.kubernetes.client.informer.cache.ProcessorListener 87 processor interrupted: {}

■メッセージ出力例２

ERROR sql-participant-dc47fd869-khlgp informer-controller-V1Endpoints io.kubernetes.client.informer.cache.Controller 87 DefaultController#processLoop get interrupted null

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションは、次のとおりhelmコマンドでアンデプロイしてください。

helm△uninstall△<リリース名>

（凡例）△：半角スペース1文字

<リリース名>は、デプロイ時と同様に指定してください。

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションのうち、Prometheusはユーザ任意の方法でアンデプロイしてください。

kubectlコマンドでアンデプロイするコマンド例を次に示します。

kubectl delete -f ./deployment.yaml

Mediatorをアンデプロイするコマンド例を次に示します。

helm uninstall mediator

＜コマンドの実行結果の例＞

release "mediator" uninstalled

このように、Helmチャートのアンインストールに成功したメッセージが出力されていることを確認してください。

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションをアンデプロイしたあと、次のコマンド例のように、各Kubernetesアプリケーションが期待どおり停止していること（一覧に出力されないこと）を確認してください。

kubectl get pods -n my-namespace -o wide

＜コマンドの実行結果の例＞

No resources found in my-namespace namespace.

3.10　RASのマネージドサービスの運用

クラウド環境が提供するRASのマネージドサービスの運用について説明します。

3.10.1　New Relicを使用する場合の作業

HMP-PCTOのトラブルシュート情報を収集するためにNew Relicを使用する場合に必要な作業の流れを次の表に示します。

表3‒25　New Relicを使用する場合に必要な作業の流れ

項番

項目

説明

参照先

1

New Relicのデプロイ

New RelicのKubernetes integrationが提供しているコンポーネントのPodをKubernetesクラスタにデプロイします。

Kubernetes integrationのコンポーネントは目的に応じて複数提供しています。目的に応じたコンポーネントを有効にしてください。

HMP-PCTOのメッセージログを収集する場合

newrelic-loggingコンポーネントをデプロイおよび有効化してください。

HMP-PCTOのメトリクスを収集する場合

nri-prometheusコンポーネントをデプロイおよび有効化してください。

有効化の方法については、New Relicの公式ドキュメントを参照してください。

New Relicの公式ドキュメント

2

OpenTelemetry CollectorのKubernetesマニフェスト作成

HMP-PCTOが出力する分散トレースをNew Relicに送信するために、OpenTelemetry CollectorのKubernetesマニフェストを作成します。

適切なNew Relic OTLPエンドポイントおよびNew Relicのライセンスキーを設定してください。

OpenTelemetry CollectorおよびNew Relicの公式ドキュメント

3

OpenTelemetry Collectorのデプロイ

OpenTelemetry Collectorをユーザ任意の方法でKubernetesクラスタにデプロイします。

OpenTelemetry Collectorの公式ドキュメント

重要

クラウド環境でNew Relicをデプロイする場合、必要な作業および操作が異なる場合があります。詳細については、New Relicの公式ドキュメントを参照してください。

3.11　ログの取得および監視の設定

ログの取得、および監視の設定について説明します。

3.11.1　ログおよびトラブルシュート情報の取得の設定

連携製品のトラブルシュート情報を取得するため、HMP-PCTOの構築時に次の設定をします。

(1)　Tomcatのアクセスログの取得方法

ログ取得を有効にする方法

各KubernetesアプリケーションのSpring Bootのコンフィグソースにserver.tomcat.accesslog.enable=trueを設定するように定義してください。なお、TP1-Bridgeでは、ログを取得する設定がされています。

Filebeatサイドカーコンテナの組み込みによるElasticsearchへの格納

Elastic Stackを使用している場合は、各Kubernetesアプリケーションのマニフェストの作成時にFilebeatコンテナのfilebeat.ymlに次を設定してください。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

また、TP1-BridgeはFilebeatサイドカーコンテナを組み込む設定が導入されています。

filebeat.inputs:
- type: filestream
  id: "tomcat"
  paths:
    - '<Tomcatのアクセスログのパス>'

output.logstash:
  hosts: ["logstash.my-namespace.svc.cluster.local:5044"]

注　Microsoft Azure環境、Google Cloud Platform環境またはNew Relicを使用している場合、各コンテナのボリュームに出力される情報について、サイドカーコンテナの組み込みによる情報の収集ができません。そのため、uCosminexus Application Runtime for Spring Bootのスナップショットログ機能を使用して、HMP-PCTOコンテナのボリュームに出力される情報を収集してください。

ヘッダ情報を取得する方法

server.tomcat.accesslog.enabled=trueを設定したSpring Bootのコンフィグソースに「server.tomcat.accesslog.pattern」の指定値として、「"%{X-transparent}i"」を含めるように定義してください。設定例は次のとおりです。

server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %{X-Forwarded-For}i %u %{dd/MMM/yyyy:HH:mm:ss.SSS Z}t "%r" %s %b %D %{ucar.rootap}r "%{Referer}i" "%{User-Agent}i" "%{X-transparent}i"

(2)　PostgreSQLのトラブルシュート情報の取得方法（SQL-Participantを使用する場合）

トラブルシュートを実施するため、ログ情報が必要です。ログ情報の出力方法、取得方法については、PostgreSQLのドキュメントを参照してください。

(3)　HiRDBのトラブルシュート情報の取得方法

トラブルシュートをするためには、次の情報が必要です。

ログ情報

メッセージログファイル、システムログファイルを取得してください。

HiRDBサーバのトランザクションの状態表示の結果

障害発生時などの場合に、トランザクションの状態表示の結果を取得してください。

SQLトレース

SQLトレースの出力は性能に影響があるため、デフォルトでは有効化されていません。SQLトレースの出力を有効化することで、SQLトレースによる詳細な調査ができます。

これらのトラブルシュート情報の取得方法については、マニュアル「HiRDB システム運用ガイド」、マニュアル「HiRDB コマンドリファレンス」、およびマニュアル「HiRDB UAP開発ガイド」を参照してください。

(4)　SQL Serverのトラブルシュート情報の取得方法

トラブルシュートをするためには、次の情報が必要です。

クエリトレース

ログ情報

システムログ、およびエラーログを取得してください。

これらのトラブルシュート情報の出力方法および取得情報については、SQL Serverのドキュメントを参照してください。

(5)　Oracle Databaseのトラブルシュート情報の取得方法

トラブルシュートをするためには、次の情報が必要です。

SQLトレース

トレース、およびファイルを取得してください。

ログ情報

アラート、およびログを取得してください。

これらのトラブルシュート情報の出力方法および取得情報については、Oracle Databaseのマニュアルを参照してください。

(6)　EADSのトラブルシュート情報の取得方法

EADSのトラブルシュート情報を取得するための設定、および取得方法については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照してください。

なお、トライアル版では取得できません。

(7)　uCosminexus Service Platformのトレース・ログ情報の取得方法

トラブルシュートをするためには、次の情報が必要です。

J2EEアプリケーションのユーザログ

NIO HTTPサーバのアクセスログ

Webサーブレットログ

JavaVMスタックトレース情報

JavaVMのGCログ

JavaVMログ（JavaVMログファイル）

これらのトレース・ログ情報を取得するための設定、および取得方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」を参照してください。

(8)　OpenTP1のトレース・ログ情報の取得方法

トラブルシュートをするためには、次の情報が必要です。

リアルタイム出力機能

このトレース・ログ情報を取得するための設定、および取得方法については、マニュアル「OpenTP1 運用と操作」を参照してください。

(9)　TP1/Client/Jのトラブルシュート情報の取得方法

TP1-Bridgeのトラブルシュート情報は、情報ごとに出力方法が異なります。情報ごとの取得方法を次の表に示します。

表3‒26　TP1/Client/Jのトラブルシュート情報の取得方法

項番

トラブルシュート情報

取得方法

1

デバッグトレース

TP1-Bridgeの標準出力として出力されるため、ログ収集アプリケーションまたはサービスによって収集します。

Elastic Stackを使用している場合、Filebeatサイドカーコンテナで収集します。

収集されたデータはElasticsearchに送信されるため、Elasticsearchのスナップショット機能で取得します。

Microsoft Azure環境の場合、Azure Monitor Log Analyticsで収集します。Azure Monitor Log Analyticsからエクスポートすることで取得します。

Google Cloud Platform環境の場合、Cloud Loggingのログエクスプローラで収集します。ログエクスプローラを開き、「操作」メニューをクリックしたあと、「ダウンロード」をクリックしてください。

New Relicを使用している場合、New RelicのLogs UIまたはNRQLで収集します。New Relicの Logs UIを使用して、New Relicで一度に出力できる最大行数までを取得できます。詳細については、New Relicの公式ドキュメントを参照してください。

2

エラートレース

TP1-BridgeのHelmチャートのvalues.yamlで、トラブルシュート情報の出力を有効化できます。出力を有効化するパラメタについては、「(1)　Helmチャートのパラメタ」を参照してください。

出力を有効化したトラブルシュート情報は、uCosminexus Application Runtime for Spring Bootのスナップショットログ機能で取得します。

3

メソッドトレース

4

UAPトレース

5

データトレース

3.11.2　監視の設定

EADSサーバのログ監視、Elasticsearchに格納された標準出力の監視、およびメトリクスの監視の設定について説明します。

(1)　EADSサーバのログ監視のための設定

EADSサーバのログ監視を行う場合、そのログをログ収集アプリケーションまたはサービスで収集するためにEADSサーバのログを標準出力に出力するよう設定する必要があります。そのためEADSのセットアップ時に使用するHelmチャートのvalues.yamlのproperties.serverにeads.logger.message.console.enable=trueを追加してください。

properties:
  server:
  - eads.logger.message.console.enable=true

この手順でログ収集アプリケーションまたはサービスで収集されるEADSサーバのログは監視目的のために使用します。そのため、サポート部署に調査を依頼する際にはEADSサーバのログファイルを収集して送付してください。

(2)　Elasticsearchに格納された標準出力を監視するための設定

Elasticsearchに格納された標準出力の情報を監視する場合、次の方法があります。

KibanaのAlert機能を使用する

Elastic StackのKibanaにあるAlert機能で、標準出力の監視を行います。

Watcherを使用する

Elastic Stackの有償の監視機能であるWatcherで、標準出力の監視を行います。

ElastAlert（またはElastAlert2）を使用する

OSSのElastAlertで、標準出力の監視を行います。

例として、KibanaのAlert機能の設定方法を示します。

【Alert機能の前提条件】

KibanaとElasticsearchで通信が暗号化されていること

Kibanaの設定でxpack.encryptedSavedObjects.encryptionKeyが設定されていること

【Alert機能の設定方法】

Kibana画面の左上のハンバーガーボタン（三本線）を押し、メニューからObservabilityを選択する

画面の左カラム内のLogs内のStreamを選択する

画面の右上のSettingsを選択する

Log sources欄内のLog indicesに、index名として「logstash*」をコンマ区切りで追加する

Applyを押す

画面の左カラム内のAlertsを選択する

画面の右上のManage Rulesを選択する

画面の右上のCreate Alert を選択する

【注意】Elasticsearchとの通信が暗号化されていない場合、画面に「Additional setup required」と出力され、これ以降の設定ができません。

ルール設定画面でルールの条件を設定する

例として、KFSGの-Eメッセージが1つ以上出力された場合に、アラートを上げる場合の設定内容を次の図に示します。

ActionのSelect a connector typeで通知先への通知の定義を行う

例としてIndexを選択した場合、Run whenに「Fired」を、Index connectorではconnector（通知先）を指定します。Connectorの定義ではWrite to indexに通知先のindex名を指定します。Document to indexに、通知したい内容をJSON形式で記載します。

最後にSaveを押して保存します。

(3)　メトリクスの監視方法

PrometheusまたはElasticsearch上で収集したメトリクス情報を使用してメトリクスを監視できます。メトリクスの監視方法には、AlertmanagerやKibanaなどの外部コンポーネントと組み合わせる方法があります。

Alertmanager

Prometheus側で設定したルールに従って、ルールに抵触するメトリクスが発生した場合に、Alertmanagerで指定した宛先に対してアラートを送信できます。

Kibana

Elasticsearchに収集されたメトリクスに対して、Kibana上で監視ルールを設定します。ルールに抵触するメトリクスが発生した場合に、指定した宛先に対してアラートを送信できます。

メトリクスの監視についての詳細は、各OSSのドキュメントを参照してください。

3.12　パラメタの設計とチューニング

HMP-PCTOのパラメタの設計指針とチューニング方法について説明します。オートスケール機能を使用する場合は、「4.4　オートスケールのパラメタの設計とチューニング」を参照してください。

ヒント

「label_app_kubernetes_io_name」ラベル

説明中のPrometheusのクエリで使用する「label_app_kubernetes_io_name」ラベルは、Kubernetesマニフェストの.spec.template.metadata.labelsに「app.kubernetes.io/name」として設定された値です。label_app_kubernetes_io_nameラベルを表示するための設定方法については、「3.8　Helmチャートのカスタマイズ」に記載しているPrometheusのHelmチャートのカスタマイズ例を参照してください。

3.12.1　スレッドプール

(1)　Orchestrator

Mediatorへの送信時（トランザクション決着要求・仕掛中トランザクションのキャンセル要求）の同時実行スレッド数を制御します。同時実行スレッド数はOrchestratorのパラメタ「mediator.termination-thread-pool-size」で指定します。同時実行スレッド数を超えた要求がある場合は、キューに保持します。

図3‒1　同時実行スレッド数制御

1トランザクションが終了した際に、トランザクションに参加したMediatorの数だけスレッドを使用します。また、スレッドはMediatorへ送信してから応答を受信するまで占有します。

図3‒2　スレッド占有期間

(a)　設計指針

複数のトランザクションを同時に実行する際、極力スレッドの空き待ちが発生しないようにするためにはトランザクションの同時実行数×トランザクションに参加するMediatorの台数分スレッドが必要です。

ただし、トランザクションの終了が重ならないかぎりは、トランザクションの同時実行数×トランザクションに参加するMediatorの台数分のスレッドは必要ありません。

スレッドの占有期間に相当するMediatorからの応答時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるために安全率を掛けることを推奨します。

算出したスレッド数がトランザクションに参加するMediatorの台数の2倍未満になった場合は、トランザクションに参加するMediatorの台数を2倍したスレッド数としてください。

Orchestrator1台当たりの目標TPSを基準にした算出方法を次に示します。

X = A × B × C

X:スレッド数

A:目標TPS

B:トランザクションに参加するMediator台数

C:Mediatorからの応答時間（秒）

例）

目標40TPS、トランザクションに参加するMediator5台、Mediatorからの応答時間0.1秒とした場合、必要なスレッド数は20となります。

X = 40 × 5 × 0.1

X = 20

安全率を1.5とした場合、必要なスレッド数は30となります。

X = 20 × 1.5

X = 30

(b)　チューニング対象のパラメタ一覧

Orchestratorのチューニング対象のパラメタ一覧を次に示します。

表3‒27　Orchestratorのチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

mediator.termination-thread-pool-size

OrchestratorからMediatorへの送信に使用するスレッド数を指定します。

パラメタの詳細については、「9.2.3　Orchestrator」を参照してください。

(c)　チューニング方法

mediator.termination-thread-pool-size

このパラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「11.5.3　メトリクス」を参照してください。

Kubernetesマニフェストの.spec.template.metadata.labelsのapp.kubernetes.io/nameに「orchestrator」が設定されているOrchestratorの機能を使用するKubernetesアプリケーションの場合、PrometheusのWeb UIで「hmppcto_executor_active_threads{label_app_kubernetes_io_name="orchestrator"}」のクエリを入力し、Executeボタンを押すことでGraphタブに下図のような状態で表示されます。

図3‒3　PrometheusのWeb UI

なお、1つのPrometheusで複数のOrchestratorのメトリクスを収集している場合は、クエリに「instance="OrchestratorのIPアドレス:Orchestratorのhttpポート番号"」を追加してください。

入力例：

hmppcto_executor_active_threads{label_app_kubernetes_io_name="orchestrator", instance="192.168.125.166:20554"}

メトリクス名は、クエリを実行した結果によって「name="メトリクス名"」と表示されるため、該当する表示個所からメトリクス名を確認してください。

表3‒28　対象パラメタとメトリクス名の関連づけ

項番

チューニング対象のパラメタ

メトリクス名

1

mediator.termination-thread-pool-size

mediator.termination-thread

長い期間このパラメタで指定した値で推移している場合、スレッド不足によってMediatorへの送信待ちが発生しているおそれがあります。このパラメタの値を増やすことで、次の図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒4　PrometheusのWeb UI

また、分散トレースデータでもスレッドの空き待ち状態になっているかどうか確認できます。JaegerのWeb UIで確認したいトレース情報のTrace Pageを表示し、次のオペレーション名のspanを表示します。

「hmppcto.mediator.TerminationReceiverService/commit」「hmppcto.mediator.TerminationReceiverService/rollback」

上記spanのStart Timeが次のspanのLogs「end AP」と差が大きい場合、このパラメタで指定するスレッドが不足してスレッドの空き待ち状態になっているおそれがあります。

オペレーション名「Recv:j.c.H.s.h.i.TxInterceptor:innerIntercept」

分散トレースの確認方法の詳細については、「11.5.2　分散トレース」を参照してください。

スレッドが空き待ちになっている状態の参考データを下図に示します。

図3‒5　スレッドが空き待ち状態

(2)　Entity-Module

HMP-PCTOが制御するスレッドは存在しないため、HMP-PCTOのスレッドに関するパラメタのチューニングは必要ありません。

(3)　SQL-Participant

SQL-Participantでは次に示す3つのスレッドプールがあります。

SQL-Participantのトランザクション処理に使用するスレッドプール

Mediatorへ送信を行うスレッドの管理に使用するスレッドプール

gRPC通信制御に使用するスレッドプール

図3‒6　SQL-Participantの同時実行スレッド数制御

それぞれのスレッドプールについて以降に説明します。

SQL-Participantのトランザクション処理に使用するスレッドプールでは、Entity-ModuleからのPrepare指示／トランザクションのキャンセル指示・投票処理・分散合意処理・トランザクション完了通知処理の同時実行スレッド数を制御します。同時実行スレッド数はSQL-Participantのパラメタ「sql.participant-processing.thread-pool-size」で指定します。キュー数はSQL-Participantのパラメタ「sql.participant-processing.queue-size」で指定します。

このスレッドプールで使用するスレッドとその占有期間は次のとおりです。

Prepare指示／トランザクションのキャンセル指示を受けた数分スレッドを使用します。SQL実行の場合のスレッドはSQL実行を開始してから終了するまで占有します。Prepare指示／トランザクションのキャンセル指示の場合のスレッドは投票処理の開始まで占有します。…1

1トランザクション内で、投票処理の際に、1スレッドを使用します。スレッドは投票処理を開始してから終了するまで占有します。…2

8でスレッドを生成した際に、トランザクション処理または分散合意処理で1スレッドを使用します。スレッドはトランザクション処理または分散合意処理が開始してから終了するまで占有します。…3

1つの分散合意処理のスレッドで、分散合意結果通知で1スレッドを使用します。スレッドは分散合意結果通知を開始してから終了するまで占有します。…4

1トランザクション内で、トランザクション完了通知の際に、1スレッドを使用します。スレッドはトランザクション完了通知を開始してから終了するまで占有します。なお、前述の分散合意結果通知で使用するスレッドの占有期間と、トランザクション完了通知で使用するスレッドの占有期間は、期間が重複することがあります。…5

Mediatorへ送信を行うスレッドの管理に使用するスレッドプールでは、gRPC通信制御に使用するスレッドを生成する処理の同時実行スレッド数を制御します。同時実行スレッド数はSQL-Participantのパラメタ「mediator-process-management.thread-pool-size」で指定します。

このスレッドプールで使用するスレッドとその占有期間は次のとおりです。

Mediatorとの通信処理（投票処理、トランザクション完了通知、分散合意結果通知）が発生した際、トランザクションに参加したMediator数分スレッドを使用します。6のスレッドの生成を開始してから終了するまで占有します。…6

gRPC通信制御に使用するスレッドプールでは、ParticipantがMediatorと送受信を行う処理の同時実行スレッド数を制御します。同時実行スレッド数はSQL-Participantのパラメタ「mediator-communication.thread-pool-size」で指定します。キュー数はSQL-Participantのパラメタ「mediator-communication.queue-size」で指定します。

このスレッドプールで使用するスレッドとその占有期間は次のとおりです。

Mediatorと通信を行う際、トランザクションに参加したMediator数分スレッドを使用します。Mediatorへの通信の送信処理が完了するまで占有します。…7

MediatorからのgRPC通信を受信した際、1スレッド使用します。3のスレッドの生成を開始してから終了するまで占有します。…8

図3‒7　SQL-Participantのスレッド占有期間

(a)　設計指針

■SQL-Participantのトランザクション処理に使用するスレッドプール

複数のトランザクションを同時に実行する際、極力スレッドの空き待ちが発生しないようにするためにはトランザクションの同時実行数分スレッドが必要です。

ただし、トランザクションの実行が重ならないかぎりは、トランザクションの同時実行数分のスレッドは必要ありません。

スレッドの占有期間に相当する処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるために安全率を掛けることを推奨します。

SQL-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

X = A × B

X:スレッド数

A:目標TPS

B:処理時間（秒）

例）

目標40TPS、処理時間を0.1秒とした場合、必要なスレッド数は4となります。

X = 40 × 0.1

X = 4

安全率を1.5とした場合、必要なスレッド数は6となります。

X = 4 × 1.5

X = 6

■SQL-Participantのトランザクション処理に使用するキュー

複数のトランザクションを同時に実行する際、極力スレッドプールのキューの枯渇が発生しないようにするためには十分なキューサイズが必要です。

目標TPSに応じて、キューサイズを算出します。

SQL-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

Bの係数には実稼働を通して環境に合わせた数値を設定してください。

Y = A × B

Y:キュー数

A:目標TPS

B:係数

例）

目標40TPS、係数を0.25とした場合、必要なキューサイズは10となります。

Y = 40 × 0.25

Y = 10

■Mediatorへ送信を行うスレッドの管理に使用するスレッドプール

複数のトランザクションを同時に実行する際、極力スレッドの空き待ちが発生しないようにするためにはトランザクションの同時実行数×トランザクションに参加するMediatorの台数分スレッドが必要です。

ただし、トランザクションの実行が重ならないかぎりは、トランザクションの同時実行数×トランザクションに参加するMediatorの台数分のスレッドは必要ありません。

スレッドの占有期間に相当する処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるために安全率を掛けることを推奨します。

算出したスレッド数がトランザクションに参加するMediatorの台数の2倍未満になった場合は、トランザクションに参加するMediatorの台数を2倍したスレッド数としてください。

SQL-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

X = A × B × C × 2※

X:スレッド数

A:目標TPS

B:トランザクションに参加するMediator台数

C:処理時間（秒）

注※

分散合意結果通知とトランザクション完了通知は同時に実行される可能性があるため、2倍します。

例）

目標40TPS、トランザクションに参加するMediator5台、処理時間0.1秒とした場合、必要なスレッド数は40となります。

X = 40 × 5 × 0.1 × 2

X = 40

安全率を1.5とした場合、必要なスレッド数は60となります。

X = 40 × 1.5

X = 60

■gRPC通信制御に使用するスレッドプール

複数のトランザクションを同時に実行する際、極力スレッドの空き待ちが発生しないようにするためにはトランザクションの同時実行数×トランザクションに参加するMediatorの台数分スレッドが必要です。

ただし、トランザクションの実行が重ならないかぎりは、トランザクションの同時実行数×トランザクションに参加するMediatorの台数分のスレッドは必要ありません。

スレッドの占有期間に相当する処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるために安全率を掛けることを推奨します。

算出したスレッド数がトランザクションに参加するMediatorの台数の2倍未満になった場合は、トランザクションに参加するMediatorの台数を2倍したスレッド数としてください。

SQL-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

X = A × B × C × 2※

X:スレッド数

A:目標TPS

B:トランザクションに参加するMediator台数

C: 処理時間（秒）

注※

分散合意結果通知とトランザクション完了通知は同時に実行される可能性があるため、2倍します。

例）

目標40TPS、トランザクションに参加するMediator5台、処理時間0.1秒とした場合、必要なスレッド数は40となります。

X = 40 × 5 × 0.1 × 2

X = 40

安全率を1.5とした場合、必要なスレッド数は60となります。

X = 40 × 1.5

X = 60

■gRPC通信制御に使用するキュー

複数のトランザクションを同時に実行する際、極力スレッドプールのキューの枯渇が発生しないようにするためには十分なキューサイズが必要です。

目標TPSに応じて、キューサイズを算出します。

SQL-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

Bの係数には実稼働を通して環境に合わせた数値を設定してください。

Y = A × B × 2※

Y:キュー数

A:目標TPS

B:係数

注※

分散合意結果通知とトランザクション完了通知は同時に実行される可能性があるため、2倍します。

例）

目標40TPS、係数を0.25とした場合、必要なキューサイズは20となります。

Y = 40 × 0.25 × 2

Y = 20

(b)　チューニング対象のパラメタ一覧

SQL-Participantのチューニング対象のパラメタ一覧を次に示します。

表3‒29　SQL-Participantのチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

sql.participant-processing.thread-pool-size

SQL-Participantがトランザクション処理で実行するスレッド数を指定します。

2

sql.participant-processing.queue-size

SQL-Participantがトランザクション処理に使用するスレッドの割り当て待ちをするキューのサイズを指定します。

3

mediator-process-management.thread-pool-size

Mediatorへ送信を行うスレッドを管理するスレッド数を指定します。

4

mediator-communication.thread-pool-size

ParticipantがMediatorと送受信を行うスレッド数を指定します。

5

mediator-communication.queue-size

ParticipantがMediatorとの送受信に使用するスレッドの割り当て待ちをするキューのサイズを指定します。

各パラメタの詳細については、「9.2.5　SQL-Participant」を参照してください。

(c)　チューニング方法

各パラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「11.5.3　メトリクス」を参照してください。

Kubernetesマニフェストの.spec.template.metadata.labelsのapp.kubernetes.io/nameに「sql-participant」が設定されているSQL-Participantの機能を使用するKubernetesアプリケーションの場合、PrometheusのWeb UIで次に示す表のクエリを入力し、Executeボタンを押すことでGraphタブに下図のような状態で表示されます。

チューニング対象のパラメタと、下図に表示されたメトリクス名の関連づけは、「表3‒31　チューニング対象のパラメタとメトリクス名の関連づけ」を参照してください。メトリクス名は、クエリを実行した結果によって「name="メトリクス名"」と表示されるため、該当する表示個所からメトリクス名を確認してください。

表3‒30　Prometheusで利用するクエリ

項番

チューニング対象のパラメタ

クエリ

1

sql.participant-processing.thread-pool-size

hmppcto_executor_active_threads{label_app_kubernetes_io_name=" sql-participant"}

2

mediator-communication.thread-pool-size

3

mediator-process-management.thread-pool-size

hmppcto_executor_active{label_app_kubernetes_io_name="sql-participant"}

4

sql.participant-processing.queue-size

hmppcto_executor_queued_tasks{label_app_kubernetes_io_name=" sql-participant"}

5

mediator-communication.queue-size

表3‒31　チューニング対象のパラメタとメトリクス名の関連づけ

項番

チューニング対象のパラメタ

メトリクス名

1

sql.participant-processing.thread-pool-size

participant-processing.thread

2

sql.participant-processing.queue-size

3

mediator-process-management.thread-pool-size

mediator-process-management.thread

4

mediator-communication.thread-pool-size

mediator-communication.thread

5

mediator-communication.queue-size

図3‒8　PrometheusのWeb UI

hmppcto_executor_active_threads{label_app_kubernetes_io_name="sql-participant"}の結果が、長い期間sql.participant-processing.thread-pool-size、またはmediator-communication.thread-pool-sizeで指定した値で推移している場合、スレッド不足によって、処理の遅延が発生しているおそれがあります。これらのパラメタの値を増やすことで、次の図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒9　PrometheusのWeb UI

また、hmppcto_executor_queued_tasks{label_app_kubernetes_io_name="sql-participant"}の結果が、sql.participant-processing.queue-size やmediator-communication.queue-sizeで指定した値で推移している場合、キューサイズ不足が発生しているおそれがあります。これらのパラメタの値を増やすことでキューサイズ不足を防ぐことができます。

(4)　TCC-Participant

TCC-Participantでは次に示す3つのスレッドプールがあります。

TCC-Participantのトランザクション処理に使用するスレッドプール

Mediatorへ送信を行うスレッドの管理に使用するスレッドプール

gRPC通信制御に使用するスレッドプール

図3‒10　TCC-Participantの同時実行スレッド数制御

それぞれのスレッドプールについて以降に説明します。

TCC-Participantのトランザクション処理に使用するスレッドプールでは、投票処理・分散合意処理・トランザクション完了通知処理の同時実行スレッド数を制御します。同時実行スレッド数はTCC-Participantのパラメタ「tcc.participant-processing.thread-pool-size」で指定します。キュー数はTCC-Participantのパラメタ「tcc.participant-processing.queue-size」で指定します。

このスレッドプールで使用するスレッドとその占有期間は次のとおりです。

1トランザクション内で、投票処理の際に、1スレッドを使用します。スレッドは投票処理を開始してから終了するまで占有します。…1

7でスレッドを生成した際に、トランザクション処理または分散合意処理で1スレッドを使用します。スレッドはトランザクション処理または分散合意処理が開始してから終了するまで占有します。…2

1つの分散合意処理のスレッドで、分散合意結果通知で1スレッドを使用します。スレッドは分散合意結果通知を開始してから終了するまで占有します。…3

1トランザクション内で、トランザクション完了通知の際に、1スレッドを使用します。スレッドはトランザクション完了通知を開始してから終了するまで占有します。なお、前述の分散合意結果通知で使用するスレッドの占有期間と、トランザクション完了通知で使用するスレッドの占有期間は、期間が重複することがあります。…4

Mediatorへ送信を行うスレッドの管理に使用するスレッドプールでは、gRPC通信制御に使用するスレッドを生成する処理の同時実行スレッド数を制御します。同時実行スレッド数はTCC-Participantのパラメタ「mediator-process-management.thread-pool-size」で指定します。

このスレッドプールで使用するスレッドとその占有期間は次のとおりです。

Mediatorとの通信処理（投票処理、トランザクション完了通知、分散合意結果通知）が発生した際、トランザクションに参加したMediator数分スレッドを使用します。6のスレッドの生成を開始してから終了するまで占有します。…5

gRPC通信制御に使用するスレッドプールでは、ParticipantがMediatorと送受信を行う処理の同時実行スレッド数を制御します。同時実行スレッド数はTCC-Participantのパラメタ「mediator-communication.thread-pool-size」で指定します。キュー数はTCC-Participantのパラメタ「mediator-communication.queue-size」で指定します。

このスレッドプールで使用するスレッドとその占有期間は次のとおりです。

Mediatorと通信を行う際、トランザクションに参加したMediator数分スレッドを使用します。Mediatorへの通信の送信処理が完了するまで占有します。…6

MediatorからのgRPC通信を受信した際、1スレッド使用します。2のスレッドの生成を開始してから終了するまで占有します。…7

図3‒11　TCC-Participantのスレッド占有期間

(a)　設計指針

■TCC-Participantのトランザクション処理に使用するスレッドプール

複数のトランザクションを同時に実行する際、極力スレッドの空き待ちが発生しないようにするためにはトランザクションの同時実行数分スレッドが必要です。

ただし、トランザクションの実行が重ならないかぎりは、トランザクションの同時実行数分のスレッドは必要ありません。

スレッドの占有期間に相当する処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるために安全率を掛けることを推奨します。

TCC-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

X = A × B

X:スレッド数

A:目標TPS

B:処理時間（秒）

例）

目標40TPS、処理時間を0.1秒とした場合、必要なスレッド数は4となります。

X = 40 × 0.1

X = 4

安全率を1.5とした場合、必要なスレッド数は6となります。

X = 4 × 1.5

X = 6

■TCC-Participantのトランザクション処理に使用するキュー

複数のトランザクションを同時に実行する際、極力スレッドプールのキューの枯渇が発生しないようにするためには十分なキューサイズが必要です。

目標TPSに応じて、キューサイズを算出します。

TCC-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

Bの係数には実稼働を通して環境に合わせた数値を設定してください。

Y = A × B

Y:キュー数

A:目標TPS

B:係数

例）

目標40TPS、係数を0.25とした場合、必要なキューサイズは10となります。

Y = 40 × 0.25

Y = 10

■Mediatorへ送信を行うスレッドの管理に使用するスレッドプール

複数のトランザクションを同時に実行する際、極力スレッドの空き待ちが発生しないようにするためにはトランザクションの同時実行数×トランザクションに参加するMediatorの台数分スレッドが必要です。

ただし、トランザクションの実行が重ならないかぎりは、トランザクションの同時実行数×トランザクションに参加するMediatorの台数分のスレッドは必要ありません。

スレッドの占有期間に相当する処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるために安全率を掛けることを推奨します。

算出したスレッド数がトランザクションに参加するMediatorの台数の2倍未満になった場合は、トランザクションに参加するMediatorの台数を2倍したスレッド数としてください。

TCC-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

X = A × B × C × 2※

X:スレッド数

A:目標TPS

B:トランザクションに参加するMediator台数

C:処理時間（秒）

注※

分散合意結果通知とトランザクション完了通知は同時に実行される可能性があるため、2倍します。

例）

目標40TPS、トランザクションに参加するMediator5台、処理時間0.1秒とした場合、必要なスレッド数は40となります。

X = 40 × 5 × 0.1 × 2

X = 40

安全率を1.5とした場合、必要なスレッド数は60となります。

X = 40 × 1.5

X = 60

■gRPC通信制御に使用するスレッドプール

複数のトランザクションを同時に実行する際、極力スレッドの空き待ちが発生しないようにするためにはトランザクションの同時実行数×トランザクションに参加するMediatorの台数分スレッドが必要です。

ただし、トランザクションの実行が重ならないかぎりは、トランザクションの同時実行数×トランザクションに参加するMediatorの台数分のスレッドは必要ありません。

スレッドの占有期間に相当する処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるために安全率を掛けることを推奨します。

算出したスレッド数がトランザクションに参加するMediatorの台数の2倍未満になった場合は、トランザクションに参加するMediatorの台数を2倍したスレッド数としてください。

TCC-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

X = A × B × C × 2※

X:スレッド数

A:目標TPS

B:トランザクションに参加するMediator台数

C: 処理時間（秒）

注※

分散合意結果通知とトランザクション完了通知は同時に実行される可能性があるため、2倍します。

例）

目標40TPS、トランザクションに参加するMediator5台、処理時間0.1秒とした場合、必要なスレッド数は40となります。

X = 40 × 5 × 0.1 × 2

X = 40

安全率を1.5とした場合、必要なスレッド数は60となります。

X = 40 × 1.5

X = 60

■gRPC通信制御に使用するキュー

複数のトランザクションを同時に実行する際、極力スレッドプールのキューの枯渇が発生しないようにするためには十分なキューサイズが必要です。

目標TPSに応じて、キューサイズを算出します。

TCC-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

Bの係数には実稼働を通して環境に合わせた数値を設定してください。

Y = A × B × 2※

Y:キュー数

A:目標TPS

B:係数

注※

分散合意結果通知とトランザクション完了通知は同時に実行される可能性があるため、2倍します。

例）

目標40TPS、係数を0.25とした場合、必要なキューサイズは20となります。

Y = 40 × 0.25 × 2

Y = 20

(b)　チューニング対象のパラメタ一覧

TCC-Participantのチューニング対象のパラメタ一覧を次に示します。

表3‒32　TCC-Participantのチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

tcc.participant-processing.thread-pool-size

TCC-Participantがトランザクション処理で実行するスレッド数を指定します。

2

tcc.participant-processing.queue-size

TCC-Participantがトランザクション処理に使用するスレッドの割り当てを待つキューのサイズを指定します。

3

mediator-process-management.thread-pool-size

Mediatorへ送信を行うスレッドを管理するスレッド数を指定します。

4

mediator-communication.thread-pool-size

ParticipantがMediatorと送受信を行うスレッド数を指定します。

5

mediator-communication.queue-size

ParticipantがMediatorとの送受信に使用するスレッドの割り当てを待つキューのサイズを指定します。

各パラメタの詳細については、「9.2.6　TCC-Participant」を参照してください。

(c)　チューニング方法

各パラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「11.5.3　メトリクス」を参照してください。

Kubernetesマニフェストの.spec.template.metadata.labelsのapp.kubernetes.io/nameに「tcc-participant」が設定されているTCC-Participantの機能を使用するKubernetesアプリケーションの場合、PrometheusのWeb UIで次に示す表のクエリを入力し、Executeボタンを押すことでGraphタブに下図のような状態で表示されます。

チューニング対象のパラメタと、下図に表示されたメトリクス名の関連づけは、「表3‒34　チューニング対象のパラメタとメトリクス名の関連づけ」を参照してください。メトリクス名は、クエリを実行した結果によって「name="メトリクス名"」と表示されるため、該当する表示個所からメトリクス名を確認してください。

表3‒33　Prometheusで利用するクエリ

項番

チューニング対象のパラメタ

クエリ

1

tcc.participant-processing.thread-pool-size

hmppcto_executor_active_threads{label_app_kubernetes_io_name=" tcc-participant"}

2

mediator-communication.thread-pool-size

3

mediator-process-management.thread-pool-size

hmppcto_executor_active{label_app_kubernetes_io_name="tcc-participant"}

4

tcc.participant-processing.queue-size

hmppcto_executor_queued_tasks{label_app_kubernetes_io_name=" tcc-participant"}

5

mediator-communication.queue-size

表3‒34　チューニング対象のパラメタとメトリクス名の関連づけ

項番

チューニング対象のパラメタ

メトリクス名

1

tcc.participant-processing.thread-pool-size

participant-processing.thread

2

tcc.participant-processing.queue-size

3

mediator-process-management.thread-pool-size

mediator-process-management.thread

4

mediator-communication.thread-pool-size

mediator-communication.thread

5

mediator-communication.queue-size

図3‒12　PrometheusのWeb UI

hmppcto_executor_active_threads{label_app_kubernetes_io_name=" tcc-participant"}の結果が、長い期間tcc.participant-processing.thread-pool-size、またはmediator-communication.thread-pool-sizeで指定した値で推移している場合、スレッド不足によって、処理の遅延が発生しているおそれがあります。これらのパラメタの値を増やすことで、次の図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒13　PrometheusのWeb UI

また、hmppcto_executor_queued_tasks{label_app_kubernetes_io_name=" tcc-participant"}の結果が、tcc.participant-processing.queue-size やmediator-communication.queue-sizeで指定した値で推移している場合、キューサイズ不足が発生しているおそれがあります。これらのパラメタの値を増やすことでキューサイズ不足を防ぐことができます。

(5)　Mediator

Mediatorでは次に示す4つのスレッドプールがあります。

表3‒35　Mediatorのスレッドプール

項番

Mediatorのスレッド

説明

1

Mediatorの受信に使用するスレッド

MediatorがParticipant、Orchestratorから受信する際の同時実行スレッド数を制御します。

同時実行スレッド数はMediatorのパラメタ「grpc.server.threadPoolSize」で指定します。キュー数はMediatorのパラメタ「grpc.server.queueSize」で指定します。

同時実行スレッド数を超えた要求がある場合は、キューに保持します。

トランザクションに参加したParticipantの数＋1だけスレッドを使用します。また、スレッドはParticipant、Orchestratorからの受信完了まで占有します。

2

分散合意処理に使用するスレッド

分散合意処理の同時実行スレッド数を制御します。

同時実行スレッド数はMediatorのパラメタ「mediator.judge.threadPoolSize」で指定します。キュー数はMediatorのパラメタ「mediator.judge.queueSize」で指定します。

同時実行スレッド数を超えた要求がある場合は、キューに保持します。

トランザクションに参加したParticipantの数だけスレッドを使用します。また、スレッドは分散合意処理を行い合意結果をConsensusLogファイルへの書き込みが完了するまで占有します。

3

ConsensusLogファイルへの書き込みに使用するスレッド

ConsensusLogファイルへの書き込みの同時実行スレッド数を制御します。

同時実行スレッド数はMediatorのパラメタ「consensusLog.io.threadPoolSize」で指定します。キュー数はMediatorのパラメタ「consensusLog.io.queueSize」で指定します。

同時実行スレッド数を超えた要求がある場合は、キューに保持します。

トランザクション数だけスレッドを使用します。

スレッドは合意結果をConsensusLogファイルへ書き込みが完了するまで占有します。

4

Mediatorの送信に使用するスレッド

Participantへの送信の同時実行スレッド数を制御します。

同時実行スレッド数はMediatorのパラメタ「participant.sender.threadPoolSize」で指定します。キュー数はMediatorのパラメタ「participant.sender.queueSize」で指定します。

同時実行スレッド数を超えた要求がある場合は、キューに保持します。

トランザクションに参加したParticipantの数だけスレッドを使用します。また、スレッドはParticipantへの送信完了まで占有します。

図3‒14　同時実行スレッド数制御

(a)　設計指針

■Mediatorの受信処理に使用するスレッドプール

複数のトランザクションを同時に実行する場合、極力スレッドの空き待ちを発生しないようにするためにはトランザクションの同時実行数×（トランザクションに参加するParticipantの台数＋1）分スレッドが必要です。

ただし、トランザクションの受信が重ならないかぎりは、理論上の必要なスレッド数は必要ありません。

スレッドの占有期間に相当する受信処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるため安全係数を掛けることを推奨します。

算出したスレッド数がトランザクションに参加するParticipantの台数＋1の2倍未満になった場合は、トランザクションに参加するParticipantの台数＋1を2倍したスレッド数としてください。

X = A × (B＋1) × C

X:スレッド数

A:目標TPS

B:トランザクションに参加するParticipant台数

D:受信処理時間（秒）

例）

目標40TPS、トランザクションに参加するParticipant2台、受信処理時間0.1秒とした場合、必要なスレッド数は12となります。

X = 40 × (2＋1) × 0.1

X = 12

■Mediatorの受信処理に使用するキュー

複数のトランザクションを同時に実行する際、極力スレッドプールのキューの枯渇が発生しないようにするためには十分なキューサイズが必要です。

目標TPSに応じて、キューサイズを算出します。

TCC-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

Bの係数には実稼働を通して環境に合わせた数値を設定してください。

Y = A × B

Y:キュー数

A:目標TPS

B:係数

例）

目標40TPS、係数を0.25とした場合、必要なキューサイズは10となります。

Y = 40 × 0.25

Y = 10

■分散合意処理に使用するスレッドプール

複数のトランザクションを同時に実行する場合、極力スレッドの空き待ちを発生しないようにするためにはトランザクションの同時実行数×トランザクションに参加するParticipantの台数分スレッドが必要です。

ただし、トランザクションの受信が重ならないかぎりは、理論上の必要なスレッド数は必要ありません。

スレッドの占有期間に相当する分散合意処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるため安全係数を掛けることを推奨します。

算出したスレッド数がトランザクションに参加するParticipantの台数の2倍未満になった場合は、トランザクションに参加するParticipantの台数を2倍したスレッド数としてください。

X = A × B × C

X:スレッド数

A:TPS

B: トランザクションに参加するParticipant台数

D: 分散合意処理時間（秒）

例）

目標40TPS、トランザクションに参加するParticipant2台、分散合意処理時間0.1秒とした場合、必要なスレッド数は8となります。

X = 40 × 2 × 0.1

X =8

■分散合意処理に使用するキュー

複数のトランザクションを同時に実行する際、極力スレッドプールのキューの枯渇が発生しないようにするためには十分なキューサイズが必要です。

目標TPSに応じて、キューサイズを算出します。

TCC-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

Bの係数には実稼働を通して環境に合わせた数値を設定してください。

Y = A × B

Y:キュー数

A:目標TPS

B:係数

例）

目標40TPS、係数を0.25とした場合、必要なキューサイズは10となります。

Y = 40 × 0.25

Y = 10

■ConsensusLogファイルへの書き込みに使用するスレッドプール

複数のトランザクションを同時に実行する場合、極力スレッドの空き待ちを発生しないようにするためにはトランザクションの同時実行数分スレッドが必要です。

ただし、ConsensusLogファイルへの書き込みが重ならないかぎりは、理論上の必要なスレッド数は必要ありません。

スレッドの占有期間に相当するConsensusLogファイルへの書き込み処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるため安全係数を掛けることを推奨します。

X = A × C

X:スレッド数

A:TPS

B: ConsensusLogファイルへの書き込み処理時間（秒）

例）

目標40TPS、ConsensusLogファイルへの書き込み処理時間0.05秒とした場合、必要なスレッド数は2となります。

X = 40 × 0.05

X = 2

■ConsensusLogファイルへの書き込みに使用するキュー

複数のトランザクションを同時に実行する際、極力スレッドプールのキューの枯渇が発生しないようにするためには十分なキューサイズが必要です。

目標TPSに応じて、キューサイズを算出します。

TCC-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

Bの係数には実稼働を通して環境に合わせた数値を設定してください。

Y = A × B

Y:キュー数

A:目標TPS

B:係数

例）

目標40TPS、係数を0.25とした場合、必要なキューサイズは10となります。

Y = 40 × 0.25

Y = 10

■Mediatorの送信処理に使用するスレッドプール

複数のトランザクションを同時に実行する場合、極力スレッドの空き待ちを発生しないようにするためにはトランザクションの同時実行数×トランザクションに参加するParticipantの台数分スレッドが必要です。

ただし、トランザクションの送信が重ならないかぎりは、理論上の必要なスレッド数は必要ありません。

スレッドの占有期間に相当する送信処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるため安全係数を掛けることを推奨します。

算出したスレッド数がトランザクションに参加するParticipantの台数の2倍未満になった場合は、トランザクションに参加するParticipantの台数を2倍したスレッド数としてください。

X = A × B × C

X:スレッド数

A:TPS

B: トランザクションに参加するParticipant台数

D:送信処理時間（秒）

例）

目標40TPS、トランザクションに参加するParticipant2台、送信処理時間0.05秒とした場合、必要なスレッド数は4となります。

X = 40 × 2 × 0.05

X =4

■Mediatorの送信処理に使用するキュー

複数のトランザクションを同時に実行する際、極力スレッドプールのキューの枯渇が発生しないようにするためには十分なキューサイズが必要です。

目標TPSに応じて、キューサイズを算出します。

TCC-Participant1台当たりの目標TPSを基準にした算出方法を次に示します。

Bの係数には実稼働を通して環境に合わせた数値を設定してください。

Y = A × B

Y:キュー数

A:目標TPS

B:係数

例）

目標40TPS、係数を0.25とした場合、必要なキューサイズは10となります。

Y = 40 × 0.25

Y = 10

(b)　チューニング対象のパラメタ一覧

Mediatorのチューニング対象のパラメタ一覧を次に示します。

表3‒36　Mediatorのチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

grpc.server.threadPoolSize

Participant、Orchestratorからの受信に使用するスレッド数を指定します。

2

grpc.server.queueSize

Participant、Orchestratorからの受信に使用するスレッドの割り当てを待つキューのサイズを指定します。

3

mediator.judge.threadPoolSize

分散合意処理に使用するスレッド数を指定します。

4

mediator.judge.queueSize

分散合意処理に使用するスレッドの割り当てを待つキューのサイズを指定します。

5

consensusLog.io.threadPoolSize

ConsensusLogファイルへの書き込みに使用するスレッド数を指定します。

6

consensusLog.io.queueSize

ConsensusLogファイルへの書き込みに使用するスレッドの割り当てを待つキューのサイズを指定します。

7

participant.sender.threadPoolSize

Participantへの送信に使用するスレッド数を指定します。

8

participant.sender.queueSize

Participantへの送信に使用するスレッドの割り当てを待つキューのサイズを指定します。

各パラメタの詳細については、「9.3.1　Mediator」を参照してください。

(c)　チューニング方法

各パラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「11.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで「表3‒37　Prometheusで利用するクエリ」のクエリを入力し、Executeボタンを押すことでGraphタブに「図3‒15　PrometheusのWeb UI」のような状態で表示されます。チューニング対象のパラメタと、「図3‒15　PrometheusのWeb UI」に表示されたメトリクス名の関連づけは、「表3‒38　対象パラメタとメトリクス名の関連づけ」を参照してください。

メトリクス名は、クエリを実行した結果から「name="メトリクス名"」と表示されるため、該当の表示個所からメトリクス名を確認してください。

表3‒37　Prometheusで利用するクエリ

項番

チューニング対象のパラメタ

クエリ

1

grpc.server.threadPoolSize

hmppcto_executor_active_threads{label_app_kubernetes_io_name="mediator"}

2

mediator.judge.threadPoolSize

3

consensusLog.io.threadPoolSize

4

participant.sender.threadPoolSize

5

grpc.server.queueSize

hmppcto_executor_queued_tasks{label_app_kubernetes_io_name="mediator"}

6

mediator.judge.queueSize

7

consensusLog.io.queueSize

8

participant.sender.queueSize

表3‒38　対象パラメタとメトリクス名の関連づけ

項番

チューニング対象のパラメタ

メトリクス名

1

grpc.server.threadPoolSize

grpc.server.thread

2

grpc.server.queueSize

3

mediator.judge.threadPoolSize

mediator.judge.thread

4

mediator.judge.queueSize

5

consensusLog.io.threadPoolSize

consensusLog.io.thread

6

consensusLog.io.queueSize

7

participant.sender.threadPoolSize

participant.sender.thread

8

participant.sender.queueSize

図3‒15　PrometheusのWeb UI

hmppcto_executor_active_threads{label_app_kubernetes_io_name="mediator"}の結果が、長い期間grpc.server.threadPoolSize、mediator.judge.threadPoolSize、consensusLog.io.threadPoolSize、またはparticipant.sender.threadPoolSizeで指定した値で推移している場合、スレッド不足によって処理の遅延が発生しているおそれがあります。これらのパラメタの値を増やすことで、下図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒16　PrometheusのWeb UI

また、hmppcto_executor_queued_tasks{label_app_kubernetes_io_name="mediator"}の結果が、grpc.server.queueSize、mediator.judge.queueSize、consensusLog.io.queueSize、またはparticipant.sender.queueSizeで指定した値で推移している場合、キューサイズ不足が発生しているおそれがあります。これらのパラメタの値を増やすことでキューサイズ不足を防げます。

(6)　TP1-Bridge

TP1-Bridgeでチューニングが必要なスレッドは、次に示す2つです。

HMP-PCTOが使用するSpring Bootの組み込みhttpサーバのTomcatが制御するスレッド

HMP-PCTOが制御するスレッド

それぞれの設計指針、およびチューニング方法を説明します。

(a)　Spring Bootの組み込みhttpサーバのTomcatが制御するスレッド

TP1-BridgeがAPから受け付けたリクエストは、Spring Bootの組み込みhttpサーバが制御するワーカースレッドで実行されます。そのため、ワーカースレッドのスレッド数がチューニングの対象となります。TP1-Bridgeがワーカースレッドを占有する期間は、APからのリクエストを受け付けたTP1-Bridgeのサービスが開始してから、APに応答を送信して終了するまでです。これには、TP1-Converterでのデータ変換処理の時間およびOpenTP1のSPPのサービス実行時間が含まれます。

Spring Bootの組み込みhttpサーバのTomcatがワーカースレッドを制御する仕組みについては、Tomcatのドキュメントを参照してください。

■設計指針

複数のトランザクションを同時に実行する際、スレッドの空き待ちによるタスクの実行遅延が極力発生しないようにするためには、トランザクションの同時実行数＋3のスレッドが必要です。トランザクション外で実行するメトリクスの収集処理などが使用するスレッドを考慮して、3を加算しています。

同一のTP1-Bridgeを使用するサービスが複数ある場合は、それぞれのトランザクションの同時実行数の合計数分のスレッドが必要です。

スレッドの占有期間にTP1-Bridgeのサービスの処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるために、安全率を掛けることを推奨します。なお、算出したスレッド数が10未満となる場合は、10以上の値を設定してください。

目標TPSを基準にした算出方法を次に示します。

X = (A × B) ＋3

X：スレッド数

A：目標TPS

B：TP1-Bridgeのサービスの処理時間（秒）（データ変換およびOpenTP1のSPPの処理時間を含みます）

例）

目標40TPS、TP1-Bridgeのサービスの処理時間0.2秒とした場合、必要なスレッド数は11となります。

X = (40 × 0.2) + 3

X = 11

安全率を1.5とした場合、必要なスレッド数は17となります。

X = 11 × 1.5

X ≒ 17

■チューニング対象のパラメタ一覧

チューニング対象のパラメタは、Spring Bootのパラメタです。パラメタの詳細については、Spring Bootのドキュメントを参照してください。

表3‒39　Spring Bootが制御するスレッドのチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

server.tomcat.threads.max

TP1-BridgeがAPから受け付けたリクエストの処理を実行するワーカースレッドの最大数を設定します。

■チューニング方法

server.tomcat.threads.max

このパラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「11.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで「tomcat_threads_current_threads{label_app_kubernetes_io_name="tp1-bridge"}」のクエリを入力し、Executeボタンを押すことでGraphタブに次の図のような状態で表示されます。

図3‒17　PrometheusのWeb UI

なお、1つのPrometheusで複数のTP1-Bridegのメトリクスを収集している場合は、クエリに「instance="TP1-BridgeのIPアドレス:TP1-Bridgeのhttpポート番号"」を追加してください。

入力例：

tomcat_threads_current_threads{label_app_kubernetes_io_name="tp1-bridge", instance="192.168.125.166:20554"}

長い期間このパラメタで指定した値で推移している場合、スレッド不足によってOpenTP1のサービスの呼び出し処理の実行待ちが発生しているおそれがあります。このパラメタの値を増やすことで、次の図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒18　PrometheusのWeb UI

(b)　HMP-PCTOが制御するスレッド

HMP-PCTOが制御するスレッドは、次に示す3つのスレッドプールを使用して制御します。

トランザクション処理に使用するスレッドプール

Mediatorへ送信を行うスレッドの管理に使用するスレッドプール

gRPC通信制御に使用するスレッドプール

それぞれのスレッドプールの役割およびスレッドプールの占有期間は、制御に使用するパラメタ名が異なるだけで、SQL-Participantが制御するスレッドプールと同じです。スレッドプールの役割およびスレッドプールの占有期間の詳細については、「(3)　SQL-Participant」を参照してください。

なお、「(3)　SQL-Participant」で説明しているSQLの実行に相当するTP1-Bridgeでの処理は、OpenTP1に対するRPCの実行です。RPCの実行は、Spring Bootが制御するスレッドプールで行います。そのため、RPCの実行ではトランザクション処理に使用するスレッドプールは使用しません。

■設計指針

SQL-Participantの設計指針と同じです。「(3)　SQL-Participant」を参照してください。

■チューニング対象のパラメタ一覧

TP1-Bridgeのチューニング対象のパラメタ一覧を次に示します。

表3‒40　TP1-Bridgeのチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

tp1.participant-processing.thread-pool-size

TP1-Bridgeがトランザクション処理で実行するスレッド数を指定します。

2

tp1.participant-processing.queue-size

TP1-Bridgeがトランザクション処理に使用するスレッドの割り当て待ちをするキューのサイズを指定します。

3

mediator-process-management.thread-pool-size

TP1-BridgeがMediatorへ送信を行うスレッドを管理するスレッド数を指定します。

4

mediator-communication.thread-pool-size

TP1-BridgeがMediatorと送受信を行うスレッド数を指定します。

5

mediator-communication.queue-size

TP1-BridgeがMediatorとの送受信に使用するスレッドの割り当て待ちをするキューのサイズを指定します。

各パラメタの詳細については、「9.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）」を参照してください。

■チューニング方法

各パラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法については、「11.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで次に示す表のクエリを入力し、Executeボタンを押すことでGraphタブに下図のような状態で表示されます。

チューニング対象のパラメタと、下図に表示されたメトリクス名の関連づけは、「表3‒42　チューニング対象のパラメタとメトリクス名の関連づけ」を参照してください。メトリクス名は、クエリを実行した結果によって「name="メトリクス名"」と表示されるため、該当する表示個所からメトリクス名を確認してください。

表3‒41　Prometheusで利用するクエリ

項番

チューニング対象のパラメタ

クエリ

1

tp1.participant-processing.thread-pool-size

hmppcto_executor_active_threads{label_app_kubernetes_io_name="tp1-bridge"}

2

mediator-communication.thread-pool-size

3

mediator-process-management.thread-pool-size

hmppcto_executor_active{label_app_kubernetes_io_name="tp1-bridge"}

4

tp1.participant-processing.queue-size

hmppcto_executor_queued_tasks{label_app_kubernetes_io_name=" tp1-bridge"}

5

mediator-communication.queue-size

表3‒42　チューニング対象のパラメタとメトリクス名の関連づけ

項番

チューニング対象のパラメタ

メトリクス名

1

tp1.participant-processing.thread-pool-size

participant-processing.thread

2

tp1.participant-processing.queue-size

3

mediator-process-management.thread-pool-size

mediator-process-management.thread

4

mediator-communication.thread-pool-size

mediator-communication.thread

5

mediator-communication.queue-size

図3‒19　PrometheusのWeb UI

hmppcto_executor_active_threads{label_app_kubernetes_io_name="tp1-bridge"}の結果が、長い期間tp1.participant-processing.thread-pool-size、mediator-process-management.thread-pool-size、またはmediator-communication.thread-pool-sizeで指定した値で推移している場合、スレッド不足によって処理の遅延が発生しているおそれがあります。これらのパラメタの値を増やすことで、次の図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒20　PrometheusのWeb UI

また、hmppcto_executor_queued_tasks{label_app_kubernetes_io_name="tp1-bridge"}の結果が、tp1.participant-processing.queue-sizeやmediator-communication.queue-sizeで指定した値で推移している場合、キューサイズ不足が発生しているおそれがあります。これらのパラメタの値を増やすことでキューサイズ不足を防ぐことができます。

(7)　TP1-Converter

TP1-Converterのデータ変換、キャッシュのリフレッシュ、およびキャッシュの参照の各処理は、uCosminexus Service PlatformのJ2EEサーバ上のWebコンテナリクエスト処理スレッド（NIO HTTPサーバのリクエスト処理スレッド/ワーカースレッド）で動作します。そのため、リクエスト処理スレッドの最大数は、uCosminexus Application Serverのusrconf.properties（J2EEサーバ用ユーザプロパティファイル）のパラメタで設定します。

(a)　設計指針

複数のトランザクションを同時に実行する際、極力スレッドの空き待ちが発生しないようにするためにはトランザクションの同時実行数分＋1のスレッドが必要です。トランザクション外で実行するキャッシュのリフレッシュ、またはキャッシュの参照で使用するスレッドを考慮して1を加算しています。

ただし、データ変換処理が重ならないかぎりは、トランザクションの同時実行数分のスレッドは必要ありません。

スレッドの占有期間に相当する処理時間を設定して、目標とする1秒間当たりのトランザクション処理数（TPS）を処理するためのスレッド数を算出します。

算出したスレッド数に余裕を持たせるために安全率を掛けることを推奨します。

なお、算出したスレッド数が10未満となる場合は、10以上の値を設定してください。

目標TPSを基準にした算出方法を次に示します。

X = (A × B) ＋１

X：スレッド数

A：目標TPS

B：データ変換の処理時間（秒）

例）

目標40TPS、データ変換の処理時間を0.1秒とした場合、必要なスレッド数は5となります。

X = (40 × 0.1) + 1

X = 5

安全率を1.5とした場合、必要なスレッド数は8となります。

X = 5 × 1.5

X ≒ 8

10未満のため、10を設定します。

(b)　チューニング対象のパラメタ一覧

チューニング対象のパラメタは、uCosminexus Service Platformのusrconf.properties（J2EEサーバ用ユーザプロパティファイル）のパラメタです。パラメタの詳細は、マニュアル「Cosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。

表3‒43　TP1-Converterのチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

webserver.connector.nio_http.max_threads

TP1-Bridgeのデータ変換機能を実行するリクエスト処理スレッドの最大数を設定します。

2

webserver.connector.nio_http.max_servlet_execute_threads

webserver.connector.nio_http.max_threadsと同じ値を設定してください。

webserver.connector.nio_http.max_threadsのうち、Webコンテナが同期サーブレットを実行するスレッドの最大数を指定します。

なお、TP1-Converterは、同期サーブレットとして実装しています。

(c)　チューニング方法

チューニングに必要な情報は、uCosminexus Service PlatformがWebコンテナの稼働情報ファイルに出力されます。

Webコンテナの稼働情報ファイルに出力されるNIO HTTPサーバの実行中スレッド数の前回の稼働情報ファイルの出力時からの最大値（WorkerThreadCount.HighWaterMark）や現在値（WorkerThreadCount.Current）が、長時間パラメタ設定値で推移している場合は、データ変換処理がスレッド不足によって実行できないため、トランザクションの実行時間が長くなっている、またはTPSが低下していることが考えられます。パラメタの設定値を増やすことで、トランザクションの実行時間やTPSが改善できる場合があります。

Webコンテナの稼働情報ファイルの詳細については、マニュアル「Cosminexus アプリケーションサーバ 機能解説 運用／監視／連携編」を参照してください。

3.12.2　タイマ

トランザクション制御の中で使用するタイマのチューニングパラメタについては次の表の記載のとおりです。

表3‒44　チューニング対象のパラメタ一覧

項番

パラメタ設定の主体

パラメタ名

説明

1

Orchestrator

jp.co.Hitachi.soft.hmppcto.grpc.watchtime-in-seconds

＜パラメタの説明＞

Mediatorへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

このタイマはOrchestratorからMediatorへトランザクション決着指示の要求電文を送信してから、トランザクション合意結果を受け付けるまでの間を監視します。

このタイマがタイムアウトした時点でMediatorから1つも応答がない場合は、トランザクションの決着結果は不明としてAPに応答し通信エラーとなります。

パラメタの詳細については、「9.2.3　Orchestrator」を参照してください。

＜設定方法＞

トランザクション決着結果が確定する前に、このタイマがタイムアウトするのを防ぐためトランザクション決着監視タイマより大きな値を設定してください。その上でユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと障害でMediatorがダウンしていた場合に、監視時間分待ち合わせてしまいスレッドを占有してしまいます。

タイマの値が短いと障害によって分散合意ができない場合の遅延を許容できる時間が短くなります。

このタイマは、次のタイマより大きい値を設定してください。

SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.transaction-termination.timeout-in-millis

2

SQL-Participant

TCC-Participant

TP1-Bridge

SQL-Participant、TCC-Participantの場合

jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

TP1-Bridgeの場合

externalConsensus.intervalInMillis

＜パラメタの説明＞

補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で指定します。

このタイマはMediatorから1つ目の合意を受信してから分散合意可能な数のMediatorから合意を受信するまでを監視します。

このタイマがタイムアウトした場合は次の動作を行います。

Mediatorから高速合意できるだけの合意を受信していれば、高速合意を実行します。

Mediatorから高速合意できるだけの合意を受信しておらず、補助合意できるだけの合意を受信していれば、補助合意を実行します。

なお、このタイマは合意できるまで無限にリトライします。

パラメタの詳細については、「9.2.5　SQL-Participant」、「9.2.6　TCC-Participant」、および「9.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、補助合意が頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとタイムアウト時に補助合意できるMediatorがそろう可能性が高まりますが、補助合意実行までの間隔が伸び遅延が大きくなります。

タイマの値が短いとMediatorなどに障害が発生した場合のトランザクションの遅延を小さくできますが、通信遅延を障害と誤認し、不要な補助合意が発生します。

このタイマは、次のタイマより小さい値を設定してください。

SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.transaction-termination.consensus.replay-interval-in-millis

TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.transaction-termination.timeout-in-millis

TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.consensus.interval-in-millis

TP1-Bridgeのパラメタ

tp1.transactionTermination.timeoutInMillis

TP1-Bridgeのパラメタ

tp1.transactionTermination.consensus.replayIntervalInMillis

3

SQL-Participant

jp.co.Hitachi.soft.hmppcto.sql.pool.allocation-wait-time-in-millis

＜パラメタの説明＞

SQL-ParticipantがDBアクセスのためのコネクションをコネクションプールから取得する際に、コネクションプールに空きがなかった場合の空き待ち時間をミリ秒単位で指定します。

このタイマはSQL-ParticipantからDBへのコネクション接続要求を送信し、接続確立の応答が帰るまでの間を監視します。

このタイマがタイムアウトした場合はエラーとなり、トランザクションブランチをロールバックします。

パラメタの詳細については、「9.2.5　SQL-Participant」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、エラーが頻繁に発生するようであれば、長めに調整するか次の値を大きくしてください。

SQL-Participantのパラメタ

jp.co.Hitachi.soft.hmppcto.sql.pool.max-pool-size

タイマの値が長いとDBとのコネクションが確保できない場合に許容できる時間が増えますが、遅延が大きくなります。

タイマの値が短いと遅延は短縮されますが、許容できる時間が短くなり、エラーリターンします。

4

jp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

＜パラメタの説明＞

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で指定します。DBの排他ロックが解けない状態となることを許容できる時間をタイマ監視し、設定した時間を超えてもトランザクションが決着しなかった場合に、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

このタイマは、ParticipantからDBへxa_startを行ってからxa_commitまたはxa_rollbackを行うまでの間を監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.2.5　SQL-Participant」を参照してください。

＜設定方法＞

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合、Rollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、遅延を障害と判断しRollback決着します。

このタイマは、次のタイマより大きい値を設定してください。

SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

5

jp.co.Hitachi.soft.hmppcto.sql.transaction-termination.consensus.replay-interval-in-millis

＜パラメタの説明＞

トランザクション分散合意リプレイインターバルタイマのタイマ監視時間をミリ秒単位で指定します。このタイマは、トランザクションをコミットまたはロールバックするためにトランザクション決着処理をする際、トランザクション決着監視タイマのタイムアウトによるトランザクション決着処理をする際、またはSQL-Participantダウンからの再起動時にトランザクション決着処理をする際に設定します。設定した時間を超えてもトランザクションが決着しなかった場合は、トランザクション決着処理を再実行（リプレイ）し、DBの排他ロック解除のためにトランザクションを決着に向かわせます。

このタイマは、ParticipantからMediatorへ投票を行ってからDBへxa_commitまたはxa_rollbackを行うまでの間を監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.2.5　SQL-Participant」を参照してください。

＜設定方法＞

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合、Rollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、障害が長引いた場合に何度もリトライを行うため通信負荷が掛かります。

このタイマは、次のタイマより大きい値を設定してください。

SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

6

TCC-Participant

jp.co.Hitachi.soft.hmppcto.tcc.transaction-termination.timeout-in-millis

＜パラメタの説明＞

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で指定します。障害によってトランザクション決着に至らない状態となることを許容できる時間をタイマ監視し、設定した時間を超えてもトランザクションが決着しなかった場合に、ユーザが許容できる時間（業務要件）を超過したと判断しトランザクションを決着に向かわせるタイマです。

このタイマは、APIアダプタ機能から業務ロジックへTryを実行する直前から分散合意結果に従ってTry実行に対するConfirm/Cancelの実行が完了するまでの区間をタイマ監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.2.6　TCC-Participant」を参照してください。

＜設定方法＞

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合にRollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、遅延を障害と判断しRollback決着します。

このタイマは、次のタイマより大きい値を設定してください。

TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

7

jp.co.Hitachi.soft.hmppcto.tcc.consensus.interval-in-millis

＜パラメタの説明＞

トランザクション分散合意処理をリトライする間隔をミリ秒単位で指定します。障害などによってトランザクションの分散合意ができないとき、この間隔によってトランザクションの分散合意が決着するまで分散合意処理をリトライし、分散合意によるトランザクションの決着が必ず行われるようにするためのリトライ間隔です。

このタイマは、ParticipantからMediatorへ投票を行ってから分散合意が決着するまでの区間をタイマ監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.2.6　TCC-Participant」を参照してください。

＜設定方法＞

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合にRollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、障害が長引いた場合に何度もリトライを行うため通信負荷が掛かります。

このタイマは、次のタイマより大きい値を設定してください。

TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

8

TP1-Bridge

tp1.pool.allocationWaitTimeInMillis

＜パラメタの説明＞

TP1-BridgeがOpenTP1にアクセスするためのコネクションをコネクションプールから取得する際に、コネクションプールに空きが無かった場合の空き待ち時間をミリ秒単位で指定します。

このタイマがタイムアウトした場合はエラーとなり、トランザクションブランチをロールバックします。

パラメタの詳細については、「9.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、エラーが頻繁に発生するようであれば、長めに調整するか次の値を大きくしてください。

TP1-Bridgeのパラメタ

tp1.pool.maxPoolSize

タイマの値が長いとOpenTP1とのコネクションが確保できない場合に許容できる時間が増えますが、遅延が大きくなります。

タイマの値が短いと遅延は短縮されますが、許容できる時間が短くなり、エラーリターンします。

9

tp1.transactionTermination.timeoutInMillis

＜パラメタの説明＞

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で指定します。DBの排他ロックが解けない状態となることを許容できる時間をタイマ監視し、設定した時間を超えてもトランザクションが決着しなかった場合に、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

このタイマは、TP1-BridgeからOpenTP1へxa_startを行ってからxa_commitまたはxa_rollbackを行うまでの間を監視します。

このタイマがタイムアウトした場合はTP1-BridgeからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）」を参照してください。

＜設定方法＞

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まりますが障害が発生した場合にRollbackするまでにタイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、遅延を障害と判断しRollback決着します。

このタイマは、次のタイマより大きい値を設定してください。

TP1-Bridgeのパラメタ

externalConsensus.intervalInMillis

10

tp1.transactionTermination.consensus.replayIntervalInMillis

＜パラメタの説明＞

トランザクション分散合意リプレイインターバルタイマのタイマ監視時間をミリ秒単位で設定します。このタイマは、トランザクションをコミットまたはロールバックするためにトランザクション決着処理をする際、トランザクション決着監視タイマのタイムアウトによるトランザクション決着処理をする際、またはTP1-Bridgeダウンからの再起動時にトランザクション決着処理をする際に設定し、設定した時間を超えてもトランザクションが決着しなかった場合に、トランザクション決着処理を再実行（リプレイ）し、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

このタイマは、TP1-BridgeからMediatorへ投票を行ってからDBへxa_commitまたはxa_rollbackを行うまでの間を監視します。

このタイマがタイムアウトした場合はTP1-BridgeからMediatorに対してRollback投票を行います。

パラメタの詳細については、「9.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）」を参照してください。

＜設定方法＞

このタイマはユーザアプリケーションの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まりますが障害が発生した場合にRollbackするまでにタイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、障害が長引いた場合に何度もリトライを行うため通信負荷が掛かります。

このタイマは、次のタイマより大きい値を設定してください。

TP1-Bridgeのパラメタ

externalConsensus.intervalInMillis

11

Mediator

consensusLog.io.watchInSeconds

＜パラメタの説明＞

ConsensusLogファイルへの書き込みおよび読み出し時のIO監視時間を秒で指定します。

このタイマは、トランザクション決着指示を受けたMediatorがConsensusLogへ永続化結果を書き込んでから完了するまでの間を監視します。

このタイマがタイムアウトした場合は、障害メッセージを出力し、該当するMediatorは故障と判断し分散合意の対象外となります。

パラメタの詳細については、「9.3.1　Mediator」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、エラーが頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとハードウェアやドライバが障害検知した場合でも、タイマの指定値分まで監視を続けてしまいます。

タイマの値が短いとIOハングアップした場合に早期に検知できますが、監視時間中に容量が空き、復旧できる見込みがあった場合でもエラーとなります。

3.12.3　G1GC

Mediator、およびTP1-Bridgeでは、Javaのメモリ管理の方式にG1GCを選択します。メモリ領域に対してYoungGC、MixedGC、およびFullGCの3種類のGCが発生します。このうち、YoungGCとMixedGCについては、GC発生時にアプリケーションが停止する時間を制御できます。G1GCを選択するために、-XX:+UseG1GCオプションのほか、GC発生時の目標の停止時間、メモリに関するオプションや処理性能のチューニングに関するオプションを指定します。

(1)　チューニング対象のパラメタ一覧

G1GCのチューニング対象のパラメタ一覧を次に示します。

表3‒45　G1GCチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

-XX:+UseG1GC

メモリ管理方式にG1GCを選択します。

2

-XX:MaxGCPauseMillis

希望する最大一時停止時間の目標値を設定します。指定された値はヒープサイズに適合しません。

3

-XX:ParallelGCThreads

STWワーカースレッドの値を設定します。nの値を論理プロセッサの数に設定します。nの値は、値8までは論理プロセッサの数と同じです。

論理プロセッサが8つを超える場合は、nの値を論理プロセッサの約5/8に設定します。これは、nの値が論理プロセッサの約5/16になる大規模なSPARCシステムを除き、ほとんどの場合に機能します。

4

-XX:ConcGCThreads

並列マーキングスレッドの数を設定します。nを並列ガベージコレクションスレッド(ParallelGCThreads)の数の約1/4に設定します。

5

-Xms

Javaヒープの初期サイズを設定します。※1

6

-Xmx

Javaヒープの最大サイズを設定します。※1

7

-XX:SurvivorRatio

New領域に対するSurvivor領域で最大に取ることができる領域サイズの割合を設定します。

Survivor領域の最大で取ることができる領域サイズは次の式で求められます。

(Survivor領域のサイズ)※2=(New領域のサイズ)/SurvivorRatio

8

-XX:MetaspaceSize

Metaspace領域の初期サイズを設定します。※3

9

-XX:MaxMetaspaceSize

Metaspace領域の最大サイズを設定します。※3

10

-XX:CompressedClassSpaceSize

圧縮オブジェクトポインタ機能が有効な場合にMetaspace領域内に作成されるCompressed Class Space領域の最大サイズを設定します。このパラメタは、-XX:MaxMetaspaceSizeオプションと同じ値の設定を推奨します。

注※1

-Xmsと-Xmxの値は同じ値を指定することを推奨します。

注※2

Survivor領域のサイズとはTo空間またはFrom空間のサイズを指します。To空間とFrom空間の合計サイズではないことに注意してください。

注※3

-XX:MetaspaceSizeと-XX:MaxMetaspaceSizeの値は同じ値を指定することを推奨します。

(2)　パラメタの設定方法

(a)　Mediator

MediatorのHelmチャートのjava.optionsパラメタでMediatorのJavaプロセス起動時にJava VMに渡すオプションを指定します。

java.optionsパラメタの詳細は、「(1)　Helmチャートのパラメタ」を参照してください。

MediatorのHelmチャートのカスタマイズ例は、「3.8.3　MediatorのHelmチャートのカスタマイズ」を参照してください。

(b)　TP1-Bridge

TP1-BridgeのHelmチャートのjava.optionsパラメタで、TP1-BridgeのJavaプロセス起動時にJava VMに渡すオプションを指定します。

java.optionsパラメタの詳細は、「(1)　Helmチャートのパラメタ」を参照してください。

TP1-BridgeのHelmチャートのカスタマイズ例は、「3.8.4　TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）」を参照してください。

3.12.4　ディスク

(1)　Mediator

「3.7.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」を参照してください。

(2)　EADS（通常版限定）

「3.7.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）」を参照してください。

(3)　Elasticsearch

「3.7.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」を参照してください。

3.12.5　システム運用に必要となる機能

この項では、冗長化や各コンポーネントで注意する必要がある項目について記載します。

システム運用に必要となる機能で使用する各コンポーネントのCPU、メモリに関してはElasticsearchを除き、リソースの制限を実施していません。

そのため、実際にRASコンポーネントを使用したとき消費されるリソース量を確認し、チューニングを実施してください。

(1)　Elasticsearch

(a)　冗長化・レプリケーション

クラスタ構成を実施することで冗長化できます。クラスタ構成を採ることで、Elasticsearchに格納したデータの分散管理、冗長性の確保を実現できます。

Elasticsearchをクラスタ構成にする場合、ノード障害からの保護や、ストレージの圧迫を抑制するためKubernetesノード間で分散してElasticsearchを起動させることを推奨します。

(b)　CPU、メモリのチューニング

Elasticsearchは多量のリソースを使用するため、クラスタ構成を採らない場合での、起動と最低限の利用に必要と思われるリソース値による制限を実施しています。

Elasticsearchのパフォーマンスに応じてチューニングを実施してください。

表3‒46　Elasticsearchのリソース設定

項番

パラメタ

説明

1

requests.cpu

詳細は「9.3.10　Elasticsearch」を参照してください。

2

requests.memory

3

limits.cpu

4

limits.memory

(c)　Elasticsearchデータディレクトリ・Elasticsearchリポジトリディレクトリとして使用する永続ボリュームの見積もり

ElasticsearchデータディレクトリおよびElasticsearchリポジトリディレクトリとして使用する永続ボリュームの見積もりの詳細については、「3.7.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」を参照してください。

(2)　Jaeger-collector

(a)　冗長化・レプリケーション

HMP-PCTOの各コンポーネントから出力されるSpanを分散させるため、またPod停止によって分散トレースとして収集する情報に欠落が生じないようにレプリケーションで冗長化を実施できます。

(b)　パラメタ

Jaeger-collectorは、HMP-PCTOの各コンポーネントから送信されたSpanを受信し、Elasticsearchへと送信する動作を行います。受信したSpanを格納する内部キューの長さと、キュー内のデータの送信処理を行うワーカに対して、チューニングを行う必要があります。

そのほかのパラメタについては、Jaegerの公式ドキュメントを参照してください。

チューニング対象のパラメタ一覧

Jaeger-collectorのチューニング対象のパラメタ一覧を次に示します。

表3‒47　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

collector.queueSize

Jaeger-collector は収集したSpanをElasticsearchに送付するため、受信したデータを内部のキューへと保管します。※

このキューのサイズを指定します。

2

collector.numWorkers

Jaeger-collector内で動作するワーカの数を指定します。

3

collector.numShards

Elasticsearchに作成するインデックスのシャード数を指定します。

このパラメタはElasticsearchの性能に影響します。

注※

Jaeger-collectorは、内部キューがいっぱいになると古いSpanを上書きします。

チューニング方法

表3‒48　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

1

collector.queueSize

Jaeger-collectorは、内部キューがいっぱいになると古いSpanを破棄します。そのため、「1トランザクション当たりのSpan数×Transaction per seconds × 時間（分）」で計算し、見積もりを実施します。

チューニングを行う場合は、Jaeger-collectorのjaeger_collector_queue_lengthのメトリクスを参照し、値が増長している かつ、jaeger_collector_spans_dropped_totalのメトリクスを参照したとき、Spanのdrop が発生している場合は、設定値の見直しが必要です。

「(1)　Helmチャートのパラメタ」を参照してください。

2

collector.numWorkers

キュー内のデータ50件に対ワーカ1つが対応します。

そのため、"キューのサイズ / 50" を設定することを推奨します。

3

collector.numShards

Elasticsearchは、インデックス内のデータをシャードという単位で分割して管理します。シャード数が多いと、Elasticsearchの検索効率は上昇しますが、消費されるメモリが多くなります。

Elasticsearchのパフォーマンスに問題がある場合にかぎり、このパラメタの数値を変更してください。

注※

デフォルト値は、Jaeger-collector 1.45.0 におけるデフォルト値です。

(c)　CPU、メモリのチューニング

Jaeger-collectorは内部キューの容量、送信処理のチューニングに応じて、必要となるリソースが増加します。Jaeger-collectorのパフォーマンスに応じてチューニングを実施してください。

表3‒49　Jaeger-collectorのリソース設定

項番

パラメタ

説明

1

requests.cpu

詳細は「(1)　Helmチャートのパラメタ」を参照してください。

2

requests.memory

3

limits.cpu

4

limits.memory

(3)　Jaeger-query

(a)　パラメタ

Jaeger-queryでは、分散トレースを参照するためのUIを提供します。チューニングとしては、分散トレース参照時の検索範囲に関して設定する必要があります。

チューニング対象のパラメタ一覧

Jaeger-queryのチューニング対象のパラメタ一覧を次に示します。

表3‒50　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

jaegerQuery.maxSpanAge

Jaeger-queryがElasticsearchから分散トレースを取得する際、検索の範囲とする時間の指定を行います。

チューニング方法

表3‒51　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

1

jaegerQuery.maxSpanAge

Elasticsearch ILMポリシーと合わせた値を設定します。

ILMポリシーで設定した削除期間内が検索可能となる範囲で設定をしてください。

「9.3.6　Jaeger-query」を参照してください。

(b)　CPU、メモリのチューニング

Jaeger-queryに対するアクセスが集中するときなど、必要となるリソースが増加する場合があります。Jaeger-queryのパフォーマンスに応じてチューニングを実施してください。

表3‒52　Jaeger-queryのリソース設定

項番

パラメタ

説明

1

requests.cpu

詳細は「(1)　Helmチャートのパラメタ」を参照してください。

2

requests.memory

3

limits.cpu

4

limits.memory

(4)　Logstash

(a)　冗長化・レプリケーション

メッセージログが各Kubernetesノードに起動したFilebeatより転送されるため、アクセスを分散させます。また、Pod停止によって収集するメッセージログ情報に欠落が生じないようにレプリケーションで冗長化を実施できます。

ログが大量に出力された際に、内部キューの圧迫を防ぐため、2台以上の構成で起動することを推奨します。この時、起動させるKubernetesノードは、異なるノード上で起動させるようにすることで、可用性が向上します。

(b)　パラメタ

Logstashでは、Filebeatで収集したメッセージログをElasticsearchに転送する動作を行います。受信したメッセージログを送信するためにチューニングを行う必要があります。

チューニング対象のパラメタ一覧

Logstashのチューニング対象のパラメタ一覧を次に示します。

表3‒53　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

logstash.pipeline.batchSize

個々のworkerがinput処理によって収集するイベントの最大数を定義します。

2

logstash.queue.event.maxEvents

内部キュー内の未読イベントの最大数を定義します。

3

logstash.queue.byte.maxBytes

内部キューの最大容量（バイト）を定義します。

チューニング方法

表3‒54　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

1

logstash.pipeline.batchSize

数値を大きくするほど、処理効率は向上しますが、メモリのオーバーヘッドが増加します。Filebeatからログの送信に時間が掛かる場合は、この設定を見直してください。

「(1)　Helmチャートのパラメタ」を参照してください。

2

logstash.queue.event.maxEvents

queue.max_eventsおよびqueue.max_bytesが未設定の場合、メモリを無制限に使用します。queue.max_eventsを設定し、メモリ使用量の上昇を抑制してください。

リソース管理の観点からqueue.max_bytesを設定し、永続キューの制限を設定することを推奨します。

3

logstash.queue.byte.maxBytes

Elasticsearchのインデックスの見積もり式 と 障害要件（Elasticsearchの復旧までの停止許容時間）を基にキューに格納するログサイズの見積もりを実施してください。

"1TPS（Transactions per seconds）当たりのログ容量×停止時間×安全係数"

(c)　CPU、メモリのチューニング

Logstashでは、Filebeatから受信したメッセージログの送信処理に関するチューニングに応じて、必要となるリソースが増加します。

表3‒55　Logstashのリソース設定

項番

パラメタ

説明

1

requests.cpu

詳細は「(1)　Helmチャートのパラメタ」を参照してください。

2

requests.memory

3

limits.cpu

4

limits.memory

(5)　Filebeat

(a)　パラメタ

Filebeatではコンテナの標準出力として出力されたログ、各Pod内のログファイル上に出力されたログをLogstashに転送する動作を行います。メッセージログを送信するためにチューニングを行う必要があります。

チューニング対象のパラメタ一覧

Filebeatのチューニング対象のパラメタ一覧を次に示します。

表3‒56　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

filebeat.queue.maxSize

内部キューとして使用する容量の最大値を定義します。

2

filebeat.queue.readAhead

内部キューに登録され、ディスク上に出力されたデータから、Logstashへの出力のためにメモリに読み取る必要のあるイベントの数を定義します。

3

filebeat.output.maxRetries

Logstashへの送信に失敗した際に実施する再送の試行回数を定義します。

チューニング方法

表3‒57　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

1

filebeat.queue.maxSize

コンテナの標準出力として出力されたログの場合

Elasticsearchのインデックスの見積もり式 と 障害要件(Elasticsearchの復旧までの停止許容時間)をもとにキューに格納するログサイズの見積もりを実施してください。

"1TPS（Transactions per seconds）当たりのログ容量×停止時間×安全係数"

各Pod内のログファイルを参照し、出力されたログの場合

1トランザクション当たりのログ容量の見積もりを行います。共に障害要件(Elasticsearchの復旧までの停止許容時間)を基にキューに格納するログサイズの見積もりを実施してください。

"1TPS（Transactions per seconds）当たりのログ容量×停止時間×安全係数"

「(1)　Helmチャートのパラメタ」を参照してください。

2

filebeat.queue.readAhead

Logstashへの出力が遅くなっている場合、一度に多くのイベントを読み取ることができない状況になるため、この設定値をデフォルト値より高い数値に設定します。このとき、メモリ使用量は増加します。

3

filebeat.output.maxRetries

無制限とした場合、キューの圧迫につながります。

そのため、機能要件に従った再送回数を定義することを推奨します。

(b)　CPU、メモリのチューニング

Filebeatでは、メッセージログの送信処理に関するチューニングに応じて、必要となるリソースが増加します。

表3‒58　Filebeatのリソース設定

項番

パラメタ

説明

1

requests.cpu

詳細は「(1)　Helmチャートのパラメタ」を参照してください。

2

requests.memory

3

limits.cpu

4

limits.memory

(6)　Metricbeat

(a)　冗長化・レプリケーション

Prometheusから送信されてくるメトリクスをElasticsearchに対して送信を実施します。Prometheusからのアクセスを分散させます。メトリクスの欠落を防止するなどの意図で、レプリケーションで冗長化を実施できます。

Prometheusのレプリケーションを実施した場合や、Metricbeat停止によるメトリクス欠落を防止する必要がある場合は、2台以上の構成で起動してください。

このとき、起動させるKubernetesノードは、異なるノード上で起動させるようにすることで、可用性が向上します。

(b)　パラメタ

Metricbeatでは、Prometheusより送信されたメトリクスをElasticsearchへと送信する動作を行います。送信を実施するために、次の表に示すチューニングを実施してください。

チューニング対象のパラメタ一覧

Metricbeatのチューニング対象のパラメタ一覧を次に示します。

表3‒59　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

metricbeat.output.maxRetries

Elasticsearchへの送信に失敗した際に実施する再送の試行回数を定義します。

2

metricbeat.queue.maxSize

内部キューとして使用する容量の最大値を定義します。

3

metricbeat.queue.readAhead

内部キューに登録され、ディスク上に出力されたデータから、Elasticsearchへの出力のためにメモリに読み取る必要のあるイベントの数を定義します。

チューニング方法

表3‒60　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

1

metricbeat.output.maxRetries

無制限とした場合、キューの圧迫につながります。そのため、機能要件に従った再送回数を定義することを推奨します。

「(1)　Helmチャートのパラメタ」を参照してください。

2

metricbeat.queue.maxSize

Elasticsearchのインデックスの見積もり式 と 障害要件(Elasticsearchの復旧までの停止許容時間)をもとにキューに格納するログサイズの見積もりを実施してください。

"1TPS（Transactions per seconds）当たりのメトリクス容量×停止時間×安全係数"

3

metricbeat.queue.readAhead

Elasticsearchへの出力が遅くなっている場合、一度に多くのイベントを読み取ることができない状況になるため、この設定値をデフォルト値より高い数値に設定します。このとき、メモリ使用量は増加します。

(c)　CPU、メモリのチューニング

Metricbeatでは、Prometheusから受信したメトリクスの送信処理に関するチューニングに応じて、必要となるリソースが増加します。

表3‒61　Metricbeatのリソース設定

項番

パラメタ

説明

1

requests.cpu

詳細は「(1)　Helmチャートのパラメタ」を参照してください。

2

requests.memory

3

limits.cpu

4

limits.memory

(7)　Prometheus

(a)　冗長化・レプリケーション

レプリカ数の変更によって、Prometheusをレプリケーションすることはできます。ただし、起動したPrometheusごとに独立してメトリクスを収集する動作を行います。そのため、Prometheus間で収集したメトリクスの重複が発生します。

また、Metricbeatに対してのメトリクスの送信もPrometheusごとに行われるため、Elasticsearchに格納されるメトリクスデータの重複が発生します。

レプリケーションを実施する場合、起動させるKubernetesノードは、異なるノード上で起動させるようにすることで、可用性が向上します。

(b)　パラメタ

Prometheusでは、各コンポーネントよりメトリクス情報の収集、参照と、Metricbeatへ転送する動作を行います。Prometheusのパフォーマンスを調整するため、次の表に示すチューニングを実施してください。

チューニング対象のパラメタ一覧

Prometheusのチューニング対象のパラメタ一覧を次に示します。

表3‒62　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

global.scrape_interval

Prometheusがメトリクスの取得対象から情報を取得する間隔を定義します。

2

remote_write.queue_config.capacity

PrometheusがMetricbeatにデータの送信処理をシャードという単位で並列実行してメトリクスを送信します。

データを送信するため、シャードごとにメモリ内でキューを作成します。

このキューのサイズを指定します。

3

remote_write.queue_config.max_shards

Metricbeatにデータを送信するシャードのサイズ、または並列処理の最大数を指定します。通常では最大数まで使用しないよう動作するが、送信が遅延した場合などに定義した最大数による送信処理を実施します。

4

remote_write.queue_config.max_samples_per_send

一度にまとめて送信するデータのサイズを定義します。

5

--storage.tsdb.retention.time

データを保持し続ける期間を定義します。

チューニング方法

表3‒63　チューニング方法

項番

パラメタ

チューニングの考え方

推奨設定値

1

global.scrape_interval

間隔を短くするほど、Prometheusが使用するディスク容量が上昇します。メトリクス取得に関する要件と、Prometheusが使用量を基に、設定値を検討してください。

15s

2

remote_write.queue_config.capacity

Metricbeatに送信する処理のメモリ使用量は、「シャード数 ×（remote_write.queue_config.capacity + remote_write.queue_config.max_samples_per_send）」に比例します。

大きい値に設定するほど、多くのメモリを消費します。Prometheusとしては、remote_write.queue_config.max_samples_per_sendの3〜10倍程度の値に設定することを推奨しています。

10,000

3

remote_write.queue_config.max_shards

Prometheusでは、Metricbeatへの送信に異常に時間が掛かる場合ではないかぎりデフォルト値を超えた値を設定する必要はありません。

50

4

remote_write.queue_config.max_samples_per_send

Prometheusでは、ほとんどの利用にかぎり問題ない値としてデフォルト値が定義されています。

Prometheusのメモリ使用量が高い場合にかぎり、remote_write.queue_config.capacityの項目に記載したメモリ使用量の見積もり式を基に、チューニングを実施してください。

2,000

5

--storage.tsdb.retention.time

Prometheusで参照可能なデータの保持期間を定義します。期間が長期になるほど、Prometheusが保持するメトリクスデータは増大します。

Prometheusの利用用途とディスクサイズに合わせて設定してください。

7d

(c)　CPU、メモリのチューニング

Prometheusでは、メトリクス収集、およびMetricbeatへの送信処理に関するチューニングに応じて、必要となるリソースが増加します。Prometheusの公式ドキュメントを参照してリソースを設定してください。

3.12.6　分散トレース

HMP-PCTOの分散トレースの取得に関するチューニングパラメタについては次の表の記載のとおりです。

表3‒64　チューニング対象のパラメタ一覧

項番

パラメタ設定の主体

パラメタ名

説明

1

Orchestrator

Entity-Module

SQL-Participant

TCC-Participant

Mediator

TP1-Bridge

Orchestrator、Entity-Module、SQL-Participant、TCC-Participantの場合

jp.co.Hitachi.soft.hmppcto.tracing.queue-size

Mediator、TP1-Bridgeの場合

tracing.queueSize

＜パラメタの説明＞

メモリ上のキューに保持できる分散トレース数を指定します。

パラメタの詳細については、「9.2.1　共通」を参照してください。

＜設定方法＞

このパラメタは次のパラメタ以上の値を設定してください。

jp.co.Hitachi.soft.hmppcto.tracing.batch-size

この設定値以上の分散トレースが発生した場合、対象の分散トレースは破棄されてしまいます。

基本はデフォルト値を設定した上で、分散トレースの破棄が頻繁に発生するようであれば、大きな値に調整してください。

2

Orchestrator

Entity-Module

SQL-Participant

TCC-Participant

Mediator

TP1-Bridge

Orchestrator、Entity-Module、SQL-Participant、TCC-Participantの場合

jp.co.Hitachi.soft.hmppcto.tracing.delay-time-in-millis

Mediator、TP1-Bridgeの場合

tracing.delayTimeInMillis

＜パラメタの説明＞

メモリ上のキューに保持した分散トレースを分散トレース収集アプリケーションまたはサービスへ送信する間隔をミリ秒で指定します。

パラメタの詳細については、「9.2.1　共通」を参照してください。

＜設定方法＞

このパラメタの設定値を変更すると、メモリ上のキューに保持した分散トレースを送信する間隔が変更されます。

大きな値を設定すると、メモリ上のキューに保持した分散トレースを送信する間隔が長くなり、メモリ上のキューからあふれてしまい、分散トレースが破棄されるおそれがあります。

基本はデフォルト値を設定した上で、分散トレースの破棄が頻繁に発生するようであれば、小さな値に調整してください。

3

Orchestrator

Entity-Module

SQL-Participant

TCC-Participant

Mediator

TP1-Bridge

Orchestrator、Entity-Module、SQL-Participant、TCC-Participantの場合

jp.co.Hitachi.soft.hmppcto.tracing.batch-size

Mediator、TP1-Bridgeの場合

tracing.batchSize

＜パラメタの説明＞

メモリ上のキューに保持した分散トレースを分散トレース収集アプリケーションまたはサービスへ送信する際に一度に送信する分散トレース数を指定します。

パラメタの詳細については、「9.2.1　共通」を参照してください。

＜設定方法＞

このパラメタは次のパラメタ以下の値を設定してください。

jp.co.Hitachi.soft.hmppcto.tracing.queue-size

この設定値以上の分散トレースが発生した場合、対象の分散トレースは破棄されます。

このパラメタの設定値を変更すると、メモリ上のキューに保持した分散トレースを送信する数が変更されます。

大きな値を設定すると、メモリ上のキューに保持した分散トレースを送信する数が大きくなり、分散トレース収集アプリケーションまたはサービスが受信できなくなり、分散トレースが破棄されるおそれがあります。

基本はデフォルト値を設定した上で、分散トレースの破棄が頻繁に発生するようであれば、小さな値に調整してください。

4

Orchestrator

Entity-Module

SQL-Participant

TCC-Participant

Mediator

TP1-Bridge

Orchestrator、Entity-Module、SQL-Participant、TCC-Participantの場合

jp.co.Hitachi.soft.hmppcto.tracing.debug

Mediator、TP1-Bridgeの場合

tracing.debug

＜パラメタの説明＞

HMP-PCTOで実施された内部処理について、デバッグ情報を含むスパンの取得有無を設定します。

このパラメタをtrueに設定すると、デバッグ情報を含むスパンを作成する処理が動作するため、処理時間が長くなることがあります。

このパラメタをtrueに設定すると、デバッグ情報を含むスパンが出力されるため、分散トレースとして使用するディスク使用量が増加します。

パラメタの詳細については、「9.2.1　共通」を参照してください。

＜設定方法＞

このパラメタをtrueに設定することで、HMP-PCTOの内部処理の詳細を確認できます。

このパラメタについては、当社のサポート部署が調査する場合に設定が必要となります。サポート部署から設定依頼があった場合だけtrueを設定してください。

5

SQL-Participant

jp.co.Hitachi.soft.hmppcto.tracing.jdbc.debug

＜パラメタの説明＞

SQL-Participantで実行されたJDBC Driverメソッドの開始および終了について、スパンイベントの取得有無を設定します。

このパラメタをtrueに設定することで、JDBC Driverメソッド開始および終了のスパンイベントを作成する処理が動作するため、処理時間が長くなることがあります。

このパラメタをtrueに設定することで、JDBC Driverメソッド開始および終了のスパンイベントが出力されるため、分散トレースとして使用するディスク使用量が増加します。

パラメタの詳細については、「9.2.1　共通」を参照してください。

＜設定方法＞

このパラメタをtrueに設定することで、SQL-Participantの処理時間が長い場合などに、JDBC DriverメソッドまたはHMP-PCTOの製品処理のどちらで時間が掛かっているかを切り分けることができます。

ユーザが処理時間について調査や、チューニングを行う場合に設定してください。

当社のサポート部署が調査する場合に設定が必要となることがあります。サポート部署から設定依頼があった場合、trueを設定してください。

6

Orchestrator

SQL-Participant

TCC-Participant

Mediator

TP1-Bridge

Orchestrator、SQL-Participant、TCC-Participantの場合

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debug

Mediator、TP1-Bridgeの場合

tracing.grpc.debug

＜パラメタの説明＞

Orchestrator、ParticipantおよびMediatorが実施しているgRPC通信の送受信メッセージ内容について、スパンイベントの取得有無を設定します。

このパラメタをtrueに設定すると、gRPC通信の送受信メッセージ内容のスパンイベントを作成する処理が動作するため、処理時間が長くなることがあります。

このパラメタをtrueに設定すると、gRPC通信の送受信メッセージ内容のスパンイベントが出力されるため、分散トレースとして使用するディスク使用量が増加します。

パラメタの詳細については、「9.2.1　共通」を参照してください。

＜設定方法＞

このパラメタをtrueに設定することで、HMP-PCTOのgRPC通信の送受信メッセージの内容が正しいこと、また、正しいシーケンスとなっているかを確認できます。

このパラメタについては、当社のサポート部署が調査する場合に設定が必要となります。サポート部署から設定依頼があった場合だけtrueを設定してください。

第4編　HMP-PCTOのオプション機能の設定および運用

4　スケーリング対応機能の運用

4.1　スケーリング対応機能の概要

スケーリング対応機能とは、KubernetesによるPodのスケーリング（スケールイン、スケールアウト）にHMP-PCTOが対応するための機能です。Kubernetes によるPodのスケーリングには、オートスケールと手動スケーリングがあります。スケーリング対応機能の詳細およびPodのスケーリングの詳細については、取扱説明書「HMP-PCTO テクニカルガイド」を参照してください。

ここでは、スケーリング対応機能を使用するための運用について説明します。

スケーリング対応機能の対象のKubernetesアプリケーションを次の表に示します。

表4‒1　スケーリング対応機能の対象のKubernetesアプリケーションの一覧

Kubernetesアプリケーション

スケーリング対応機能の対象

Orchestrator-Service

○

Relay-Service

○

Entity-Service(SQL)

○

Entity-Service(TCC)

−

Orchestrator-Service(SQL)

○

Alternate-Service

○

Alternate-Service(SQL)

○

Mediator

○

TP1-Bridge

−

EADS（通常版の場合）

−

Ext-Cons（トライアル版の場合）

−

Filebeat

−

Jaeger-query

−

Jaeger-collector

−

Prometheus

−

Metricbeat

−

Elasticsearch

−

Logstash

−

Metrics Server

−

（凡例）

○：スケーリング対応機能を使用できます。

−：スケーリング対応機能を使用できません。

オートスケールでは、監視方法としてMetrics ServerまたはPrometheusのどちらかを使用します。監視方法はPodごとに選択でき、例えばOrchestrator-ServiceではMetrics Serverを、MediatorではPrometheusを使用した監視方法を選択できます。監視方法は要件に合わせて選択してください。メトリクスの監視方法の詳細については、取扱説明書「HMP-PCTO テクニカルガイド」のメトリクスの監視機能の説明を参照してください。Metrics Serverを使用する場合は「4.2　Metrics Serverでメトリクスを監視する場合のオートスケールのセットアップ」を、Prometheusを使用する場合は「4.3　Prometheusでメトリクスを監視する場合のオートスケールのセットアップ」を参照してセットアップをしてください。Kubernetesアプリケーションごとに異なる監視方法を選択した場合は、両方のセットアップをしてください。

オートスケールの設定前のKubernetesアプリケーションとPodの構成図、およびオートスケールの設定後のKubernetesアプリケーションとPodの構成図を、メトリクスの監視方法ごとに示します。なお、Google Cloud Platform環境の場合は、「KEDA」を「カスタム指標Stackdriverアダプタ」と読み替えてください。

図4‒1　オートスケールの設定前のKubernetesアプリケーションとPodの構成図

図4‒2　オートスケールの設定後のKubernetesアプリケーションとPodの構成図（Metrics Serverでメトリクスを監視する方法）

図4‒3　オートスケールの設定後のKubernetesアプリケーションとPodの構成図（Prometheusでメトリクスを監視する方法）

4.2　Metrics Serverでメトリクスを監視する場合のオートスケールのセットアップ

Metrics Serverでメトリクスを監視する場合のオートスケールのセットアップ手順について説明します。

4.2.1　Metrics Serverでメトリクスを監視する場合のオートスケールのセットアップの流れ

新規構築時にオートスケールを適用する場合は、次の手順でオートスケールのセットアップをしてください。オートスケール以外の設定および構築方法については、「2.　ユーザ責務のKubernetesアプリケーション開発」および「3.　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイ」を参照してください。

オートスケールを適用しないで構築した環境にオートスケールを適用する場合も同様に、次の手順でオートスケールのセットアップをしてください。ただし、手順6と7については、オートスケール対象のKubernetesアプリケーションに対して実施してください。

表4‒2　Metrics Serverでメトリクスを監視する場合のオートスケールのセットアップの流れ

手順

項目

備考

参照先

1

Metrics Serverをインストールする

オンプレミス環境またはRed Hat OpenShift Container Platform環境の場合に必ず実施します。

4.2.2　Metrics Serverのインストール（オンプレミス環境またはRed Hat OpenShift Container Platform環境限定）

2

Metrics Serverをデプロイする

4.2.3　Metrics Serverのデプロイ（オンプレミス環境またはRed Hat OpenShift Container Platform環境限定）

3

HPAのKubernetesマニフェストを作成する

必ず実施します。

4.2.4　HPAのKubernetesマニフェストの作成

4

HPAの設定をカスタマイズする

Kubernetesクラスタ全体のHPA関連のパラメタの設定を変更したい場合に実施します。

4.2.5　HPAの設定のカスタマイズ

5

HPAをデプロイする

必ず実施します。

4.2.6　HPAのデプロイ

6

次のKubernetesアプリケーションについて、Kubernetesマニフェストを作成、およびHelmチャートをカスタマイズする

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション

4.2.7　Kubernetesマニフェストの作成およびHelmチャートのカスタマイズ

7

Kubernetesアプリケーションをデプロイする

4.2.8　Kubernetesアプリケーションのデプロイ

セットアップ後に障害が発生した場合は、「4.5　オートスケールの障害対策」を参照して対応してください。

4.2.2　Metrics Serverのインストール（オンプレミス環境またはRed Hat OpenShift Container Platform環境限定）

この手順はオンプレミス環境またはRed Hat OpenShift Container Platform環境の場合だけ実施します。Metrics Serverの公式ドキュメントを参照して、Metrics Serverをインストールしてください。

4.2.3　Metrics Serverのデプロイ（オンプレミス環境またはRed Hat OpenShift Container Platform環境限定）

この手順はオンプレミス環境またはRed Hat OpenShift Container Platform環境の場合だけ実施します。Metrics Serverをデプロイします。HMP-PCTOとして設定が必要なパラメタを次の表に示します。

表4‒3　Metrics ServerにHMP-PCTOとして設定が必要なパラメタ

パラメタ

説明

image

Metrics Serverのコンテナイメージを設定してください。

使用できるMetrics Serverのバージョンについては、「1.4.3　関連プログラム」を参照してください。

service.port

Metrics Server用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないように設定してください。

4.2.4　HPAのKubernetesマニフェストの作成

以降の手順は、Metrics Serverが起動していることを前提としています。

以降に示す要件を満たすように、オートスケール用HPAのKubernetesマニフェストをオートスケール対象のKubernetesアプリケーションごとに作成します。このマニフェストファイルを作成することで、オートスケールを使用するために必要なHPAを利用できます。

HPAのKubernetesマニフェストの記述例を次に示します。HMP-PCTOとしてapiVersionに、autoscaling/v2を指定してください。

詳細な設定方法についてはKubernetesの公式のドキュメントを参照してください。

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: metrics-server-hpa     …1
  namespace: my-namespace
spec:
  scaleTargetRef:
    apiVersion: apps/v1       …2
    kind: Deployment          …3
    name: sql-participant     …4
  minReplicas: 1              …5
  maxReplicas: 2              …6
  metrics:                    …7
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50
  behavior:                   …8
    scaleDown:
      policies:
      - type: Pods
        value: 4
        periodSeconds: 60
    scaleUp:
      policies:
      - type: Percent
        value: 10
        periodSeconds: 60

＜説明＞

オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するnamespaceと同一のものを指定してください。

オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するapiVersionと同一のものを指定してください。

オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するkindと同一のものを指定してください。

オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するmetadata.nameと同一のものを指定してください。この例ではsql-participantをオートスケール対象としています。

スケールインできる最小のPod数を指定します。

スケールアウトできる最大のPod数を指定します

5.、6.のPod数については、取扱説明書「HMP-PCTOテクニカルガイド」のスケールアウト/スケールインのPod数の設定範囲の説明を参照し、その範囲内で指定してください。

「metrics:」の行から「averageUtilization: 50」の行で、評価対象メトリクスと閾値を指定します。

この例では、CPU、メモリを評価対象メトリクスとしています。

CPUを監視対象とするため、resource.nameにCPUを指定します。

監視対象（CPU）の平均利用率を閾値として設定するため、resource.target.typeにUtilizationを指定します。

CPUの平均利用率が50%になるように設定するため、resource.target.averageUtilizationに50を指定します。

「behavior:」の行から「periodSeconds: 60」の行で、スケーリングポリシーを指定します。

スケールアウト/スケールイン時のポリシーをそれぞれ設定します。ポリシーの設定は複数あります。

定数による単位秒当たりのスケーリング回数制限の設定

この例では、スケールイン時のポリシー（scaleDown）を設定しています。scaleDown.policies以下のtypeにPods、valueに4、periodSecondsに60を指定しているので、60秒間当たりにスケールインする最大Pod数は4台までの設定になります。

Pod数の割合による単位秒当たりのスケーリング回数制限の設定

この例では、スケールアウト時のポリシーの設定（scaleUp）を設定しています。scaleUp.policies以下のtypeにPercent、valueに10、periodSecondsに60を指定しているので、60秒間当たりにスケールアウトする台数は全体Pod数の10％までの設定になります。例として全体Pod数が20台の場合は、60秒間当たりにスケールアウトする最大Pod数は全体の10%である2台までになります。

4.2.5　HPAの設定のカスタマイズ

この手順は、Kubernetesクラスタ全体のHPA関連のパラメタの設定を変更したい場合に実施します。

kube-controller-managerは、Kubernetesクラスタで、DeploymentやServiceなどのKubernetesオブジェクトを管理するプロセスを実行する共通コンポーネントです。この設定項目の中にHPAに関する設定項目があります。オートスケール以外の設定項目の詳細については、Kubernetesの公式ドキュメントを参照してください。

kube-controller-managerの設定方法には、マニフェストファイルで設定する方法とコマンドで設定する方法の2つの方法があります。ここでは、コマンドでの設定方法を説明します。

コマンドで設定する場合の構文を次に示します。

kube-controller-manager [flags]

[flags]に設定項目のフラグ名と設定値を指定してコマンドを実行すると、kube-controller-managerの設定が反映されます。

オートスケールに影響のある主なフラグを次に示します。

--horizontal-pod-autoscaler-cpu-initialization-period

HPAがCPUのメトリクス評価を始めてから実際にスケーリングをするまでの待機時間です。Podの起動直後は、起動処理などで通常時よりもCPU使用率が高くなる場合があります。起動直後のPodのスケーリングを制御するため、このフラグで待機時間を設定します。

秒単位で時間を指定します。デフォルト値は300（5分）です。

--horizontal-pod-autoscaler-downscale-stabilization

HPAがあるPodのスケールインをしてから、次にスケールインをするまでの待機時間です。負荷状況が短い時間で変化する場合に、Podの稼働台数を安定させるためにこのフラグを使用します。

秒単位で時間を指定します。デフォルト値は300（5分）です。

--horizontal-pod-autoscaler-initial-readiness-delay

評価対象のPodのステータスがReadyに変化してから待機する時間の設定です。Readyになった直後はPodの負荷状況が安定していない場合があるため、Ready直後からPodが評価可能になるまで、最低限待機する時間を設定します。

秒単位で時間を指定します。デフォルト値は30（30秒）です。

--horizontal-pod-autoscaler-sync-period

HPAがメトリクスを評価する間隔の設定です。この設定値に従って、メトリクスの評価頻度が変化します。

秒単位で間隔を指定します。デフォルト値は15（15秒）です。

--horizontal-pod-autoscaler-tolerance

評価対象メトリクスの値と閾値を比較したときに、スケールアウト/スケールインを実施しない範囲を指定します。

実数で指定します。デフォルト値は0.1です。

メトリクスの評価間隔を30秒に設定する場合の、コマンドの実行例を次に示します。

kube-controller-manager --horizontal-pod-autoscaler-sync-period=30

4.2.6　HPAのデプロイ

Kubernetesコントロールプレーンの任意のパスに、オートスケール対象のKubernetesアプリケーションごとに作成したHPAのKubernetesマニフェスト（「4.2.4　HPAのKubernetesマニフェストの作成」参照）を配置し、デプロイしてください。

コマンド例を次に示します。

kubectl apply -f ./hpa-mediator.yaml

この例では、Kubernetesマニフェストのファイル名を「hpa-mediator.yaml」としています。

＜コマンドの実行結果の例＞

horizontalpodautoscaler.autoscaling/hpa-mediator created

このように、Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

4.2.7　Kubernetesマニフェストの作成およびHelmチャートのカスタマイズ

次のKubernetesアプリケーションについて、Kubernetesマニフェストを作成、およびHelmチャートをカスタマイズします。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション

Kubernetesマニフェストの作成およびHelmチャートのカスタマイズの詳細については、「2.6　Kubernetesマニフェスト作成」または「3.8　Helmチャートのカスタマイズ」を参照してください。

ここでは、スケーリング対応機能に関連する設定について説明します。設定するパラメタについては、「9.2　ユーザのコンポーネントに設定するパラメタ」および「9.3　HMP-PCTOとRASのコンポーネントに設定するパラメタ」を参照してください。

スケーリング対応機能を使用するかどうかを設定します。スケーリング対応機能を使用するには、use-scalingパラメタにtrue（デフォルト値）を指定します。この設定によって、Podが複数存在する状態でトランザクションが正しく決着するようになります。

use-scalingパラメタの指定値は、Orchestrator、Entity-Module、SQL-Participant、TCC-Participant、TP1-Bridge、およびMediatorで統一する必要があります。

スケーリング対応機能を使用する場合に必要な設定として、ルーティング機能の実現方法を指定します。set-routingパラメタにinnerまたはuserを指定します。

inner：HMP-PCTOが提供するルーティング機能を使用してルーティングする場合に指定します。この方法の場合、各種サービスのPodの前にロードバランサを配置する構成はできません。

user：ユーザがロードバランサを配置し、そのロードバランサでルーティングする場合に指定します。同一トランザクション内で同一のサービスに対して複数回通信する場合は、同じPodに対して通信するようにAPを実装し、ロードバランサを設定します。同一トランザクション内で異なるPodに対して通信した場合、トランザクションはロールバックされます。

例として、スケールインなどの理由でPodが削除されたケースで、同一トランザクション内で異なるPodに対して通信された場合、HMP-PCTOはトランザクションをロールバックします。

set-routingパラメタの指定値は、Orchestrator、Entity-Module、およびSQL-Participantで統一する必要があります。

HMP-PCTOの各コンテナイメージを識別するための識別子をtracing.instance-idパラメタに設定します。

起動するPod数を固定しないようにするため、オートスケール対象のKubernetesアプリケーションではreplicasを設定しないでください。

Metrics Serverを使用する場合に必要な設定として、オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストおよびHelmチャートでresourcesを指定します。

4.2.8　Kubernetesアプリケーションのデプロイ

Kubernetesアプリケーションをデプロイします。デプロイの手順については、「2.7　ユーザ責務のKubernetesアプリケーションのデプロイとアンデプロイ」、「3.9　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用」を参照してください。

デプロイ後、スケーリング対応機能の対象のすべてのKubernetesアプリケーションで、スケーリング対応機能が有効となっていることを示すKFSG82200-Iメッセージが起動時のログに出力されていることを確認してください。KFSG82200-Iメッセージが出力されていないKubernetesアプリケーションがある場合、トランザクションが正しく決着しないおそれがあります。

4.3　Prometheusでメトリクスを監視する場合のオートスケールのセットアップ

Prometheusでメトリクスを監視する場合のオートスケールのセットアップ手順について説明します。

4.3.1　Prometheusでメトリクスを監視する場合のオートスケールのセットアップの流れ

新規構築時にオートスケールを適用する場合は、次の手順でオートスケールのセットアップをしてください。オートスケール以外の設定および構築方法については、「2.　ユーザ責務のKubernetesアプリケーション開発」および「3.　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイ」を参照してください。

オートスケールを適用しないで構築した環境にオートスケールを適用する場合も同様に、次の手順でオートスケールのセットアップをしてください。ただし、手順5と6については、オートスケール対象のKubernetesアプリケーションに対して実施してください。

このセットアップ手順は、Prometheusが起動している状態で実施する必要があります。

オンプレミス環境またはRed Hat OpenShift Container Platform環境の場合

「(15)　Kubernetesアプリケーションのデプロイ」を参照してPrometheusをデプロイしてください。

Microsoft Azure環境の場合

Microsoft Azureの公式ドキュメントを参照して、マネージドPrometheusを設定およびデプロイしてください。Microsoft Azure環境のマネージドPrometheusの設定例については、「3.7.11　Microsoft AzureのマネージドPrometheusによるメトリクス収集のKubernetesマニフェストの作成」を参照してください。

Google Cloud Platform環境の場合

Google Cloud Platformの公式ドキュメントを参照して、マネージドPrometheusを設定およびデプロイしてください。Google Cloud Platform環境のマネージドPrometheusの設定例については、「3.7.12　Google Cloud PlatformのマネージドPrometheusによるメトリクス収集のKubernetesマニフェスト作成」を参照してください。

表4‒4　Prometheusでメトリクスを監視する場合のオートスケールのセットアップの流れ

手順

内容

備考

参照先

1

KEDAをインストールおよびデプロイする

オンプレミス環境またはRed Hat OpenShift Container Platform環境の場合に必ず実施します。

4.3.2　KEDAのインストールとデプロイ（オンプレミス環境またはRed Hat OpenShift Container Platform環境限定）

KEDAアドオンをインストールする

Microsoft Azure環境の場合必ず実施します。

4.3.3　KEDAアドオンのインストール（Microsoft Azure環境限定）

カスタム指標Stackdriverアダプタをインストールする

Google Cloud Platform環境の場合に必ず実施します。

4.3.4　カスタム指標Stackdriverアダプタのインストール（Google Cloud Platform環境限定）

2

HPAのKubernetesマニフェストを作成する

オンプレミス環境、Red Hat OpenShift Container Platform環境、またはMicrosoft Azure環境の場合に必ず実施します。

(1)　オンプレミス環境、Red Hat OpenShift Container Platform環境、またはMicrosoft Azure環境の場合

Google Cloud Platform環境の場合に必ず実施します。

(2)　Google Cloud Platform環境の場合

3

HPAの設定をカスタマイズする

Kubernetesクラスタ全体のHPA関連のパラメタの設定を変更したい場合に実施します。

4.3.6　HPAの設定のカスタマイズ

4

HPAをデプロイする

必ず実施します。

4.3.7　HPAのデプロイ

5

次のKubernetesアプリケーションについて、Kubernetesマニフェストを作成、およびHelmチャートをカスタマイズする

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション

4.3.8　Kubernetesマニフェストの作成およびHelmチャートのカスタマイズ

6

Kubernetesアプリケーションをデプロイする

4.3.9　Kubernetesアプリケーションのデプロイ

セットアップ後に障害が発生した場合は、「4.5　オートスケールの障害対策」を参照して対応してください。

4.3.2　KEDAのインストールとデプロイ（オンプレミス環境またはRed Hat OpenShift Container Platform環境限定）

この手順はオンプレミス環境またはRed Hat OpenShift Container Platform環境の場合だけ実施します。KEDAの公式ドキュメントを参照して、KEDAをインストールおよびデプロイしてください。インストールするKEDAのバージョンについては、「1.4.3　関連プログラム」を参照してください。

以降の手順は、KEDAのデプロイが完了していることを前提としています。

4.3.3　KEDAアドオンのインストール（Microsoft Azure環境限定）

この手順はMicrosoft Azure環境の場合だけ実施します。Microsoft Azureの公式ドキュメントを参照して、KEDAアドオンをインストールしてください。

以降の手順は、KEDAアドオンのインストールが完了していることを前提としています。

4.3.4　カスタム指標Stackdriverアダプタのインストール（Google Cloud Platform環境限定）

この手順はGoogle Cloud Platform環境の場合だけ実施します。Google Cloud Platformの公式ドキュメントを参照して、カスタム指標Stackdriverアダプタをクラスタにインストールしてください。

以降の手順は、カスタム指標Stackdriverアダプタのインストールが完了していることを前提としています。

4.3.5　HPAのKubernetesマニフェストの作成

オートスケール用HPAのKubernetesマニフェストをオートスケール対象のKubernetesアプリケーションごとに作成します。

(1)　オンプレミス環境、Red Hat OpenShift Container Platform環境、またはMicrosoft Azure環境の場合

オンプレミス環境、Red Hat OpenShift Container Platform環境、またはMicrosoft Azure環境の場合、以降に示す要件を満たすように、オートスケール用HPAのKubernetesマニフェストをオートスケール対象のKubernetesアプリケーションごとに作成します。このマニフェストファイルを作成することで、オートスケールを使用するために必要なHPAを利用できます。

HPAのKubernetesマニフェストの記述例を次に示します。HMP-PCTOとしてapiVersionに、keda.sh/v1alpha1を指定してください。

詳細な設定方法についてはKubernetesの公式のドキュメントを参照してください。

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: Prometheus-hpa
  namespace: my-namespace     …1
spec:
  scaleTargetRef:
    apiVersion: apps/v1       …2
    kind: Deployment          …3
    name: sql-participant     …4
  minReplicaCount: 1          …5
  maxReplicaCount: 2          …6
  triggers:                   …7
    - type: prometheus
      metadata:
        serverAddress: 'http://prometheus-server:8080'
        query: 'SUM(hmppcto_participant_transactions_inProcess_operations{id=~"^sql-participant-.*", status=~"NONE|PREPARING|COMMIT_VOTE|ROLLBACK_VOTE|COMMITTING|ROLLING_BACK|READ_ONLY|COMMITTED|ROLLED_BACK|ROLLED_BACK_BY_RM"})'
        threshold: "3"
  advanced:
    horizontalPodAutoscalerConfig:
      behavior:               …8
        scaleDown:
          policies:
            - type: Percent
              value: 50
              periodSeconds: 30
        scaleUp:
          policies:
            - type: Percent
              value: 50
              periodSeconds: 10

＜説明＞

オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するnamespaceと同一のものを指定してください。

オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するapiVersionと同一のものを指定してください。

オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するkindと同一のものを指定してください。

オートスケール対象のKubernetesアプリケーションのKubernetesマニフェストに記載するmetadata.nameと同一のものを指定してください。この例ではsql-participantをオートスケールの対象としています。

スケールインできる最小のPod数を指定します。

スケールアウトできる最大のPod数を指定します

5.、6.のPod数については、取扱説明書「HMP-PCTOテクニカルガイド」のスケールアウト/スケールインのPod数の設定範囲の説明を参照し、その範囲内で指定してください。

「triggers:」の行から「threshold: "3"」の行で、取得対象のメトリクスと閾値を指定します。

triggers.typeには、「prometheus」を指定します。

triggers.metadata.serverAddressには、Prometheusのアドレスを指定します。

triggers.metadata.queryには、Prometheusのクエリを指定します。この例では、sql-participantのPod1台当たりの仕掛中トランザクション数を取得対象のメトリクスとしています。このクエリは、SUM関数を使用し、存在するsql-participantのすべての仕掛中トランザクション数を取得しています。

イメージ図を次に示します。

図4‒4　triggers.metadata.queryの設定例イメージ図

HPAは、triggers.metadata.queryで設定された値を、オートスケール対象のKubernetesアプリケーションのPod数で除算し平均値を求めます。

「hmppcto_participant_transactions_inProcess_operations」は、HMP-PCTOが提供している仕掛中トランザクション数を取得するメトリクスです。このほかに使用できるメトリクスの一覧は「(3)　出力内容」を参照してください。

「hmppcto_participant_transactions_inProcess_operations」以降の{}で囲まれている範囲はメトリクスの検索条件を指定しています。この例では、正規表現を用いて、sql-participantの仕掛中トランザクションのメトリクスに絞り込んでいます。

クエリの書き方の詳細は、Prometheusの公式ドキュメントを参照してください。

triggers.metadata.thresholdには、閾値を指定します。HPAは、triggers.metadata.queryの設定で取得される平均値を、ここで指定された値に近づくように、対象のPodをオートスケールさせます。数値でもダブルクォーテーションで囲んで指定してください。

「behavior:」の行から「periodSeconds: 10」の行で、スケーリングポリシーを指定します。

設定方法は、「4.2.4　HPAのKubernetesマニフェストの作成」の項番8.を参照してください。

(2)　Google Cloud Platform環境の場合

Google Cloud Platform環境の場合、オートスケール用HPAのKubernetesマニフェストをオートスケール対象のKubernetesアプリケーションごとに作成します。このマニフェストファイルを作成することで、オートスケールを使用するために必要なHPAを利用できます。

PromQLクエリ（sumなど）を使用するときは、マネージドルールを作成し、HPAマニフェストの指標として指定してください。詳細な手順については、Google Cloud Platformの公式ドキュメントを参照してください。

4.3.6　HPAの設定のカスタマイズ

この手順は、Kubernetesクラスタ全体のHPA関連のパラメタの設定を変更したい場合に実施します。カスタマイズ方法については、「4.2.5　HPAの設定のカスタマイズ」を参照してください。

4.3.7　HPAのデプロイ

Kubernetesコントロールプレーンの任意のパスに、オートスケール対象のKubernetesアプリケーションごとに作成したHPAのKubernetesマニフェスト（「4.3.5　HPAのKubernetesマニフェストの作成」参照）を配置し、デプロイしてください。

コマンド例を次に示します。

kubectl apply -f ./hpa-mediator.yaml

この例では、Kubernetesマニフェストのファイル名を「hpa-mediator.yaml」としています。

＜コマンドの実行結果の例＞

scaledobject.keda.sh/hpa-mediator created

このように、Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

4.3.8　Kubernetesマニフェストの作成およびHelmチャートのカスタマイズ

次のKubernetesアプリケーションについて、Kubernetesマニフェストを作成、およびHelmチャートをカスタマイズします。

ユーザ責務のKubernetesアプリケーション

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーション

Kubernetesマニフェストの作成およびHelmチャートのカスタマイズの詳細については、「2.6　Kubernetesマニフェスト作成」または「3.8　Helmチャートのカスタマイズ」を参照してください。

ここでは、スケーリング対応機能に関連する設定について説明します。設定するパラメタについては、「9.2　ユーザのコンポーネントに設定するパラメタ」および「9.3　HMP-PCTOとRASのコンポーネントに設定するパラメタ」を参照してください。

スケーリング対応機能を使用するかどうかを設定します。スケーリング対応機能を使用するには、use-scalingパラメタにtrue（デフォルト値）を指定します。この設定によって、Podが複数存在する状態でトランザクションが正しく決着するようになります。

use-scalingパラメタの指定値は、use-scalingパラメタを指定できるすべてのKubernetesアプリケーションで統一する必要があります。

スケーリング対応機能を使用する場合に必要な設定として、ルーティング機能の実現方法を指定します。set-routingパラメタにinnerまたはuserを指定します。

inner：HMP-PCTOが提供するルーティング機能を使用してルーティングする場合に指定します。この方法の場合、各種サービスのPodの前にロードバランサを配置する構成はできません。

user：ユーザがロードバランサを配置し、そのロードバランサでルーティングする場合に指定します。同一トランザクション内で同一のサービスに対して複数回通信する場合、同じPodに対して通信するようにAPを実装し、ロードバランサを設定します。同一トランザクション内で異なるPodに対して通信した場合、トランザクションはロールバックされます。

例として、スケールインなどの理由でPodが削除されたケースで、同一トランザクション内で異なるPodに対して通信された場合、HMP-PCTOはトランザクションをロールバックします。

set-routingパラメタの指定値は、Orchestrator、Entity-Module、およびSQL-Participantで統一する必要があります。

HMP-PCTOの各コンテナイメージを識別するための識別子をtracing.instance-idパラメタに設定します。

起動するPod数を固定しないようにするため、オートスケール対象のKubernetesアプリケーションではreplicasを設定しないでください。

4.3.9　Kubernetesアプリケーションのデプロイ

Kubernetesアプリケーションをデプロイします。デプロイの手順については、「2.7　ユーザ責務のKubernetesアプリケーションのデプロイとアンデプロイ」、「3.9　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用」を参照してください。

デプロイ後、スケーリング対応機能の対象のすべてのKubernetesアプリケーションで、スケーリング対応機能が有効となっていることを示すKFSG82200-Iメッセージが起動時のログに出力されていることを確認してください。KFSG82200-Iメッセージが出力されていないKubernetesアプリケーションがある場合、トランザクションが正しく決着しないおそれがあります。

4.4　オートスケールのパラメタの設計とチューニング

スケーリング対応機能でオートスケールを使用する場合のパラメタの設計指針、チューニング方法、チューニング例などについて説明します。

4.4.1　設計指針

スケーリング対応機能でオートスケールを使用する場合は、スケールアウト/スケールインに使用する評価対象メトリクスの閾値、評価間隔、スケーリングポリシーなどの設定が必要です。以降で説明する内容に従ってチューニングし、適切な値を設定してください。なお、基本的なチューニングの設計方針に関しては、Kubernetesの公式のドキュメントを参照してください。

ここではHMP-PCTOとして特に注意が必要な観点について説明します。

オートスケールのチューニングの設計指針について、一般的な観点と、HMP-PCTO固有の観点それぞれに分けて説明します。

(1)　一般的な観点でのチューニングの設計指針

オートスケールをチューニングする上でのチューニング要素は、一般的に次の要素があります。

評価対象メトリクスの選定

評価対象メトリクスの閾値

評価対象メトリクスの評価間隔

評価対象メトリクスの許容範囲

これらの要素について、業務アプリケーションの要件に従って、次の観点でチューニングします。

表4‒5　オートスケールの一般的なチューニング要素に対するチューニング観点

項番

チューニング要素

チューニング観点

1

評価対象メトリクスの選定

オートスケールの評価対象の基準となるメトリクスを選定します。業務要件に合わせてシステムの負荷状況を評価するメトリクスを選定する必要があります。詳細は、「4.4.2　評価対象メトリクスの選定」を参照してください。

2

評価対象メトリクスの閾値

システムの過負荷を避けつつ、リソースの無駄を減らす閾値を設定する必要があります。このため、チューニング対象のKubernetesアプリケーションの過去のメトリクスデータを参照し、通常の負荷状態やピーク時の負荷の傾向を把握し、閾値を決定します。

3

評価対象メトリクスの評価間隔

負荷が急激に変動し、即座にスケーリングをすることが求められるシステムの場合は、短い評価間隔でメトリクスを評価する必要があります。一方、CPU使用率の瞬間的なスパイクの際に即座にスケーリングをすると、リソースの無駄が発生する場合もあります。

負荷の変動にどれだけ追従してスケーリングをするのかを踏まえて評価間隔を決定します。

4

評価対象メトリクスの許容範囲

評価対象メトリクスの許容範囲が狭いと、スケールするたびに閾値を超えてしまい、スケールアウト/スケールインを頻繁に繰り返してしまいます。そのため、適切な評価対象メトリクスの許容範囲を設定する必要があります。

(2)　HMP-PCTO固有の観点のチューニングの設計指針

オートスケールをチューニングする上でのHMP-PCTO固有のチューニング観点を次の表に示します。

表4‒6　HMP-PCTO固有のチューニング観点

項番

チューニング要素

チューニング観点

1

Mediatorのスケールインの頻度

Mediatorで短時間に多数のスケールインが発生すると、トランザクション決着に必要なMediator数を満たせないため、スケールアウトによって十分なMediator数になるまでトランザクションが決着しないおそれがあります。そのため、Mediatorはスケールインの頻度を制限する必要があります。

具体的には、1つのトランザクションが決着するまでにスケールインするMediator数を1つまでに制限する必要があります。1つのトランザクションが決着するまでに掛かる最大時間の目安は、SQL-Participantのsql.transaction-termination.timeout-in-millisパラメタの設定値＋40秒です。

Mediatorのスケールインの頻度について、次の図に示します。

図4‒5　Mediatorのスケールインの頻度

4.4.2　評価対象メトリクスの選定

HMP-PCTOでは、オートスケールでのメトリクスの収集方法によって、評価対象として利用できるメトリクスが異なります。

(1)　Metrics Serverでメトリクスを収集する場合

Metrics Serverでメトリクスを収集する場合に利用できるメトリクスを次に示します。なお、Podのリソースは、Pod内で動作しているコンテナすべてで利用しているリソースの合計値です。

PodのCPUリソース

HMP-PCTOのコンテナのCPUリソースだけに絞り込みたい場合は、「(2)　Prometheusでメトリクスを収集する場合」のprocess_cpu_usageメトリクスの利用を検討してください。

Podのメモリリソース

Podのメモリリソースは、javaプロセスのガベージコレクションによって変動するため、オートスケールの評価対象としても安定しないおそれがあります。

(2)　Prometheusでメトリクスを収集する場合

Prometheusでメトリクスを収集する場合に利用できるメトリクスは、「(3)　出力内容」を参照してください。利用できるメトリクスのうち、HMP-PCTOの評価対象メトリクスとして推奨するメトリクスを次の表に示します。

表4‒7　HMP-PCTOの評価対象メトリクスとして推奨するメトリクス

メトリクス名

メトリクスの説明

用途

対象のKubernetesアプリケーション

クエリの例

process_cpu_usage

Java VMプロセスのCPU使用率

HMP-PCTOのKubernetesアプリケーションのコンテナの最近のCPU利用率を評価対象メトリクスとしたい場合に利用します。

Orchestrator-Service

Relay-Service

Entity-Service(SQL)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

Mediator

SUM(process_cpu_usage{label_app_kubernetes_io_name="orchestrator"})※1

hmppcto_participant_transactions_inProcess_operations

処理中のトランザクションブランチ数

Pod当たりのトランザクションの処理件数が一定値を超えると性能が低下するなどの理由で、Pod当たりのトランザクションの処理件数を一定の範囲内に収めたいケースで評価対象メトリクスとして利用します。※²

Entity-Service(SQL)

Orchestrator-Service(SQL)

Alternate-Service(SQL)

SUM(hmppcto_participant_transactions_inProcess_operations{id=~"^sql-participant-.*", status=~"NONE|PREPARING|COMMIT_VOTE|ROLLBACK_VOTE|COMMITTING|ROLLING_BACK|READ_ONLY|COMMITTED|ROLLED_BACK|ROLLED_BACK_BY_RM"})

hmppcto_executor_active_threads

アクティブにタスクを実行しているスレッドのおおよその数

過去のメトリクスデータから、実行中のスレッド数が大きくなった場合に性能低下が見られるような傾向があるとき、評価対象メトリクスとして利用します。

Orchestrator-Service

Entity-Service(SQL)

Orchestrator-Service(SQL)

Alternate-Service

Alternate-Service(SQL)

Mediator

SUM(hmppcto_executor_active_threads{label_app_kubernetes_io_name="sql-participant"})※1

hmppcto_executor_queued_tasks

実行待ちのタスクのおおよその数

負荷がスレッドの処理能力を超えてタスクがキューに滞留し、性能低下する傾向があるとき、評価対象メトリクスとして利用します。※³

SUM(hmppcto_executor_queued_tasks{label_app_kubernetes_io_name="mediator"})※1

注※1

label_app_kubernetes_io_nameラベルは、Kubernetesマニフェストの.spec.template.metadata.labelsのapp.kubernetes.io/nameに指定した値です。label_app_kubernetes_io_nameラベルを表示するための設定方法については、「3.7.14　PrometheusのKubernetesマニフェスト作成」を参照してください。

注※2

評価対象メトリクスとして利用するには、トランザクションが処理中であることを示すステータスに絞り込む必要があります。トランザクションが処理中であることを示すステータスに絞り込むクエリの例は「クエリの例」列を参照してください。

注※3

負荷がスレッドの処理能力を超えていない場合は、実行待ちタスクにならないため、それを踏まえて閾値をチューニングしてください。

4.4.3　チューニング方法

「4.4.1　設計指針」で示したチューニング要素およびチューニング観点について、具体的なチューニング方法を説明します。

(1)　評価対象メトリクスの閾値のチューニング方法

次の流れでチューニングします。

チューニング対象のKubernetesアプリケーションの過去のメトリクスデータを参照して、通常の負荷状態やピーク時の負荷の傾向を把握した上で、閾値を検討します。

検討した閾値を基に、HPAのKubernetesマニフェストの設定値を修正します。

ただし、オートスケールのメトリクスの収集方法によって、チューニング対象のKubernetesアプリケーションの過去のメトリクスデータを参照する方法、およびHPAのKubernetesマニフェストの設定項目が異なります。メトリクスの収集方法ごとの差異を次の表に示します。

表4‒8　メトリクスの収集方法ごとの手順の差異

オートスケールのメトリクスの収集方法

チューニング対象のKubernetesアプリケーションの過去のメトリクスデータを参照する方法

HPAのKubernetesマニフェストの設定項目

Metrics Server

kubectl topコマンドを利用して、Podの負荷状況を監視します。

spec.metrics（「4.2.4　HPAのKubernetesマニフェストの作成」参照）

Prometheus

スケーリングの閾値で利用するクエリをPrometheusのWeb UIで確認します。PrometheusのWeb UIの確認方法の詳細については、「11.5.3　メトリクス」を参照してください。

spec.triggers（「4.3.5　HPAのKubernetesマニフェストの作成」参照）

(2)　評価対象メトリクスの評価間隔のチューニング方法

次の流れでチューニングします。

チューニング対象のKubernetesアプリケーションの過去のPod数の増減を確認して、負荷の変動とスケーリングの反応速度の関係を把握した上で、評価間隔を検討します。

チューニング対象のKubernetesアプリケーションの過去のPod数の増減を確認する方法は、「4.4.4　オートスケールによるPod数の増減を確認する方法」を参照してください。

検討した閾値を基に、kube-controller-managerの設定値のhorizontal-pod-autoscaler-sync-periodを修正します。

Metrics Serverでメトリクスを収集する場合の設定方法の詳細については、「4.2.5　HPAの設定のカスタマイズ」を参照してください。Prometheusでメトリクスを収集する場合の設定方法の詳細については、「4.3.6　HPAの設定のカスタマイズ」を参照してください。

Prometheusでメトリクスを収集する場合は、Prometheusがメトリクス対象から情報を収集する頻度を設定します。目安として、評価対象メトリクスの評価間隔の半分の時間を設定します。Prometheusの収集頻度はprometheus.scrape.intervalパラメタに設定してください。

prometheus.scrape.intervalパラメタの詳細については、「9.3.8　Prometheus」を参照してください。

(3)　評価対象メトリクスの許容範囲のチューニング方法

次の流れでチューニングします。

チューニング対象のKubernetesアプリケーションの過去のPod数の増減を確認して、頻繁にスケールイン/スケールアウトを繰り返していないかを確認します。

チューニング対象のKubernetesアプリケーションの過去のPod数の増減を確認する方法は、「4.4.4　オートスケールによるPod数の増減を確認する方法」を参照してください。

1.で問題がある場合、kube-controller-managerの設定値のhorizontal-pod-autoscaler-toleranceを修正します。

Metrics Serverでメトリクスを収集する場合の設定方法の詳細については、「4.2.5　HPAの設定のカスタマイズ」を参照してください。Prometheusでメトリクスを収集する場合の設定方法の詳細については、「4.3.6　HPAの設定のカスタマイズ」を参照してください。

(4)　Mediatorのスケールインの頻度のチューニング方法

次の流れでチューニングします。

チューニング対象のKubernetesアプリケーションの過去のPod数の増減を確認し、「4.4.1　設計指針」で説明した「トランザクションが決着するまでの最大時間の目安」よりも早いタイミングで同時に2台以上のMediatorのPodがスケールインしていないかを確認します。

確認方法については、「4.4.4　オートスケールによるPod数の増減を確認する方法」を参照してください。

1.で問題がある場合、HPAのKubernetesマニフェストの設定値を修正します。

オートスケールのメトリクスの収集方法によって、設定項目が異なります。オートスケールのメトリクスの収集方法ごとの設定項目の差異を次の表に示します。

表4‒9　オートスケールのメトリクスの収集方法ごとの設定項目の差異

オートスケールのメトリクスの収集方法

HPAのKubernetesマニフェストの設定項目

Metrics Server

spec.behavior.scaleDown.policies（「4.2.4　HPAのKubernetesマニフェストの作成」参照）

Prometheus

spec.advanced.horizontalPodAutoscalerConfig.behavior.scaleDown.policies（「4.3.5　HPAのKubernetesマニフェストの作成」参照）

4.4.4　オートスケールによるPod数の増減を確認する方法

オートスケールによるPod数の増減に関する情報は、メトリクスデータから確認できます。メトリクスデータの確認方法の詳細については、「11.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで「sum(up)by(label_app_kubernetes_io_name)」のクエリを入力し、Executeボタンを押すことでGraphタブに次の図に示す状態で表示されます。

図4‒6　PrometheusのWeb UI

4.4.5　チューニング例

オートスケールを使用する際に、どのような考えに基づいて設定値をチューニングするかの具体例を示します。具体例では、「1.　評価対象とするメトリクスの選定」、「2.　評価対象のメトリクスの閾値の検討」、「3.　評価対象のメトリクスの評価間隔の検討」の順にチューニングする例を説明します。

オートスケール設定前の状態

この例の前提条件として、オートスケールの設定前の状態を次に示します。

業務要件として、1トランザクション当たりの処理時間は5秒を上限とする。

業務要件として、高負荷状態を許容できる時間は、30秒までとする。

平常時の負荷状況ではユーザ要件を満たせている。

ピーク時の負荷状況では1トランザクション当たりの処理時間5秒を超過してしまい、ユーザ要件を満たせていない。

Podが起動を開始してからトランザクションが受け付けられるようになるまでに必要な時間は20秒である。

オートスケールを適用する前の負荷テストなどでこれらの前提が分かっている場合、オートスケールを使用して、ピーク時でも1トランザクション当たりの処理時間5秒を実現することを考えます。

評価対象とするメトリクスの選定

過去のメトリクス情報を参照してトランザクションの処理時間と相関のあるメトリクスを調査し、評価対象にするメトリクスを選定します。

調査の結果、次のことが判明したと仮定します。

ピーク時に20秒程度の短い時間で急激にCPU利用率が増加し、CPU利用率が80%を超過するとトランザクションの処理時間が大きく増加する。

これによって、評価対象のメトリクスとしてCPU利用率を使用します。

評価対象のメトリクスの閾値の検討

調査の結果、CPU利用率が80%を超過するとトランザクションの平均処理時間が大きく増加することが分かっているため、CPU利用率80%を基準に考えます。スケールアウトの場合、ユーザ要件を満たせないタイミング（80%を超過してからスケールアウトによってPodが起動し安定稼働するまでの間）があるため、10%のバッファを持たせて70%を基準とします。

評価対象のメトリクスの評価間隔の検討

業務要件から、高負荷状態を許容できる時間を30秒までとしたい場合に関して考えます。Podが起動を開始してからトランザクションが受け付けられるようになるまでの時間が20秒のため、最低でも10秒間に1回、メトリクスの値を評価する必要があります。そのため、メトリクスの評価間隔を10秒に設定します。これに伴い、Prometheusがメトリクス対象から情報を取得する頻度を5秒に設定します。

これらの手順を踏まえると、次の設定になります。

kube-controller-managerの設定

kube-controller-manager --horizontal-pod-autoscaler-sync-period 10

HPAによるメトリクスの評価間隔を10秒に変更します（「3.　評価対象のメトリクスの評価間隔の検討」の設定）。

HPAのKubernetesマニフェストの記述例

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: metrics-server-hpa
  namespace: my-namespace
spec:
  (省略)
  metrics:
  - type: Resource
    resource:
      name: cpu                …1
      target:
        type: Utilization
        averageUtilization: 70 …2
  (以下、省略)

＜説明＞

評価対象のメトリクスにCPUを設定します。

メトリクスの閾値は平均CPU利用率を70%に設定します（「1.　評価対象とするメトリクスの選定」および「2.　評価対象のメトリクスの閾値の検討」）。

4.5　オートスケールの障害対策

オートスケールのセットアップ後に、HMP-PCTOのPodが想定どおりにスケーリングしないときの対策について説明します。

4.5.1　Metrics Serverでメトリクスを監視する場合の障害対策

Metrics Serverでメトリクスを監視する場合に、HMP-PCTOのPodが想定どおりにスケーリングしないときの主な原因と対策を次の表に示します。

表4‒10　オンプレミス環境またはRed Hat OpenShift Container Platform環境の場合の、オートスケールの障害の主な原因と対策（Metrics Serverでメトリクスを監視するとき）

項番

現象

主な原因

対策

1

負荷に応じてスケールアウト/スケールインしない※

Metrics Serverに障害が発生している

Metrics Serverの公式ドキュメントを参照してMetrics Serverの障害について対策してください。そのあと、「4.2.3　Metrics Serverのデプロイ（オンプレミス環境またはRed Hat OpenShift Container Platform環境限定）」を再度実施してください。

2

HPAに障害が発生している

HPAの公式ドキュメントを参照してHPAの障害について対策してください。そのあと、「4.2.6　HPAのデプロイ」を再度実施してください。

3

HPAのKubernetesマニフェストでのスケーリングに関する設定が誤っている

「4.2.4　HPAのKubernetesマニフェストの作成」の設定内容を見直し、正しく設定されていることを確認してください。

そのあと、「4.2.6　HPAのデプロイ」を再度実施してください。

「4.4　オートスケールのパラメタの設計とチューニング」を参照してスケーリングに関する設定をチューニングしてください。

そのあと、「4.2.6　HPAのデプロイ」を再度実施してください。

注※

Prometheusで「sum(up)by(label_app_kubernetes_io_name)」クエリを実行すると、オートスケール対象の各KubernetesアプリケーションのPod数の推移を確認できます。Prometheusのクエリの実行方法は、「(a)　PrometheusサーバのWeb UIによる参照」を参照してください。

なお、label_app_kubernetes_io_nameラベルは、Kubernetesマニフェストの.spec.template.metadata.labelsのapp.kubernetes.io/nameに指定した値です。label_app_kubernetes_io_nameラベルを表示するための設定方法については、「3.7.14　PrometheusのKubernetesマニフェスト作成」を参照してください。

表4‒11　Microsoft Azure環境の場合の、オートスケールの障害の主な原因と対策（Metrics Serverでメトリクスを監視するとき）

項番

現象

主な原因

対策

1

負荷に応じてスケールアウト/スケールインしない※

Metrics Serverに障害が発生している

Microsoft Azureの公式ドキュメント、およびMetrics Serverの公式ドキュメントを参照してMetrics Serverの障害について対策してください。

2

HPAに障害が発生している

Microsoft Azureの公式ドキュメント、およびHPAの公式ドキュメントを参照してHPAの障害について対策してください。そのあと、「4.2.6　HPAのデプロイ」を再度実施してください。

3

HPAのKubernetesマニフェストでのスケーリングに関する設定が誤っている

「4.2.4　HPAのKubernetesマニフェストの作成」の設定内容を見直し、正しく設定されていることを確認してください。

そのあと、「4.2.6　HPAのデプロイ」を再度実施してください。

「4.4　オートスケールのパラメタの設計とチューニング」を参照してスケーリングに関する設定をチューニングしてください。

そのあと、「4.2.6　HPAのデプロイ」を再度実施してください。

注※

Prometheusで「sum(up)by(label_app_kubernetes_io_name)」クエリを実行すると、オートスケール対象の各KubernetesアプリケーションのPod数の推移を確認できます。Prometheusのクエリの実行方法は、「(a)　PrometheusサーバのWeb UIによる参照」を参照してください。

なお、label_app_kubernetes_io_nameラベルは、Kubernetesマニフェストの.spec.template.metadata.labelsのapp.kubernetes.io/nameに指定した値です。label_app_kubernetes_io_nameラベルを表示するための設定方法については、「3.7.14　PrometheusのKubernetesマニフェスト作成」を参照してください。

表4‒12　Google Cloud Platform環境の場合の、オートスケールの障害の主な原因と対策（Metrics Serverでメトリクスを監視するとき）

項番

現象

主な原因

対策

1

負荷に応じてスケールアウト/スケールインしない※

Metrics Serverに障害が発生している

Google Cloud Platformの公式ドキュメント、およびMetrics Serverの公式ドキュメントを参照してMetrics Serverの障害について対策してください。

2

HPAに障害が発生している

Google Cloud Platformの公式ドキュメント、Microsoft Azureの公式ドキュメント、およびHPAの公式ドキュメントを参照してHPAの障害について対策してください。そのあと、「4.2.6　HPAのデプロイ」を再度実施してください。

3

HPAのKubernetesマニフェストでのスケーリングに関する設定が誤っている

「4.2.4　HPAのKubernetesマニフェストの作成」の設定内容を見直し、正しく設定されていることを確認してください。

そのあと、「4.2.6　HPAのデプロイ」を再度実施してください。

「4.4　オートスケールのパラメタの設計とチューニング」を参照してスケーリングに関する設定をチューニングしてください。

そのあと、「4.2.6　HPAのデプロイ」を再度実施してください。

注※

Prometheusで「sum(up)by(joy)」クエリを実行すると、オートスケール対象の各KubernetesアプリケーションのPod数の推移を確認できます。Prometheusのクエリの実行方法は、「(a)　PrometheusサーバのWeb UIによる参照」を参照してください。

4.5.2　Prometheusでメトリクスを監視する場合の障害対策

Prometheusでメトリクスを監視する場合に、HMP-PCTOのPodが想定どおりにスケーリングしないときの主な原因と対策を次の表に示します。

表4‒13　オンプレミス環境またはRed Hat OpenShift Container Platform環境の場合の、オートスケールの障害の主な原因と対策（Prometheusでメトリクスを監視するとき）

項番

現象

主な原因

対策

1

負荷に応じてスケールアウト/スケールインしない※

KEDAに障害が発生している

KEDAの公式ドキュメントを参照してKEDAの障害について対策してください。そのあと、「4.3.2　KEDAのインストールとデプロイ（オンプレミス環境またはRed Hat OpenShift Container Platform環境限定）」を再度実施してください。

2

Prometheusに障害が発生している

「(3)　メトリクス」を参照してPrometheusの障害について対策してください。

3

HPAに障害が発生している

HPAの公式ドキュメントを参照してHPAの障害について対策してください。そのあと、「4.3.7　HPAのデプロイ」を再度実施してください。

4

HPAのKubernetesマニフェストでのスケーリングに関する設定が誤っている

「4.3.5　HPAのKubernetesマニフェストの作成」の設定内容を見直し、正しく設定されていることを確認してください。

そのあと、「4.3.7　HPAのデプロイ」を再度実施してください。

「4.4　オートスケールのパラメタの設計とチューニング」を参照してスケーリングに関する設定をチューニングしてください。

そのあと、「4.3.7　HPAのデプロイ」を再度実施してください。

注※

Prometheusで「sum(up)by(label_app_kubernetes_io_name)」クエリを実行すると、オートスケール対象の各KubernetesアプリケーションのPod数の推移を確認できます。Prometheusのクエリの実行方法は、「(a)　PrometheusサーバのWeb UIによる参照」を参照してください。

なお、label_app_kubernetes_io_nameラベルは、Kubernetesマニフェストの.spec.template.metadata.labelsのapp.kubernetes.io/nameに指定した値です。label_app_kubernetes_io_nameラベルを表示するための設定方法については、「3.7.14　PrometheusのKubernetesマニフェスト作成」を参照してください。

表4‒14　Microsoft Azure環境の場合の、オートスケールの障害の主な原因と対策（Prometheusでメトリクスを監視するとき）

項番

現象

主な原因

対策

1

負荷に応じてスケールアウト/スケールインしない※

KEDAがPrometheusとの通信に失敗する

Microsoft Azureの公式ドキュメントを参照して、KEDAアドオンのインストールを実施してください。そのあと、「4.3.5　HPAのKubernetesマニフェストの作成」を再度実施してください。

2

KEDAに障害が発生している

Microsoft Azureの公式ドキュメントおよびKEDAの公式ドキュメントを参照して、KEDAの障害について対策してください。そのあと、「4.3.3　KEDAアドオンのインストール（Microsoft Azure環境限定）」を再度実施してください。

3

Prometheusに障害が発生している

「(3)　メトリクス」を参照してPrometheusの障害について対策してください。

4

HPAに障害が発生している

Microsoft Azureの公式ドキュメントおよびHPAの公式ドキュメントを参照して、HPAの障害について対策してください。そのあと、「4.3.7　HPAのデプロイ」を再度実施してください。

5

HPAのKubernetesマニフェストでのスケーリングに関する設定が誤っている

「4.3.5　HPAのKubernetesマニフェストの作成」の設定内容を見直し、正しく設定されていることを確認してください。

そのあと、「4.3.7　HPAのデプロイ」を再度実施してください。

「4.4　オートスケールのパラメタの設計とチューニング」を参照してスケーリングに関する設定をチューニングしてください。

そのあと、「4.3.7　HPAのデプロイ」を再度実施してください。

注※

Prometheusで「sum(up)by(label_app_kubernetes_io_name)」クエリを実行すると、オートスケール対象の各KubernetesアプリケーションのPod数の推移を確認できます。Prometheusのクエリの実行方法は、「(a)　PrometheusサーバのWeb UIによる参照」を参照してください。

なお、label_app_kubernetes_io_nameラベルは、Kubernetesマニフェストの.spec.template.metadata.labelsのapp.kubernetes.io/nameに指定した値です。label_app_kubernetes_io_nameラベルを表示するための設定方法については、「3.7.14　PrometheusのKubernetesマニフェスト作成」を参照してください。

表4‒15　Google Cloud Platform環境の場合の、オートスケールの障害の主な原因と対策（Prometheusでメトリクスを監視するとき）

項番

現象

主な原因

対策

1

負荷に応じてスケールアウト/スケールインしない※

カスタム指標Stackdriverアダプタに障害が発生している

Google Cloud Platformの公式ドキュメントを参照してカスタム指標Stackdriverアダプタの障害について対策してください。そのあと、「4.3.4　カスタム指標Stackdriverアダプタのインストール（Google Cloud Platform環境限定）」を再度実施してください。

2

Prometheusに障害が発生している

「(3)　メトリクス」を参照してPrometheusの障害について対策してください。

3

HPAに障害が発生している

Google Cloud Platformの公式ドキュメント、およびHPAの公式ドキュメントを参照してHPAの障害について対策してください。そのあと、「4.3.7　HPAのデプロイ」を再度実施してください。

4

HPAのKubernetesマニフェストでのスケーリングに関する設定が誤っている

「4.3.5　HPAのKubernetesマニフェストの作成」の設定内容を見直し、正しく設定されていることを確認してください。

そのあと、「4.3.7　HPAのデプロイ」を再度実施してください。

「4.4　オートスケールのパラメタの設計とチューニング」を参照してスケーリングに関する設定をチューニングしてください。

そのあと、「4.3.7　HPAのデプロイ」を再度実施してください。

5

カスタム指標StackdriverアダプタがPrometheusとの通信に失敗する

Google Cloud Platformの公式ドキュメントを参照してカスタム指標Stackdriverアダプタをインストールしてください。そのあと、「4.3.5　HPAのKubernetesマニフェストの作成」を再度実施してください。

注※

Prometheusで「sum(up)by(joy)」クエリを実行すると、オートスケール対象の各KubernetesアプリケーションのPod数の推移を確認できます。Prometheusのクエリの実行方法は、「(a)　PrometheusサーバのWeb UIによる参照」を参照してください。

第5編　Kubernetesクラスタ外のHMP-PCTOの運用

5　TP1-Converterの運用（通常版かつTP1-Bridge限定）

5.1　TP1-Converterの運用の流れ（通常版かつTP1-Bridge限定）

TP1連携機能の中のTP1-Converterは、uCosminexus Service Platform上で動作するJ2EEアプリケーションです。ここでは、TP1-Converterを使用するための運用について説明します。

なお、ここでの説明は、uCosminexus Service Platformのインストールおよび環境設定が完了していることを前提としています。uCosminexus Service Platformのインストールおよび環境設定については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」を参照してください。また、運用方法の中で使用するuCosminexus Service Platformのコマンドの詳細な仕様については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」、およびマニュアル「Cosminexus アプリケーションサーバ リファレンス コマンド編」を参照してください。

TP1-Converterを使用するための作業の流れを、次の図に示します。

図5‒1　TP1-Converterを使用するための作業の流れ

5.2　データ変換定義ファイルの作成（通常版かつTP1-Bridge限定）

TP1-Converterのデータ変換で使用するデータ変換定義ファイルは、uCosminexus Service Architectの機能を使用して作成します。

ここでは、OpenTP1のSPPがCOBOLで作成されている場合を例に説明します。

5.2.1　データ変換で使用するファイル作成の流れ（通常版かつTP1-Bridge限定）

データ変換で使用するファイルを作成する流れを次に示します。

図5‒2　データ変換で使用するファイルを作成する流れ

＜説明＞

バイナリフォーマット定義ファイルの作成

COBOL2FDXコンバータを使用して、COBOL登録原文集ファイルからバイナリフォーマット定義ファイルを作成します。

XMLスキーマの作成

cscjson2xsdコマンドを実行して、JSON形式のファイルからXMLスキーマを作成します。

マッピング定義ファイルの作成

マッピング定義エディタを使用して、1.で作成したバイナリフォーマット定義ファイル、および2.で作成したXMLスキーマからマッピング定義ファイルを作成します。

データ変換定義ファイルの作成

マッピング定義エディタを使用して、3.で作成したマッピング定義ファイルをからデータ変換定義ファイルを作成します。

TP1-Converterのデータ変換

TP1-Converterは、1.で作成したバイナリフォーマット定義ファイル、および4.で作成したデータ変換定義ファイルを使用してデータ変換をします。

表5‒1　データ変換で使用するために作成するファイル

ファイル名

拡張子

作成元になるファイル

作成方法

ファイルの用途

参照先

バイナリフォーマット定義ファイル

fdx

COBOL登録原文集ファイル※

COBOL2FDXコンバータ※

マッピング定義ファイルの作成

データ変換

5.2.2　バイナリフォーマット定義ファイル（通常版かつTP1-Bridge限定）

XMLスキーマ

xsd

JSON形式のファイル

cscjson2xsdコマンド

マッピング定義ファイルの作成

5.2.3　XMLスキーマ（通常版かつTP1-Bridge限定）

マッピング定義ファイル

mdo

バイナリフォーマット定義ファイル

XMLスキーマ

マッピング定義エディタ

データ変換定義ファイルの作成

5.2.4　マッピング定義ファイル（通常版かつTP1-Bridge限定）

データ変換定義ファイル

xsl

マッピング定義ファイル

マッピング定義エディタ

データ変換

5.2.5　データ変換定義ファイル（通常版かつTP1-Bridge限定）

注※

C言語から作成する場合は使用しません。

5.2.2　バイナリフォーマット定義ファイル（通常版かつTP1-Bridge限定）

バイナリフォーマット定義ファイルは、マッピング定義ファイルの作成時およびデータ変換時に使用します。

バイナリフォーマット定義ファイルは、OpenTP1への要求電文または応答電文のCOBOL登録原文集ファイルから作成します。なお、要求電文と応答電文それぞれで作成する必要があります。要求電文から作成する場合は、「<サービス名>_jtob.fdx」のファイル名で作成してください。また、応答電文から作成する場合は、「<サービス名>_btoj.fdx」のファイル名で作成してください。

バイナリフォーマット定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、COBOL登録集原文ファイルからのバイナリフォーマット定義ファイルの生成に関する説明を参照してください。

メモ

OpenTP1のSPPがC言語で作成されている場合は、バイナリフォーマット定義ファイルを作成する方法が異なります。C言語の場合のバイナリフォーマット定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、バイナリフォーマット定義ファイルの新規作成に関する説明を参照してください。

5.2.3　XMLスキーマ（通常版かつTP1-Bridge限定）

XMLスキーマは、マッピング定義ファイルの作成時に使用します。

XMLスキーマは、Orchestrator/Entity-ModuleからTP1-Bridgeへの要求電文または応答電文のJSON形式データから作成します。なお、要求電文と応答電文それぞれで作成する必要があります。

XMLスキーマの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、JSON形式データに対応するXMLスキーマの生成に関する説明を参照してください。

5.2.4　マッピング定義ファイル（通常版かつTP1-Bridge限定）

マッピング定義ファイルは、データ変換定義ファイルの作成時に使用します。

マッピング定義ファイルは、バイナリフォーマット定義ファイルおよびXMLスキーマから作成します。なお、要求電文と応答電文それぞれで作成する必要があります。

マッピング定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、データ変換の定義手順に関する説明を参照してください。

5.2.5　データ変換定義ファイル（通常版かつTP1-Bridge限定）

データ変換定義ファイルは、データ変換時に使用します。

データ変換定義ファイルは、マッピング定義ファイルから作成します。なお、要求電文と応答電文それぞれで作成する必要があります。要求電文から作成する場合は、「<サービス名>_jtob.xsl」のファイル名で作成してください。また、応答電文から作成する場合は、「<サービス名>_btoj.xsl」のファイル名で作成してください。

データ変換定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、データ変換の定義手順に関する説明を参照してください。

5.3　J2EEサーバのセットアップ（通常版かつTP1-Bridge限定）

uCosminexus Service Platformのcjsetup（J2EEサーバのセットアップとアンセットアップ）コマンドで、J2EEサーバをセットアップします。

次に示すコマンドを実行してください。

/opt/Cosminexus/CC/server/bin/cjsetup TP1Converter

コマンドの戻り値が0の場合は、J2EEサーバのセットアップは正常に終了しています。

コマンドの戻り値が0以外の場合は、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」、およびマニュアル「Cosminexus アプリケーションサーバ リファレンス コマンド編」を参照してJ2EEサーバのセットアップが正常に終了しなかった原因を取り除いてください。

5.4　TP1-Converterの資材の配置（通常版かつTP1-Bridge限定）

uCosminexus Service Platformの環境にTP1-Converterが使用する資材を配置します。

TP1-Converterが使用する資材の配置元と配置先の場所を次に示します。

表5‒2　TP1-Converterが使用する資材の配置元と配置先の場所

項番

ファイル名

配置元の場所

配置先の場所

1

TP1-Converter用アプリケーションライブラリ（tp1converter.war）

<Hitachi Microservices Platform - Bridge Option for OpenTP1提供媒体のルートフォルダ>/TP1-Converter/lib/

uCosminexus Service Platform実行環境の任意のディレクトリ

2

J2EEサーバ用オプション定義ファイル（usrconf.cfg）

<Hitachi Microservices Platform - Bridge Option for OpenTP1提供媒体のルートフォルダ>/TP1-Converter/usrconf/

/opt/Cosminexus/CC/server/usrconf/ejb/TP1Converter/

3

J2EEサーバ用ユーザプロパティファイル（usrconf.properties）

<Hitachi Microservices Platform - Bridge Option for OpenTP1提供媒体のルートフォルダ>/TP1-Converter/usrconf/

/opt/Cosminexus/CC/server/usrconf/ejb/TP1Converter/

4

データ変換定義ファイル

「5.2　データ変換定義ファイルの作成（通常版かつTP1-Bridge限定）」で作成したファイルの出力先

/opt/Cosminexus/CC/server/usrconf/ejb/TP1Converter/※

サービスグループに対応したディレクトリを追加して配置します。

注※

データ変換定義ファイルの配置先の場所は、usrconf.propertiesのjp.co.Hitachi.soft.hmppcto.tp1.data-conversion.definition-file.directoryの設定で変更できます。

5.5　J2EEサーバの開始（通常版かつTP1-Bridge限定）

uCosminexus Service Platformのcjstartsv（J2EEサーバの開始）で、J2EEサーバを開始します。

次に示すコマンドを実行してください。

/opt/Cosminexus/CC/server/bin/cjstartsv TP1Converter

cjstartsvコマンド実行時の標準出力にKDJE30028-Iメッセージが出力された場合は、J2EEサーバは正常に開始しています。

KDJE30028-Iメッセージが出力されずエラーメッセージが出力された場合は、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」、およびマニュアル「Cosminexus アプリケーションサーバ リファレンス コマンド編」を参照してJ2EEサーバが正常に開始しなかった原因を取り除いてください。

5.6　TP1-Converterのインポート（通常版かつTP1-Bridge限定）

uCosminexus Service Platformのcjimportwar（WARアプリケーションのインポート）コマンドで、TP1-Converterをインポートします。

次に示すコマンドを実行してください。

/opt/Cosminexus/CC/admin/bin/cjimportwar TP1Converter -f /tmp/tp1converter.war※

注※

TP1-Converter用アプリケーションライブラリは、uCosminexus Service Platform実行環境の任意のディレクトリに配置してください。この例では/tmp/としています。

usrconf.propertiesのejbserver.naming.hostまたはejbserver.naming.portの値をデフォルト値から変更している場合は、-nameserverオプションでプロバイダURLを指定してください。

コマンドの戻り値が0の場合は、インポートが正常に終了しています。

コマンドの戻り値が0以外の場合は、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」、およびマニュアル「Cosminexus アプリケーションサーバ リファレンス コマンド編」を参照してインポートが正常に終了しなかった原因を取り除いてください。

5.7　TP1-Converterの開始（通常版かつTP1-Bridge限定）

uCosminexus Service Platformのcjstartapp（J2EEアプリケーションの開始）コマンドで、TP1-Converterを開始します。

次に示すコマンドを実行してください。

/opt/Cosminexus/CC/admin/bin/cjstartapp TP1Converter -name tp1converter

usrconf.propertiesのejbserver.naming.hostまたはejbserver.naming.portの値をデフォルト値から変更している場合は、-nameserverオプションでプロバイダURLを指定してください。

コマンドの戻り値が0の場合は、TP1-Converterは正常に開始しています。

コマンドの戻り値が0以外の場合は、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」、およびマニュアル「Cosminexus アプリケーションサーバ リファレンス コマンド編」を参照してTP1-Converterが正常に開始しなかった原因を取り除いてください。

なお、TP1-ConverterとTP1-Bridgeは、どちらを先に開始してもかまいません。

5.8　データ変換定義の再作成（通常版かつTP1-Bridge限定）

TP1-Converterの起動中にOpenTP1のSPPを修正し、データ変換定義ファイルの更新が必要になった場合は、データ変換定義ファイルを再作成してください。

再作成したデータ変換定義ファイルは、「5.4　TP1-Converterの資材の配置（通常版かつTP1-Bridge限定）」のデータ変換定義ファイルの配置先に配置してください。

データ変換定義ファイルは、SPPの修正内容に応じて更新してください。SSPの修正内容とデータ変換定義ファイルの更新方法を次に示します。

表5‒3　SSPの修正内容とデータ変換定義ファイルの更新方法

項番

SSPの修正内容

データ変換定義ファイルの更新方法

1

サービスの要求データ、または応答データの変更

サービスに対応したデータ変換定義ファイルを更新する。

2

サービスの追加

サービスに対応したデータ変換定義ファイルを追加する。

3

サービスグループの追加

サービスグループに対応したディレクトリを追加する。

4

サービスの削除

サービスに対応したデータ変換定義ファイルを削除する。

5

サービスグループの削除

サービスグループに対応したディレクトリを削除する。

データ変換定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、データ変換の定義手順に関する説明を参照してください。

5.9　キャッシュのリフレッシュ（通常版かつTP1-Bridge限定）

TP1-Converterの起動中にデータ変換定義ファイルを更新した場合は、TP1-Converterのキャッシュのリフレッシュを実行してください。キャッシュのリフレッシュを実行することで、キャッシュ中のデータ変換定義ファイルが更新され、以降のデータ変換には更新後のデータ変換定義ファイルの定義が適用されます。

キャッシュのリフレッシュは、TP1-Converterにhttpリクエストを送信することで実行されます。キャッシュのリフレッシュを実行するためのhttpリクエストのURLを、次に示します。

http://<NIO HTTPサーバのホスト名>:<NIO HTTPサーバのポート番号>/tp1converter/cache/refresh[?servicegroup=<サービスグループ名>]

キャッシュのリフレッシュは、サービスグループ単位のリフレッシュ、またはキャッシュ全体のリフレッシュを選択できます。1つのSPPを更新した場合は、サービスグループ単位でのリフレッシュを推奨します。

次に示す条件の場合のキャッシュのリフレッシュの実行例を示します。

httpリクエスト送信に使用するクライアント：curlコマンド

NIO HTTPサーバのホスト名：hostname

NIO HTTPサーバのポート番号：8008

＜サービスグループ名svg1のリフレッシュの実行例＞

curl -X GET http://hostname:8008/tp1converter/cache/refresh?servicegroup=svg1

＜キャッシュ全体のリフレッシュの実行例＞

curl -X GET http://hostname:8008/tp1converter/cache/refresh

キャッシュのリフレッシュが成功した場合は、httpステータスコード200が返されます。

キャッシュのリフレッシュが失敗した場合は、httpステータスコード200以外が返されます。httpステータスコードが400番台の場合は、指定したURLに誤りがないか、またはTP1-Converterが停止していないかを確認して、失敗の原因を取り除いてください。httpステータスコードが500番台の場合は、TP1-Converterのキャッシュリフレッシュ処理で障害が発生しています。TP1-Converterが出力するログを参照して、失敗の原因を取り除いてください。

重要

データ変換時に参照するキャッシュの不整合を避けるために、更新するSPPを停止した状態で、キャッシュのリフレッシュリクエストを送信してください。キャッシュのリフレッシュが終了したあとに、SPPを再起動してください。

キャッシュのリフレッシュ中はキャッシュに対して排他制御をするため、データ変換処理が待たされることがあります。そのため、キャッシュのリフレッシュは、動作しているトランザクションが少ない時間帯に実行することを推奨します。

5.10　TP1-Converterの終了（通常版かつTP1-Bridge限定）

uCosminexus Service Platformのcjstopapp（J2EEアプリケーションの停止）コマンドで、TP1-Converterを終了します。

次に示すコマンドを実行してください。

/opt/Cosminexus/CC/admin/bin/cjstopapp TP1Converter -name tp1converter

usrconf.propertiesのejbserver.naming.hostまたはejbserver.naming.portの値をデフォルト値から変更している場合は、-nameserverオプションでプロバイダURLを指定してください。

コマンドの戻り値が0の場合は、TP1-Converterは正常に終了しています。

コマンドの戻り値が0以外の場合は、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」、およびマニュアル「Cosminexus アプリケーションサーバ リファレンス コマンド編」を参照してTP1-Converterが正常に終了しなかった原因を取り除いてください。

なお、TP1-ConverterとTP1-Bridgeは、どちらを先に終了してもかまいません。

5.11　J2EEサーバの終了（通常版かつTP1-Bridge限定）

uCosminexus Service Platformのcjstopsv（J2EEサーバの終了）コマンドで、J2EEサーバを終了します。

次に示すコマンドを実行してください。

/opt/Cosminexus/CC/server/bin/cjstopsv TP1Converter

コマンドの戻り値が0の場合は、J2EEサーバは正常に終了しています。

コマンドの戻り値が0以外の場合は、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」、およびマニュアル「Cosminexus アプリケーションサーバ リファレンス コマンド編」を参照してJ2EEサーバが正常に終了しなかった原因を取り除いてください。

5.12　キャッシュの参照（通常版かつTP1-Bridge限定）

TP1-Converterのキャッシュに登録されているデータ変換定義ファイルの内容を確認するために、キャッシュを参照できます。キャッシュの参照は、TP1-Converterにhttpリクエストを送信することで実行されます。キャッシュの参照を実行するためのhttpリクエストのURLを、次に示します。

http://<NIO HTTPサーバのホスト名>:<NIO HTTPサーバのポート番号>/tp1converter/cache/refer

次に示す条件の場合のキャッシュの参照の実行例を示します。

httpリクエスト送信に使用するクライアント：curlコマンド

NIO HTTPサーバのホスト名：hostname

NIO HTTPサーバのポート番号：8008

＜キャッシュの参照の実行例＞

curl -X GET http://hostname:8008/tp1converter/cache/refer

キャッシュの参照に成功した場合は、レスポンスのボディ部に、次の形式でキャッシュに登録されているデータ変換定義ファイルの情報が返されます。

[
  {
     "servicegroup": "gg…gg",
        "service": ["vv…vv",
           :   （サービスの数だけ繰り返されます）
        ],
     "date": "yyyymmdd hh:mm:ss"
   },
      :       （サービスグループの数だけ繰り返されます）
]

参照結果の項目

gg…gg：サービスグループ名

vv…vv：サービス名

yyyymmdd hh:mm:ss：

サービスグループのデータ変換定義ファイルをキャッシュに登録した日時

キャッシュが空の場合は、レスポンスのボディ部に、次の形式で参照結果が返されます。

[
]

キャッシュの参照が成功した場合は、httpステータスコード200が返されます。

キャッシュの参照が失敗した場合は、httpステータスコード200以外が返されます。httpステータスコードが400番台の場合は、指定したURLに誤りがないか、またはTP1-Converterが停止していないかを確認して、失敗の原因を取り除いてください。httpステータスコードが500番台の場合は、TP1-Converterのキャッシュ参照処理で障害が発生しています。TP1-Converterが出力するログを参照して、失敗の原因を取り除いてください。

5.13　TP1-Converterの削除とJ2EEサーバのアンセットアップ（通常版かつTP1-Bridge限定）

TP1-Converterが不要になった場合は、次の作業を実施してください。

TP1-Converterの削除

J2EEサーバのアンセットアップ

5.13.1　TP1-Converterの削除（通常版かつTP1-Bridge限定）

uCosminexus Service Platformのcjdeleteapp（J2EEアプリケーションの削除）コマンドで、TP1-Converterを削除します。

次に示すコマンドを実行してください。

/opt/Cosminexus/CC/admin/bin/cjdeleteapp TP1Converter -name tp1converter

usrconf.propertiesのejbserver.naming.hostまたはejbserver.naming.portの値をデフォルト値から変更している場合は、-nameserverオプションでプロバイダURLを指定してください。

コマンドの戻り値が0の場合は、TP1-Converterは正常に削除されています。

コマンドの戻り値が0以外の場合は、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」、およびマニュアル「Cosminexus アプリケーションサーバ リファレンス コマンド編」を参照してTP1-Converterが正常に削除されなかった原因を取り除いてください。

5.13.2　J2EEサーバのアンセットアップ（通常版かつTP1-Bridge限定）

TP1-Converterを削除したあとに、uCosminexus Service Platformのcjsetup（J2EEサーバのセットアップとアンセットアップ）コマンドで、J2EEサーバをアンセットアップします。

次に示すコマンドを実行してください。

/opt/Cosminexus/CC/server/bin/cjsetup -d TP1Converter

コマンドの戻り値が0の場合は、J2EEサーバのアンセットアップは正常に終了しています。

コマンドの戻り値が0以外の場合は、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」、およびマニュアル「Cosminexus アプリケーションサーバ リファレンス コマンド編」を参照してJ2EEサーバのアンセットアップが正常に終了しなかった原因を取り除いてください。

第6編　リファレンス

6　コンテナイメージの作成要件

6.1　コンテナイメージの一覧

HMP-PCTOは、ユーザアプリケーションに取り込んで使用する製品です。HMP-PCTOでは、アプリケーションをコンテナオーケストレーションツール上にデプロイして実行します。このため、アプリケーションはコンポーネントごとにコンテナイメージ形式で作成します。

HMP-PCTOの運用として、コンテナイメージは、ユーザが用意する資材で作成するものと、HMP-PCTOが提供する資材を使用してユーザが作成するものがあります。コンテナイメージの分類を次に示します。

ユーザ責務のコンテナイメージ

HMP-PCTOのコントロールプレーンのコンテナイメージ

また、HMP-PCTOのコントロールプレーンのコンテナイメージには、次のバリエーションがあります。

通常版

Javaアプリケーションを実行するコンテナイメージの場合、ユーザはどちらかを選択できます。

uCosminexus Application Runtime for Spring Boot導入あり

uCosminexus Application Runtime for Spring Boot導入なし

ただし、次に示すコンテナイメージは例外とします。

ユーザのビジネスロジックを含まないコンテナイメージは、「uCosminexus Application Runtime with Java for Spring Boot導入あり」だけとします（HMP-PCTOとしてトラブルシュートができるようにするため）。

HMP-PCTO以外の日立製品のコンテナイメージ（例：EADS）では、uCosminexus Application Runtime for Spring Boot導入有無はHMP-PCTOの仕様に従います。

トライアル版

HMP-PCTOのコンテナイメージの一部は、共通のコンテナベースイメージをあらかじめ作成しておき、そのコンテナベースイメージを使用して作成します。例えば、HMP-PCTOのアプリケーションの各コンポーネントの多くはJavaアプリケーションのため、各コンポーネントのコンテナイメージの前提プログラムとしてJavaランタイムが必要です。このため、Javaランタイムを含んだ共通のコンテナベースイメージをあらかじめ作成しておき、そのコンテナベースイメージを使用して各コンポーネントのコンテナイメージを作成します。

HMP-PCTOのコンテナベースイメージの一覧を次の表に示します。これらのコンテナベースイメージは、「表6‒2　HMP-PCTOのコンテナイメージの一覧」のコンテナイメージを作成する際に使用します。

表6‒1　HMP-PCTOのコンテナベースイメージの一覧

コンテナベースイメージ

説明

uCosminexus Application Runtime for Spring Bootコンテナベースイメージ

通常版でuCosminexus Application Runtime for Spring Bootを導入するユーザ責務のコンテナイメージを作成する際に使用します。

JDKコンテナベースイメージ

トライアル版の場合、または通常版でuCosminexus Application Runtime for Spring Bootを導入しないユーザ責務のコンテナイメージを作成する際に使用します。

HMP-PCTOのコンテナイメージの一覧を次の表に示します。これらのコンテナイメージの一部は、「表6‒1　HMP-PCTOのコンテナベースイメージの一覧」のコンテナベースイメージを使用して作成します。

表6‒2　HMP-PCTOのコンテナイメージの一覧

コンテナイメージ

コンテナイメージの分類

バリエーション

備考

ユーザ責務のコンテナイメージ

HMP-PCTOのコントロールプレーンのコンテナイメージ

通常版

トライアル版

uCosminexus Application Runtime for Spring Boot導入あり

uCosminexus Application Runtime for Spring Boot導入なし

Orchestrator-Serviceコンテナイメージ

○

−

○

○

○

−

Relay-Serviceコンテナイメージ

○

−

○

○

○

−

Entity-Service(SQL)コンテナイメージ

○

−

○

○

○

−

Entity-Service(TCC)コンテナイメージ

○

−

○

○

○

−

Orchestrator-Service(SQL)コンテナイメージ

○

−

○

○

○

−

Alternate-Serviceコンテナイメージ

○

−

○

○

○

−

Alternate-Service(SQL)コンテナイメージ

○

−

○

○

○

−

Mediatorコンテナイメージ

−

○

○

−

○

−

TP1-Bridgeコンテナイメージ

−

〇

〇

−

−

TP1-Bridgeを使用する場合だけ作成します。

Dependency-Checkerコンテナイメージ

−

○

−

○

○

−

Ext-Consコンテナイメージ

−

○

−

−

○

トライアル版の場合だけ作成します。

EADSサーバ用コンテナイメージ

−

○

−

○

−

通常版の場合だけ作成します。

コンテナイメージの詳細については、取扱説明書「EADS コンテナオーケストレーションツール対応機能」を参照してください。

EADSコマンド実行用コンテナイメージ

−

○

−

○

−

通常版の場合だけ作成します。

コンテナイメージの詳細については、取扱説明書「EADS コンテナオーケストレーションツール対応機能」を参照してください。

（凡例）

○：該当します。

−：該当しません。

6.2　コンテナイメージの提供方式

HMP-PCTOのコンテナイメージの提供方式の一覧を次の表に示します。

表6‒3　HMP-PCTOのコンテナイメージの提供方式の一覧

コンテナイメージの分類

通常版/トライアル版

提供方式

ユーザへの提供物

ユーザの対応作業

ユーザ責務のコンテナイメージ

通常版およびトライアル版

Containerfile方式

Containerfileの記述例（「2.2　Javaアプリケーションの開発」参照）

コンテナベースイメージおよび前提プログラムの一覧

HMP-PCTOの各ライブラリJARファイル

HMP-PCTOの各シェルスクリプト

HMP-PCTOの各ライブラリJARファイルを使用した、ユーザ責務のKubernetesアプリケーションのJARファイルをビルドする。ユーザが作成するアプリケーションのため、ユーザ任意の方法でビルドする。

一覧を基に、コンテナベースイメージおよび前提プログラムを準備する

Containerfileの記述例を基にContainerfileを作成する

Containerfileを使用しコンテナイメージをビルドする

HMP-PCTOのコントロールプレーンのコンテナイメージ

通常版

Containerfile方式

Containerfileのテンプレート

コンテナベースイメージおよび前提プログラムの一覧

HMP-PCTOのアプリケーションJARファイルビルド用Javaプロジェクト

HMP-PCTOの各ライブラリJARファイル

HMP-PCTOの各シェルスクリプト

HMP-PCTOの各ライブラリJARファイルを使用したHMP-PCTOのアプリケーションのJARファイルをビルドする

一覧を基に、コンテナベースイメージおよび前提プログラムを準備する

ユーザの開発環境に応じて、Containerfileのテンプレートの内容を編集する

Containerfileを使用しコンテナイメージをビルドする

トライアル版

コンテナイメージ方式

HMP-PCTOの各コンテナイメージ

なし

6.3　各コンテナベースイメージの作成要件

各コンテナベースイメージの詳細について説明します。

コンテナベースイメージは、「6.4　各コンテナイメージの作成要件」のコンテナイメージを作成する際に使用します。コンテナベースイメージの作成に必要な第三者ソフトウェアのコンテナベースイメージおよび前提プログラムのバージョンは、「1.4.1　前提OSおよび前提プログラム」を参照してください。

6.3.1　uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（通常版限定）

このコンテナベースイメージは、ユーザ責務のコンテナイメージでuCosminexus Application Runtime for Spring Bootを導入する場合だけ作成します。

次の表に示すuCosminexus Application Runtime for Spring Bootコンテナベースイメージの要件を満たすように作成します。

表6‒4　uCosminexus Application Runtime for Spring Bootコンテナベースイメージの要件

項目

要件

コンテナベースイメージ

次のどちらかのコンテナイメージを使用します。

Red Hat Universal Base Image 8※¹

Red Hat Universal Base Image 9※2

前提プログラム

■他社製のJava VMを使用する場合

Java SE 21準拠のJDK

uCosminexus Application Runtime for Spring Boot

■uCosminexus Application Runtime for Spring Bootおよび他社製のJava VMを使用する場合

curlまたはcurl-minimal

jq

配置ファイル

規定しません。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

指定なしとしてください（コマンドについてはこのコンテナベースイメージを使用する各コンテナイメージ側で指定します）。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

注※1

UBI 8の任意のベースイメージ（UBI 8 Minimalなど）

注※2

UBI 9の任意のベースイメージ（UBI 9 Minimalなど）

6.3.2　JDKコンテナベースイメージ

このコンテナベースイメージは、トライアル版の場合、または通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime for Spring Bootを導入しない場合だけ作成します。

次の表に示すJDKコンテナベースイメージの要件を満たすように作成します。

表6‒5　JDKコンテナベースイメージの要件

項目

要件

コンテナベースイメージ

■通常版の場合

次のどちらかのコンテナイメージを使用します。

Red Hat Universal Base Image 8※¹

Red Hat Universal Base Image 9※2

■トライアル版の場合

Almalinux 9 Minimal 9.5

前提プログラム

Java SE 21準拠のJDK

curlまたはcurl-minimal

jq

配置ファイル

規定しません。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

指定なしとしてください（コマンドについてはこのコンテナベースイメージを使用する各コンテナイメージ側で指定します）。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

注※1

UBI 8の任意のベースイメージ（UBI 8 Minimalなど）

注※2

UBI 9の任意のベースイメージ（UBI 9 Minimalなど）

6.4　各コンテナイメージの作成要件

各コンテナイメージの詳細について説明します。

コンテナイメージの一部は、コンテナベースイメージを使用して作成します。コンテナベースイメージの作成要件については、「6.3　各コンテナベースイメージの作成要件」を参照してください。

コンテナイメージの作成に必要な第三者ソフトウェアのコンテナベースイメージおよび前提プログラムのバージョンは、「1.4.1　前提OSおよび前提プログラム」を参照してください。

6.4.1　Orchestrator-Serviceコンテナイメージ

次の表に示すOrchestrator-Serviceコンテナイメージの要件を満たすように作成します。

表6‒6　Orchestrator-Serviceコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（「6.3.1　uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

JDKコンテナベースイメージ（「6.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのOrchestrator-ServiceアプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-ServiceアプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

6.4.2　Relay-Serviceコンテナイメージ

次の表に示すRelay-Serviceコンテナイメージの要件を満たすように作成します。

表6‒7　Relay-Serviceコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（「6.3.1　uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

JDKコンテナベースイメージ（「6.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのRelay-ServiceアプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのRelay-ServiceアプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのRelay-ServiceアプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

6.4.3　Entity-Service(SQL)コンテナイメージ（SQL-Participant限定）

次の表に示すEntity-Service(SQL)コンテナイメージの要件を満たすように作成します。

表6‒8　Entity-Service(SQL)コンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（「6.3.1　uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）の場合、またはトライアル版の場合

JDKコンテナベースイメージ（「6.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

■通常版の場合

Hitachi Elastic Application Data Store Client for Java

ncurses

tar

cpio

gzip

ncompress（コンテナベースイメージがRHEL8の場合）

■トライアル版の場合

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのEntity-Service(SQL)アプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：JDBC DriverのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：Hitachi Elastic Application Data Store Client for JavaのJARファイル（トライアル版の場合は不要）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

ファイル：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(SQL)アプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

次に示す環境変数を配置してください。

環境変数名：LOADER_PATH

設定値：Hitachi Elastic Application Data Store Client for JavaのJARファイルを配置したパス

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

6.4.4　Entity-Service(TCC)コンテナイメージ（TCC-Participant限定）

次の表に示すEntity-Service(TCC)コンテナイメージの要件を満たすように作成します。

表6‒9　Entity-Service(TCC)コンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（「6.3.1　uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

JDKコンテナベースイメージ（「6.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

■通常版の場合

Hitachi Elastic Application Data Store Client for Java

ncurses

tar

cpio

gzip

ncompress（コンテナベースイメージがRHEL8の場合）

■トライアル版の場合

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのEntity-Service(TCC)アプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：Hitachi Elastic Application Data Store Client for JavaのJARファイル（トライアル版の場合は不要）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

ファイル：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Service(TCC)アプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

次に示す環境変数を配置してください。

環境変数名：LOADER_PATH

設定値：Hitachi Elastic Application Data Store Client for JavaのJARファイルを配置したパス

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

6.4.5　Orchestrator-Service(SQL)コンテナイメージ（SQL-Participant限定）

次の表に示すOrchestrator-Service(SQL)コンテナイメージの要件を満たすように作成します。

表6‒10　Orchestrator-Service(SQL)コンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（「6.3.1　uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

JDKコンテナベースイメージ（「6.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

■通常版の場合

Hitachi Elastic Application Data Store Client for Java

ncurses

tar

cpio

gzip

ncompress（コンテナベースイメージがRHEL8の場合）

■トライアル版の場合

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

JDBC-DriverのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：Hitachi Elastic Application Data Store Client for JavaのJARファイル（トライアル版の場合は不要）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

ファイル：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestrator-Service(SQL)アプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

次に示す環境変数を配置してください。

環境変数名：LOADER_PATH

設定値：Hitachi Elastic Application Data Store Client for JavaのJARファイルを配置したパス

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

6.4.6　Alternate-Serviceコンテナイメージ

次の表に示すAlternate-Serviceコンテナイメージの要件を満たすように作成します。

表6‒11　Alternate-Serviceコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（「6.3.1　uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

JDKコンテナベースイメージ（「6.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのAlternate-ServiceアプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-ServiceアプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-ServiceアプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

6.4.7　Alternate-Service(SQL)コンテナイメージ（SQL-Participant限定）

次の表に示すAlternate-Service(SQL)コンテナイメージの要件を満たすように作成します。

表6‒12　Alternate-Service(SQL)コンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（「6.3.1　uCosminexus Application Runtime for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

JDKコンテナベースイメージ（「6.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

■通常版の場合

Hitachi Elastic Application Data Store Client for Java

ncurses

tar

cpio

gzip

ncompress（コンテナベースイメージがRHEL8の場合）

■トライアル版の場合

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのAlternate-Service(SQL)アプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

JDBC-DriverのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：Hitachi Elastic Application Data Store Client for JavaのJARファイル（トライアル版の場合は不要）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

ファイル：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime for Spring Boot導入なし）、またはトライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのAlternate-Service(SQL)アプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

次に示す環境変数を配置してください。

環境変数名：LOADER_PATH

設定値：Hitachi Elastic Application Data Store Client for JavaのJARファイルを配置したパス

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

6.4.8　Mediatorコンテナイメージ

このコンテナイメージは、HMP-PCTOとして提供します。通常版の場合は、次の表に示す要件を満たすように作成します。

表6‒13　Mediatorコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

次のどちらかのコンテナイメージを使用します。

Red Hat Universal Base Image 8 Minimal

Red Hat Universal Base Image 9 Minimal

■トライアル版の場合

Almalinux 9 Minimal 9.5

前提プログラム

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

Java SE 17のuCosminexus Application Runtime with Java for Spring Boot

curlまたはcurl-minimal

glibc

jq

■トライアル版の場合

java-21-openjdk-headless

curlまたはcurl-minimal

glibc

jq

配置ファイル

次に示すファイルを配置してください。

ファイル：HMP-PCTOのMediatorアプリケーションのJARファイル（mediator-V.R.S.jar）

配置パス：/deployments下

オーナー・グループ：「1001:0」

パーミッション：「0440」

ファイル：HMP-PCTOのMediatorアプリケーションのダイレクトIO用ライブラリファイル（libhmppcto-mediator-V.R.S.so）

配置パス：/deployments下

オーナー・グループ：「1001:0」

パーミッション：「0440」

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：/deployments下

オーナー・グループ：「1001:0」

パーミッション：「0550」

ファイル：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

配置パス：/deployments下

オーナー・グループ：「1001:0」

パーミッション：「0550」

コンテナ実行ユーザ・グループ

「1001:0」

コンテナ起動時カレントディレクトリ

「/deployments」

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「HMP-PCTOのMediatorアプリケーションのJARファイル(mediator-V.R.S.jar)」を指定してください。

■トライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「HMP-PCTOのMediatorアプリケーションのJARファイル(mediator-V.R.S.jar)」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

注　V.R.Sには、バージョンを設定します。

6.4.9　TP1-Bridgeコンテナイメージ（通常版かつTP1-Bridge限定）

次の表に示すTP1-Bridgeコンテナイメージの要件を満たすように作成します。

表6‒14　TP1-Bridgeコンテナイメージの要件

項目

要件

コンテナベースイメージ

次のどちらかのコンテナイメージを使用します。

Red Hat Universal Base Image 8 Minimal

Red Hat Universal Base Image 9 Minimal

前提プログラム

Java SE 17のuCosminexus Application Runtime with Java for Spring Boot

Hitachi Elastic Application Data Store Client for Java

ncurses

tar

cpio

gzip

ncompress（コンテナベースイメージがRHEL8の場合）

配置ファイル

次に示すファイルを配置してください。

ファイル：HMP-PCTOのTP1-BridgeアプリケーションのJARファイル（tp1-bridge-V.R.S.jar）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：Hitachi Elastic Application Data Store Client for JavaのJARファイル

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

ファイル：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

コマンドを「uCosminexus Application Runtime for Spring Bootのプロセスモニタ起動スクリプト（starter.sh）」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「HMP-PCTOのTP1-BridgeアプリケーションのJARファイル（tp1-bridge-V.R.S.jar）」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

次に示す環境変数を配置してください。

環境変数名：LOADER_PATH

設定値：Hitachi Elastic Application Data Store Client for JavaのJARファイルを配置したパス

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

注　V.R.Sには、バージョンを設定します。

6.4.10　Dependency-Checkerコンテナイメージ

このコンテナイメージは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒15　Dependency-Checkerコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版の場合

次のどちらかのコンテナイメージを使用します。

Red Hat Universal Base Image 8 Minimal

Red Hat Universal Base Image 9 Minimal

■トライアル版の場合

Almalinux 9 Minimal 9.5

前提プログラム

curlまたはcurl-minimal

jq

配置ファイル

次に示すファイルを配置してください。

ファイル：HMP-PCTOのデプロイ依存関係チェックスクリプト（dependency_check.sh）

配置パス：/deployments下

オーナー・グループ：「1001:0」

パーミッション：「0550」

コンテナ実行ユーザ・グループ

「1001:0」

コンテナ起動時カレントディレクトリ

「/deployments」

コンテナ起動コマンドライン

エントリポイントを「HMP-PCTOのデプロイ依存関係チェックスクリプト（dependency_check.sh）」とします（引数については、このコンテナベースイメージを使用する各Kubernetesマニフェスト側で指定します）。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

6.4.11　Ext-Consコンテナイメージ（トライアル版限定）

このコンテナイメージは、HMP-PCTOとして提供します。トライアル版の場合は、次の表に示す要件を満たすように作成します。

表6‒16　Ext-Consコンテナイメージの要件

項目

要件

コンテナベースイメージ

Almalinux 9 Minimal 9.5

前提プログラム

java-21-openjdk-headless

配置ファイル

次に示すファイルを配置してください。

ファイル：HMP-PCTOのExt-ConsアプリケーションのJARファイル（ext-cons-V.R.S.jar）

配置パス：/deployments下

オーナー・グループ：「1001:0」

パーミッション：「0440」

コンテナ実行ユーザ・グループ

「1001:0」

コンテナ起動時カレントディレクトリ

「/deployments」

コンテナ起動コマンドライン

コマンドを「javaコマンド」とし、引数に「HMP-PCTOのExt-ConsアプリケーションのJARファイル（ext-cons-V.R.S.jar）」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

注　V.R.Sには、バージョンを設定します。

7　Kubernetesクラスタの作成要件

7.1　Kubernetesアプリケーションのデプロイ方法

HMP-PCTOのコンテナイメージは、コンテナオーケストレーションツール上にデプロイして実行します。HMP-PCTOのコンテナイメージについては、「6.　コンテナイメージの作成要件」を参照してください。

前提とするKubernetesディストリビューションおよびバージョンは、「1.4.1　前提OSおよび前提プログラム」を参照してください。

HMP-PCTOのKubernetesアプリケーションのデプロイ方法の一覧を次の表に示します。

表7‒1　HMP-PCTOのKubernetesアプリケーションのデプロイ方法の一覧

Kubernetesアプリケーションの分類

デプロイ方法

ユーザへの提供物

ユーザの対応作業

ユーザ責務のKubernetesアプリケーション

ユーザ任意の方法によるデプロイ

Kubernetesマニフェストの記述例（「2.6　Kubernetesマニフェスト作成」参照）

Kubernetesマニフェストの記述例を基にKubernetesマニフェストを作成する

Kubernetesマニフェストを使用しKubernetesアプリケーションをデプロイする

HMP-PCTOのコントロールプレーンのKubernetesアプリケーション

Helmによるデプロイ

Helmチャート

Helmチャートのカスタマイズ例（「3.8　Helmチャートのカスタマイズ」参照）

Helmチャートのカスタマイズ例を基にHelmチャートをカスタマイズする

Helmチャートを使用しKubernetesアプリケーションをデプロイする

RASのKubernetesアプリケーション

ユーザ任意の方法によるデプロイ

Kubernetesマニフェストの記述例（「3.7　Kubernetesマニフェスト作成」参照）

Kubernetesマニフェストの記述例を基にKubernetesマニフェストを作成する

Kubernetesマニフェストを使用しKubernetesアプリケーションをデプロイする

Helmによるデプロイ

Helmチャート

Helmチャートのカスタマイズ例（「3.8　Helmチャートのカスタマイズ」参照）

Helmチャートのカスタマイズ例を基にHelmチャートをカスタマイズする

Helmチャートを使用しKubernetesアプリケーションをデプロイする

7.2　Kubernetesクラスタ内外の通信暗号化

HMP-PCTOではユーザの通信データの保護のため、コンポーネント間の通信暗号化機能を提供します。プロパティで暗号化通信をするかどうかを指定します。

表7‒2　Kubernetesクラスタ内外の通信暗号化の可否

項番

通信経路

暗号化の可否

暗号化方法

1

ユーザアプリケーションが実行するHMP-PCTOのPod間通信（HTTP通信）

×

−

2

ユーザアプリケーションが実行するHMP-PCTOのPod間通信（gRPC通信）

×

−

3

HMP-PCTOのPod間通信（gRPC通信）

○

grpc.use-tlsパラメタで暗号化通信をするかどうかを指定できます。

詳細は「9.1　HMP-PCTOの各コンポーネントおよび連携先製品に設定するパラメタ」を参照してください。

4

HMP-PCTOのPod内のスクリプトの通信（HTTP通信）

×

−

5

HMP-PCTOのPodとDBの間

×

−

6

HMP-PCTOのPodとEADSの間

×

−

7

TP1-BridgeとTP1-Converterの間

×

−

8

TP1-BridgeとOpenTP1の間

×

−

9

TP1-ConverterとREST API発行元の間

×

−

10

FilebeatとLogstashの間

LogstashとElasticsearchの間

PrometheusとMetricbeatの間

MetricbeatとElasticsearchの間

Jaeger-collectorとJaeger-queryの間

Jaeger-collectorとElasticsearchの間

×

−

11

HMP-PCTOのPodとFilebeatの間

×

−

12

HMP-PCTOのPodとJaeger-collectorの間

×

−

13

HMP-PCTOのPodとPrometheusの間

×

−

14

MediatorとNFSサーバの間

EADSとNFSサーバの間

uCosminexus Application Runtime for Spring BootとNFSサーバの間

×

−

15

Kubernetesとデプロイ依存関係チェックスクリプトの間

×

−

（凡例）

○：暗号化できます。

×：暗号化できません。

−：該当しません。

7.3　Kubernetesアプリケーションのタイムゾーン設定方針

Kubernetesアプリケーションのタイムゾーン設定方針を次に示します。

Kubernetesアプリケーションのタイムゾーンを設定可能とすることで、トラブルシュート時に参照するログの日時を確認しやすくする

次の個所は、タイムゾーン設定の対象とする

ユーザ責務のKubernetesアプリケーション内のJavaアプリケーションのコンテナ

HMP-PCTOのコントロールプレーンのKubernetesアプリケーション内のJavaアプリケーションのコンテナ

次の個所は、タイムゾーン設定の対象外とする

ユーザ責務のKubernetesアプリケーション内のJavaアプリケーション以外のコンテナ

HMP-PCTOのコントロールプレーンのKubernetesアプリケーション内のJavaアプリケーション以外のコンテナ

RASのKubernetesアプリケーション内のコンテナ

EADSのコンテナ

タイムゾーンの設定は任意とする

タイムゾーンの設定方法は、OSで用意されている環境変数TZとする

7.4　Kubernetesアプリケーションのグレースフルシャットダウン

7.4.1　HMP-PCTOのKubernetesアプリケーションのグレースフルシャットダウンのサポート有無

HMP-PCTOのKubernetesアプリケーションのグレースフルシャットダウンのサポート有無の一覧を次の表に示します。

表7‒3　HMP-PCTOのKubernetesアプリケーションのグレースフルシャットダウンのサポート有無の一覧

Kubernetesアプリケーション

グレースフルシャットダウンのサポート有無

Orchestrator-Service

○

Relay-Service

○

Entity-Service(SQL)

○

Entity-Service(TCC)

○

Orchestrator-Service(SQL)

○

Alternate-Service

○

Alternate-Service(SQL)

○

Mediator

○

TP1-Bridge

○

EADS（通常版の場合）

−

Ext-Cons（トライアル版の場合）

−

Filebeat

−

Jaeger-query

−

Jaeger-collector

−

Prometheus

−

Metricbeat

−

Elasticsearch

−

Logstash

−

Metrics Server

−

（凡例）

○：グレースフルシャットダウンをサポートします。

−：該当しません。

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

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

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

Kubernetesアプリケーション

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

Orchestrator-Service

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

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

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

Relay-Service

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

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

Entity-Service(SQL)

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

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

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

Entity-Service(TCC)

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

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

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

Orchestrator-Service(SQL)

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

次の2つの条件を満たす（AND条件）

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

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

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

Alternate-Service

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

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

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

Alternate-Service(SQL)

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

次の2つの条件を満たす（AND条件）

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

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

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

Mediator

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

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

TP1-Bridge

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

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

処理中リクエスト件数が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アプリケーションのような「処理中リクエスト件数」は条件に含みません。

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

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

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

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

KubernetesのpreStopフックを使用して、20秒間待機します。この間、KubernetesのServiceによって転送先リストからリクエストを削除する処理が実施されます。これによって、新規トランザクションを受け付けない状態になります。

未決着トランザクション件数およびトランザクションルートで処理中の件数

「7.6.3　未決着トランザクション待機スクリプト（wait_transactions.sh）」のKubernetesのpreStopフックを使用して、未決着トランザクション件数およびトランザクションルートで処理中の件数が0件になるまで待機します。

処理中リクエスト件数

REST通信によるリクエスト

Spring BootのGraceful Shutdown機能を使用して、処理中リクエスト件数が0件になるまで待機します。

gRPC通信によるリクエスト

gRPCサーバはグレースフルにシャットダウンするようにアプリケーションを実装してください。

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

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

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

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

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

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

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

重要

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

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

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

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

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

7.4.4　HMP-PCTOのKubernetesアプリケーションが強制シャットダウンしたときの挙動

グレースフルシャットダウンは、ユーザが事前に指定した猶予時間を過ぎた場合、トランザクション処理やリクエスト処理が処理中でもPodがシャットダウンします。

このときのKubernetesアプリケーションのトランザクションの決着結果およびユーザへの影響を次の表に示します。

表7‒5　HMP-PCTOのKubernetesアプリケーションが強制シャットダウンしたときのトランザクションの決着結果およびユーザへの影響

項番

Kubernetesアプリケーション

トランザクションの決着結果

最終的なKubernetesアプリケーションの挙動

備考

1

Orchestrator-ServiceおよびOrchestrator-Service(SQL)

ロールバックします。

Podのシャットダウンによって、Orchestrator-Serviceのクライアントへの応答が返りません。

Participantのトランザクション決着監視タイマによって、仕掛中のトランザクションがロールバックします。

2

Relay-Service

ロールバックします。

KFSG63105-Wメッセージを出力します。

Relay-Serviceの呼び出し元がレスポンスを受け取れないため通信エラーとなり、トランザクションがロールバックに決着します。

3

Entity-Service(SQL)

ロールバックします。

KFSG63105-Wメッセージを出力します。

未決着トランザクションのRecovery機能によってトランザクションがロールバックします。

4

Entity-Service(TCC)

5

TP1-Bridge

6

Alternate-Service

Orchestrator-Serviceの役割で処理しているトランザクションは項番1と同様の動作をします。

Relay-Serviceの役割で処理しているトランザクションは項番2と同様の動作をします。

7

Alternate-Service(SQL)

Orchestrator-Serviceの役割で処理しているトランザクションは項番1と同様の動作をします。

Relay-Serviceの役割で処理しているトランザクションは項番2と同様の動作をします。

Entity-Service(SQL)の役割で処理しているトランザクションは項番3と同様の動作をします。

8

Mediator

正常に決着します。

正常に動作します。

残存するほかのMediatorや補助合意機能によってトランザクションが決着します。

7.5　各Kubernetesアプリケーションの作成要件

各Kubernetesアプリケーションの、Kubernetes公式リファレンスにあるKubernetesマニフェストの必要なフィールド（作成要件）について説明します。

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オブジェクト群※³のNamespaceがすべて同一の場合：

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

Orchestrator-ServiceとOrchestrator-ServiceのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※³の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、環境変数など）に設定してください。

「9.2.1　共通」のパラメタ

「9.2.3　Orchestrator」のパラメタ

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/メモリリソース制限

規定しません。

7.5.2　Relay-Serviceの要件

Relay-Serviceは、リソースを更新しないでサービス間を中継するKubernetesアプリケーションです。トランザクションブランチを開始します。

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

表7‒10　Relay-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コンテナイメージ」を参照してください）

コンテナ構成

Relay-Serviceコンテナ（「6.4.2　Relay-Serviceコンテナイメージ」を参照してください）（SQL-Participantを使用する場合）

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

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

レプリカ数

規定しません。

再起動ポリシー

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

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

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

Relay-ServiceとRelay-ServiceのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※³の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」

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

terminationGracePeriodSecondsは、「Spring BootのGraceful Shutdown機能での最大待機秒数（140秒）」以上の値を設定してください。推奨値はそれぞれの最大待機時間のデフォルト値の合計にバッファ（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

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

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

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

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

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

例を次に示します。

（例）

Entity-Service(SQL)を使用する場合：

my-namespace/statefulsets/mediator

my-namespace/deployments/sql-participant

Entity-Service(TCC)を使用する場合：

my-namespace/statefulsets/mediator

my-namespace/deployments/tcc-participant

TP1-Bridgeを使用する場合：

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　Relay-ServiceのRelay-Serviceコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

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

プロトコル：TCP

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

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

コンフィグ設定

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

「9.2.1　共通」のパラメタ

「9.2.4　Entity-Module」のパラメタ

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

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

設定する値：任意の秒数

推奨値：「140s」

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

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

postStopフックを次のとおり設定してください。

コマンド実行

グレースフルシャットダウンのために、Podが宛先に選ばれなくなるまで待機する必要があります。そのため20秒間待機するコマンドを設定してください。※

CPU/メモリリソース制限

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

注※

コマンド例を次に示します。

- /bin/sh
- -c
- sleep 20

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

表7‒13　Relay-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」

CPU/メモリリソース制限

規定しません。

7.5.3　Entity-Service(SQL)の要件（SQL-Participant限定）

Entity-Service(SQL)は、データベースの参照、更新業務を行うKubernetesアプリケーションです。トランザクションブランチを開始します。

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

表7‒14　Entity-Service(SQL)の要件

項目

要件

ワークロードリソース

規定しません。任意（Deploymentなど）とします。

ネームスペース

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

ラベル

「app.kubernetes.io/name」を必ず設定してください。ほかのKubernetesアプリケーションに設定した値と異なる値を、16バイト以内の文字列で設定してください。

Blue/Greenデプロイメントを実施する場合は、BlueとGreenの「app.kubernetes.io/name」に同一の値を設定してください。

アノテーション

規定しません。

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

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

キー名：prometheus.io/scrape

値：true

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

キー名：prometheus.io/path

値：/hmppcto/metrics※1

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

キー名：prometheus.io/port

値：httpポート番号（Prometheusメトリクス収集用）に指定した値

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

初期化コンテナ構成

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

コンテナ構成

Entity-Service(SQL)コンテナ（「6.4.3　Entity-Service(SQL)コンテナイメージ（SQL-Participant限定）」を参照してください）

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

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

レプリカ数

規定しません。

再起動ポリシー

コンテナ障害時は必ず再起動（オートヒーリング）してください（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(SQL)とEntity-Service(SQL)のDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※²のNamespaceがすべて同一の場合：

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

Entity-Service(SQL)とEntity-Service(SQL)のDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※²の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

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によるメトリクスの収集ができません。

注※2

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

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

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

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Mediator、EADS、Ext-Cons（トライアル版の場合だけ）、Entity-Service(SQL)が使用するDB/外部サービス

例を次に示します。

（例）

my-namespace/statefulsets/mediator

my-namespace/statefulsets/eads-server

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

my-namespac /statefulsets/postgresql

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒16　Entity-Service(SQL)のEntity-Service(SQL)コンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

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

Entity-Service(SQL)のhttpポート番号（ヘルスチェック、未決着トランザクション確認、Prometheusメトリクス収集用）

プロトコル：TCP

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

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

コンフィグ設定

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

「9.2.1　共通」のパラメタ

「9.2.2　JDBC Proxy Driver」のパラメタ

「9.2.4　Entity-Module」のパラメタ

「9.2.5　SQL-Participant」のパラメタ

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(SQL)の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‒17　Entity-Service(SQL)の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/メモリリソース制限

規定しません。

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コンテナイメージ」を参照してください）

コンテナ構成

Entity-Service(TCC)コンテナ（「6.4.4　Entity-Service(TCC)コンテナイメージ（TCC-Participant限定）」を参照してください）

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

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

レプリカ数

規定しません。

再起動ポリシー

コンテナ障害時は必ず再起動（オートヒーリング）してくださいと（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オブジェクト群※³のNamespaceがすべて同一の場合：

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

Entity-Service(TCC)とEntity-Service(TCC)のDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※³の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、環境変数など）に設定してください。

「9.2.1　共通」のパラメタ

「9.2.4　Entity-Module」のパラメタ

「9.2.6　TCC-Participant」のパラメタ

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/メモリリソース制限

規定しません。

7.5.5　Orchestrator-Service(SQL)の要件（SQL-Participant限定）

Orchestrator-Service(SQL)は、Orchestratorの役割に加えて、データベースの参照および更新業務を行うKubernetesアプリケーションです。トランザクションルートとトランザクションブランチを開始します。

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

表7‒22　Orchestrator-Service(SQL)の要件

項目

要件

ワークロードリソース

規定しません。任意（Deploymentなど）とします。

ネームスペース

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

ラベル

「app.kubernetes.io/name」を必ず設定してください。ほかのKubernetesアプリケーションに設定した値と異なる値を、16バイト以内の文字列で設定してください。

Blue/Greenデプロイメントを実施する場合は、BlueとGreenの「app.kubernetes.io/name」に同一の値を設定してください。

アノテーション

規定しません。

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

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

キー名：prometheus.io/scrape

値：true

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

キー名：prometheus.io/path

値：/hmppcto/metrics※1

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

キー名：prometheus.io/port

値：httpポート番号（Prometheusメトリクス収集用）に指定した値

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

初期化コンテナ構成

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

コンテナ構成

Orchestrator-Service(SQL)コンテナ（「6.4.5　Orchestrator-Service(SQL)コンテナイメージ（SQL-Participant限定）」を参照してください）

<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(SQL)とOrchestrator-Service(SQL)のDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※²のNamespaceがすべて同一の場合：

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

Orchestrator-Service(SQL)とOrchestrator-Service(SQL)のDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※²の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

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によるメトリクスの収集ができません。

注※2

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

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

表7‒23　Orchestrator-Service(SQL)のDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Mediator、EADS、Ext-Cons、Orchestrator-Service(SQL)が使用するDB/外部サービス

例を次に示します。

（例）

Mediatorを使用する場合：my-namespace/statefulsets/mediator

EADSを使用する場合：my-namespace/statefulsets/eads-server

Ext-Consを使用する場合：my-namespace/deployments/ext-cons

Orchestrator-Service(SQL)を使用する場合：my-namespace/statefulsets/postgresql

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒24　Orchestrator-Service(SQL)のOrchestrator-Service(SQL)のコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

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

Orchestrator-Service(SQL)のhttpポート番号（ヘルスチェック、未決着トランザクション確認、Prometheusメトリクス収集用）

プロトコル：TCP

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

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

コンフィグ設定

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

「9.2.1　共通」のパラメタ

「9.2.2　JDBC Proxy Driver」のパラメタ

「9.2.3　Orchestrator」のパラメタ

「9.2.5　SQL-Participant」のパラメタ

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(SQL)の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‒25　Orchestrator-Service(SQL)の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/メモリリソース制限

規定しません。

7.5.6　Alternate-Serviceの要件

Alternate-Serviceは、役割がトランザクションルートまたはトランザクションブランチに変わるKubernetesアプリケーションです。

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

表7‒26　Alternate-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コンテナイメージ」を参照してください）

コンテナ構成

Alternate-Serviceコンテナ（「6.4.6　Alternate-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リソースは、次に示すとおり使い分けてください。

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

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

Alternate-ServiceとAlternate-ServiceのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※³の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

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

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

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

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

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

例を次に示します。

（例）

Mediatorを使用する場合：my-namespace/statefulsets/mediator

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‒28　Alternate-ServiceのAlternate-Serviceコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

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

プロトコル：TCP

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

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

コンフィグ設定

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

「9.2.1　共通」のパラメタ

「9.2.3　Orchestrator」のパラメタ

「9.2.4　Entity-Module」のパラメタ

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

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

CPU/メモリリソース制限

規定しません。

7.5.7　Alternate-Service(SQL)の要件（SQL-Participant限定）

Alternate-Service(SQL)は、Alternate-Serviceと同様に、役割がトランザクションルートまたはトランザクションブランチに変わるKubernetesアプリケーションです。Alternate-Serviceの役割に加えて、データベースの参照、更新業務も行います。

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

表7‒30　Alternate-Service(SQL)の要件

項目

要件

ワークロードリソース

規定しません。任意（Deploymentなど）とします。

ネームスペース

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

ラベル

「app.kubernetes.io/name」を必ず設定してください。ほかのKubernetesアプリケーションに設定した値と異なる値を、16バイト以内の文字列で設定してください。

Blue/Greenデプロイメントを実施する場合は、BlueとGreenの「app.kubernetes.io/name」に同一の値を設定してください。

アノテーション

規定しません。

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

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

キー名：prometheus.io/scrape

値：true

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

キー名：prometheus.io/path

値：/hmppcto/metrics※1

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

キー名：prometheus.io/port

値：httpポート番号（Prometheusメトリクス収集用）に指定した値

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

初期化コンテナ構成

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

コンテナ構成

Alternate-Service(SQL)コンテナ（「6.4.7　Alternate-Service(SQL)コンテナイメージ（SQL-Participant限定）」を参照してください）

<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リソースは、次に示すとおり使い分けてください。

Alternate-Service(SQL)とAlternate-Service(SQL)のDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※²のNamespaceがすべて同一の場合：

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

Alternate-Service(SQL)とAlternate-Service(SQL)のDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※²の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

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によるメトリクスの収集ができません。

注※2

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

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

表7‒31　Alternate-Service(SQL)のDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Mediator、EADS、Ext-Cons、Alternate-Service(SQL)が使用するDB/外部サービス

例を次に示します。

（例）

Mediatorを使用する場合：my-namespace/statefulsets/mediator

EADSを使用する場合：my-namespace/statefulsets/eads-server

Ext-Consを使用する場合：my-namespace/deployments/ext-cons

Alternate-Service(SQL)を使用する場合：my-namespace/statefulsets/postgresql

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒32　Alternate-Service(SQL)のAlternate-Service(SQL)コンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

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

Alternate-Service(SQL)のhttpポート番号（ヘルスチェック、未決着トランザクション確認、Prometheusメトリクス収集用）

プロトコル：TCP

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

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

コンフィグ設定

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

「9.2.1　共通」のパラメタ

「9.2.2　JDBC Proxy Driver」のパラメタ

「9.2.3　Orchestrator」のパラメタ

「9.2.4　Entity-Module」のパラメタ

「9.2.5　SQL-Participant」のパラメタ

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でAlternate-Service(SQL)の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‒33　Alternate-Service(SQL)の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/メモリリソース制限

規定しません。

7.5.8　Mediatorの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。レプリカ数の要件については、取扱説明書「HMP-PCTO テクニカルガイド」のMediator数の設定要件に関する説明を参照して決定します。

表7‒34　Mediatorの要件

項目

要件

ワークロードリソース

StatefulSetリソースとしてください。

ネームスペース

規定しません。

ラベル

metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：mediator

備考：チャート名

キー名：app.kubernetes.io/version

値：V.R.S※¹

備考：バージョン

キー名：helm.sh/chart

値：mediator-V.R.S※¹

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：mediator

備考：チャート名

アノテーション

Prometheusを使用してメトリクス情報を収集するために.spec.template.metadata.annotationsに次を指定します。

キー名：prometheus.io/scrape

値：true

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

キー名：prometheus.io/path

値：/hmppcto/metrics

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

キー名：prometheus.io/port

値：httpポート番号（Prometheusメトリクス収集用）に指定した値

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

初期化コンテナ構成

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

コンテナ構成

Mediatorコンテナ（「6.4.8　Mediatorコンテナイメージ」を参照してください）

レプリカ数

ThreeQuarters合意方式の場合：5〜64

PrivilegedValue合意方式の場合：2〜64

Service名

（StatefulSetリソース特有）

「mediator」

Podの管理ポリシー

（StatefulSetリソース特有）

レプリカ数のPodの起動/停止を並行に実施してください。

再起動ポリシー

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

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

ローリングアップデートとしてください（Kubernetesのデフォルト設定）。

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

設定しません（デフォルト）。

アクセス制御

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

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

APIグループ

空（コアグループ）、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

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

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

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

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

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

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

可用性の観点から、Podの数だけワーカーノードを用意し、各ワーカーノードにPodを1つずつ配置することを推奨します。

なお、インフラストラクチャのコスト削減の観点などで、用意するワーカーノードの数がPodの数を下回る場合でも、Mediatorは問題なく動作しますが、ワーカーノード数を削減する代わりに、ノード障害時のトランザクション決着（補助合意）に時間が掛かるおそれがあります。

また、可用性の観点から、各ワーカーノードに配置するPodの数は均等にすることを推奨します。

MediatorのConsensusLogの永続ボリュームにローカル永続ボリューム（local）を使用する場合、停止したPodを次に起動する際は前回起動したノードと必ず同一のノードに割り当ててください。該当するノードが障害から復旧していない場合に割り当て不可のときは、ほかの空いているノードが存在していたとしてもPodを割り当てないでください（フェイルオーバーしないでください）。

永続化ボリューム

MediatorのConsensusLogの永続ボリュームを割り当ててください。コンテナ内の「/volume」に、永続ボリュームをマウントします。

＜割り当て先をローカル永続ボリューム（local）とする場合＞

1つのPodにつき割り当てる永続化ボリュームは1つとしてください（共有しないでください）。

永続ボリュームの種類を「ローカル永続ボリューム（local）」（ノードにアタッチされたローカルストレージデバイス）としてください。

ブロックデバイスとしてください。

＜割り当て先をNFSストレージとする場合＞

永続ボリュームは、Mediatorが存在するすべてのPodからアクセスできるようにしてください。

Linuxのカーネルは、NFSに対するダイレクトI/Oに対応しているため、NFSストレージとして使用するダイレクトI/Oにも対応している必要があります。NFSストレージとして使用するストレージまたはストレージサービスは、問いません。

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

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「160」

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

注※1

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

注※2

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

表7‒35　MediatorのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ次の内容を指定してください。

Logstash、Jaeger-query、Jaeger-collector、Metricbeat、Filebeat

例を次に示します。

（例）

my-namespace/deployments/logstash

my-namespace/deployments/jaeger-query

my-namespace/deployments/jaeger-collector

my-namespace/deployments/metricbeat

my-namespace/daemonsets/filebeat

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒36　Mediatorコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

Kubernetesクラスタ内のHeadless Service（ClusterIP: None）で次のポートを公開してください（Serviceリソース）。

MediatorのgRPCポート番号（ParticipantおよびOrchestrator向け）

プロトコル：TCP

公開ポート：Mediatorのjp.co.Hitachi.soft.hmppcto.grpc.portパラメタに設定したポート番号

コンテナポート：Mediatorのjp.co.Hitachi.soft.hmppcto.grpc.portパラメタに設定したポート番号

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

プロトコル：TCP

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

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

コンフィグ設定

次のHMP-PCTOのパラメタを、Spring Bootのコンフィグソースに設定してください。

「9.2.1　共通」のパラメタ

「9.3.1　Mediator」のパラメタ

次のとおりファイルを配置します。

ファイル：Spring Bootのコンフィグソース

キー名：application.properties

マウント先：/deployments/config/application.properties

HMP-PCTOのgRPC通信の暗号化を有効にする場合（Helmチャートのgrpc.useTlsがtrue）、取扱説明書「HMP-PCTO テクニカルガイド」の各プロセスの認証種別に必要となるファイルの一覧に関する説明に示すとおりgRPC通信機能の暗号化通信で必要となるファイルをコンテナ内にマウントしてください。

次のとおりファイルを配置します。

ファイル：接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

キー名：ca.crt

マウント先：/cert/ca.crt

ファイル：自サーバ証明書（PEM形式）ファイル

キー名：server.crt

マウント先：/cert/server.crt

ファイル：自サーバ証明書を作成した秘密鍵ファイル

キー名：server.key

マウント先：/cert/server.key

さらに、クライアント認証を行う場合（Helmチャートのgrpc.tls.clientAuth.enabledにtrueを設定する場合）は、次のとおりファイルを配置します。

ファイル：接続元クライアント（OrchestratorおよびParticipant）の秘密鍵が格納されているキーストア（pkcs12またはJKS）ファイル

キー名：keystore

マウント先：/cert/keystore

ファイル：キーストアファイルのパスワード

キー名：keystore_password

マウント先：application.propertiesのjp.co.Hitachi.soft.hmppcto.grpc.tls.server.client-auth.passwordパラメタの値に設定

「MediatorのgRPC通信機能の暗号化通信用シークレット」をユーザが作成します（「(3)　TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成」を参照してください）。

ユーザが作成した「MediatorのgRPC通信機能の暗号化通信用シークレット」をStatefulSetから参照する際、Helmチャートのgrpc.tls.secretName パラメタに指定されているSecretオブジェクト名で参照してください。

環境変数TZでタイムゾーンを設定します。ユーザ責務のKubernetesアプリケーションと同じタイムゾーンに設定することを推奨します。デフォルト値は日本標準時（Asia/Tokyo、UTC+09:00）です。

Helmチャートのtimezoneパラメタで、Mediatorコンテナのタイムゾーンを指定します。

Helmチャートのjava.optionsパラメタでMediatorの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

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

設定しません（デフォルト）。

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

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

コマンド実行

パス：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

第1引数（リトライ回数）：「0」固定（Liveness Probeの設定でリトライするため）

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

第3引数（接続タイムアウト秒数）：推奨値「10」

第4引数（応答タイムアウト秒数）：推奨値「10」

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

初回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パラメタに設定したポート番号

preStopフックを次のとおり設定してください。

コマンド実行

パス：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

第1引数（リトライ回数）：推奨値「10」

第2引数（リトライ間隔秒数）：推奨値「10」

第3引数（接続タイムアウト秒数）：推奨値「10」

第4引数（応答タイムアウト秒数）：推奨値「10」

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

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

CPU/メモリリソース制限

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

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表7‒37　MediatorのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

includes/

HelmチャートのConfigMapオブジェクトの設定内容外部化ファイル配置用ディレクトリ

application.properties.tpl

MediatorのConfigMapオブジェクトの設定内容外部化ファイル

mediator-config-map-data.yaml

MediatorのConfigMapオブジェクトの設定内容外部化ファイル

config.properties.tpl

uCosminexus Application Runtime with Java for Spring BootのConfigMapオブジェクトの設定内容外部化ファイル

ucars-config-map-data.yaml

uCosminexus Application Runtime with Java for Spring BootのConfigMapオブジェクトの設定内容外部化ファイル

mediator-config-map.yaml

MediatorのConfigMapオブジェクトのマニフェスト

ucars-config-map.yaml

uCosminexus Application Runtime with Java for Spring BootのConfigMapオブジェクトのマニフェスト

service.yaml

Serviceオブジェクトのマニフェスト

serviceaccount.yaml

ServiceAccountオブジェクトのマニフェスト

statefulset.yaml

StatefulSetオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル

7.5.9　TP1-Bridgeの要件（通常版かつTP1-Bridge限定）

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表7‒38　TP1-Bridgeの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

規定しません。

ラベル

metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：labels.appKubernetesIoNameパラメタの指定値

キー名：app.kubernetes.io/version

値：V.R.S※1

備考：バージョン

キー名：helm.sh/chart

値：tp1-bridge-V.R.S※1

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：labels.appKubernetesIoNameパラメタの指定値

アノテーション

Prometheusを使用してメトリクス情報を収集するために.spec.template.metadata.annotationsに次を指定します。

キー名：prometheus.io/scrape

値：true

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

キー名：prometheus.io/path

値：/hmppcto/metrics

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

キー名：prometheus.io/port

値：httpポート番号（ヘルスチェック、未決着トランザクション確認、Prometheusメトリクス収集用、アプリケーションからのOpenTP1のサービス呼び出し要求の受信用）に指定した値

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

初期化コンテナ構成

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

コンテナ構成

TP1-Bridgeコンテナ（「6.4.9　TP1-Bridgeコンテナイメージ（通常版かつTP1-Bridge限定）」を参照してください）

<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リソースは、次に示すとおり使い分けてください。

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

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

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

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

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

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

規定しません。

永続化ボリューム

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームを割り当ててください。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「180」

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

注※1

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

注※2

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

＜制限事項＞

スケーリングは不可とします（手動/自動、スケールアウト/インに関係なく）。

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

表7‒39　TP1-Bridgeの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‒40　TP1-Bridgeコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

TP1-Bridgeのhttpポート番号（ヘルスチェック、未決着トランザクション確認、Prometheusメトリクス収集、およびAPからのOpenTP1のサービス呼び出し要求の受信用）

プロトコル：TCP

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

コンテナポート：自コンテナのhttp.portパラメタに設定したポート番号

コンフィグ設定

次のHMP-PCTOのパラメタを、Spring Bootのコンフィグソースに設定してください。

「9.2.1　共通」のパラメタ

「9.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）」のパラメタ

次のとおりファイルを配置します。

ファイル：Spring Bootのコンフィグソース

キー名：application.properties

マウント先：/deployments/config/application.properties

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

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

設定する値：任意の秒数

推奨値：「20s」

HMP-PCTOのgRPC通信の暗号化を有効にする場合（Helmチャートのgrpc.useTlsがtrue）、取扱説明書「HMP-PCTO テクニカルガイド」の各プロセスの認証種別に必要となるファイルの一覧に関する説明に示すとおり、gRPC通信機能の暗号化通信で必要となるファイルをコンテナ内にマウントしてください。

次のとおりファイルを配置します。

ファイル：接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

キー名：ca.crt

マウント先：/cert/ca.crt

ファイル：自サーバ証明書（PEM形式）ファイル

キー名：server.crt

マウント先：/cert/server.crt

ファイル：自サーバ証明書を作成した秘密鍵ファイル

キー名：server.key

マウント先：/cert/server.key

さらに、クライアント認証を行う場合（Helmチャートのgrpc.tls.clientAuth.enabledがtrue）は、次のとおりファイルを配置します。

ファイル：自クライアント証明書ファイル（PEM形式）

キー名：client.crt

マウント先：/cert/client.crt

ファイル：自クライアント証明書を作成した秘密鍵ファイル

キー名：client.key

マウント先：/cert/client.key

「TP1-BridgeのgRPC通信機能の暗号化通信用シークレット」をユーザが作成します（「(3)　TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成」を参照してください）。

ユーザが作成した「TP1-BridgeのgRPC通信機能の暗号化通信用シークレット」をDeploymentsから参照する際、Helmチャートのgrpc.tls.secretNameパラメタに指定されているSecretオブジェクト名で参照してください。

環境変数TZでタイムゾーンを設定します。ユーザ責務のKubernetesアプリケーションと同じタイムゾーンに設定することを推奨します。デフォルト値は日本標準時（Asia/Tokyo、UTC+09:00）です。

Helmチャートのtimezoneパラメタで、TP1-Bridgeコンテナのタイムゾーンを指定します。

Helmチャートのjava.optionsパラメタで、TP1-BridgeのJavaプロセス起動時にJava VMに渡すオプションを指定してください。

uCosminexus Application Runtime with Java for Spring Bootの設定ファイル（config.properties）をコンテナ内にマウントしてください。

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

ファイル：uCosminexus Application Runtime with Java 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ポート番号）：自コンテナのhttp.portパラメタに設定したポート番号

初回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ポート番号）：自コンテナのhttp.portパラメタに設定したポート番号

preStopフックを次のとおり設定してください。

コマンド実行

パス：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

第1引数（リトライ回数）：推奨値「10」

第2引数（リトライ間隔秒数）：推奨値「10」

第3引数（接続タイムアウト秒数）：推奨値「10」

第4引数（応答タイムアウト秒数）：推奨値「10」

第5引数（HTTPポート番号）：自コンテナのhttp.portパラメタに設定したポート番号

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

CPU/メモリリソース制限

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

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

表7‒41　TP1-BridgeのFilebeatコンテナの要件

項目

要件

コマンド

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

第1引数

「-e」

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

第2引数

「-E」

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

第3引数（http.enabled）

「true」

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

ネットワーク設定

規定しません。

コンフィグ設定

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

環境変数HMPPCTO_POD_NAMESPACE、HMPPCTO_POD_NAME、およびHMPPCTO_NODE_NAMEでKibanaなどの可視化ツールで検索する際の条件として使用するフィールドを付与してください。

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

規定しません。

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

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/メモリリソース制限

規定しません。

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表7‒42　TP1-BridgeのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

includes/

HelmチャートのConfigMapオブジェクトの設定内容外部化ファイル配置用ディレクトリ

application.properties.tp1

TP1-BridgeのConfigMapオブジェクトの設定内容外部化ファイル

tp1-bridge-config-map-data.yaml

TP1-BridgeのConfigMapオブジェクトの設定内容外部化ファイル

config.properties.tpl

uCosminexus Application Runtime with Java for Spring BootのConfigMapオブジェクトの設定内容外部化ファイル

ucars-config-map-data.yaml

uCosminexus Application Runtime with Java for Spring BootのConfigMapオブジェクトの設定内容外部化ファイル

filebeat.yml.tpl

FilebeatのConfigMapオブジェクトの設定内容外部化ファイル

filebeat-config-map-data.yaml

FilebeatのConfigMapオブジェクトの設定内容外部化ファイル

eads-config-map-data.yaml

EADSクライアントのConfigMapオブジェクトの設定内容外部化ファイル

hmp-pcto.eads-client.properties.tpl

EADSクライアントのConfigMapオブジェクトの設定内容外部化ファイル

tp1-bridge-config-map.yaml

TP1-BridgeのConfigMapオブジェクトのマニフェスト

ucars-config-map.yaml

uCosminexus Application Runtime with Java for Spring BootのConfigMapオブジェクトのマニフェスト

filebeat-config-map.yaml

FilebeatのConfigMapオブジェクトのマニフェスト

service.yaml

Serviceオブジェクトのマニフェスト

serviceaccount.yaml

ServiceAccountオブジェクトのマニフェスト

deployment.yaml

Deploymentオブジェクトのマニフェスト

eads-config-map.yaml

EADSクライアントのConfigMapオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル

7.5.10　Ext-Consの要件（トライアル版限定）

このKubernetesアプリケーションは、HMP-PCTOとして提供します。トライアル版の場合は、次の表に示す要件を満たすように作成します。

表7‒43　Ext-Consの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

規定しません。

ラベル

metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：ext-cons

備考：チャート名

キー名：app.kubernetes.io/version

値：V.R.S※

備考：バージョン

キー名：helm.sh/chart

値：ext-cons-V.R.S※

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：mediator

備考：チャート名

アノテーション

設定しません（デフォルト）。

初期化コンテナ構成

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

コンテナ構成

Ext-Consコンテナ（「6.4.11　Ext-Consコンテナイメージ（トライアル版限定）」を参照してください）

レプリカ数

「1」

再起動ポリシー

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

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

デフォルト（ローリングアップデート）から変更ありません。

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

設定しません（デフォルト）。

アクセス制御

ClusterRoleリソース、ClusterRoleBindingリソース、ServiceAccountリソースを使用して、Podに対するロールベースアクセス制御（RBAC）で次のとおり対象リソースへのアクセス許可を定義してください。

APIグループ

空（コアグループ）、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

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

設定しません（デフォルト）。

永続化ボリューム

設定しません（デフォルト）。

Podライフサイクル設定

設定しません（デフォルト）。

注※

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

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

表7‒44　Ext-ConsのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Logstash、Jaeger-query、Jaeger-collector、Metricbeat、Filebeat

例を次に示します。

（例）

my-namespace/deployments/logstash

my-namespace/deployments/jaeger-query

my-namespace/deployments/jaeger-collector

my-namespace/deployments/metricbeat

my-namespace/daemonsets/filebeat

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒45　Ext-Consコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

Ext-ConsのHTTPポート番号

プロトコル

TCP

公開ポート

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

コンテナポート

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

コンフィグ設定

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

「9.2.1　共通」のパラメタ

「9.3.4　Ext-Cons（トライアル版限定）」のパラメタ

次のとおりファイルを配置します。

ファイル：Spring Bootのコンフィグソース

キー名：application.properties

マウント先：/deployments/config/application.properties

環境変数TZでタイムゾーンを設定します。ユーザ責務のKubernetesアプリケーションと同じタイムゾーンに設定することを推奨します。デフォルト値は日本標準時（Asia/Tokyo、UTC+09:00）です。

Helmチャートのtimezoneパラメタで、Ext-Consコンテナのタイムゾーンを指定します。

Helmチャートのjava.optionsパラメタでExt-ConsのJavaプロセス起動時にJava VMに渡すオプションを指定してください。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表7‒46　Ext-ConsのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

includes/

HelmチャートのConfigMapオブジェクトの設定内容外部化ファイル配置用ディレクトリ

application.properties.tpl

ConfigMapオブジェクトの設定内容外部化ファイル

config-map-data.yaml

ConfigMapオブジェクトの設定内容外部化ファイル

config-map.yaml

ConfigMapオブジェクトのマニフェスト

deployment.yaml

Deploymentオブジェクトのマニフェスト

service.yaml

Serviceオブジェクトのマニフェスト

serviceaccount.yaml

ServiceAccountオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル

7.5.11　Filebeatの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ使用します。次の表に示す要件を満たすように作成します。

表7‒47　Filebeatの要件

項目

要件

ワークロードリソース

DaemonSetリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「7.5.11　Filebeatの要件」〜「7.5.17　Logstashの要件」では同一のネームスペースを指定してください。

ラベル

.metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：filebeat

備考：チャート名

キー名：app.kubernetes.io/version

値：V.R.S※1

備考：バージョン

キー名：helm.sh/chart

値：filebeat-V.R.S※2

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：filebeat

備考：チャート名

アノテーション

規定しません。

初期化コンテナ構成

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

コンテナ構成

Filebeatコンテナ

レプリカ数

規定しません（DaemonSetのため）。

再起動ポリシー

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

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

ローリングアップデートとしてください（Kubernetesのデフォルト設定）。

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

規定しません。

アクセス制御

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

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

APIグループ

空(コアグループ)、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

＜コンテナログ収集用ロール＞

APIグループ

空(コアグループ)

リソース

pods、nodes、namespaces

アクセス許可

get、watch、list

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

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

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

HMP-PCTOのPodが割り当てられるKubernetesノードすべてに必ず割り当ててください。

永続化ボリューム

規定しません。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「30」

注※1

V.R.Sは使用するFilebeatのバージョンに合わせて読み替えてください。

注※2

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

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

表7‒48　FilebeatのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Elasticsearch

例を次に示します。

（例）

my-namespace/statefulsets/elasticsearch-master

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒49　Filebeatコンテナの要件

項目

要件

コマンド

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

第1引数

「-e」

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

第2引数

「-E」

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

第3引数（http.enabled）

「true」

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

ネットワーク設定

規定しません。

コンフィグ設定

規定しません。

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

次のとおり設定します。

実行ユーザ：0

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「1」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「1」

CPU/メモリリソース制限

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

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表7‒50　FilebeatのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

configmap-config.yaml

ConfigMapオブジェクトのマニフェスト

daemonset.yaml

Daemonsetオブジェクトのマニフェスト

serviceaccount.yaml

ServiceAccountオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル

7.5.12　Jaeger-queryの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ使用します。次の表に示す要件を満たすように作成します。

表7‒51　Jaeger-queryの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「7.5.11　Filebeatの要件」〜「7.5.17　Logstashの要件」では同一のネームスペースを指定してください。

ラベル

metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：jaeger-query

備考：チャート名

キー名：app.kubernetes.io/version

値：V.R.S※1

備考：バージョン

キー名：helm.sh/chart

値：jaeger-query-V.R.S※2

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：jaeger-query

備考：チャート名

アノテーション

規定しません。

初期化コンテナ構成

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

コンテナ構成

Jaeger-queryコンテナ

レプリカ数

「1」

再起動ポリシー

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

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

ローリングアップデートとしてください（Kubernetesのデフォルト設定）。

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

規定しません。

アクセス制御

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

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

APIグループ

空(コアグループ)、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

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

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

規定しません。

永続化ボリューム

規定しません。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「30」

注※1

V.R.Sは使用するJaeger-queryのバージョンに合わせて読み替えてください。

注※2

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

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

表7‒52　Jaeger-queryのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Elasticsearch

例を次に示します。

（例）

my-namespace/statefulsets/elasticsearch-master

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒53　Jaeger-queryコンテナの要件

項目

要件

コマンド

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

--es.max-span-age

Jaeger-queryのHelmチャートパラメタのjaegerQuery.maxSpanAgeの設定値

パラメタの詳細については、「(1)　Helmチャートのパラメタ」を参照してください。

ネットワーク設定

デプロイしたノードのIPで、次のポートを公開してください（Serviceリソース）。

JaegerのWeb UIアクセス用ポート番号

プロトコル

TCP

公開ポート

デプロイしたノード上のほかと被らないポート番号

コンテナポート

16686

コンフィグ設定

規定しません。

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

規定しません。

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「30」

Probe実行間隔秒数（periodSeconds）

推奨値「15」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「10」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「1」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「30」

Probe実行間隔秒数（periodSeconds）

推奨値「5」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「4」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「1」

CPU/メモリリソース制限

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

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表7‒54　Jaeger-queryのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

deployment.yaml

Deploymentオブジェクトのマニフェスト

service.yaml

Serviceオブジェクトのマニフェスト

serviceaccount.yaml

ServiceAccountオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル

7.5.13　Jaeger-collectorの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ使用します。次の表に示す要件を満たすように作成します。

表7‒55　Jaeger-collectorの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「7.5.11　Filebeatの要件」〜「7.5.17　Logstashの要件」では同一のネームスペースを指定してください。

ラベル

.metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：jaeger-collector

備考：チャート名

キー名：app.kubernetes.io/version

値：V.R.S※1

備考：バージョン

キー名：helm.sh/chart

値：jaeger-collector-V.R.S※2

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：jaeger-collector

備考：チャート名

アノテーション

規定しません。

初期化コンテナ構成

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

コンテナ構成

Jaeger-collectorコンテナ

レプリカ数

規定しません。

再起動ポリシー

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

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

ローリングアップデートとしてください（Kubernetesのデフォルト設定）。

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

規定しません。

アクセス制御

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

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

APIグループ

空(コアグループ)、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

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

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

1つのノードに割り当てられるPod数は1つまでです（例として、ワーカーノード数「5」に対してレプリカ数「5」のとき、各ノードにPodが1つ起動します）。

永続化ボリューム

規定しません。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「30」

注※1

V.R.Sは使用するJaeger-collectorのバージョンに合わせて読み替えてください。

注※2

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

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

表7‒56　Jaeger-collectorのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Elasticsearch

例を次に示します。

（例）

my-namespace/statefulsets/elasticsearch-master

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒57　Jaeger-collectorコンテナの要件

項目

要件

コマンド

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

--collector.queue-size

Jaeger-collectorのHelmチャートパラメタのcollector.queueSizeの設定値

--collector.num-workers

Jaeger-collectorのHelmチャートパラメタのcollector.numWorkersの設定値

--es.num-replicas

Jaeger-collectorのHelmチャートパラメタのreplicasの設定値

--es.num-shards

Jaeger-collectorのHelmチャートパラメタのcollector.numShardsの設定値

パラメタの詳細については、「(1)　Helmチャートのパラメタ」を参照してください。

ネットワーク設定

デプロイしたノードのIPによるポートの公開は不要です。

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

分散トレースのSpan受付用ポート番号（Participant、Orchestrator、およびMediator向け）

プロトコル

TCP

コンテナポート

14268

コンフィグ設定

規定しません。

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

規定しません。

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「300」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「1」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「60」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「3」

CPU/メモリリソース制限

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

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表7‒58　Jaeger-collectorのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

deployment.yaml

Deploymentオブジェクトのマニフェスト

service.yaml

Serviceオブジェクトのマニフェスト

serviceaccount.yaml

ServiceAccountオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル

7.5.14　Prometheusの要件

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

表7‒59　Prometheusの要件

項目

要件

ワークロードリソース

規定しません。

ネームスペース

任意の名称を指定できます。ただし、「7.5.11　Filebeatの要件」〜「7.5.17　Logstashの要件」では同一のネームスペースを指定してください。

ラベル

規定しません。

アノテーション

規定しません。

初期化コンテナ構成

規定しません。

コンテナ構成

Prometheusコンテナ

レプリカ数

規定しません。

再起動ポリシー

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

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

ローリングアップデートとしてください（Kubernetesのデフォルト設定）。

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

規定しません。

アクセス制御

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

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

APIグループ

空(コアグループ)、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

＜メトリクス収集用ロール＞

APIグループ

空(コアグループ)

リソース

pods、nodes、nodes/proxy、services、endpoints

アクセス許可

get、watch、list

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

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

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

規定しません。

永続化ボリューム

規定しません。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「300」

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

表7‒60　PrometheusのPrometheusコンテナの要件

項目

要件

コマンド

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

--config.file

「/etc/prometheus/prometheus.yml」

Prometheusの設定ファイルを配置したパス名を設定します。ConfigMapで定義したprometheus.ymlは、/etc/prometheus/に配置されます。

ネットワーク設定

デプロイしたノードのIPで、次のポートを公開してください（Serviceリソース）。

PrometheusのWeb UIアクセス用ポート番号

プロトコル

TCP

公開ポート

デプロイしたノード上のほかと被らないポート番号

コンテナポート

9090

コンフィグ設定

規定しません。

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

規定しません。

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

規定しません。

CPU/メモリリソース制限

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

7.5.15　Metricbeatの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ使用します。次の表に示す要件を満たすように作成します。

表7‒61　Metricbeatの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「7.5.11　Filebeatの要件」〜「7.5.17　Logstashの要件」では同一のネームスペースを指定してください。

ラベル

.metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：metricbeat

備考：チャート名

キー名：app.kubernetes.io/version

値：V.R.S※1

備考：バージョン

キー名：helm.sh/chart

値：metricbeat-V.R.S※2

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：metricbeat

備考：チャート名

アノテーション

規定しません。

初期化コンテナ構成

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

コンテナ構成

Metricbeatコンテナ

レプリカ数

「1」

再起動ポリシー

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

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

ローリングアップデートとしてください（Kubernetesのデフォルト設定）。

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

規定しません。

アクセス制御

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

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

APIグループ

空(コアグループ)、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

＜メトリクス向けKubernetesメタデータ付与用ロール＞

APIグループ

空(コアグループ)

リソース

pods、nodes、namespaces、events

アクセス許可

get、watch、list

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

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

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

規定しません。

永続化ボリューム

規定しません。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「30」

注※1

V.R.Sは使用するMetricbeatのバージョンに合わせて読み替えてください。

注※2

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

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

表7‒62　MetricbeatのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Elasticsearch

例を次に示します。

（例）

my-namespace/statefulsets/elasticsearch-master

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒63　Metricbeatコンテナの要件

項目

要件

コマンド

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

第1引数

「-e」

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

第2引数

「-E」

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

第3引数（http.enabled）

「true」

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

ネットワーク設定

デプロイしたノードのIPによるポートの公開は不要です。

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

メトリクス情報受付用ポート番号（Prometheus向け）

プロトコル

TCP

コンテナポート

9201

コンフィグ設定

規定しません。

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

次のとおり設定します。

実行ユーザ：0

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「1」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「1」

CPU/メモリリソース制限

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

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表7‒64　MetricbeatのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

config-map.yaml

ConfigMapオブジェクトのマニフェスト

deployment.yaml

Deploymentオブジェクトのマニフェスト

service.yaml

Serviceオブジェクトのマニフェスト

serviceaccount.yaml

ServiceAccountオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル

7.5.16　Elasticsearchの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ使用します。次の表に示す要件を満たすように作成します。

表7‒65　Elasticsearchの要件

項目

要件

ワークロードリソース

StatefulSetリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「7.5.11　Filebeatの要件」〜「7.5.17　Logstashの要件」では同一のネームスペースを指定してください。

ラベル

metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：次のどちらかの値を設定します。

・elasticsearch-master(シングル構成、クラスタ構成のマスターノードの場合)

・elasticsearch-data (クラスタ構成のデータノードの場合)

キー名：app.kubernetes.io/version

値：V.R.S※1

備考：バージョン

キー名：helm.sh/chart

値：elasticsearch-V.R.S※2

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：elasticsearch

備考：チャート名

アノテーション

規定しません。

初期化コンテナ構成

sysctlコマンド実行用コンテナ

コンテナ構成

Elasticsearchコンテナ

レプリカ数

1以上。

クラスタ構成の場合、masterノードのレプリカ数は3以上。

Service名

（StatefulSetリソース特有）

「elasticsearch-master-headless」

Podの管理ポリシー

（StatefulSetリソース特有）

規定しません。

再起動ポリシー

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

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

ローリングアップデートとしてください（Kubernetesのデフォルト設定）。

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

規定しません。

アクセス制御

規定しません。

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

1つのノードに割り当てられるPod数は1つまでです（例として、ワーカーノード数「5」に対してレプリカ数「5」のとき、各ノードにPodが1つ起動します）。

永続化ボリューム

データディレクトリに割り当てる永続化ボリュームは1つのPodにつき1つとしてください（共有しないでください）。

リポジトリディレクトリに割り当てる永続化ボリュームは、全Podからアクセス可能としてください（共有してください）。

データディレクトリに割り当てる永続ボリュームの種類を「ローカル永続ボリューム（local）」（ノードにアタッチされたローカルストレージデバイス）としてください。

リポジトリディレクトリに割り当てる永続化ボリュームは、共有できるNFS上に作成してください。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「120」

注※1

V.R.Sは使用するElasticsearchのバージョンに合わせて読み替えてください。

注※2

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

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

表7‒66　Elasticsearchのsysctlコマンド実行用コンテナの要件

項目

要件

コマンド

カーネルパラメタ「vm.max_map_count」を変更するため、次のとおりsysctlコマンドを実行します。

sysctl -w vm.max_map_count=262144（値はパラメタで設定します）

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

次のHMP-PCTOのパラメタを、Elasticsearchのhelmチャートが参照するvalues.yamlに設定してください。

「9.3.10　Elasticsearch」のパラメタ「sysctlVmMaxMapCount」

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

次のとおり設定します。

実行ユーザ：root

特権コンテナの許可

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒67　Elasticsearchコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

デプロイしたノードのIPで、次のポートを公開してください（Serviceリソース）。

Elasticsearch REST API用ポート番号

プロトコル

TCP

公開ポート

デプロイしたノード上のほかと被らないポート番号

コンテナポート

9200

コンフィグ設定

規定しません。

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

次のとおり設定します。

実行ユーザ：1000（Elasticsearch実行ユーザ）

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「300」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「1」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「60」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「3」

CPU/メモリリソース制限

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

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表7‒68　ElasticsearchのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

_helpers.tpl

Helmチャート内で使用する変数を定義したファイル

service-endpoint.yaml

API通信を行うためのServiceオブジェクトのマニフェスト

service-headless.yaml

クラスタ構成時、Elasticsearch Pod間通信を行うためのServiceオブジェクトのマニフェスト

statefulset.yaml

Statefulsetオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル

7.5.17　Logstashの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。Elastic Stack、JaegerおよびPrometheusを使用してトラブルシュート情報を収集する場合だけ使用します。次の表に示す要件を満たすように作成します。

表7‒69　Logstashの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「7.5.11　Filebeatの要件」〜「7.5.17　Logstashの要件」では同一のネームスペースを指定してください。

ラベル

metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：logstash

備考：チャート名

キー名：app.kubernetes.io/version

値：V.R.S※1

備考：バージョン

キー名：helm.sh/chart

値：logstash-V.R.S※2

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：logstash

備考：チャート名

アノテーション

規定しません。

初期化コンテナ構成

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

コンテナ構成

Logstashコンテナ

レプリカ数

規定しません。

再起動ポリシー

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

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

ローリングアップデートとしてください（Kubernetesのデフォルト設定）。

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

規定しません。

アクセス制御

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

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

APIグループ

空(コアグループ)、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

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

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

1つのノードに割り当てられるPod数は1つまでです（例として、ワーカーノード数「5」に対してレプリカ数「5」のとき、各ノードにPodが1つ起動します）。

永続化ボリューム

規定しません。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「120」

注※1

V.R.Sは使用するLogstashのバージョンに合わせて読み替えてください。

注※2

V.R.Sは使用するHMP-PCTOのバージョンに合わせて読み替えてください。

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

表7‒70　LogstashのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Elasticsearch

例を次に示します。

（例）

my-namespace/statefulsets/elasticsearch-master

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表7‒71　Logstashコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

デプロイしたノードのIPによるポートの公開は不要です。

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

ログメッセージ受付用ポート番号（Filebeat向け）

プロトコル

TCP

コンテナポート

5044

コンフィグ設定

規定しません。

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

次のとおり設定します。

実行ユーザ：1000（Logstash実行ユーザ）

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「300」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「1」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「60」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

Probe失敗後の成功判定最小回数（successThreshold）

推奨値「3」

CPU/メモリリソース制限

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

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表7‒72　LogstashのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

configmap-config.yaml

Logstashの起動と制御設定を定義したConfigMapオブジェクトのマニフェスト

configmap-pipeline.yaml

Logstashで受け付けるデータの入力・出力先に関する設定を定義したConfigMapオブジェクトのマニフェスト

deployment.yaml

Deploymentオブジェクトのマニフェスト

service.yaml

Serviceオブジェクトのマニフェスト

serviceaccount.yaml

ServiceAccountオブジェクトのマニフェスト

Chart.yaml

Chart.yaml

values.yaml

values.yaml

values.schema.json

values.yamlの設定値のバリデーション用ファイル

7.5.18　Metrics Serverの要件

スケーリング対応機能で利用するメトリクス情報をMetrics Serverで収集する場合、公式ドキュメントを参照してMetrics Serverを作成してください。利用できるMetrics Serverのバージョンについては、「1.4.3　関連プログラム」を参照してください。

このとき、「9.3.12　Metrics Server」を参照し記載のある設定項目に適切な値を設定して、Metrics Serverを作成してください。

7.6　Kubernetesアプリケーションで使用するスクリプト

Kubernetesアプリケーションで使用するシェルスクリプトについて説明します。

7.6.1　デプロイ依存関係チェックスクリプト（dependency_check.sh）

コマンド引数で指定されたターゲットKubernetesオブジェクト群が起動状態になるまで待機するスクリプトです。各Kubernetesアプリケーションの初期化コンテナとして起動するDependency-Checkerコンテナで使用します。

＜コマンド処理内容＞

Kubernetes APIサーバ（kube-apiserver）に対してKubernetesオブジェクトの情報を取得するGETリクエストを実行し、JSONレスポンスの内容が起動済みを示している場合は、ステータスコード「0」で正常終了します。初期化コンテナが正常終了した場合、Kubernetesクラスタは該当するPod内の各コンテナの起動を開始します。

一方、JSONレスポンスの内容が未起動または起動中を示している場合は、コマンド引数で指定されたリトライ回数・リトライ間隔秒数でリトライします。最大リトライ回数を超えた場合は、ステータスコード「1」で異常終了します。リトライオーバーし、初期化コンテナが異常終了した場合、Podの状態はCrashLoopBackOffになります。

＜コマンド構文＞

dependency_check.sh△<リトライ回数>△<リトライ間隔秒数>△<接続タイムアウト秒数>△<応答タイムアウト秒数>△{<Namespace>/<Kubernetesリソース種別>/[<Kubernetesオブジェクト名>|<ラベルセレクタ>]}△[...]

（凡例）

△：半角スペース1文字

ターゲットKubernetesオブジェクトの指定方法の詳細を次に説明します。

ターゲットKubernetesオブジェクトは、次の形式で指定します。

{<Namespace>/<Kubernetesリソース種別>/[<Kubernetesオブジェクト名>|<ラベルセレクタ>]}

<Namespace>は、ターゲットKubernetesオブジェクトのNamespaceを指定します。なお、存在しないNamespaceを指定した場合は、KFSG62103-Wメッセージを出力し、リトライします。

<Kubernetesリソース種別>は、ターゲットKubernetesオブジェクトのKubernetesリソース種別を指定します。指定可能なKubernetesリソース種別は次のとおりです。なお、これら以外の文字列を指定した場合は、KFSG62103-Wメッセージを出力し、リトライします。

pods

replicasets

deployments

statefulsets

daemonsets

<Kubernetesオブジェクト名>は、ターゲットKubernetesオブジェクトをKubernetesオブジェクト名で指定する場合に指定します。なお、存在しないKubernetesオブジェクト名を指定した場合は、KFSG62103-Wメッセージを出力し、リトライします。

<ラベルセレクタ>は、ターゲットKubernetesオブジェクトをラベルセレクタで指定する場合に指定します。ラベルセレクタは「<キー>=<値>」の形式で指定します（（例）「app=mediator」）。ラベルセレクタで指定すると、該当するすべてのKubernetesオブジェクトが起動済みとなるまで待機します。なお、存在しないラベルを指定した場合は、KFSG62110-Wメッセージを出力し、リトライします。

ターゲットKubernetesオブジェクトは、複数指定できます。ターゲットKubernetesオブジェクトを複数指定すると、指定したすべてのKubernetesオブジェクトが起動済みとなるまで待機します。

＜実行例＞

ターゲットKubernetesオブジェクトをKubernetesオブジェクト名で指定する例：

dependency_check.sh 30 10 10 10 my-namespace/deployments/sql-participant

ターゲットKubernetesオブジェクトをラベルセレクタで指定する例：

dependency_check.sh 30 10 10 10 my-namespace/pods/app=sql-participant

ターゲットKubernetesオブジェクトを複数指定する例：

dependency_check.sh 30 10 10 10 ¥
  my-namespace/statefulsets/mediator ¥
  my-namespace/statefulsets/eads-server ¥
  my-namespace/statefulsets/postgresql

＜コマンド引数チェック仕様＞

次の条件をどちらか1つでも満たしていない場合は、KFSG62109-Eメッセージを出力し、ステータスコード「1」で異常終了します。

コマンド引数の数が「5以上」である

コマンド引数で指定されたリトライ回数・リトライ間隔秒数・接続タイムアウト秒数・応答タイムアウト秒数の値が「整数値」である

＜バージョン表示オプション＞

次のようにコマンドに「--version」オプションを指定して実行すると、該当するスクリプト名およびバージョン番号を表示して終了します。

dependency_check.sh△--version

（凡例）

△：半角スペース1文字

＜コマンドの実行結果＞

dependency_check.sh△V.R.S

（凡例）

△：半角スペース1文字

V.R.S：バージョン番号

＜コマンドの実行結果の例＞

dependency_check.sh 1.0.0

7.6.2　トランザクションヘルスチェックスクリプト（health_check.sh）

Orchestrator-Service、Relay-Service、Entity-Service(SQL)、Entity-Service(TCC)、Orchestrator-Service(SQL)、Alternate-Service、Alternate-Service(SQL)、Mediator、およびTP1-Bridgeがトランザクションを受け付けられる状態になるまでpostStartフックで待機し、Liveness ProbeでPodの起動中にトランザクションを受け付けられるかを定期的に確認するスクリプトです。

＜コマンド処理内容＞

localhostに対してコマンド引数で指定されたHTTPポートの「トランザクションヘルスチェックAPI（/hmppcto/health）」へGETリクエストを実行し、JSONレスポンスに含まれる「起動状態（"status"キー）」の値が「起動状態（"SERVING"）」の場合は、ステータスコード「0」で正常終了します。postStartフックが正常終了した場合、PodのステータスはRunningになります。

一方、値が「停止状態（非"SERVING"）」の場合は、コマンド引数で指定されたリトライ回数・リトライ間隔秒数でリトライします。最大リトライ回数を超えた場合は、ステータスコード「1」で異常終了します。リトライオーバーし、postStartフックが異常終了した場合、Podの状態はPostStartHookErrorになります。

＜コマンド構文＞

health_check.sh△<リトライ回数>△<リトライ間隔秒数>△<接続タイムアウト秒数>△<応答タイムアウト秒数> △<HTTPポート番号>[△<コンテキストパス>]

（凡例）

△：半角スペース1文字

＜実行例＞

health_check.sh 30 10 10 10 20555

＜実行例（コンテキストパス指定時）＞

health_check.sh 30 10 10 10 20555 /path

＜コマンド引数チェック仕様＞

次の条件をどちらか1つでも満たしていない場合は、KFSG62100-Eメッセージを出力し、ステータスコード「1」で異常終了します。

コマンド引数の数が「5 以上」である

第1引数〜第5引数の値が「整数値」である

＜バージョン表示オプション＞

次のようにコマンドに「--version」オプションを指定して実行すると、該当するスクリプト名およびバージョン番号を表示して終了します。

health_check.sh△--version

（凡例）

△：半角スペース1文字

＜コマンドの実行結果＞

health_check.sh△V.R.S

（凡例）

△：半角スペース1文字

V.R.S：バージョン番号

＜コマンドの実行結果の例＞

health_check.sh 1.0.0

7.6.3　未決着トランザクション待機スクリプト（wait_transactions.sh）

Orchestrator-Service、Entity-Service(SQL)、Entity-Service(TCC)、Orchestrator-Service(SQL)、Alternate-Service、Alternate-Service(SQL)、Mediator、およびTP1-Bridgeがスケールインなどによってシャットダウンする際に、未決着トランザクションがなくなるまで待機するスクリプトです。各KubernetesアプリケーションのpreStopフックで使用します。

＜コマンド処理内容＞

このコマンド開始直後に20秒間待機します。これは、KubernetesがPod終了開始直後に実施する「Serviceのリクエスト転送先リストからのPodの宛先の削除」が完了するのを待つためです。これによって、このコマンドが後続で未決着トランザクションの待機処理を開始するまでに、新規トランザクション処理のリクエストの流入がない状態にできます。

そのあと、未決着トランザクションの有無を判定するために、localhostに対してコマンド引数で指定されたHTTPポート番号の「グレースフルシャットダウン確認API（/hmppcto/graceful）」へGETリクエストを実行し、JSONレスポンスに含まれる「グレースフルシャットダウンできるかを表す値（"status"キー）」の値が「true」の場合は、ステータスコード「0」で正常終了します。

一方、値が「false」の場合は、コマンド引数で指定されたリトライ回数・リトライ間隔秒数でリトライします。最大リトライ回数を超えた場合は、ステータスコード「1」で異常終了します。

preStopフックが正常終了した場合および異常終了した場合のどちらの場合も、Podは削除されます。

＜コマンド構文＞

wait_transactions.sh△<リトライ回数>△<リトライ間隔秒数>△<接続タイムアウト秒数>△<応答タイムアウト秒数> △<HTTPポート番号>[△<コンテキストパス>]

（凡例）

△：半角スペース1文字

＜実行例＞

wait_transactions.sh 30 10 10 10 20555

＜実行例（コンテキストパス指定時）＞

wait_transactions.sh 30 10 10 10 20555 /path

＜コマンド引数チェック仕様＞

次の記条件をどちらか1つでも満たしていない場合は、KFSG62101-Eメッセージを出力し、ステータスコード「1」で異常終了します。

コマンド引数の数が「5 以上」である

第1引数〜第5引数の値が「整数値」である

＜バージョン表示オプション＞

次のようにコマンドに「--version」オプションを指定して実行すると、該当するスクリプト名およびバージョン番号を表示して終了します。

wait_transactions.sh△--version

（凡例）

△：半角スペース1文字

＜コマンドの実行結果＞

wait_transactions.sh△V.R.S

（凡例）

△：半角スペース1文字

V.R.S：バージョン番号

＜コマンドの実行結果の例＞

wait_transactions.sh 1.0.0

8　API

HMP-PCTOがサポートするクラス・インタフェース、アノテーションおよび例外の仕様について説明します。

8.1　APIの記述形式

HMP-PCTOがサポートするクラス・インタフェース、アノテーションおよび例外の記述形式について説明します。

各項で説明する項目は次のとおりです。

クラス・インタフェース

説明

クラス・インタフェースの機能について説明します。

メソッド

クラス・インタフェースのメソッドの一覧について説明します。

なお、親クラスから継承したメソッドは記載していません。

パッケージ名称

クラス・インタフェースのパッケージ名称について説明します。

アノテーション

説明

アノテーションの機能について説明します。

適用可能要素

アノテーションの適用可能要素について説明します。

属性

アノテーションの属性の一覧について説明します。

パッケージ名称

クラス・インタフェースのパッケージ名称について説明します。

例外

説明

例外の機能について説明します。

メソッド

例外のメソッドの一覧について説明します。

なお、親クラスから継承したメソッドは記載していません。

パッケージ名称

例外のパッケージ名称について説明します。

継承関係

例外の継承関係について説明します。

メソッド

説明

メソッドの機能について説明します。

形式

メソッドの形式について説明します。

引数

メソッドの引数について説明します。

例外

メソッドを利用する際に発生する例外について説明します。

戻り値

メソッドの戻り値について説明します。

8.2　トランザクション制御のAPI仕様

HMP-PCTOのトランザクション制御で使用するAPIの仕様を説明します。

8.2.1　クラス・インタフェースの一覧

HMP-PCTOのトランザクション制御がサポートするクラス・インタフェースの一覧を示します。

表8‒1　クラス・インタフェースの一覧

項番

パッケージ名

クラス・インタフェース名

説明

1

jp.co.Hitachi.soft.hmppcto.common.transaction

XidHeadersインタフェース

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名を定義したインタフェースです。

2

jp.co.Hitachi.soft.hmppcto.filter.propagation

TxPropagationRestTemplateInterceptorクラス

Spring FrameworkのRestTemplateによるREST通信時に、トランザクションを伝搬するインタセプタクラスです。

3

jp.co.Hitachi.soft.hmppcto.filter.propagation

TxPropagationGrpcClientInterceptorクラス

gRPC通信時に、gRPCのClientInterceptorを使用してトランザクションを伝搬するインタセプタクラスです。

4

jp.co.Hitachi.soft.hmppcto.filter.propagation

TxPropagationOptionalSettingsクラス

トランザクションを伝搬するためのオプションを設定するクラスです。

5

jp.co.Hitachi.soft.hmppcto.filter

TxPropagationGrpcServerInterceptorクラス

gRPCのServerInterceptorを使用してトランザクションを伝搬するインタセプタクラスです。

6

jp.co.Hitachi.soft.hmppcto.filter

GrpcTraceInterceptorFactoryクラス

HMP-PCTOが取得する分散トレースに、アプリケーションのgRPC通信の送受信イベントを出力するインタセプタを提供するためのファクトリクラスです。

8.2.2　アノテーションの一覧

HMP-PCTOのトランザクション制御がサポートするアノテーションの一覧を示します。

項番

パッケージ名

アノテーション名

説明

1

jp.co.Hitachi.soft.hmppcto.branch.api

@PctoBranchRollbackForアノテーション

REST通信によるトランザクションブランチの属性を設定するアノテーションです。

2

jp.co.Hitachi.soft.hmppcto.branch.api

@PctoGrpcBranchRollbackForアノテーション

gRPC通信によるトランザクションブランチの属性を設定するアノテーションです。

3

jp.co.Hitachi.soft.hmppcto.transaction.api

@PctoTransactionalアノテーション

トランザクション境界（トランザクションの開始/終了）とトランザクションの属性を設定するアノテーションです。

4

jp.co.Hitachi.soft.hmppcto.transaction.api

@PctoTransactionBranchアノテーション

トランザクションブランチの作成（トランザクションブランチの開始/終了）とトランザクションブランチの属性を設定するアノテーションです。

8.2.3　例外の一覧

HMP-PCTOのトランザクション制御がサポートする例外の一覧を示します。

表8‒2　例外の一覧

項番

パッケージ名

例外名

説明

ユーザによる例外送出可否

1

jp.co.Hitachi.soft.hmppcto.interceptor

RollbackTerminationException

トランザクションがロールバック決着した場合に送出する例外です。

否

2

jp.co.Hitachi.soft.hmppcto.interceptor

TerminationFailureException

トランザクションの決着結果が不明の場合に送出する例外です。

否

3

jp.co.Hitachi.soft.hmppcto.lb.exception

PodNotFoundException

APに指定したサービスに紐づくPodが存在しない場合に送出する例外です。リクエストの実行の前処理で送出します。

否

4

jp.co.Hitachi.soft.hmppcto.lb.exception

ServiceNotFoundException

APに指定したサービスが存在しない場合に送出する例外です。リクエストの実行の前処理で送出します。

否

5

jp.co.Hitachi.soft.hmppcto.transaction

TransactionBranchException

トランザクションではない呼び出し元で@PctoTransactionBranchを指定したメソッドを呼び出した場合に送出する例外です。

否

6

jp.co.Hitachi.soft.hmppcto.transaction

TransactionSystemException

サービス情報の参照時に障害が発生した場合に送出する例外です。

主にOrchestratorの初期化時、トランザクションの開始時に送出します。

否

8.2.4　XidHeadersインタフェース（SQL-Participant限定）

説明

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名を定義したインタフェースです。

先行プリペアする場合は、APがXidHeaders.IS_LAST_CALLを使用してHTTPヘッダに追加します。

ほかの定数は、HMP-PCTOが使用するHTTPヘッダです。APで使用する必要はありません。

定数

XidHeadersインタフェースの定数の一覧を次の表に示します。

表8‒3　XidHeadersインタフェースの定数の一覧

定数

備考

public static final String BRANCH_ID

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名の定数です。

public static final String IS_LAST_CALL

先行プリペアをする場合に、APがHTTPヘッダに追加するHTTPヘッダ名の定数です。

APが同一のブランチで最後にSQLを実行する場合にこのHTTPヘッダにXidHeaders.TRUEを設定してサービスを呼び出すと、HMP-PCTOは先行プリペアを実行します。

public static final String FORMAT_ID

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名の定数です。

public static final String PARTICIPANT_GRPC_URI

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名の定数です。

public static final String TRANSACTION_CONTEXT

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名の定数です。

public static final String TRANSACTION_ID

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名の定数です。

public static final String TRANSACTION_KEY

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名の定数です。

public static final String TRUE

HTTPヘッダにXidHeaders.IS_LAST_CALLを追加する際に、HTTPヘッダの値に設定する定数です。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.common.transaction

8.2.5　TxPropagationRestTemplateInterceptorクラス

説明

Spring FrameworkのRestTemplateによるREST通信時に、トランザクションを伝搬するインタセプタクラスです。APがRestTemplateのインスタンスに登録して使用します。TxPropagationRestTemplateInterceptorの各メソッドは、Spring Frameworkが呼び出します。APが直接TxPropagationRestTemplateInterceptorの各メソッドを使用する必要はありません。APがほかのインタセプタを登録する場合は、特に理由がないかぎりは、TxPropagationRestTemplateInterceptorクラスが最初に呼び出されるように登録してください。

メソッド

TxPropagationRestTemplateInterceptorクラスのメソッドの一覧を次の表に示します。

表8‒4　TxPropagationRestTemplateInterceptorクラスのメソッドの一覧

メソッド

説明

intercept(org.springframework.http.HttpRequest request, byte[] body, org.springframework.http.client.ClientHttpRequestExecution execution)

指定されたリクエストをインタセプトし、レスポンスを返すメソッドです。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.filter.propagation

(1)　intercept(org.springframework.http.HttpRequest request, byte[] body, org.springframework.http.client.ClientHttpRequestExecution execution)

説明

指定されたリクエストをインタセプトし、レスポンスを返すメソッドです。次の順序で処理を実行します。

HMP-PCTOがトランザクション制御に使用するHTTPヘッダをリクエストに追加してトランザクションを伝搬します。

引数executionのexcute()メソッドを実行して後続のインタセプタを実行、およびリクエストを送信し、レスポンスを受け取ります。

レスポンスからHMP-PCTOがトランザクション制御に使用するHTTPヘッダを入力してトランザクション制御を実行します。

形式

org.springframework.http.client.ClientHttpResponse intercept(
org.springframework.http.HttpRequest request, byte[] body,
org.springframework.http.client.ClientHttpRequestExecution execution) throws java.io.IOException

引数

org.springframework.http.HttpRequest request：

メソッド、URI、ヘッダを含むリクエストを指定します。

byte[] body：

リクエストの本文を指定します。

org.springframework.http.client.ClientHttpRequestExecution execution：

リクエストの実行に使用するインスタンスを指定します。

戻り値

org.springframework.http.client.ClientHttpResponse：

レスポンスを返します。

例外

java.io.IOException：

I/Oエラーです。リクエストの実行時（引数executionのexcute()メソッド実行時）に送出された例外をそのまま送出します。このメソッドで新たな例外の送出はしません。

jp.co.Hitachi.soft.hmppcto.lb.exception.PodNotFoundException：

APに指定したサービスに紐づくPodが存在しない場合に送出する例外です。リクエストの実行の前処理で送出します。

jp.co.Hitachi.soft.hmppcto.lb.exception.ServiceNotFoundException：

APに指定したサービスが存在しない場合に送出する例外です。リクエストの実行の前処理で送出します。

8.2.6　TxPropagationGrpcClientInterceptorクラス

説明

gRPC通信時に、gRPCのClientInterceptorを使用してトランザクションを伝搬するインタセプタクラスです。

メソッド

TxPropagationGrpcClientInterceptorクラスのメソッドの一覧を次の表に示します。

表8‒5　TxPropagationGrpcClientInterceptorクラスのメソッドの一覧

メソッド

説明

interceptCall io.grpc.ClientCall<ReqT,RespT> interceptCall(io.grpc.MethodDescriptor<ReqT,RespT> method,io.grpc.CallOptions callOptions, io.grpc.Channel next)

io.grpc.ClientCallによるgRPCの呼び出しをインタセプトし、トランザクションを伝搬するメソッドです。

(1)　interceptCall io.grpc.ClientCall<ReqT,RespT> interceptCall(io.grpc.MethodDescriptor<ReqT,RespT> method,io.grpc.CallOptions callOptions, io.grpc.Channel next)

説明

io.grpc.ClientCallによるgRPCの呼び出しをインタセプトし、トランザクションを伝搬するメソッドです。

形式

public <ReqT,RespT> io.grpc.ClientCall<ReqT,RespT> interceptCall(io.grpc.MethodDescriptor<ReqT,RespT> method, io.grpc.CallOptions callOptions, io.grpc.Channel next)

引数

io.grpc.MethodDescriptor<ReqT,RespT> method：

呼び出されるリモートメソッドを指定します。

io.grpc.CallOptions callOptions：

この呼び出しに使用するオプションを指定します。

io.grpc.Channel next：

インタセプトされているチャネルを指定します。

戻り値

<ReqT,RespT> io.grpc.ClientCall<ReqT,RespT>：

リモート呼び出しのオブジェクトを返します。

8.2.7　TxPropagationOptionalSettingsクラス

説明

トランザクションを伝搬するためのオプションを設定するクラスです。

メソッド

TxPropagationOptionalSettingsクラスのメソッドの一覧を次の表に示します。

表8‒6　TxPropagationOptionalSettingsクラスのメソッドの一覧

メソッド

説明

isPrePrepared()

このチャネルでサービスを呼び出した場合に、先行プリペア機能を使用するかどうかを返すメソッドです。

setPrePrepared(boolean prePreparedState)

このチャネルでサービスを呼び出した場合に、先行プリペア機能を使用するかどうかを切り替えるメソッドです。

(1)　isPrePrepared()

説明

このチャネルでサービスを呼び出した場合に、先行プリペア機能を使用するかどうかを返すメソッドです。スレッド単位で値を記憶するため、現在のスレッドの値を返します。

形式

public static boolean isPrePrepared()

戻り値

先行プリペア機能を使用する場合、trueを返します。
先行プリペア機能を使用しない場合、falseを返します。

(2)　setPrePrepared(boolean prePreparedState)

説明

このチャネルでサービスを呼び出した場合に、先行プリペア機能を使用するかどうかを切り替えるメソッドです。一度設定した値は再設定されるまでスレッド単位で記憶します。先行プリペア機能を使用するかどうかを切り替えたいタイミングで実行してください。現在のスレッドの値はisPrePrepared()メソッドで確認できます。チャネル作成時の初期値はfalseです。

形式

public static void setPrePrepared(boolean prePreparedState)

引数

boolean prePreparedState：

先行プリペア機能を使用するかどうかを指定します。

trueを指定した場合、先行プリペア機能を使用します。

falseを指定した場合、先行プリペア機能を使用しません。

8.2.8　TxPropagationGrpcServerInterceptorクラス

説明

gRPCのServerInterceptorを使用してトランザクションを伝搬するインタセプタクラスです。

メソッド

TxPropagationGrpcServerInterceptorクラスのメソッドの一覧を次の表に示します。

表8‒7　TxPropagationGrpcServerInterceptorクラスのメソッドの一覧

メソッド

説明

interceptCall(io.grpc.ServerCall<ReqT,RespT> call, io.grpc.Metadata headers, io.grpc.ServerCallHandler<ReqT,RespT> next)

io.grpc.ServerCallをインタセプトし、トランザクションを伝搬するメソッドです。

(1)　interceptCall(io.grpc.ServerCall<ReqT,RespT> call, io.grpc.Metadata headers, io.grpc.ServerCallHandler<ReqT,RespT> next)

説明

io.grpc.ServerCallをインタセプトし、トランザクションを伝搬するメソッドです。

形式

public <ReqT,RespT>io.grpc.ServerCall.Listener<ReqT> interceptCall(io.grpc.ServerCall<ReqT,RespT> call, io.grpc.Metadata headers, io.grpc.ServerCallHandler<ReqT,RespT> next)

引数

io.grpc.ServerCall<ReqT,RespT> call：

サーバを呼び出すオブジェクトを指定します。

io.grpc.Metadata headers：

クライアントから送信されたio.grpc.Metadataを指定します。

io.grpc.ServerCallHandler<ReqT,RespT> next：

次のインタセプタをディスパッチするためのオブジェクトを指定します。

戻り値

<ReqT,RespT>io.grpc.ServerCall.Listener<ReqT>：

リクエストを処理するためのリスナーを返します。

8.2.9　GrpcTraceInterceptorFactoryクラス

説明

HMP-PCTOが取得する分散トレースに、アプリケーションのgRPC通信の送受信イベントを出力するインタセプタを提供するためのファクトリクラスです。

このクラスのメソッドを使用して取得したインタセプタをgRPCクライアントおよびgRPCサーバに登録することで、HMP-PCTOが取得する分散トレースにアプリケーションのgRPC通信の送受信イベントが出力されます。

メソッド

GrpcTraceInterceptorFactoryクラスのメソッドの一覧を次の表に示します。

表8‒8　GrpcTraceInterceptorFactoryクラスのメソッドの一覧

メソッド

説明

getClientInterceptor()

gRPCクライアントに登録する分散トレース出力用のインタセプタを取得するメソッドです。

getServerInterceptor()

gRPCサーバに登録する分散トレース出力用のインタセプタを取得するメソッドです。

(1)　getClientInterceptor()

説明

gRPCクライアントに登録する分散トレース出力用のインタセプタを取得するメソッドです。

形式

io.grpc.ServerInterceptor getServerInterceptor()

戻り値

io.grpc.ClientInterceptor：

gRPCクライアントに登録する分散トレース出力用のインタセプタを返します。

(2)　getServerInterceptor()

説明

gRPCサーバに登録する分散トレース出力用のインタセプタを取得するメソッドです。

形式

io.grpc.ServerInterceptor getServerInterceptor()

戻り値

io.grpc.ServerInterceptor：

gRPCサーバに登録する分散トレース出力用のインタセプタを返します。

8.2.10　@PctoBranchRollbackForアノテーション

説明

REST通信によるトランザクションブランチの属性を設定するアノテーションです。HTTPのサービスで実行される任意のクラス、メソッドに指定できます。複数のメソッドに指定した場合は、最後に実行されたメソッドで設定した属性が有効になります。クラスレベルで指定することもできますが、メソッドレベルでの指定を推奨します。

rollbackOn属性、rollbackOnFamily属性でこのトランザクションをロールバックにマークするかどうかを決めるHTTPステータス、HTTPステータスファミリーを設定します。

トランザクションブランチのサービス終了後に動作するHMP-PCTOのフィルタが、HTTPステータスを判定してロールバックにマークしたかどうかを呼び出し元のサービスに連絡します。ロールバックにマークしたトランザクションブランチが1つでもあると、グローバルトランザクションはロールバックします。

rollbackOn属性、rollbackOnFamily属性を両方指定した場合は、両方の設定値が有効です。

デフォルトの動作は、4xx、5xxをロールバックにマークします。

ただし、次の場合には、rollbackOn属性、rollbackOnFamily属性の設定に関係なくロールバックにマークしません。

HTTPステータス404の場合

HTTPステータス405の場合

適用可能要素

クラス、メソッド

属性

@PctoBranchRollbackForアノテーションの属性の一覧を次の表に示します。

表8‒9　@PctoBranchRollbackForアノテーションの属性の一覧

属性名

説明

必須/任意

型

デフォルト値

rollbackOn

トランザクションにロールバックのマークを付ける必要があるHTTPステータスを設定します。

任意

jakarta.ws.rs.core.Response.Status[]

なし

rollbackOnFamily

トランザクションにロールバックのマークを付ける必要があるHTTPステータスファミリーを設定します。

任意

jakarta.ws.rs.core.Response.Status.Family[]

{jakarta.ws.rs.core.Response.Status.Family.CLIENT_ERROR, jakarta.ws.rs.core.Response.Status.Family.SERVER_ERROR}

パッケージ名称

jp.co.Hitachi.soft.hmppcto.interceptor

8.2.11　@PctoGrpcBranchRollbackForアノテーション

説明

gRPC通信によるトランザクションブランチの属性を設定するアノテーションです。gRPCのサービスで実行される任意のクラス、メソッドに指定できます。複数のメソッドに指定した場合は、最後に実行されたメソッドで設定した属性が有効になります。クラスレベルで指定することもできますが、メソッドレベルで指定することを推奨します。

dontRollbackOn属性で、このトランザクションをロールバックにマークしないgRPCステータスコードを設定します。デフォルトの動作は、io.grpc.Status.Code.OK以外をロールバックにマークします。

トランザクションブランチのサービス終了後に動作するHMP-PCTOのインタセプタが、gRPCステータスを判定してロールバックにマークしたかどうかを呼び出し元のサービスに連絡します。ロールバックにマークしたトランザクションブランチが1つでもあると、グローバルトランザクションはロールバックします。

適用可能要素

クラス、メソッド

属性

@PctoGrpcBranchRollbackForアノテーションの属性の一覧を次の表に示します。

表8‒10　@PctoGrpcBranchRollbackForアノテーションの属性の一覧

属性名

説明

必須/任意

型

デフォルト値

dontRollbackOn

トランザクションをロールバックにマークしないgRPCのステータスコードを設定します。

任意

io.grpc.Status.Code[]

なし

パッケージ名称

jp.co.Hitachi.soft.hmppcto.interceptor

8.2.12　@PctoTransactionalアノテーション

説明

トランザクション境界を設定し、トランザクションの属性を設定するアノテーションです。このアノテーションを指定したメソッドの呼び出し前にトランザクションを開始し、メソッドの終了後にトランザクションを終了します。このアノテーションを指定したメソッドから呼び出され、同じスレッドで動作するメソッドはトランザクションの範囲内です。トランザクションの範囲内でこのアノテーションを指定したメソッドがネストしている場合は、ネストしている指定を無視します（元のトランザクションの範囲内です）。クラスレベルで指定することもできますが、メソッドレベルでの指定を推奨します。

このアノテーションを設定したメソッドの実行後に動作するHMP-PCTOのインタセプタが、アプリケーションが送出した例外をキャッチして、トランザクションにロールバックのマークを付けるか判定し、Mediatorにトランザクションの決着をリクエストします。

トランザクションがロールバックに決着した場合、および通信障害によってMediatorからトランザクションの決着結果を受け取れなかった場合は、このアノテーションを指定したメソッドの呼び出し元に例外を送出します。サービスのルートとなるメソッドにこのアノテーションを指定した場合、例外がどのようなエラー処理にマッピングされるかは、使用しているフレームワーク、APサーバの仕様に依存します。そのため、このアノテーションはルートとなるメソッド以外に設定してアプリケーションでエラーハンドリングすることを推奨します。

rollbackOn属性を設定して、インタセプタがトランザクションにロールバックのマークを付ける必要がある例外を示すことができます。

逆に、dontRollbackOn属性を設定して、インタセプタがトランザクションにロールバックのマークを付けてはならない例外を示すことができます。設定しなかった例外の場合にロールバックのマークを付けます。

これらの属性に設定した例外クラスのサブクラスにも同じ属性が適用されます。

両方の属性が指定されている場合、dontRollbackOnが優先されます。

両方の属性を省略した場合、java.io.IOExceptionとそのサブクラスをロールバックにマークします。

なお、java.lang.RuntimeExceptionとそのサブクラスは、属性の設定に関係なくロールバックのマークを付けます。

適用可能要素

クラス、メソッド

属性

@PctoTransactionalアノテーションの属性の一覧を次の表に示します。

表8‒11　@PctoTransactionalアノテーションの属性の一覧

属性名

説明

必須/任意

型

デフォルト値

dontRollbackOn

トランザクションにロールバックのマークを付けてはならない例外を指定します。

任意

Class<?>[]

なし

rollbackOn

トランザクションにロールバックのマークを付ける必要がある例外を指定します。

任意

Class<?>[]

{java.io.IOException}

パッケージ名称

jp.co.Hitachi.soft.hmppcto.transaction.api

8.2.13　@PctoTransactionBranchアノテーション

説明

トランザクションブランチを作成するアノテーションです。このアノテーションを指定することで、トランザクションルートの範囲内でJDBC Proxy Driverを使用できます。このアノテーションを指定したメソッドの呼び出し前にトランザクションブランチを開始し、メソッドの終了後にトランザクションブランチを終了します。このアノテーションを指定したメソッドから呼び出され、同じスレッドで動作するメソッドは、同じトランザクションブランチの範囲内です。トランザクションブランチの範囲内でこのアノテーションを指定したメソッドがネストしている場合、元のトランザクションブランチの範囲内になるため、ネストしている指定を無視します。@PctoTransactionalアノテーションを指定したメソッドにも、このアノテーションを指定できます。

prePreparedOn属性を指定して、先行プリペア機能を使用できます。prePreparedOn属性にtrueを指定すると、先行プリペア機能を使用します。prePreparedOn属性を省略またはfalseを指定すると、先行プリペア機能を使用しません。

適用可能要素

クラス、メソッド

属性

@PctoTransactionBranchアノテーションの属性の一覧を次の表に示します。

表8‒12　@PctoTransactionBranchアノテーションの属性の一覧

属性名

説明

必須/任意

型

デフォルト値

prePreparedOn

先行プリペア機能を使用するかどうかを指定します。

true：先行プリペア機能を使用します。

false：先行プリペア機能を使用しません。

任意

boolean

false

パッケージ名称

jp.co.Hitachi.soft.hmppcto.transaction.api

8.2.14　RollbackTerminationException例外

説明

トランザクションがロールバック決着した場合に送出する例外です。@PctoTransactionalを設定したメソッドの呼び出し元に送出します。@PctoTransactionalを設定したメソッドが送出した例外は、getSuppressed()メソッドで受け取ることができます。

トランザクションがロールバックした理由は、ログおよびgetMessage()メソッドで受け取るメッセージで確認できます。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.interceptor

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      jp.co.Hitachi.soft.hmppcto.interceptor.RollbackTerminationException

8.2.15　TerminationFailureException例外

説明

Mediatorとの通信障害でトランザクションの決着結果が不明な場合、またはMediatorがトランザクションの決着結果不明を返却した場合に送出する例外です。@PctoTransactionalを設定したメソッドの呼び出し元に送出します。@PctoTransactionalを設定したメソッドが送出した例外は、getSuppressed()メソッドで受け取ることができます。

トランザクションの決着結果は、ログおよびgetMessage()メソッドで受け取るメッセージ中のXIDをキーに、分散トレースを確認してください。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.interceptor

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      jp.co.Hitachi.soft.hmppcto.interceptor.TerminationFailureException

8.2.16　PodNotFoundException例外

説明

APに指定したサービスに紐づくPodが存在しない場合に送出する例外です。TxPropagationRestTemplateInterceptorクラスの送信リクエストの実行の前処理で送出します。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.lb.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.io.IOException
        jp.co.Hitachi.soft.hmppcto.lb.exception.PodNotFoundException

8.2.17　ServiceNotFoundException例外

説明

APに指定したサービスが存在しない場合に送出する例外です。TxPropagationRestTemplateInterceptorクラスの送信リクエストの実行の前処理で送出します。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.lb.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.io.IOException
        jp.co.Hitachi.soft.hmppcto.lb.exception.ServiceNotFoundException

8.2.18　TransactionBranchException例外

説明

トランザクションではない呼び出し元で@PctoTransactionBranchを指定したメソッドを呼び出した場合に送出する例外です。

具体的には、@PctoTransactionBranchを指定したメソッドを実行しないで呼び出し元にTransactionBranchExceptionを送出します。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.transaction

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      jp.co.Hitachi.soft.hmppcto.transaction.TransactionBranchException

8.2.19　TransactionSystemException例外

説明

サービス情報の参照時に障害が発生した場合に送出する例外です。

主にOrchestratorの初期化時、トランザクションの開始時に送出します。トランザクションの開始時に送出する場合は、@PctoTransactionalを設定したメソッドを呼び出さないで、@PctoTransactionalを設定したメソッドの呼び出し元にTransactionSystemExceptionを送出します。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.transaction

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      jp.co.Hitachi.soft.hmppcto.transaction.TransactionSystemException

8.3　JDBC Proxy DriverのAPI仕様（SQL-Participant限定）

HMP-PCTOのJDBC Proxy Driverで使用するAPIの仕様を説明します。

制限事項

JDBC Driverの仕様で定められているメソッドのうち、HMP-PCTOがサポートしていないメソッドを呼び出した場合はPctoSqlFeatureNotSupportedException例外、またはPctoSQLClientInfoException例外を送出します。

親クラスから継承されたメソッドについては、親クラスから継承されたメソッドの一覧に記載されているメソッドだけをサポートします。親クラスでサポートしているメソッドについては、親クラスから継承されたメソッドの一覧に記載がない場合、使用時に例外を送出しませんが、動作の保証はしません。

メソッドの戻り値がjava.sqlのインタフェースを実装したクラスの場合、SQL-Participantで使用しているJDBC Driverのクラスではなく、「表8‒13　クラス・インタフェースの一覧」に示したHMP-PCTOのJDBC Proxy Driverがサポートするクラスにラップして返却します。そのためJDBCの仕様にないベンダ独自のメソッドについては、サポートしません。メソッドの戻り値がjava.sqlのインタフェースを実装したクラス以外の場合は、戻り値をそのまま返却します。

8.3.1　クラス・インタフェースの一覧（SQL-Participant限定）

HMP-PCTOのJDBC Proxy Driverがサポートするクラス・インタフェースの一覧を次に示します。

表8‒13　クラス・インタフェースの一覧

項番

パッケージ名

クラス・インタフェース名

説明

1

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoDataSourceクラス

データベースに接続するためのファクトリクラスです。

2

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoConnectionクラス

データベースとの接続（セッション）を表現するクラスです。

3

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoStatementクラス

静的SQL文を実行し、作成された結果を返すために使用するクラスです。

4

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoPreparedStatementクラス

プリコンパイルされたSQL文を実行するクラスです。

5

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoCallableStatementクラス

SQLストアド・プロシージャを実行するときに使用するクラスです。

6

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoResultSetクラス

データベースの結果を表すデータの表のクラスです。

7

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoDatabaseMetaDataクラス

データベースに関する包括的な情報を提供するクラスです。

8

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoResultSetMetaDataクラス

ResultSetオブジェクトの列の型とプロパティに関する情報を取得するのに使用するクラスです。

9

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoSQLXMLクラス

Javaプログラミング言語でSQL XML型を表現するクラスです。

10

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoBlobクラス

Javaプログラミング言語でSQL BLOB値を表現するクラスです。

11

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoClobクラス

Javaプログラミング言語でSQL CLOB型を表現するクラスです。

12

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoArrayクラス

SQL型ARRAYのJavaプログラミング言語でのマッピングをするクラスです。

8.3.2　例外の一覧（SQL-Participant限定）

HMP-PCTOのJDBC Proxy Driverがサポートする例外の一覧を次に示します。

表8‒14　例外の一覧

項番

パッケージ名

例外名

説明

ユーザによる例外送出可否

1

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoSqlFeatureNotSupportedException例外

JDBC Proxy Driverがサポートしていないメソッドを呼び出した場合に送出する例外です。

否

2

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoSQLClientInfoException例外

JDBC Proxy Driverがサポートしていないメソッドを呼び出した場合に送出する例外です。

否

3

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoInternalContradictionException例外

Participantの内部で障害が発生した場合に送出する例外です。

次の場合に送出する例外です。

Connectionインスタンスが失われている場合

Connectionインスタンスの取得時にDBで障害が発生した場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

否

4

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoTransactionStartException例外

Participantのトランザクションブランチを開始できない場合に送出する例外です。

否

5

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoPrePreparedException例外

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出する例外です。

否

6

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoConnectionLackedException例外

パラメタ「db.pool.max-pool-size」の指定値よりもDBコネクション数を多く使用しようとした場合に送出する例外です。

否

8.3.3　PctoDataSourceクラス（SQL-Participant限定）

説明

データベースに接続するためのファクトリクラスです。このDataSourceオブジェクトが表す物理データ・ソースへの接続で使用します。DriverManager機能の代わりに、DataSourceオブジェクトが接続を得るための手段となります。

DataSourceインタフェースを実装するオブジェクトは、Java Naming and Directory (JNDI) APIを基にしたネーム・サービスに登録されます。

DataSourceオブジェクトがルックアップ操作によって取得されて、Connectionオブジェクトを作成するために使用されます。基本実装では、DataSourceオブジェクトによって取得された接続は、DriverManager機能によって取得した接続と同じものになります。

メソッド

PctoDataSourceクラスのメソッドの一覧を次の表に示します。

表8‒15　PctoDataSourceクラスのメソッドの一覧

メソッド

説明

getConnection()

このDataSourceオブジェクトが表すデータ・ソースへの接続の確立を試みます。

isWrapperFor(Class<?> iface)

指定されたインタフェースを実装しているラッパーである場合かを返します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　getConnection()

説明

このDataSourceオブジェクトが表すデータ・ソースへの接続の確立を試みます。

形式

public Connection getConnection() throws SQLException

引数

なし。

戻り値

java.sql.Connection：

Spring Bootの設定ファイル(application.properties、application.ymlなど)に設定している次の項目のURLの接続を表すオブジェクトを返します。

spring.datasource.url

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

Connectionインスタンスの取得時にDBで障害が発生した場合

SQL-Participantが閉塞している場合

PctoTransactionStartException：

次の場合に例外を送出します。

Participantの内部で障害が発生しトランザクションを開始できない場合

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoConnectionLackedException：

パラメタ「db.pool.max-pool-size」の指定値よりもDBコネクション数を多く使用しようとした場合に送出します。

(2)　isWrapperFor(Class<?> iface)

説明

指定されたインタフェースを実装しているラッパーである場合かを返します。

形式

public boolean isWrapperFor(Class<?> iface) throws SQLException

引数

iface：

インタフェースを定義するクラス。

戻り値

falseを返します。

8.3.4　PctoConnectionクラス（SQL-Participant限定）

説明

データベースとの接続（セッション）を表現するクラスです。接続のコンテキスト内でSQL文が実行され結果が返されます。Connectionオブジェクト中のデータベースは、表、サポートしているSQL文法、ストアド・プロシージャ、およびこの接続の能力などについての情報を提供します。

メソッド

PctoConnectionクラスのメソッドの一覧を次の表に示します。

表8‒16　PctoConnectionクラスのメソッドの一覧

メソッド

説明

close()

自動的な解除を待たないで、すぐにこのConnectionオブジェクトのデータベースとJDBCリソースを解除します。

createArrayOf(java.lang.String typeName, java.lang.Object[] elements)

java.sql.Arrayオブジェクトを生成するファクトリ・メソッドです。

createSQLXML()

SQLXMLインタフェースを実装しているオブジェクトを構築します。

createStatement()

SQL文をデータベースに送るためのStatementオブジェクトを生成します。

createStatement(int resultSetType, int resultSetConcurrency)

指定された型と並行処理でResultSetオブジェクトを生成するStatementオブジェクトを生成します。

getMetaData()

このConnectionオブジェクトが接続を表すデータベースに関するメタデータを格納するDatabaseMetaDataオブジェクトを取得します。

prepareCall(java.lang.String sql)

データベースのストアド・プロシージャを呼び出すためのCallableStatementオブジェクトを生成します。

prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)

指定された型と並行処理でResultSetオブジェクトを生成するCallableStatementオブジェクトを生成します。

prepareStatement(java.lang.String sql)

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。

prepareStatement(java.lang.String sql, int autoGeneratedKeys)

自動生成キーを取得する機能を持つデフォルトのPreparedStatementオブジェクトを生成します。

prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)

指定された型と並行処理でResultSetオブジェクトを生成するPreparedStatementオブジェクトを生成します。

prepareStatement(java.lang.String sql, java.lang.String[] columnNames)

指定された配列によって、指定された自動生成キーを返す機能を持つデフォルトのPreparedStatementオブジェクトを生成します。

setTransactionIsolation(int level)

このConnectionオブジェクトのトランザクション遮断レベルを変更します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　close()

説明

自動的な解除を待たないで、すぐにこのConnectionオブジェクトのデータベースとJDBCリソースを解除します。

形式

public void close()

引数

なし。

戻り値

なし。

例外

なし。

(2)　createArrayOf(java.lang.String typeName, java.lang.Object[] elements)

説明

java.sql.Arrayオブジェクトを生成するファクトリ・メソッドです。ParticipantのJDBC Driverは、Object配列の要素を、Objectを指定したクラスについてjava.sql.Typesで定義されたデフォルトのJDBC SQL型にマッピングします。

形式

public java.sql.Array createArrayOf(java.lang.String typeName, java.lang.Object[] elements) throws java.sql.SQLException

引数

java.lang.String typeName：

配列の要素がマッピングされる型のSQL名を指定します。typeNameは、データベース固有の名前であり、組み込み型、ユーザ定義型、またはこのデータベースでサポートされる標準SQL型の名前のことです。

java.lang.Object[] elements：

返されるオブジェクトを生成する要素を指定します。

戻り値

指定されたSQL型に、要素がマッピングされるjava.sql.Arrayオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

JDBC型がtypeNameに適していなくて、かつ変換がサポートされていない場合

引数typeNameがnullの場合

メソッドがクローズされたあとに接続された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのデータ型をサポートしない場合に送出します。

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　createSQLXML()

説明

SQLXMLインタフェースを実装しているオブジェクトを構築します。返されるオブジェクトには、初期状態のときはデータが格納されていません。データをSQLXMLオブジェクトに追加する場合は、SQLXMLインタフェースのsetStringメソッドを使用します。

形式

public java.sql.SQLXML createSQLXML() throws java.sql.SQLException

引数

なし。

戻り値

SQLXMLインタフェースを実装しているオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

SQLXMLインタフェースを実装するオブジェクトを構築できなかった場合

このメソッドがクローズされた接続に対して呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのデータ型をサポートしない場合に送出します。

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(4)　createStatement()

説明

SQL文をデータベースに送るためのStatementオブジェクトを生成します。パラメタなしのSQL文は、通常Statementオブジェクトを使用して実行されます。同じSQL文が多数回実行される場合は、PreparedStatementオブジェクトを使用する方が効率的なことがあります。

形式

public java.sql.Statement createStatement() throws java.sql.SQLException

引数

なし。

戻り値

java.sql.Statement：

新しいStatementオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(5)　createStatement(int resultSetType, int resultSetConcurrency)

説明

指定された型と並行処理でResultSetオブジェクトを生成するStatementオブジェクトを生成します。このメソッドは、デフォルトの結果セットの型および並行処理をオーバーライドできます。

形式

public java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency) throws java.sql.SQLException

引数

int resultSetType：

結果セットの型を指定します。指定できる結果セットの型は、ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE、またはResultSet.TYPE_SCROLL_SENSITIVEのうちの1つです。

int resultSetConcurrency：

並行処理の種類を指定します。指定できる並行処理の種類は、ResultSet.CONCUR_READ_ONLYまたはResultSet.CONCUR_UPDATABLEのどちらかです。

戻り値

指定された型および並行処理でResultSetオブジェクトを生成する新しいStatementオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたパラメタが、型および並行処理を示すResultSet定数ではない場合

java.sql.SQLFeatureNotSupportedException：

次の場合に例外を送出します。

ParticipantのJDBC Driverがこのメソッドをサポートしない場合

このメソッドが、指定された結果セットの型と結果セットの並行処理でサポートされない場合

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(6)　getMetaData()

説明

このConnectionオブジェクトが接続を表すデータベースに関するメタデータを格納するDatabaseMetaDataオブジェクトを取得します。メタデータには、データベースの表、サポートしているSQL文の文法、ストアド・プロシージャ、および接続設定などの情報が含まれています。

形式

public java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException

引数

なし。

戻り値

このConnectionオブジェクトのDatabaseMetaDataオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(7)　prepareCall(java.lang.String sql)

説明

データベースのストアド・プロシージャを呼び出すためのCallableStatementオブジェクトを生成します。CallableStatementオブジェクトは、そのINとOUTパラメタを設定するメソッドと、ストアド・プロシージャの呼び出しを実行するメソッドを提供します。このメソッドは、ストアド・プロシージャ呼び出し文を処理するために最適化されています。

形式

public java.sql.CallableStatement prepareCall(java.lang.String sql) throws java.sql.SQLException

引数

java.lang.String sql：

1つ以上の'?'パラメタ・プレースホルダーを含めることができるSQL文を指定します。

戻り値

プリコンパイルされたSQL文を含む新しいデフォルトのCallableStatementオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

以下の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(8)　prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)

説明

指定された型と並行処理でResultSetオブジェクトを生成するCallableStatementオブジェクトを生成します。このメソッドは、デフォルトの結果セットの型と並行処理をオーバーライドできます。

形式

public java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException

引数

java.lang.String sql：

データベースに送るSQL文が記述されたjava.lang.Stringオブジェクトを指定します。1つ以上の'?'パラメタを含めることができます。

Int resultSetType：

結果セットの型を指定します。指定できる結果セットの型は、ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE、またはResultSet.TYPE_SCROLL_SENSITIVEのうちの1つです。

int resultSetConcurrency：

並行処理の種類を指定します。指定できる並行処理の種類は、ResultSet.CONCUR_READ_ONLYまたはResultSet.CONCUR_UPDATABLEのどちらかです。

戻り値

指定された型および並行処理でResultSetオブジェクトを生成する、プリコンパイルされたSQL文を含む新しいCallableStatementオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたパラメタが型および並行処理を示すResultSet定数ではない場合

java.sql.SQLFeatureNotSupportedException：

次の場合に例外を送出します。

ParticipantのJDBC Driverがこのメソッドをサポートしない場合

このメソッドが指定された結果セットの型と結果セットの並行処理でサポートされない場合

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(9)　prepareStatement(java.lang.String sql)

説明

パラメタ付きSQL文をデータベースに送るためのPreparedStatementオブジェクトを生成します。INパラメタ付きまたはINパラメタなしのSQL文は、プリコンパイルして、PreparedStatementオブジェクトに格納できます。その後、このオブジェクトは、この文を複数回効率的に実行するために使用できます。このメソッドは、プリコンパイルが効果のある、パラメタ付きSQL文を処理するために最適化されています。ParticipantのJDBC Driverが、プリコンパイルをサポートしている場合、prepareStatementメソッドは、その文をプリコンパイル用としてデータベースに送ります。

形式

public java.sql.PreparedStatement prepareStatement(java.lang.String sql) throws java.sql.SQLException

引数

java.lang.String sql：

1つ以上の'?'INパラメタ・プレースホルダーを含めることができるSQL文を指定します。

戻り値

java.sql.PreparedStatement：

プリコンパイルされたSQL文を含む新しいPreparedStatementオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(10)　prepareStatement(java.lang.String sql, int autoGeneratedKeys)

説明

自動生成キーを取得する機能を持つデフォルトのPreparedStatementオブジェクトを生成します。指定された定数によって、JDBC Driverが自動生成キーを取得可能にするかどうかが指定されます。SQL文がINSERT文以外の場合、または自動生成キーを返すことができるSQL文以外の場合、このパラメタは無視されます。このメソッドは、プリコンパイルが効果的となるパラメタ付きSQL文を処理するために最適化されています。ParticipantのJDBC Driverがプリコンパイルをサポートしている場合、prepareStatementメソッドは、そのSQL文をプリコンパイル用としてデータベースに送ります。

形式

public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException

引数

java.lang.String sql：

1つ以上の'?'INパラメタ・プレースホルダーを含めることができるSQL文を指定します。

int autoGeneratedKeys：

自動生成キーを返すかどうかを示すフラグを指定します。Statement.RETURN_GENERATED_KEYSまたはStatement.NO_GENERATED_KEYSのどちらかを指定します。

戻り値

自動生成キーを返す機能を持つ、プリコンパイルされたSQL文を含む新しいPreparedStatementオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたパラメタが、自動生成キーを返すかどうかを示すStatement定数ではない場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverが、定数Statement.RETURN_GENERATED_KEYSを指定したこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(11)　prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)

説明

指定された型と並行処理でResultSetオブジェクトを生成するPreparedStatementオブジェクトを生成します。このメソッドは、デフォルトの結果セットの型と並行処理をオーバーライドできます。

形式

public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException

引数

java.lang.String sql：

データベースに送るSQL文が記述されたjava.lang.Stringオブジェクトを指定します。1つ以上の'?'INパラメタを含めることができます。

int resultSetType：

結果セットの型を指定します。指定できる結果セットの型は、ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE、またはResultSet.TYPE_SCROLL_SENSITIVEのうちの1つです。

int resultSetConcurrency：

並行処理の種類を指定します。指定できる並行処理の種類は、ResultSet.CONCUR_READ_ONLYまたはResultSet.CONCUR_UPDATABLEのどちらかです。

戻り値

指定された型および並行処理でResultSetオブジェクトを生成する、プリコンパイルされたSQL文を含む新しいPreparedStatementオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたパラメタが、型および並行処理を示すResultSet定数ではない場合

java.sql.SQLFeatureNotSupportedException：

次の場合に例外を送出します。

ParticipantのJDBC Driverがこのメソッドをサポートしない場合

このメソッドが、指定された結果セットの型と結果セットの並行処理でサポートされない場合

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(12)　prepareStatement(java.lang.String sql, java.lang.String[] columnNames)

説明

指定された配列によって、指定された自動生成キーを返す機能を持つデフォルトのPreparedStatementオブジェクトを生成します。この配列には、返される自動生成キーを含むターゲット表の列の名前を含みます。SQL文がINSERT文以外の場合、または自動生成キーを返すことができるSQL文以外の場合、JDBC Driverはこの配列を無視します。

INパラメタ付きまたはINパラメタなしのSQL文をプリコンパイルして、PreparedStatementオブジェクトに格納できます。そのあとに、このSQL文を複数回効率的に実行するためにこのオブジェクトを使用します。このメソッドは、プリコンパイルが効果的となるパラメタ付きSQL文を処理するために最適化されています。ParticipantのJDBC Driverが、プリコンパイルをサポートしている場合、prepareStatementメソッドは、そのSQL文をプリコンパイル用としてデータベースに送ります。

形式

public java.sql.PreparedStatement prepareStatement(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException

引数

java.lang.String sql：

1つ以上の'?'INパラメタ・プレースホルダーを含めることができるSQL文を指定します。

java.lang.String[] columnNames：

挿入された行から返される列を示す列名の配列を指定します。

戻り値

指定された列名の配列によって指定される自動生成キーを返す機能を持つ、プリコンパイルされた文を含む新しいPreparedStatementオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(13)　setTransactionIsolation(int level)

説明

このConnectionオブジェクトのトランザクション遮断レベルを変更します。指定できるトランザクション遮断レベルの定数は、Connectionインタフェースで定義されています。

形式

public void setTransactionIsolation(int level) throws java.sql.SQLException

引数

int level：

変更後のトランザクション遮断レベルを指定します。次のどれかのConnection定数を指定します。

Connection.TRANSACTION_READ_UNCOMMITTED

Connection.TRANSACTION_READ_COMMITTED

Connection.TRANSACTION_REPEATABLE_READ

Connection.TRANSACTION_SERIALIZABLE

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

引数に指定されたパラメタがConnection定数以外の場合

PctoInternalContradictionException：

次の場合に例外を送出します。

Connectionインスタンスが失われている場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.5　PctoStatementクラス（SQL-Participant限定）

説明

静的SQL文を実行し、作成された結果を返すために使用するクラスです。デフォルトでは、Statementオブジェクトごとに、同時に開くことができるResultSetオブジェクトは1つだけです。したがって、1つのResultSetオブジェクトの読み込みが、別の読み込みによって割り込まれると、それぞれが異なったStatementオブジェクトによって生成されたことになります。

メソッド

PctoStatementクラスのメソッドの一覧を次の表に示します。

表8‒17　PctoStatementクラスのメソッドの一覧

メソッド

説明

addBatch(java.lang.String sql)

このStatementオブジェクトの現在のコマンドのリストに、指定されたSQLコマンドを追加します。

close()

自動的にクローズされるときにStatementオブジェクトのデータベースとJDBCリソースが解放されるのを待つのではなく、すぐにそれらを解放します。

closeOnCompletion()

このStatementオブジェクトに依存するすべての結果セットがクローズされたときに、このStatementオブジェクトをクローズします。

execute(java.lang.String sql)

複数の結果を返す可能性があるSQL文を実行します。

execute(java.lang.String sql, int autoGeneratedKeys)

複数の結果を返す可能性があるSQL文を実行し、すべての自動生成キーを検索可能にするかどうかについてJDBC Driverに通知します。

executeBatch()

コマンドのバッチをデータベースに送信して実行し、すべてのコマンドが正常に実行された場合、更新カウントの配列を返します。

executeQuery(java.lang.String sql)

単一のResultSetオブジェクトを返す、指定されたSQL文を実行します。

executeUpdate(java.lang.String sql)

指定されたSQL文を実行します。

getConnection()

このStatementオブジェクトを生成したConnectionオブジェクトを取得します。

getGeneratedKeys()

このStatementオブジェクトを実行した結果として作成された自動生成キーを取得します。

getMoreResults()

Statementオブジェクトの次の結果に移動します。この結果がResultSetオブジェクトの場合はtrueを返し、getResultSetメソッドで得られた現在のResultSetオブジェクトをすべて暗黙にクローズします。

getQueryTimeout()

JDBC DriverがStatementオブジェクトの実行を待つ秒数を取得します。

getResultSet()

ResultSetオブジェクトとして現在の結果を取得します。

getUpdateCount()

更新カウントとして現在の結果を取得します。結果がResultSetオブジェクトの場合、または結果がない場合は-1を返します。

getWarnings()

このStatementオブジェクトに関する呼び出しによって報告される最初の警告を取得します。

setEscapeProcessing(boolean enable)

エスケープの処理をオンまたはオフに設定します。

setFetchSize(int rows)

このStatementオブジェクトで作成されたResultSetオブジェクトでより多くの行が必要なときに、データベースから取り出す必要がある行数についてのヒントをParticipantのJDBC Driverに提供します。

setQueryTimeout(int seconds)

JDBC DriverがStatementオブジェクトの実行を待つ秒数を設定します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　addBatch(java.lang.String sql)

説明

このStatementオブジェクトの現在のコマンドのリストに、指定されたSQLコマンドを追加します。このリストのコマンドは、executeBatchメソッドを呼び出せばバッチとして実行できます。

このメソッドは、PreparedStatementまたはCallableStatementで呼び出すことはできません。

形式

public void addBatch(java.lang.String sql) throws java.sql.SQLException

引数

java.lang.String sql：

通常は、SQL INSERT文またはUPDATE文を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

JDBC Driverがバッチ更新をサポートしない場合

メソッドがPreparedStatementまたはCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　close()

説明

自動的にクローズされるときにStatementオブジェクトのデータベースとJDBCリソースが解放されるのを待つのではなく、すぐにそれらを解放します。

形式

public void close()

引数

なし。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に例外を送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　closeOnCompletion()

説明

このStatementオブジェクトに依存するすべての結果セットがクローズされたときに、このStatementオブジェクトをクローズします。Statementオブジェクトの実行によって結果セットが生成されない場合、このメソッドは無効になります。

形式

public void closeOnCompletion() throws java.sql.SQLException

引数

なし。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

メソッドがクローズされたあとに接続された場合に例外を送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(4)　execute(java.lang.String sql)

説明

複数の結果を返す可能性があるSQL文を実行します。幾つかの（一般的でない）状況では、単一のSQL文が複数の結果セットまたは更新カウントを返すことがあります。複数の結果を返すことが分かっているストアド・プロシージャを実行中、または未知のSQL文字列を動的に実行中ではないかぎり、通常はこれを無視できます。

executeメソッドは、SQL文を実行し最初の結果の形式を示します。次に、getResultSetメソッドまたはgetUpdateCountメソッドを使用して結果を取得します。そして、getMoreResultsメソッドによって引き続き任意の結果の取得（複数可）に移動します。

このメソッドは、PreparedStatementまたはCallableStatementで呼び出すことはできません。

形式

public boolean execute(java.lang.String sql) throws java.sql.SQLException

引数

java.lang.String sql：

任意のSQL文を指定します。

戻り値

最初の結果がResultSetオブジェクトの場合はtrueを返します。更新カウントの場合、または結果がない場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

メソッドがPreparedStatementまたはCallableStatementで呼び出された場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(5)　execute(java.lang.String sql, int autoGeneratedKeys)

説明

複数の結果を返す可能性があるSQL文を実行し、すべての自動生成キーを検索可能にするかどうかについてJDBC Driverに通知します。SQL文がINSERT文以外の場合、または自動生成キーを返すことができるSQL文以外の場合（そのような文のリストはベンダ固有）、JDBC Driverはこの信号を無視します。

幾つかの（一般的でない）状況では、単一のSQL文が複数の結果セットまたは更新カウントを返すことがあります。複数の結果を返すことが分かっているストアド・プロシージャを実行中、または未知のSQL文字列を動的に実行中でないかぎり、通常はこれを無視できます。

executeメソッドは、SQL文を実行して最初の結果の形式を示します。次に、getResultSetメソッドまたはgetUpdateCountメソッドを使用して結果を取得します。そして、getMoreResultsメソッドによって引き続き任意の結果の取得（複数可）に移動します。

このメソッドは、PreparedStatementまたはCallableStatementで呼び出すことはできません。

形式

public boolean execute(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException

引数

java.lang.String sql：

任意のSQL文を指定します。

int autoGeneratedKeys：

getGeneratedKeysメソッドを使用して、自動生成キーを検索可能にするかどうかを示す定数（Statement.RETURN_GENERATED_KEYSまたはStatement.NO_GENERATED_KEYS）を指定します。

戻り値

最初の結果がResultSetオブジェクトの場合はtrueを返します。更新カウントであるか、または結果がない場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

メソッドに指定された2番目のパラメタがStatement.RETURN_GENERATED_KEYSまたはStatement.NO_GENERATED_KEYS以外の場合

メソッドがPreparedStatementまたはCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverが定数Statement.RETURN_GENERATED_KEYSを指定したこのメソッドをサポートしない場合に送出します。

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(6)　executeBatch()

説明

コマンドのバッチをデータベースに送信して実行し、すべてのコマンドが正常に実行された場合、更新カウントの配列を返します。返される配列のint要素は、バッチ内のコマンドに対応して順序づけられます（バッチに追加された順序に従って順序づけられます）。executeBatchメソッドによって返される配列内の要素は、次のうちのどれか1つになります

ゼロ以上の数値

コマンドが正常に処理されたことを示し、コマンドの実行によって影響を受けたデータベース内の行数を指定する更新カウントです。

SUCCESS_NO_INFOの値

コマンドは正常に処理されたが、影響を受けた行数が不明なことを示します。

バッチ更新内のコマンドの1つが正常に実行できなかった場合、このメソッドはBatchUpdateExceptionを送出し、ParticipantのJDBC Driverはバッチ内の残りのコマンドの処理を継続することも、中止することもできます。ただし、JDBC Driverの動作は、特定のDBMSと一貫性を保つ必要があり、常にコマンドの処理を継続するか、または継続しないかのどちらかになります。JDBC Driverが処理を継続する場合は、BatchUpdateException.getUpdateCountsメソッドで返される配列には、バッチ内のコマンドと同じ数の要素が格納され、それらの要素の1つ以上が次に該当します。

EXECUTE_FAILEDの値

正常に実行できなかったコマンドが正常に実行されたことを示します。コマンドが失敗したあとに、JDBC Driverがコマンドの処理を継続した場合にかぎり発生します。

形式

public int[] executeBatch() throws java.sql.SQLException

引数

なし。

戻り値

バッチ内のコマンドごとに1つの要素が格納されている更新カウントの配列を返します。配列の要素は、コマンドがバッチに追加された順序で並べられます。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

JDBC Driverがバッチ文をサポートしない場合

java.sql.BatchUpdateException：

次の場合に例外を送出します。

データベースに送信されたコマンドの1つが正常に実行されなかった場合

結果セットを返そうとした場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(7)　executeQuery(java.lang.String sql)

説明

単一のResultSetオブジェクトを返す、指定されたSQL文を実行します。このメソッドをPreparedStatementで呼び出すことはできません。

形式

public ResultSet executeQuery(java.lang.String sql) throws SQLException

引数

java.lang.String sql：

データベースに送られるSQL文です。

戻り値

指定されたクエリによって作成されたデータを含むResultSetオブジェクトです。nullにはなりません。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたSQL文が、単一のResultSetオブジェクトだけ生成する場合

メソッドがPreparedStatementで呼び出された場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(8)　executeUpdate(java.lang.String sql)

説明

指定されたSQL文を実行します。SQL文は、INSERT文、UPDATE文、DELETE文、またはSQL DDL文のような何も返さないSQL文の場合があります。このメソッドをPreparedStatementで呼び出すことはできません。

形式

public int executeUpdate(java.lang.String sql) throws SQLException

引数

java.lang.String sql：

SQL INSERT文、UPDATE文、またはDELETE文のようなSQLデータ操作言語（DML）文、あるいはDDL文のような何も返さないSQL文を指定します。

戻り値

SQLデータ操作言語（DML）文の場合は行数を、何も返さないSQL文の場合は0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたSQL文が、単一のResultSetオブジェクトだけ生成する場合

メソッドがPreparedStatementで呼び出された場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(9)　getConnection()

説明

このStatementオブジェクトを生成したConnectionオブジェクトを取得します。

形式

public java.sql.Connection getConnection() throws java.sql.SQLException

引数

なし。

戻り値

この文を生成した接続を返します。

例外

なし。

(10)　getGeneratedKeys()

説明

このStatementオブジェクトを実行した結果として作成された自動生成キーを取得します。このStatementオブジェクトがキーを生成しなかった場合は、空のResultSetオブジェクトが返されます。

形式

public java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException

引数

なし。

戻り値

このStatementオブジェクトの実行で生成された自動生成キーを含むResultSetオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(11)　getMoreResults()

説明

Statementオブジェクトの次の結果に移動します。この結果がResultSetオブジェクトの場合はtrueを返し、getResultSetメソッドで得られた現在のResultSetオブジェクトをすべて暗黙にクローズします。

形式

public boolean getMoreResults() throws java.sql.SQLException

引数

なし。

戻り値

次の結果がResultSetオブジェクトの場合はtrueを返します。更新カウントの場合、または結果がない場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(12)　getQueryTimeout()

説明

JDBC DriverがStatementオブジェクトの実行を待つ秒数を取得します。この制限を超えると、SQLExceptionが送出されます。

形式

public int getQueryTimeout() throws java.sql.SQLException

引数

なし。

戻り値

現在のクエリ・タイムアウトの制限値の秒数を返します。0は無制限を意味します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(13)　getResultSet()

説明

ResultSetオブジェクトとして現在の結果を取得します。このメソッドは、1つの結果に対して1回だけ呼び出す必要があります。

形式

public java.sql.ResultSet getResultSet() throws java.sql.SQLException

引数

なし。

戻り値

ResultSetオブジェクトとしての現在の結果を返します。結果が更新カウントの場合、または結果がない場合はnullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(14)　getUpdateCount()

説明

更新カウントとして現在の結果を取得します。結果がResultSetオブジェクトの場合、または結果がない場合は-1を返します。このメソッドは、1つの結果に対して1回だけ呼び出す必要があります。

形式

public int getUpdateCount() throws java.sql.SQLException

引数

なし。

戻り値

更新カウントとして現在の結果を返します。現在の結果がResultSetオブジェクトの場合、または結果がない場合は-1を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(15)　getWarnings()

説明

このStatementオブジェクトに関する呼び出しによって報告される最初の警告を取得します。後続のStatementオブジェクトの警告は、このSQLWarningオブジェクトにチェーンされます。

警告チェーンは、SQL文が（再）実行されるたびに自動的にクリアされます。このメソッドは、クローズされたStatementオブジェクトの呼び出しには使用しません。使用された場合、SQLExceptionが送出されます。

ResultSetオブジェクトが処理中の場合、ResultSetオブジェクトの読み込みに関連する警告はそのオブジェクトを生成したStatementオブジェクトではなく、すべてResultSetオブジェクトにチェーンされます。

形式

public java.sql.SQLWarning getWarnings() throws java.sql.SQLException

引数

なし。

戻り値

最初のSQLWarningオブジェクトを返します。警告がない場合はnullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(16)　setEscapeProcessing(boolean enable)

説明

エスケープの処理をオンまたはオフに設定します。エスケープ・スキャニングがオンの場合（デフォルト）、JDBC DriverはSQL文をデータベースに送る前にエスケープ置き換えを実行します。

ConnectionおよびDataSourceのプロパティのescapeProcessingを使用して、デフォルトのエスケープ処理の動作を変更できます。true（デフォルト）を指定した場合、すべてのStatementオブジェクトのエスケープ処理が有効になります。falseを指定した場合、すべてのStatementオブジェクトのエスケープ処理が無効になります。setEscapeProcessingメソッドを使用して、個々のStatementオブジェクトに対するエスケープ処理の動作を指定できます。

用意された文は、通常は呼び出す前に構文解析されているため、PreparedStatementsオブジェクトに対するエスケープ処理を無効にしても効果はありません。

形式

public void setEscapeProcessing(boolean enable) throws java.sql.SQLException

引数

boolean enable：

エスケープ処理を有効にする場合はtrueを、無効にする場合はfalseを指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(17)　setFetchSize(int rows)

説明

このStatementオブジェクトで作成されたResultSetオブジェクトでより多くの行が必要なときに、データベースから取り出す必要がある行数についてのヒントをParticipantのJDBC Driverに提供します。指定された値が0の場合、ヒントは無視されます。デフォルト値は0です。

形式

public void setFetchSize(int rows) throws java.sql.SQLException

引数

int rows：

フェッチする行数を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

rows≧0の条件が満たされていない場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(18)　setQueryTimeout(int seconds)

説明

JDBC DriverがStatementオブジェクトの実行を待つ秒数を設定します。デフォルトでは、実行中のSQL文が完了するまでの時間に制限はありません。制限時間を経過した場合、SQLTimeoutExceptionが送出されます。

形式

public void setQueryTimeout(int seconds) throws java.sql.SQLException

引数

int seconds：

新しいクエリ・タイムアウトの制限時間の秒数を指定します。0は無制限を意味します

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

seconds≧0の条件が満たされていない場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.6　PctoPreparedStatementクラス（SQL-Participant限定）

説明

プリコンパイルされたSQL文を表すクラスです。SQL文は、プリコンパイルされ、PreparedStatementオブジェクトに格納されます。その後、このオブジェクトは、この文を複数回効率的に実行するために使用できます。INパラメタ値を設定する設定機能メソッド（setInt、setStringなど）は、入力パラメタの定義されたSQL型と互換のある型を指定する必要があります。例えば、INパラメタがINTEGERというSQL型の場合、setIntメソッドを使用するようにしてください。

メソッド

PctoPreparedStatementクラスのメソッドの一覧を次の表に示します。

表8‒18　PctoPreparedStatementクラスのメソッドの一覧

メソッド

説明

addBatch()

このPreparedStatementオブジェクトのコマンドのバッチに、パラメタのセットを追加します。

execute()

このPreparedStatementオブジェクトの、すべての種類のSQL文を実行します。

executeQuery()

PreparedStatementオブジェクトのSQLクエリを実行し、そのクエリによって生成されたResultSetオブジェクトを返します。

executeUpdate()

PreparedStatementオブジェクトのSQL文を実行します。

setArray(int parameterIndex, java.sql.Array x)

指定されたパラメタを、指定されたjava.sql.Arrayオブジェクトに設定します。

setBigDecimal(int parameterIndex, java.math.BigDecimal x)

指定されたパラメタを、指定されたjava.math.BigDecimal値に設定します。

setBinaryStream(int parameterIndex, java.io.InputStream x, int length)

指定されたパラメタを、指定されたバイト数を持つ、指定された入力ストリームに設定します。

setBlob(int parameterIndex, java.io.InputStream inputStream)

指定されたパラメタをInputStreamオブジェクトに設定します。

setBoolean(int parameterIndex, boolean x)

指定されたパラメタを、指定されたJavaのboolean値に設定します。

setByte(int parameterIndex, byte x)

指定されたパラメタを、指定されたJavaのbyte値に設定します。

setBytes(int parameterIndex, byte[] x)

指定されたパラメタを、指定されたJavaのbyte配列に設定します。

setCharacterStream(int parameterIndex, java.io.Reader reader, int length)

指定されたパラメタを、指定された文字数である指定されたReaderオブジェクトに設定します。

setClob(int parameterIndex, java.io.Reader reader)

指定されたパラメタを、Readerオブジェクトに設定します。

setDate(int parameterIndex, java.sql.Date x)

アプリケーションを実行している仮想マシンのデフォルトのタイムゾーンを使用して、指定されたパラメタを、指定されたjava.sql.Date値に設定します。

setDouble(int parameterIndex, double x)

指定されたパラメタを、指定されたJavaのdouble値に設定します。

setFloat(int parameterIndex, float x)

指定されたパラメタを、指定されたJavaのfloat値に設定します。

setInt(int parameterIndex, int x)

指定されたパラメタを、指定されたJavaのint値に設定します。

setLong(int parameterIndex, long x)

指定されたパラメタを、指定されたJavaのlong値に設定します。

setNString(int parameterIndex, java.lang.String value)

指定されたパラメタを、指定されたStringオブジェクトに設定します。

setNull(int parameterIndex, int sqlType)

指定されたパラメタをSQL NULLに設定します。

setObject(int parameterIndex, java.lang.Object x)

指定されたパラメタの値を、指定されたオブジェクトで設定します。

setObject(int parameterIndex, java.lang.Object x, int targetSqlType)

指定されたパラメタの値を、指定されたオブジェクトで設定します。

setShort(int parameterIndex, short x)

指定されたパラメタを、指定されたJavaのshort値に設定します。

setString(int parameterIndex, java.lang.String x)

指定されたパラメタを、指定されたJavaのString値に設定します。

setTime(int parameterIndex, java.sql.Time x)

指定されたパラメタを、指定されたjava.sql.Time値に設定します。

setTimestamp(int parameterIndex, java.sql.Timestamp x)

指定されたパラメタを、指定されたjava.sql.Timestamp値に設定します。

PctoStatementクラスから継承されたPctoPreparedStatementクラスのメソッドの一覧を次の表に示します。

表8‒19　PctoStatementクラスから継承されたPctoPreparedStatementクラスのメソッドの一覧

メソッド

説明

close()

詳細については、「(2)　close()」を参照してください。

getConnection()

詳細については、「(9)　getConnection()」を参照してください。

getGeneratedKeys()

詳細については、「(10)　getGeneratedKeys()」を参照してください。

getUpdateCount()

詳細については、「(14)　getUpdateCount()」を参照してください。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　addBatch()

説明

このPreparedStatementオブジェクトのコマンドのバッチに、パラメタのセットを追加します。

形式

public void addBatch() throws java.sql.SQLException

引数

なし。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPctoPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　execute()

説明

このPreparedStatementオブジェクトの、すべての種類のSQL文を実行します。PreparedStatementオブジェクトで用意されたSQL文には、複数の結果を返すものがあります。executeメソッドは、executeQueryメソッドまたはexecuteUpdateメソッドによって処理される、より簡単な形式の文と同様に、複雑な文も処理します。

executeメソッドは、booleanを返して最初の結果の形式を示します。getResultSetメソッドまたはgetUpdateCountメソッドを呼び出して結果を取得します。後続の結果がある場合は、getMoreResultsメソッドを呼び出してその結果に移動します。

形式

public boolean execute() throws java.sql.SQLException

引数

なし。

戻り値

最初の結果がResultSetオブジェクトの場合はtrueを返します。更新カウントの場合、または結果がない場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPctoPreparedStatementで呼び出された場合

引数がこのメソッドに指定された場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　executeQuery()

説明

PreparedStatementオブジェクトのSQLクエリを実行し、そのクエリによって生成されたResultSetオブジェクトを返します。

形式

public java.sql.ResultSet executeQuery() throws java.sql.SQLException

引数

なし。

戻り値

クエリによって作成されたデータを含むResultSetオブジェクトです。nullにはなりません。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

このメソッドがクローズされたPctoPreparedStatementで呼び出された場合

SQL文がResultSetオブジェクトを返さない場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(4)　executeUpdate()

説明

PreparedStatementオブジェクトのSQL文を実行します。実行するSQL文は、SQLデータ操作言語（DML）文（INSERT文、UPDATE文、DELETE文など）であるか、またはDDL文のような何も返さないSQL文である必要があります。

形式

public int executeUpdate() throws java.sql.SQLException

引数

なし。

戻り値

SQLデータ操作言語（DML）文の場合は行数を返します。何も返さないSQL文の場合は0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

このメソッドがクローズされたPctoPreparedStatementで呼び出された場合

SQL文がResultSetオブジェクトを返した場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(5)　setArray(int parameterIndex,java.sql.Array x)

説明

指定されたパラメタを、指定されたjava.sql.Arrayオブジェクトに設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL ARRAY値に変換します。

形式

public void setArray(int parameterIndex, java.sql.Array x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.sql.Array x：

SQL ARRAY値をマッピングするArrayオブジェクトを指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(6)　setBigDecimal(int parameterIndex, java.math.BigDecimal x)

説明

指定されたパラメタを、指定されたjava.math.BigDecimal値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL NUMERIC値に変換します。

形式

public void setBigDecimal(int parameterIndex, java.math.BigDecimal x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.math.BigDecimal x：

設定したいjava.math.BigDecimalの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドがクローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(7)　setBinaryStream(int parameterIndex, java.io.InputStream x, int length)

説明

指定されたパラメタを、指定されたバイト数を持つ、指定された入力ストリームに設定します。

なお、LONGVARBINARYパラメタに非常に大きなバイナリ値が入力される場合は、java.io.InputStreamオブジェクトを使用すると便利です。ファイルの終わりに達するまで必要に応じてストリームからデータが読み込まれます。

形式

public void setBinaryStream(int parameterIndex, java.io.InputStream x, int length) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.io.InputStream x：

バイナリ・パラメタ値を含むJava入力ストリームを指定します。

int length：

ストリームのバイト数を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(8)　setBlob(int parameterIndex, java.io.InputStream inputStream)

説明

指定されたパラメタをInputStreamオブジェクトに設定します。

このメソッドは、setBinaryStreamメソッドとは異なり、パラメタ値をBLOBでサーバに送信することをParticipantのJDBC Driverに通知します。setBinaryStreamメソッドを使用すると、ParticipantのJDBC Driverはパラメタ値をLONGVARBINARYとBLOBのどちらでサーバに送信するかを判断するための余計な処理が発生するおそれがあります。

形式

public void setBlob(int parameterIndex, java.io.InputStream inputStream) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.io.InputStream inputStream：

パラメタ値に設定されるデータを含むオブジェクトを指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(9)　setBoolean(int parameterIndex, boolean x)

説明

指定されたパラメタを、指定されたJavaのboolean値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL BITまたはBOOLEAN値に変換します。

形式

public void setBoolean(int parameterIndex, boolean x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

boolean x：

設定したいbooleanの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(10)　setByte(int parameterIndex, byte x)

説明

指定されたパラメタを、指定されたJavaのbyte値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL TINYINT値に変換します。

形式

public void setByte(int parameterIndex, byte x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

byte x：

設定したいbyteの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(11)　setBytes(int parameterIndex, byte[] x)

説明

指定されたパラメタを、指定されたJavaのbyte配列に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL VARBINARYまたはLONGVARBINARY（ParticipantのJDBC DriverのVARBINARY値の制限に対する引数のサイズに依存）に変換します。

形式

public void setBytes(int parameterIndex, byte[] x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

byte[] x：

設定したいbyte配列の値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(12)　setCharacterStream(int parameterIndex, java.io.Reader reader, int length)

説明

指定されたパラメタを、指定された文字数である指定されたReaderオブジェクトに設定します。

なお、LONGVARCHARパラメタに非常に大きなUNICODE値が入力される場合は、java.io.Readerオブジェクトを使用すると便利です。ファイルの終わりに達するまで必要に応じてストリームからデータが読み込まれます。ParticipantのJDBC Driverは、データをUNICODEからデータベースのchar形式に変換します。

形式

public void setCharacterStream(int parameterIndex, java.io.Reader reader, int length) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.io.Reader reader：

Unicodeデータを格納するjava.io.Readerオブジェクトを指定します。

int length：

ストリーム内の文字数を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(13)　setClob(int parameterIndex, java.io.Reader reader)

説明

指定されたパラメタを、Readerオブジェクトに設定します。

このメソッドは、setCharacterStreamメソッドとは異なり、パラメタ値をCLOBでサーバに送信することをParticipantのJDBC Driverに通知します。setCharacterStreamメソッドを使用すると、ParticipantのJDBC Driverはパラメタ値をLONGVARCHARとCLOBのどちらでサーバに送信するかを判断するための余計な処理が発生するおそれがあります。

形式

public void setClob(int parameterIndex, java.io.Reader reader) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.io.Reader reader：

パラメタ値に設定されるデータを含むオブジェクトを指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドがクローズされたPreparedStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(14)　setDate(int parameterIndex, java.sql.Date x)

説明

アプリケーションを実行している仮想マシンのデフォルトのタイムゾーンを使用して、指定されたパラメタを、指定されたjava.sql.Date値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL DATE値に変換します。

形式

public void setDate(int parameterIndex, java.sql.Date x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.sql.Date x：

設定したいjava.sql.Dateの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(15)　setDouble(int parameterIndex, double x)

説明

指定されたパラメタを、指定されたJavaのdouble値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL DOUBLE値に変換します。

形式

public void setDouble(int parameterIndex, double x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

double x：

設定したいdoubleの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(16)　setFloat(int parameterIndex, float x)

説明

指定されたパラメタを、指定されたJavaのfloat値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL REAL値に変換します。

形式

public void setFloat(int parameterIndex, float x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

float x：

設定したいfloatの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(17)　setInt(int parameterIndex, int x)

説明

指定されたパラメタを、指定されたJavaのint値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL INTEGER値に変換します。

形式

public void setInt(int parameterIndex, int x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

int x：

設定したいintの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(18)　setLong(int parameterIndex, long x)

説明

指定されたパラメタを、指定されたJavaのlong値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL BIGINT値に変換します。

形式

public void setLong(int parameterIndex, long x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

long x：

設定したいlongの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(19)　setNString(int parameterIndex, java.lang.String value)

説明

指定されたパラメタを、指定されたStringオブジェクトに設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL NCHAR、NVARCHAR、またはLONGNVARCHAR値（ParticipantのJDBC DriverのNVARCHAR値の制限に対する引数のサイズに依存）に変換します。

形式

public void setNString(int parameterIndex, java.lang.String value) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.lang.String value：

設定したい文字列の値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

JDBC Driverが各国の文字セットをサポートしない場合

JDBC Driverがデータ変換エラーが発生したことを検出できる場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(20)　setNull(int parameterIndex, int sqlType)

説明

指定されたパラメタをSQL NULLに設定します。パラメタのSQLの型を指定する必要があります。

形式

public void setNull(int parameterIndex, int sqlType) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

int sqlType：

java.sql.Typesで定義されるSQL型コードを指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

引数sqlTypeのデータ型が、ARRAY、BLOB、CLOB、DATALINK、JAVA_OBJECT、NCHAR、NCLOB、NVARCHAR、LONGNVARCHAR、REF、ROWID、SQLXML、またはSTRUCTで、ParticipantのJDBC Driverがこのデータ型をサポートしていない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(21)　setObject(int parameterIndex, java.lang.Object x)

説明

指定されたパラメタの値を、指定されたオブジェクトで設定します。

JDBCの仕様で、JavaのObject型からSQL型への標準マッピングが規定されています。指定された引数は、データベースに送られる前に対応するSQL型に変換されます。

なお、すべてのデータベースで、バックエンドに対する型のないNullの送信が許可されるわけではありません。移植性を最大限にするには、setObject(int parameterIndex, Object x)メソッドの代わりに、setNullメソッドまたはsetObject(int parameterIndex, Object x, int sqlType)メソッドを使用してください。

オブジェクトがこれらのインタフェースを複数実装するクラスであるなどあいまいさがある場合、このメソッドは例外を送出します。

形式

public void setObject(int parameterIndex, java.lang.Object x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.lang.Object x：

入力パラメタ値を含むオブジェクトを指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(22)　setObject(int parameterIndex, java.lang.Object x, int targetSqlType)

説明

指定されたパラメタの値を、指定されたオブジェクトで設定します。

形式

public void setObject(int parameterIndex, java.lang.Object x, int targetSqlType) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.lang.Object x：

入力パラメタ値を含むオブジェクトを指定します。

int targetSqlType：

java.sql.Typesで定義されるSQL型コードを指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(23)　setShort(int parameterIndex, short x)

説明

指定されたパラメタを、指定されたJavaのshort値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL SMALLINT値に変換します。

形式

public void setShort(int parameterIndex, short x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

short x：

設定したいshortの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(24)　setString(int parameterIndex, java.lang.String x)

説明

指定されたパラメタを、指定されたJavaのString値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQLVARCHARまたはLONGVARCHAR値（ParticipantのJDBC DriverのVARCHAR値の制限に対する引数のサイズに依存）に変換します。

形式

public void setString(int parameterIndex, java.lang.String x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.lang.String x：

設定したい文字列の値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(25)　setTime(int parameterIndex, java.sql.Time x)

説明

指定されたパラメタを、指定されたjava.sql.Time値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL TIME値に変換します。

形式

public void setTime(int parameterIndex, java.sql.Time x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.sql.Time x：

設定したいjava.sql.Timeの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(26)　setTimestamp(int parameterIndex, java.sql.Timestamp x)

説明

指定されたパラメタを、指定されたjava.sql.Timestamp値に設定します。データベースに送るときに、ParticipantのJDBC DriverはこれをSQL TIMESTAMP値に変換します。

形式

public void setTimestamp(int parameterIndex, java.sql.Timestamp x) throws java.sql.SQLException

引数

int parameterIndex：

設定したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

java.sql.Timestamp x：

設定したいjava.sql.Timestampの値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.7　PctoCallableStatementクラス（SQL-Participant限定）

説明

SQLストアド・プロシージャを実行するときに使用するクラスです。

JDBC APIは、ストアド・プロシージャのSQLエスケープ構文を提供します。これによって、すべてのRDBMSに対して標準の方法でストアド・プロシージャを呼び出せます。SQLエスケープ構文には、結果パラメタを含める場合と、含めない場合があります。結果パラメタを含める場合は、結果パラメタをOUTパラメタとして登録しておく必要があります。そのほかのパラメタは、入力または出力、あるいはその両方に対して使用できます。パラメタは、番号によって順番に参照されます。最初のパラメタは1です。

INパラメタ値は、PreparedStatementから継承したsetメソッドを使用して設定されます。すべてのOUTパラメタの型は、ストアド・プロシージャの実行前に登録する必要があります。実行後に、それらの値はここで提供されるgetメソッド経由で取り出されます。

CallableStatementは、1つのResultSetオブジェクトまたは複数のResultSetオブジェクトを返すことができます。複数のResultSetオブジェクトは、Statementから継承した操作を使用して処理されます。

移植性を高めるには出力パラメタを取得する前に、呼び出しのResultSetオブジェクトと更新カウントを処理するようにします。

メソッド

PctoCallableStatementクラスのメソッドの一覧を次の表に示します。

表8‒20　PctoCallableStatementクラスのメソッドの一覧

メソッド

説明

getArray(int parameterIndex)

指定されたJDBC ARRAYパラメタの値を、Javaプログラミング言語のjava.sql.Arrayオブジェクトとして取り出します。

getBigDecimal(int parameterIndex, int scale)

指定されたJDBC NUMERICパラメタの値を、引数scaleで指定された小数点以下の桁数を持つjava.math.BigDecimalオブジェクトとして取り出します。

getBlob(int parameterIndex)

指定されたJDBC BLOBパラメタの値を、Javaプログラミング言語のjava.sql.Blobオブジェクトとして取り出します。

getBytes(int parameterIndex)

指定されたJDBC BINARYまたはVARBINARYパラメタの値を、Javaプログラミング言語のbyte値の配列として取り出します。

getClob(int parameterIndex)

指定されたJDBC CLOBパラメタの値を、Javaプログラミング言語のjava.sql.Clobオブジェクトとして取り出します。

getDate(int parameterIndex)

指定されたJDBC DATEパラメタの値を、java.sql.Dateオブジェクトとして取り出します。

getDouble(int parameterIndex)

指定されたJDBC DOUBLEパラメタの値を、Javaプログラミング言語のdoubleとして取り出します。

getFloat(int parameterIndex)

指定されたJDBC FLOATパラメタの値を、Javaプログラミング言語のfloatとして取り出します。

getInt(int parameterIndex)

指定されたJDBC INTEGERパラメタの値を、Javaプログラミング言語のintとして取り出します。

getLong(int parameterIndex)

指定されたJDBC BIGINTパラメタの値を、Javaプログラミング言語のlongとして取り出します。

getNString(int parameterIndex)

指定されたNCHAR、NVARCHAR、またはLONGNVARCHARパラメタの値を、Javaプログラミング言語のStringとして取り出します。

getObject(int parameterIndex)

指定されたパラメタの値を、Javaプログラミング言語のObjectとして取り出します。

getObject(int parameterIndex, Class<T> type)

OUTパラメタparameterIndexの値を表すオブジェクトを返します。変換がサポートされている場合は、そのパラメタのSQL型を要求されたJavaデータ型に変換します。

getShort(int parameterIndex)

指定されたJDBC SMALLINTパラメタの値を、Javaプログラミング言語のshortとして取り出します。

getSQLXML(int parameterIndex)

指定されたSQL XMLパラメタの値を、Javaプログラミング言語のjava.sql.SQLXMLオブジェクトとして取り出します。

getString(int parameterIndex)

指定されたJDBC CHAR、VARCHAR、またはLONGVARCHARパラメタの値を、Javaプログラミング言語のStringとして取り出します。

getTime(int parameterIndex)

指定されたJDBC TIMEパラメタの値を、java.sql.Timeオブジェクトとして取り出します。

getTimestamp(int parameterIndex)

指定されたJDBC TIMESTAMPパラメタの値を、java.sql.Timestampオブジェクトとして取り出します。

registerOutParameter(int parameterIndex, int sqlType)

引数parameterIndexに指定したOUTパラメタを、JDBC型sqlTypeとして登録します。

registerOutParameter(int parameterIndex, int sqlType, int scale)

引数parameterIndexに指定したOUTパラメタを、JDBC型sqlTypeとして登録します。

registerOutParameter(int parameterIndex, int sqlType, java.lang.String typeName)

指定された出力パラメタを登録します。

wasNull()

最後に読み込まれたOUTパラメタの値がSQL NULLかどうかを取得します。

PctoPreparedStatementクラスから継承されたPctoCallableStatementクラスのメソッドの一覧を次の表に示します。

表8‒21　PctoPreparedStatementクラスから継承されたPctoCallableStatementクラスのメソッドの一覧

メソッド

説明

addBatch()

詳細については、「(1)　addBatch()」を参照してください。

execute()

詳細については、「(2)　execute()」を参照してください。

PctoStatementクラスから継承されたPctoCallableStatementクラスのメソッドの一覧を次の表に示します。

表8‒22　PctoStatementクラスから継承されたPctoCallableStatementクラスのメソッドの一覧

メソッド

説明

close()

詳細は「(2)　close()」を参照してください。

getUpdateCount()

詳細については、「(14)　getUpdateCount()」を参照してください。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　getArray(int parameterIndex)

説明

指定されたJDBC ARRAYパラメタの値を、Javaプログラミング言語のjava.sql.Arrayオブジェクトとして取り出します。

形式

public java.sql.Array getArray(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

Javaプログラミング言語のjava.sql.Arrayオブジェクトとして表されたパラメタ値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　getBigDecimal(int parameterIndex, int scale)

説明

指定されたJDBC NUMERICパラメタの値を、引数scaleで指定された小数点以下の桁数を持つjava.math.BigDecimalオブジェクトとして取り出します。

形式

public java.math.BigDecimal getBigDecimal(int parameterIndex, int scale) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

int scale：

小数点以下の桁数を指定します。

戻り値

パラメタ値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　getBlob(int parameterIndex)

説明

指定されたJDBC BLOBパラメタの値を、Javaプログラミング言語のjava.sql.Blobオブジェクトとして取り出します。

形式

public java.sql.Blob getBlob(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

Javaプログラミング言語のjava.sql.Blobオブジェクトとして表されたパラメタ値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(4)　getBytes(int parameterIndex)

説明

指定されたJDBC BINARYまたはVARBINARYパラメタの値を、Javaプログラミング言語のbyte値の配列として取り出します。

形式

public byte[] getBytes(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値がSQL NULLの場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(5)　getClob(int parameterIndex)

説明

指定されたJDBC CLOBパラメタの値を、Javaプログラミング言語のjava.sql.Clobオブジェクトとして取り出します。

形式

public java.sql.Clob getClob(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

Javaプログラミング言語のjava.sql.Clobオブジェクトとして表されたパラメタ値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(6)　getDate(int parameterIndex)

説明

指定されたJDBC DATEパラメタの値を、java.sql.Dateオブジェクトとして取り出します。

形式

public java.sql.Date getDate(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(7)　getDouble(int parameterIndex)

説明

指定されたJDBC DOUBLEパラメタの値を、Javaプログラミング言語のdoubleとして取り出します。

形式

public double getDouble(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(8)　getFloat(int parameterIndex)

説明

指定されたJDBC FLOATパラメタの値を、Javaプログラミング言語のfloatとして取り出します。

形式

public float getFloat(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(9)　getInt(int parameterIndex)

説明

指定されたJDBC INTEGERパラメタの値を、Javaプログラミング言語のintとして取り出します。

形式

public int getInt(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(10)　getLong(int parameterIndex)

説明

指定されたJDBC BIGINTパラメタの値を、Javaプログラミング言語のlongとして取り出します。

形式

public long getLong(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(11)　getNString(int parameterIndex)

説明

指定されたNCHAR、NVARCHAR、またはLONGNVARCHARパラメタの値を、Javaプログラミング言語のStringとして取り出します。

固定長の型のJDBC NCHARの場合、返されるStringオブジェクトは、データベースでSQL NCHAR値が持っていた値と正確に同じ値（データベースが付加するパディングを含む）を持ちます。

形式

public java.lang.String getNString(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

NCHAR、NVARCHAR、またはLONGNVARCHAR値をマッピングするStringオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(12)　getObject(int parameterIndex)

説明

指定されたパラメタの値を、Javaプログラミング言語のObjectとして取り出します。値がSQL NULLの場合、JDBC DriverはJava nullを返します。

このメソッドは、Javaオブジェクトを返します。そのオブジェクトの型は、registerOutParameterメソッドを使用してこのパラメタに登録されたJDBCの型に対応します。

形式

public java.lang.Object getObject(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

OUTパラメタ値を保持するjava.lang.Objectオブジェクトを返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(13)　getObject(int parameterIndex, Class<T> type)

説明

OUTパラメタparameterIndexの値を表すオブジェクトを返します。変換がサポートされている場合は、そのパラメタのSQL型を要求されたJavaデータ型に変換します。変換がサポートされていない場合、またはtypeにnullが指定された場合、SQLExceptionが送出されます。

形式

public <T> T getObject(int parameterIndex, Class<T> type) throws java.sql.SQLException

型

<T> T：

このClassオブジェクトでモデル化されるクラスの型です。

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

Class<T> type：

指定されたパラメタの変換後のJavaデータ型を表すクラスを指定します。

戻り値

OUTパラメタ値を保持する、引数typeで指定したクラスのインスタンスを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

変換がサポートされていない場合

引数typeがnullの場合

上記以外のエラーが発生した場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(14)　getShort(int parameterIndex)

説明

指定されたJDBC SMALLINTパラメタの値を、Javaプログラミング言語のshortとして取り出します。

形式

public short getShort(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(15)　getSQLXML(int parameterIndex)

説明

指定されたSQL XMLパラメタの値を、Javaプログラミング言語のjava.sql.SQLXMLオブジェクトとして取り出します。

形式

public java.sql.SQLXML getSQLXML(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

SQL XML値をマッピングするSQLXMLオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(16)　getString(int parameterIndex)

説明

指定されたJDBC CHAR、VARCHAR、またはLONGVARCHARパラメタの値を、Javaプログラミング言語のStringとして取り出します。

固定長の型のJDBC CHARの場合、返されるStringオブジェクトは、データベースでSQL CHAR値が持っていた値と正確に同じ値（データベースが付加するパディングを含む）を持ちます。

形式

public java.lang.String getString(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(17)　getTime(int parameterIndex)

説明

指定されたJDBC TIMEパラメタの値を、java.sql.Timeオブジェクトとして取り出します。

形式

public java.sql.Time getTime(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(18)　getTimestamp(int parameterIndex)

説明

指定されたJDBC TIMESTAMPパラメタの値を、java.sql.Timestampオブジェクトとして取り出します。

形式

public java.sql.Timestamp getTimestamp(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(19)　registerOutParameter(int parameterIndex, int sqlType)

説明

引数parameterIndexに指定したOUTパラメタを、JDBC型sqlTypeとして登録します。ストアド・プロシージャが実行される前に、すべてのOUTパラメタを登録しておく必要があります。

OUTパラメタ用に引数sqlTypeで指定したJDBCの型は、そのパラメタの値を読み込むためにgetメソッドで使用するJavaの型を判定します。

パラメタがJDBC型NUMERICまたはDECIMALの場合は、スケール値を受け入れるバージョンのregisterOutParameterを使用します。

形式

public void registerOutParameter(int parameterIndex, int sqlType) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

int sqlType：

java.sql.Typesによって定義されるJDBC型のコードを指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

引数sqlTypeのデータ型が、ARRAY、BLOB、CLOB、DATALINK、JAVA_OBJECT、NCHAR、NCLOB、NVARCHAR、LONGNVARCHAR、REF、ROWID、SQLXML、またはSTRUCTで、ParticipantのJDBC Driverがこのデータ型をサポートしていない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(20)　registerOutParameter(int parameterIndex, int sqlType, int scale)

説明

引数parameterIndexに指定したOUTパラメタを、JDBC型sqlTypeとして登録します。ストアド・プロシージャが実行される前に、すべてのOUTパラメタを登録しておく必要があります。

OUTパラメタ用に引数sqlTypeで指定したJDBCの型は、そのパラメタの値を読み込むためにgetメソッドで使用するJavaの型を判定します。

パラメタがJDBCの型NUMERICまたはDECIMALの場合は、このregisterOutParameterメソッドを使用します。

形式

public void registerOutParameter(int parameterIndex, int sqlType, int scale) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

int sqlType：

java.sql.Typesによって定義されるSQL型のコードを指定します。

int scale：

設定する小数点以下の桁数を指定します。0以上の数値を指定してください。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

引数sqlTypeのデータ型が、ARRAY、BLOB、CLOB、DATALINK、JAVA_OBJECT、NCHAR、NCLOB、NVARCHAR、LONGNVARCHAR、REF、ROWID、SQLXML、またはSTRUCTで、ParticipantのJDBC Driverがこのデータ型をサポートしていない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(21)　registerOutParameter(int parameterIndex, int sqlType, java.lang.String typeName)

説明

指定された出力パラメタを登録します。ユーザ定義出力パラメタまたはREF出力パラメタには、このバージョンのregisterOutParameterメソッドを使用してください。ユーザ定義型の例には、STRUCT、DISTINCT、JAVA_OBJECT、および名前付き配列があります。

ストアド・プロシージャが実行される前に、すべてのOUTパラメタを登録しておいてください。

ユーザ定義パラメタの場合は、そのパラメタの完全指定SQL型名も指定してください。REFパラメタの場合は、参照する型の完全指定型名を指定してください。型コードや型名の情報を必要としないParticipantのJDBC Driverはそれを無視します。ただし、移植性を高めるためには、アプリケーションはユーザ定義パラメタおよびREFパラメタに対して、これらの値を提供する必要があります。このメソッドは、ユーザ定義パラメタとREFパラメタを対象としていますが、任意のJDBC型のパラメタを登録するために使用することもできます。パラメタがユーザ定義の型またはREF型を持たない場合、typeNameパラメタは無視されます。

出力パラメタの値を読み込むときには、そのパラメタの登録済みSQL型に対応するJava型用の取得メソッドを使用してください。

形式

public void registerOutParameter(int parameterIndex, int sqlType, java.lang.String typeName) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

int sqlType：

java.sql.Typesの値を指定します。

java.lang.String typeName：

SQL構造化型の完全指定された名前を指定してください。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

引数sqlTypeのデータ型が、ARRAY、BLOB、CLOB、DATALINK、JAVA_OBJECT、NCHAR、NCLOB、NVARCHAR、LONGNVARCHAR、REF、ROWID、SQLXML、またはSTRUCTで、ParticipantのJDBC Driverがこのデータ型をサポートしていない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(22)　wasNull()

説明

最後に読み込まれたOUTパラメタの値がSQL NULLかどうかを取得します。読み込み用メソッドの呼び出しのあとに、このメソッドを呼び出してください。そうでないと、nullかどうかを判別するために使用する値がありません。

形式

public boolean wasNull() throws java.sql.SQLException

引数

なし。

戻り値

最後に読み込まれたパラメタがSQL NULLの場合はtrueを、それ以外の場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.8　PctoResultSetクラス（SQL-Participant限定）

説明

データベースの結果を表すデータの表のクラスです。データベースの結果セットを表すデータの表は、通常、データベースに照会する文を実行すると生成されます。ResultSetオブジェクトは、カーソルがデータの現在の行を指し示すよう維持します。初期状態では、カーソルは最初の行の先頭に配置されます。nextメソッドによって、カーソルは次の行に移動します。ResultSetは、現在の行から列値を取得するgetterメソッド（getBoolean、getLongなど）を提供します。値は、列のインデックス番号か列名のどちらかを使って取得できます。getterメソッドへの入力として使用される列名では、大文字と小文字は区別されません。列名でgetterメソッドが呼び出され、複数の列が同じ名前を持つ場合は、最初に一致する列の値が返されます。ResultSetオブジェクトは、このオブジェクトを生成したStatementオブジェクトが閉じられるとき、再実行されるとき、または一連の複数の結果から次の結果を取り出すために使われるときに、自動的に閉じられます。

メソッド

PctoResultSetクラスのメソッドの一覧を次の表に示します。

表8‒23　PctoResultSetクラスのメソッドの一覧

メソッド

説明

absolute(int row)

このResultSetオブジェクト内の指定された行番号にカーソルを移動します。

close()

自動的にクローズされるときにResultSetオブジェクトのデータベースとJDBCリソースが解放されるのを待つのではなく、すぐにそれらを解放します。

getArray(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のArrayオブジェクトとして取り出します。

getArray(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のArrayオブジェクトとして取り出します。

getBigDecimal(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、完全な精度のjava.math.BigDecimalとして取り出します。

getBigDecimal(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、完全な精度のjava.math.BigDecimalとして取り出します。

getBlob(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のBlobオブジェクトとして取り出します。

getBlob(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のBlobオブジェクトとして取り出します。

getBoolean(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbooleanとして取り出します。

getBoolean(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbooleanとして取り出します。

getByte(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbyteとして取り出します。

getByte(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbyteとして取り出します。

getBytes(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbyte配列として取り出します。

getBytes(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbyte配列として取り出します。

getClob(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のClobオブジェクトとして取り出します。

getClob(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のClobオブジェクトとして取り出します。

getDate(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Dateオブジェクトとして取り出します。

getDate(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Dateオブジェクトとして取り出します。

getDouble(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のdoubleとして取り出します。

getDouble(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のdoubleとして取り出します。

getFloat(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のfloatとして取り出します。

getFloat(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のfloatとして取り出します。

getInt(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のintとして取り出します。

getInt(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のintとして取り出します。

getLong(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のlongとして取り出します。

getLong(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のlongとして取り出します。

getMetaData()

このResultSetオブジェクトの列の数、型、およびプロパティを取得します。

getNString(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のStringとして取り出します。

getNString(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のStringとして取り出します。

getObject(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のObjectとして取り出します。

getObject(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のObjectとして取り出します。

getObject(int columnIndex, Class<T> type)

このResultSetオブジェクトの現在の行の指定された列の値を取得します。変換がサポートされている場合は、その列のSQL型を要求されたJavaデータ型に変換します。

getObject(java.lang.String columnLabel, Class<T> type)

このResultSetオブジェクトの現在行にある指定された列の値を取得します。変換がサポートされている場合は、その列のSQL型を要求されたJavaデータ型に変換します。

getShort(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のshortとして取り出します。

getShort(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のshortとして取り出します。

getSQLXML(int columnIndex)

このResultSetの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.SQLXMLオブジェクトとして取り出します。

getSQLXML(java.lang.String columnLabel)

このResultSetの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.SQLXMLオブジェクトとして取り出します。

getString(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のStringとして取り出します。

getString(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のStringとして取り出します。

getTime(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Timeオブジェクトとして取り出します。

getTime(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Timeオブジェクトとして取り出します。

getTimestamp(int columnIndex)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Timestampオブジェクトとして取り出します。

getTimestamp(java.lang.String columnLabel)

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Timestampオブジェクトとして取り出します。

getType()

このResultSetオブジェクトの型を返します。

isClosed()

このResultSetオブジェクトがクローズされているかどうかを取得します。

next()

カーソルを現在の位置から順方向に1行移動します。

wasNull()

最後に読み込まれた列の値がSQL NULLであるかどうかを通知します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　absolute(int row)

説明

このResultSetオブジェクト内の指定された行番号にカーソルを移動します。

指定された行番号が正の値の場合、カーソルは結果セットの先頭を基準にして指定された行番号に移動します。最初の行が行1、2番目が行2となります。

指定された行番号が負の値の場合、カーソルは結果セットの終端に対する絶対行位置に移動します。例えば、absolute(-1)メソッドを呼び出すと、カーソルは最終行に移動します。absolute(-2)メソッドを呼び出すと、カーソルは最終行の前の行に移動します。

指定された行番号が0の場合、カーソルは最初の行の前に移動します。

結果セット内の先頭行または最終行を越える位置にカーソルを移動しようとすると、カーソルは先頭行の前または最終行の後ろに置かれます。

形式

public boolean absolute(int row) throws java.sql.SQLException

引数

int row：

カーソルの移動先の行番号を指定します。0を指定した場合、カーソルは最初の行の前に置かれます。正の番号を指定した場合、行番号は結果セットの先頭からカウントされます。負の番号を指定した場合、行番号は結果セットの終端からカウントされます。

戻り値

カーソルがこのResultSetオブジェクト内の位置に移動する場合はtrueを、最初の行の前または最終行の後ろにカーソルが位置する場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

結果セットのタイプがTYPE_FORWARD_ONLYの場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　close()

説明

自動的にクローズされるときにResultSetオブジェクトのデータベースとJDBCリソースが解放されるのを待つのではなく、すぐにそれらを解放します。

形式

public void close()

引数

なし。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に例外を送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　getArray(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のArrayオブジェクトとして取り出します。

形式

public java.sql.Array getArray(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

指定された列のSQL ARRAY値を表すjava.sql.Arrayオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(4)　getArray(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のArrayオブジェクトとして取り出します。

形式

public java.sql.Array getArray(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

指定された列のSQL ARRAY値を表すjava.sql.Arrayオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(5)　getBigDecimal(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、完全な精度のjava.math.BigDecimalとして取り出します。

形式

public java.math.BigDecimal getBigDecimal(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

全精度の列の値を返します。値が存在しない場合、返される値はJavaプログラミング言語のnullです。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(6)　getBigDecimal(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、完全な精度のjava.math.BigDecimalとして取り出します。

形式

public java.math.BigDecimal getBigDecimal(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

全精度の列の値を返します。値が存在しない場合、返される値はJavaプログラミング言語のnullです。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(7)　getBlob(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のBlobオブジェクトとして取り出します。

形式

public java.sql.Blob getBlob(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

指定された列のSQL BLOB値を表すBlobオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(8)　getBlob(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のBlobオブジェクトとして取り出します。

形式

public java.sql.Blob getBlob(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

指定された列のSQL BLOB値を表すBlobオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(9)　getBoolean(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbooleanとして取り出します。

なお、次のどちらかに該当する場合は、falseが返されます。

指定された列のデータ型がCHARまたはVARCHARで、"0"を含む場合

データ型がBIT、TINYINT、SMALLINT、INTEGER、またはBIGINTで、0を含む場合

次のどちらかに該当する場合は、trueが返されます。

指定された列のデータ型がCHARまたはVARCHARで、"1"を含む場合

データ型がBIT、TINYINT、SMALLINT、INTEGER、またはBIGINTで、1を含む場合

形式

public boolean getBoolean(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、falseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(10)　getBoolean(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbooleanとして取り出します。

なお、次のどちらかに該当する場合は、falseが返されます。

指定された列のデータ型がCHARまたはVARCHARで、"0"を含む場合

データ型がBIT、TINYINT、SMALLINT、INTEGER、またはBIGINTで、0を含む場合

次のどちらかに該当する場合は、trueが返されます。

指定された列のデータ型がCHARまたはVARCHARで、"1"を含む場合

データ型がBIT、TINYINT、SMALLINT、INTEGER、またはBIGINTで、1を含む場合

形式

public boolean getBoolean(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合、falseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(11)　getByte(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbyteとして取り出します。

形式

public byte getByte(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(12)　getByte(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbyteとして取り出します。

形式

public byte getByte(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(13)　getBytes(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbyte配列として取り出します。バイトはJDBC Driverによって返されたraw値を表します。

形式

public byte[] getBytes(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(14)　getBytes(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbyte配列として取り出します。byte配列には、JDBC Driverによって返されたraw値が格納されます。

形式

public byte[] getBytes(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(15)　getClob(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のClobオブジェクトとして取り出します。

形式

public java.sql.Clob getClob(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

指定された列のSQL CLOB値を表すClobオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(16)　getClob(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のClobオブジェクトとして取り出します。

形式

public java.sql.Clob getClob(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

指定された列のSQL CLOB値を表すClobオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(17)　getDate(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Dateオブジェクトとして取り出します。

形式

public java.sql.Date getDate(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(18)　getDate(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Dateオブジェクトとして取り出します。

形式

public java.sql.Date getDate(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(19)　getDouble(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のdoubleとして取り出します。

形式

public double getDouble(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(20)　getDouble(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のdoubleとして取り出します。

形式

public double getDouble(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(21)　getFloat(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のfloatとして取り出します。

形式

public float getFloat(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合は、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(22)　getFloat(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のfloatとして取り出します。

形式

public float getFloat(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(23)　getInt(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のintとして取り出します。

形式

public int getInt(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(24)　getInt(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のintとして取り出します。

形式

public int getInt(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(25)　getLong(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のlongとして取り出します。

形式

public long getLong(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(26)　getLong(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のlongとして取り出します。

形式

public long getLong(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(27)　getMetaData()

説明

このResultSetオブジェクトの列の数、型、およびプロパティを取得します。

形式

public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException

引数

なし。

戻り値

このResultSetオブジェクトの列の記述を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(28)　getNString(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のStringとして取り出します。NCHAR、NVARCHAR、およびLONGNVARCHAR列にアクセスするときに使用します。

形式

public java.lang.String getNString(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(29)　getNString(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のStringとして取り出します。NCHAR、NVARCHAR、およびLONGNVARCHAR列にアクセスするときに使用します。

形式

public java.lang.String getNString(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(30)　getObject(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のObjectとして取り出します。

このメソッドは、指定された列の値をJavaオブジェクトとして返します。Javaオブジェクトの型は、JDBCの仕様で指定されている組み込み型のマッピングに従って、列のSQL型に対応するデフォルトのJavaオブジェクト型になります。値がSQL NULLの場合、JDBC DriverはJava nullを返します。

HMP-PCTOは、データベース固有の抽象データ型には対応しません。

形式

public java.lang.Object getObject(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を保持しているjava.lang.Objectを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(31)　getObject(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のObjectとして取り出します。

このメソッドは、指定された列の値をJavaオブジェクトとして返します。Javaオブジェクトの型は、JDBCの仕様で指定されている組み込み型のマッピングに従って、列のSQL型に対応するデフォルトのJavaオブジェクト型になります。値がSQL NULLの場合、JDBC DriverはJava nullを返します。

HMP-PCTOは、データベース固有の抽象データ型には対応しません。

形式

public java.lang.Object getObject(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を保持しているjava.lang.Objectを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(32)　getObject(int columnIndex, Class<T> type)

説明

このResultSetオブジェクトの現在の行の指定された列の値を取得します。変換がサポートされている場合は、その列のSQL型を要求されたJavaデータ型に変換します。変換がサポートされていない場合、またはtypeにnullが指定された場合は、SQLExceptionが送出されます。

形式

public <T>T getObject(int columnIndex, Class<T> type) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

Class<T> type：

指定された列の変換後のJavaデータ型を表すクラスを指定します。

戻り値

列値を保持するtypeのインスタンスを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

Java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

変換がサポートされていない場合

typeがnullの場合

変換でエラーが発生した場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(33)　getObject(java.lang.String columnLabel, Class<T> type)

説明

このResultSetオブジェクトの現在行にある指定された列の値を取得します。変換がサポートされている場合は、その列のSQL型を要求されたJavaデータ型に変換します。変換がサポートされていない場合、またはtypeにnullが指定された場合は、SQLExceptionが送出されます。

形式

public <T>T getObject(java.lang.String columnLabel, Class<T> type) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

Class<T> type：

指定された列の変換後のJavaデータ型を表すクラスを指定します。

戻り値

列値を保持するtypeのインスタンスを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

変換がサポートされていない場合

typeがnullの場合

変換でエラーが発生した場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(34)　getShort(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のshortとして取り出します。

形式

public short getShort(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(35)　getShort(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のshortとして取り出します。

形式

public short getShort(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(36)　getSQLXML(int columnIndex)

説明

このResultSetの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.SQLXMLオブジェクトとして取り出します。

形式

public java.sql.SQLXML getSQLXML(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

SQL XML値をマッピングするSQLXMLオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(37)　getSQLXML(java.lang.String columnLabel)

説明

このResultSetの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.SQLXMLオブジェクトとして取り出します。

形式

public java.sql.SQLXML getSQLXML(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

SQL XML値をマッピングするSQLXMLオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(38)　getString(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のStringとして取り出します。

形式

public java.lang.String getString(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(39)　getString(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のStringとして取り出します。

形式

public java.lang.String getString(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(40)　getTime(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Timeオブジェクトとして取り出します。

形式

public java.sql.Time getTime(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(41)　getTime(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Timeオブジェクトとして取り出します。

形式

public java.sql.Time getTime(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(42)　getTimestamp(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Timestampオブジェクトとして取り出します。

形式

public java.sql.Timestamp getTimestamp(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(43)　getTimestamp(java.lang.String columnLabel)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のjava.sql.Timestampオブジェクトとして取り出します。

形式

public java.sql.Timestamp getTimestamp(java.lang.String columnLabel) throws java.sql.SQLException

引数

java.lang.String columnLabel：

SQL AS節として指定された列のラベルを指定します。SQL AS節が指定されていない場合、このラベルには列の名前を指定します。

戻り値

列値を返します。値が存在しない場合は、nullを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(44)　getType()

説明

このResultSetオブジェクトの型を返します。型は、結果セットを作成したStatementオブジェクトによって決まります。

形式

public int getType() throws java.sql.SQLException

引数

なし。

戻り値

ResultSet.TYPE_FORWARD_ONLY（1003）、ResultSet.TYPE_SCROLL_INSENSITIVE（1004）、またはResultSet.TYPE_SCROLL_SENSITIVE（1005）を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(45)　isClosed()

説明

このResultSetオブジェクトがクローズされているかどうかを取得します。ResultSetオブジェクトでcloseメソッドが呼び出されるか、または自動的にクローズされる場合に、ResultSetオブジェクトがクローズされます。

形式

public boolean isClosed() throws java.sql.SQLException

引数

なし。

戻り値

このResultSetオブジェクトがクローズされている場合はtrueを、オープン状態の場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(46)　next()

説明

カーソルを現在の位置から順方向に1行移動します。ResultSetのカーソルは、初期状態では最初の行の前に位置づけられています。nextメソッドの最初の呼び出しによって、最初の行が現在行になります。2番目の呼び出しによって2行目が現在行になり、以下同様に続きます。nextメソッドの呼び出しでfalseが返された場合、カーソルは最終行の後ろに位置します。現在行で入力ストリームがオープンしている場合、nextメソッドへの呼び出しは暗黙的にそのストリームをクローズさせます。

形式

public boolean next() throws java.sql.SQLException

引数

なし。

戻り値

新しい現在の行が有効の場合はtrueを、行がそれ以上存在しない場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(47)　wasNull()

説明

最後に読み込まれた列の値がSQL NULLであるかどうかを通知します。最初にgetterメソッドの1つを呼び出して、列の値を読み込みます。次にwasNullメソッドを呼び出して、読み込まれた値がSQL NULLかどうかを判定します。

形式

public boolean wasNull() throws java.sql.SQLException

引数

なし。

戻り値

最後に読み込まれた列の値がSQL NULLの場合はtrueを、それ以外の場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.9　PctoDatabaseMetaDataクラス（SQL-Participant限定）

説明

データベースに関する包括的な情報を提供するクラスです。

このクラスは、基本となるDBMSの操作方法を見つける必要があるツールで使用します。複数のDBMSと一緒に使用されるアプリケーションで使います。

メソッド

PctoDatabaseMetaDataクラスのメソッドの一覧を次の表に示します。

表8‒24　PctoDatabaseMetaDataクラスのメソッドの一覧

メソッド

説明

getDatabaseProductName()

Connectionオブジェクトが接続を表すデータベース製品の名前を取得します。

supportsMultipleResultSets()

Connectionオブジェクトが接続を表すデータベースで、executeメソッドの単一の呼び出しからの複数のResultSetオブジェクトの取得がサポートされているかどうかを取得します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　getDatabaseProductName()

説明

Connectionオブジェクトが接続を表すデータベース製品の名前を取得します。

形式

public java.lang.String getDatabaseProductName() throws java.sql.SQLException

引数

なし。

戻り値

データベース製品の名前を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　supportsMultipleResultSets()

説明

Connectionオブジェクトが接続を表すデータベースで、executeメソッドの単一の呼び出しからの複数のResultSetオブジェクトの取得がサポートされているかどうかを取得します。

形式

public boolean supportsMultipleResultSets() throws java.sql.SQLException

引数

なし。

戻り値

ResultSetオブジェクトの取得がサポートされている場合はtrueを、そうでない場合はfalseを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.10　PctoResultSetMetaDataクラス（SQL-Participant限定）

説明

ResultSetオブジェクトの列の型とプロパティに関する情報を取得するのに使用するクラスです。

メソッド

PctoResultSetMetaDataクラスのメソッドの一覧を次の表に示します。

表8‒25　PctoResultSetMetaDataクラスのメソッドの一覧

メソッド

説明

getColumnClassName(int column)

Javaクラスの完全指定された名前を返します。

getColumnCount()

このResultSetオブジェクトの列数を返します。

getColumnLabel(int column)

印刷や表示に使用する、指定された列の推奨タイトルを取得します。

getColumnName(int column)

指定された列の名前を取得します。

getColumnType(int column)

指定された列のSQL型を取得します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　getColumnClassName(int column)

説明

Javaクラスの完全指定された名前を返します。

形式

public java.lang.String getColumnClassName(int column) throws java.sql.SQLException

引数

int column：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

Javaプログラミング言語のクラスの完全指定された名前を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　getColumnCount()

説明

このResultSetオブジェクトの列数を返します。

形式

public int getColumnCount() throws java.sql.SQLException

引数

なし。

戻り値

列数を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　getColumnLabel(int column)

説明

印刷や表示に使用する、指定された列の推奨タイトルを取得します。通常、推奨タイトルは、SQL AS節として指定されます。SQL AS節が指定されていない場合、getColumnLabelから返される値は、getColumnNameメソッドによって返される値と同じになります。

形式

public java.lang.String getColumnLabel(int column) throws java.sql.SQLException

引数

int column：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列の推奨タイトルを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(4)　getColumnName(int column)

説明

指定された列の名前を取得します。

形式

public java.lang.String getColumnName(int column) throws java.sql.SQLException

引数

int column：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列名を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(5)　getColumnType(int column)

説明

指定された列のSQL型を取得します。

形式

public int getColumnType(int column) throws java.sql.SQLException

引数

int column：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

java.sql.TypesからのSQL型を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.11　PctoSQLXMLクラス（SQL-Participant限定）

説明

Javaプログラミング言語でSQL XML型を表現するクラスです。XMLは、XML値をデータベース表の行内に列の値として格納する組み込みの型です。デフォルトでは、JDBC DriverはSQLXMLオブジェクトをデータそのものではなく、XMLデータへの論理ポインタとして格納します。SQLXMLオブジェクトは、それが生成されたトランザクションの期間中に有効です。

PctoResultSetまたはPctoCallableStatementの各クラスのメソッド（getSQLXMLなど）を使用すると、XML値にアクセスできます。

メソッド

PctoSQLXMLクラスのメソッドの一覧を次の表に示します。

表8‒26　PctoSQLXMLクラスのメソッドの一覧

メソッド

説明

free()

このメソッドは、このオブジェクトをクローズし、このオブジェクトが保持していたリソースを解放します。

getString()

このSQLXMLインスタンスによって指定されたXML値の文字列表現を返します。

setString(java.lang.String value)

このSQLXMLインスタンスによって指定されたXML値を、指定されたString表現に設定します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　free()

説明

このメソッドは、このオブジェクトをクローズし、このオブジェクトが保持していたリソースを解放します。このメソッドが呼び出されると、SQL XMLオブジェクトは無効になり、読み込み可能にも書き込み可能にもなりません。

なお、freeメソッドを呼び出した場合に、free以外のメソッドを呼び出すと、SQLExceptionが送出されます。

また、freeメソッドを複数回呼び出した場合、2回目以降のfreeメソッドの呼び出しでは何も行われません。

形式

public void free() throws java.sql.SQLException

引数

なし。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

XML値を解放するときにエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　getString()

説明

このSQLXMLインスタンスによって指定されたXML値の文字列表現を返します。StringのエンコーディングはUnicodeです。ResultSetの指定された列がjava.sql.Types型のSQLXMLである場合、このメソッドの動作はResultSet.getString()と同じになります。

このメソッドが呼び出されると、SQL XMLオブジェクトは読み込みができなくなります。実装によっては、書き込みができなくなることもあります。

形式

public java.lang.String getString() throws java.sql.SQLException

引数

なし。

戻り値

このSQLXMLインスタンスによって指定されたXML値の文字列表現を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

XML値を処理するときにエラーが発生した場合

状態が読み込み不可能である場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　setString(java.lang.String value)

説明

このSQLXMLインスタンスによって指定されたXML値を、指定されたString表現に設定します。StringのエンコーディングはUnicodeです。このメソッドが呼び出されると、SQL XMLオブジェクトは書き込みができなくなります。実装によっては、読み込みができなくなることもあります。

形式

public void setString(java.lang.String value) throws java.sql.SQLException

引数

java.lang.String value：

XML値を指定します。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

XML値を処理するときにエラーが発生した場合

状態が書き込み不可能である場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.12　PctoBlobクラス（SQL-Participant限定）

説明

Javaプログラミング言語でSQL BLOB値を表現するクラスです。SQLのBLOBは、バイナリ・ラージ・オブジェクトをデータベースの表の行内に列の値として格納する組み込みの型です。

ResultSet、CallableStatement、およびPreparedStatementの各インタフェースのメソッド（getBlob、setBlobなど）を使用すると、SQLのBLOB値にアクセスできます。

メソッド

PctoBlobクラスのメソッドの一覧を次の表に示します。

表8‒27　PctoBlobクラスのメソッドの一覧

メソッド

説明

getBinaryStream()

このBlobインスタンスによって指定されたBLOB値をストリームとして取り出します。

getBytes(long pos, int length)

このBlobオブジェクトが表すBLOB値の全部または一部をbyte配列として取り出します。

length()

このBlobオブジェクトによって指定されるBLOB値内にあるバイトの数を返します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　getBinaryStream()

説明

このBlobインスタンスによって指定されたBLOB値をストリームとして取り出します。

形式

public java.io.InputStream getBinaryStream() throws java.sql.SQLException

引数

なし。

戻り値

BLOBデータを格納するストリームを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

BLOB値にアクセスするときにエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　getBytes(long pos, int length)

説明

このBlobオブジェクトが表すBLOB値の全部または一部をbyte配列として取り出します。byte配列には、引数posに指定された位置から、引数lengthに指定された連続するバイト数が格納されます。

形式

public byte[] getBytes(long pos, int length) throws java.sql.SQLException

引数

long pos：

BLOB値内の抽出される最初のバイトの位置（序数）を指定します。最初のバイトの位置は1です。

int length：

コピーされる連続したバイト数を指定します。長さの値は、0以上である必要があります。

戻り値

このBlobオブジェクトによって指定されたBLOB値内の、引数posに指定された位置から、引数lengthに指定された連続するバイト数が格納されている配列を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

BLOB値にアクセスするときにエラーが発生した場合

引数posが1より小さいか、または引数lengthが0より小さい場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　length()

説明

このBlobオブジェクトによって指定されるBLOB値内にあるバイトの数を返します。

形式

public long length() throws java.sql.SQLException

引数

なし。

戻り値

BLOBの長さ（バイト単位）を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

BLOBの長さにアクセスするときにエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.13　PctoClobクラス（SQL-Participant限定）

説明

Javaプログラミング言語でSQL CLOB型を表現するクラスです。SQLのCLOBは、キャラクタ・ラージ・オブジェクトをデータベースの表の行内の列値として格納する組み込みの型です。

ResultSet、CallableStatement、およびPreparedStatementの各インタフェースのメソッド（getClob、setClobなど）を使用すると、SQLのCLOB値にアクセスできます。

メソッド

PctoClobクラスのメソッドの一覧を次の表に示します。

表8‒28　PctoClobクラスのメソッドの一覧

メソッド

説明

getCharacterStream()

このClobオブジェクトによって指定されたCLOB値を、java.io.Readerオブジェクト（または文字のストリーム）として取り出します。

getSubString(long pos, int length)

このClobオブジェクトによって指定されたCLOB値内の指定された部分文字列のコピーを取得します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　getCharacterStream()

説明

このClobオブジェクトによって指定されたCLOB値を、java.io.Readerオブジェクト（または文字のストリーム）として取り出します。

形式

public java.io.Reader getCharacterStream() throws java.sql.SQLException

引数

なし。

戻り値

CLOBデータを格納するjava.io.Readerオブジェクトを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

CLOB値にアクセスするときにエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　getSubString(long pos, int length)

説明

このClobオブジェクトによって指定されたCLOB値内の指定された部分文字列のコピーを取得します。部分文字列は、引数posに指定された位置から、引数lengthに指定された数の連続する文字です。

形式

public java.lang.String getSubString(long pos, int length) throws java.sql.SQLException

引数

long pos：

抽出される部分文字列の最初の文字を指定します。最初の文字の位置は1です。

int length：

コピーされる連続した文字数を指定します。0以上を指定してください。

戻り値

このClobオブジェクトによって指定されたCLOB値内の指定された部分文字列であるStringを返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

CLOB値にアクセスするときにエラーが発生した場合

引数posが1より小さいか、または引数lengthが0より小さい場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.14　PctoArrayクラス（SQL-Participant限定）

説明

SQL型ARRAYのJavaプログラミング言語でのマッピングをするクラスです。デフォルトでは、ARRAY値はSQL ARRAY値へのトランザクション期間中の参照です。デフォルトでは、Arrayオブジェクトは内部的にSQL LOCATOR(array)を使って実装されます。したがって、Arrayオブジェクトは、ARRAY値のデータを含むのではなく、SQL ARRAY値のデータへの論理ポインタを含みます。

Arrayインタフェースは、SQL ARRAY値のデータを配列またはResultSetオブジェクトとしてクライアントに渡すメソッドを提供します。

基底型のエントリを持つ型マップが、getArrayメソッドおよびgetResultSetメソッドに提供されると、その型マップに含まれるマッピングは、ARRAY値の要素をマッピングするのに使用されます。通常、型マップは提供されません。その場合、接続の型マップがデフォルトで使用されます。接続の型マップまたはメソッドに提供された型マップが基底型のエントリを持っていない場合、要素は標準マップに従ってマッピングされます。

メソッド

PctoArrayクラスのメソッドの一覧を次の表に示します。

表8‒29　PctoArrayクラスのメソッドの一覧

メソッド

説明

free()

このメソッドは、Arrayオブジェクトを解放し、保持されているリソースを解放します。

getArray()

このArrayオブジェクトによって指定されたSQL ARRAY値の内容を、Javaプログラミング言語の配列の形式で取り出します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　free()

説明

このメソッドは、Arrayオブジェクトを解放し、保持されているリソースを解放します。freeメソッドが一度呼び出されたあとは、オブジェクトは無効になります。

freeメソッドが呼び出されると、freeメソッド以外のメソッドを呼び出そうとしても、SQLExceptionが送出されます。freeメソッドを複数回呼び出した場合、2回目以降のfreeメソッドの呼び出しでは何も行われません。

形式

public void free() throws java.sql.SQLException

引数

なし。

戻り値

なし。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

Arrayのリソースの解放時にエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　getArray()

説明

このArrayオブジェクトによって指定されたSQL ARRAY値の内容を、Javaプログラミング言語の配列の形式で取り出します。このgetArrayメソッドは、型マップのカスタマイズのための接続に関連した型マップを使います。

なお、getArrayメソッドを使用してプリミティブデータ型にマッピングする基底型を生成する場合、返される配列がそのプリミティブデータ型の配列とjava.lang.Objectの配列のどちらであるかは、実装で定義されます。

形式

public java.lang.Object getArray() throws java.sql.SQLException

引数

なし。

戻り値

このArrayオブジェクトによって指定されたSQL ARRAY値の順序付き要素が格納されている、Javaプログラミング言語の配列を返します。

例外

PctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

配列へのアクセス中にエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoInternalContradictionException：

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

8.3.15　PctoSqlFeatureNotSupportedException例外（SQL-Participant限定）

説明

JDBC Proxy Driverがサポートしていないメソッドを呼び出した場合に送出する例外です。サポートしていないメソッドの呼び出し元に送出します。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.sql.SQLException
        java.sql.SQLNonTransientException
          java.sql.SQLFeatureNotSupportedException
            jp.co.Hitachi.soft.hmppcto.jdbc.client.exception.PctoSqlFeatureNotSupportedException

8.3.16　PctoSQLClientInfoException例外（SQL-Participant限定）

説明

JDBC Proxy Driverがサポートしていないメソッドを呼び出した場合に送出する例外です。サポートしていないメソッドの呼び出し元に送出します。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.sql.SQLException
        java.sql.SQLClientInfoException
          jp.co.Hitachi.soft.hmppcto.jdbc.client.exception.PctoSQLClientInfoException

8.3.17　PctoInternalContradictionException例外（SQL-Participant限定）

説明

Participantの内部で障害が発生した場合に送出します。

次の場合に送出する例外です。

Connectionインスタンスが失われている場合

Connectionインスタンスの取得時にDBで障害が発生した場合

SQL-Participantが閉塞している場合

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求した場合

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.sql.SQLException
        jp.co.Hitachi.soft.hmppcto.jdbc.client.exception.PctoInternalContradictionException

8.3.18　PctoTransactionStartException例外（SQL-Participant限定）

説明

Participantのトランザクションブランチを開始できない場合に送出する例外です。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.sql.SQLException
        jp.co.Hitachi.soft.hmppcto.jdbc.client.exception.PctoTransactionStartException

8.3.19　PctoPrePreparedException例外（SQL-Participant限定）

説明

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出する例外です。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.sql.SQLException
        jp.co.Hitachi.soft.hmppcto.jdbc.client.exception.PctoPrePreparedException

8.3.20　PctoConnectionLackedException例外（SQL-Participant限定）

説明

パラメタ「db.pool.max-pool-size」の指定値よりもDBコネクション数を多く使用しようとした場合に送出する例外です。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.sql.SQLException
        jp.co.Hitachi.soft.hmppcto.jdbc.client.exception.PctoConnectionLackedException

8.3.21　SQLState・ErrorCode一覧（SQL-Participant限定）

HMP-PCTOのJDBC Proxy Driverの例外が出力するSQLState・ErrorCodeの一覧を次に示します。

表8‒30　SQLState・ErrorCodeの一覧

項番

SQLState

ErrorCode

例外

意味

1

08100

1013

PctoConnectionLackedException例外

コネクションプールのConnectionインスタンスが不足しました。

2

08101

1016

PctoInternalContradictionException例外

Connectionインスタンスが失われていました。

3

08103

1030

PctoInternalContradictionException例外

Connectionインスタンスの取得時にDBで障害が発生しました。

4

0A000

0

PctoSqlFeatureNotSupportedException例外

PctoSQLClientInfoException例外

JDBC Proxy Driverがサポートしていないメソッドを呼び出しました。

5

A0002

1010

PctoInternalContradictionException例外

または

PctoTransactionStartException例外

SQL-Participantが閉塞しています。

6

A0003

1011

PctoTransactionStartException例外

トランザクションブランチの開始に失敗しました。

7

A0004

1012

PctoPrePreparedException例外

プリペア済みのトランザクションブランチでSQL実行を要求されました。

8

A0005

3

PctoTransactionStartException例外

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗しました。

9

A0007

1029

PctoInternalContradictionException例外

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求されました。

8.4　TCC-ParticipantのAPI仕様（TCC-Participant限定）

HMP-PCTOのTCC-Participantで使用するAPIの仕様を説明します。

8.4.1　クラス・インタフェースの一覧（TCC-Participant限定）

HMP-PCTOのTCC-Participantがサポートするクラス・インタフェースの一覧を次に示します。

表8‒31　クラス・インタフェースの一覧

項番

パッケージ名

クラス・インタフェース名

説明

1

jp.co.Hitachi.soft.hmppcto.participant.tcc.api

TccResponse<T extends java.io.Serializable>クラス

トランザクションを一意に表す文字列に紐づいたデータを管理するためのクラスです。

2

jp.co.Hitachi.soft.hmppcto.participant.tcc.api

TccService<I, O extends java.io.Serializable>インタフェース

TCCパターンのTry、Confirm、Cancel、Recoverの定義を持つインタフェースです。

8.4.2　アノテーションの一覧（TCC-Participant限定）

HMP-PCTOのTCC-Participantがサポートするアノテーション一覧を次に示します。

表8‒32　アノテーションの一覧

項番

パッケージ名

アノテーション名

説明

1

jp.co.Hitachi.soft.hmppcto.participant.tcc.api

@Tccアノテーション

executeTryメソッドとexecuteTryメソッドの前後処理を紐づけるアノテーションです。

8.4.3　例外の一覧（TCC-Participant限定）

なし。

8.4.4　TccResponse<T extends java.io.Serializable>クラス（TCC-Participant限定）

説明

transactionKeyに紐づいたdataを管理するためのクラスです。TccResponseはtransactionKeyとdataのフィールドを持ちます。transactionKeyはトランザクションを一意に表す文字列を格納しています。dataは任意の型のデータを格納できます。dataは任意の型のため、業務ロジック内で利用している一意に識別できるIDのようなデータを持つことを想定しています。トランザクションを一意に表す文字列とデータを紐づけていることで、dataをトランザクション管理下に置くことができます。TccServiceインタフェースに定義されているメソッドの戻り値や引数として利用し、TCC-Participantとユーザアプリケーション間でデータのやり取りを行います。

このクラスは、「(b)　トランザクションを一意に表す文字列とデータの紐づけの永続化」でこのクラスのインスタンスそのものを外部APIなどを使用して永続化することも可能とするためにjava.io.Serializableインタフェースを継承しています。

ジェネリクスTにはdataの型を指定します。dataの型についてもjava.io.Serializableインタフェースを継承するように実装してください。

transactionKeyの長さは最大256バイトです。

メソッド

TccResponseクラスのメソッドの一覧を次の表に示します。

表8‒33　TccResponseクラスのメソッドの一覧

メソッド

説明

TccResponse(final T data)

コンストラクタです。

getTransactionKey()

フィールドtransactionKeyのgetterメソッドです。

getData()

フィールドdataのgetterメソッドです。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.participant.tcc.api

(1)　TccResponse(final T data)

説明

コンストラクタです。

引数の値をフィールドのdataにセットします。

コンストラクタを呼び出すタイミングはトランザクション中である必要があります。

コンストラクタを呼び出すタイミングがトランザクション外である場合、HMP-PCTOはKFSG62016-Eメッセージを出力し、java.lang.IllegalStateExceptionを送出します。

形式

public TccResponse(final T data)

引数

T data：

任意の型のデータオブジェクトです。

戻り値

なし。

例外

なし。

(2)　getTransactionKey()

説明

フィールドtransactionKeyのgetterメソッドです。

形式

public String getTransactionKey()

引数

なし。

戻り値

フィールドのtransactionKeyを返します。

例外

なし。

(3)　getData()

説明

フィールドのdataのgetterメソッドです。

形式

public T getData()

引数

なし。

戻り値

任意の型のデータオブジェクトです。

例外

なし。

8.4.5　TccService<I, O extends java.io.Serializable>インタフェース（TCC-Participant限定）

説明

TCCパターンのTry、Confirm、Cancel、Recoverの定義を持つインタフェースです。このインタフェースをユーザが実装することで、TCCパターンを利用したトランザクション制御を実現します。ジェネリクスIはexecuteTryの第一引数の型、OはexecuteTryの戻り値、executeConfirm、executeCancelの引数で利用されるTccResponseのジェネリクスで利用される型を指定します。

メソッド

TccServiceインタフェースのメソッドの一覧を次の表に示します。

表8‒34　TccServiceインタフェースのメソッドの一覧

メソッド

説明

executeTry(I input)

データの仮登録を行う処理を実装します。

executeConfirm(TccResponse<O> response)

トランザクションが正常に決着したときの処理を実装します。

executeCancel(TccResponse<O> response)

トランザクションが異常に決着したときの処理を実装します。

executeRecover()

TCC-Participantが再起動した際に、未決着かつ自Participantが登録したTccResponseの一覧を返す処理を実装します。

getOperationId()

TCC-Participant内のユーザアプリケーション内に実装されたTccServiceインタフェースの複数の実装クラスを一意に識別する文字列を返す処理を実装します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.participant.tcc.api

(1)　executeTry(I input)

説明

TCCパターンにおけるTryの処理を実装してください。例えばTryはデータの仮登録を行います。詳細な実装方法は「2.2　Javaアプリケーションの開発」のexecuteTry()メソッドの実装の説明を参照してください。

戻り値のTccResponse<O>のOはジェネリクスで指定した任意の型です。

この処理中に例外が発生した場合、HMP-PCTOでキャッチしてメッセージを出すなどの処理はしません。メッセージやスタックトレースの出力処理はユーザが必要に応じて実装してください。

executeTryの呼び出し元で@PctoBranchRollbackForアノテーションを利用した上で、例外の種類に応じてHTTPステータスを変更することで、トランザクションをコミット決着させるかロールバック決着させるかを指定できます。@PctoBranchRollbackForアノテーションに関しては「8.2.10　@PctoBranchRollbackForアノテーション」や「2.2　Javaアプリケーションの開発」のトランザクションの伝搬の説明を参照してください。

形式

public TccResponse<O> executeTry(I input) throws java.lang.Exception

引数

I input：

任意の型のデータオブジェクトを指定します。

戻り値

TccResponse< O>クラスのインスタンスを返します。

例外

java.lang.Exception:

executeTryの処理中に異常が発生した場合に送出してください。

(2)　executeConfirm(TccResponse<O> response)

説明

TCCパターンにおけるConfirmの処理を実装してください。例えばConfirmはTryで仮登録したデータを確定させる処理を行います。詳細な実装方法は「2.2　Javaアプリケーションの開発」のexecuteConfirm()メソッドの実装の説明を参照してください。

HMP-PCTOから分散合意結果がCommit決着であった場合に実行されます。

なお、同一トランザクションに参加しているTccServiceインタフェースの複数の実装クラスの間で、HMP-PCTOからの各executeConfirm()メソッドの実行順序は順不同です。

引数のTccResponse<O>のOはジェネリクスで指定した任意の型で、executeTryの戻り値を利用します。

この処理で送出された例外はHMP-PCTOでキャッチし、KFSG62007-Eメッセージおよびスタックトレースを出力し、トランザクションを終了します。

形式

public void executeConfirm(TccResponse<O> response)

引数

TccResponse<O> response：

executeTryメソッドで戻り値として受け取ったTccResponseクラスの値を指定します。

戻り値

なし。

例外

なし。

(3)　executeCancel(TccResponse<O> response)

説明

TCCパターンにおけるCancelの処理を実装してください。例えばCancelはTryで仮登録したデータを取り消す処理を行います。詳細な実装方法は「2.2　Javaアプリケーションの開発」のexecuteCancel()メソッドの実装の説明を参照してください。

HMP-PCTOから分散合意結果がRollbackであった場合に実行されます。

引数のTccResponse<O>のOはジェネリクスで指定した任意の型で、executeTryの戻り値を利用します。

この処理で送出された例外はHMP-PCTOでキャッチし、KFSG62008-Eメッセージおよびスタックトレースを出力し、トランザクションを終了します。

形式

public void executeCancel(TccResponse<O> response)

引数

TccResponse<O> response：

executeTryメソッドで戻り値として受け取ったTccResponseクラスの値を指定します。

戻り値

なし。

例外

なし。

(4)　executeRecover()

説明

TCC-Participantが再起動した際に実行されます。

このメソッドが呼び出された時点で未決着かつ自Participantが登録したTccResponseの一覧を返す処理を実装してください。

詳細な実装方法は「(5)　executeRecoverメソッドの実装」を参照してください。

この処理で送出された例外はHMP-PCTOでキャッチし、KFSG62004-Eメッセージおよびスタックトレースを出力し、Podの起動を終了します。

形式

public java.util.Set<TccResponse<O>> executeRecover()

引数

なし。

戻り値

このメソッドが呼び出された時点で未決着かつ自Participantが登録したTccResponseの一覧を返します。

未決着かつ自Participantが登録したTccResponseがない場合は、空のjava.util.setを返します。

例外

なし。

(5)　getOperationId()

説明

TCC-Participant内のユーザアプリケーション内に実装されたTccServiceインタフェースの複数の実装クラスを一意に識別するIDを返す処理を実装してください。

詳細な実装方法は「2.2　Javaアプリケーションの開発」のgetOperationId()メソッドの実装の説明を参照してください。

例外が発生したとき、executeRecover中の場合はHMP-PCTOでキャッチし、KFSG62012-Eメッセージおよびスタックトレースを出力し、Podの起動を終了します。

一方、トランザクション開始時の場合はHMP-PCTOでキャッチし、KFSG62012-Eメッセージおよびスタックトレースを出力し、トランザクションの要求を無視します。

形式

public java.lang.String getOperationId()

引数

なし。

戻り値

TccServiceを一意に識別する文字列を返します。

文字列の長さは1〜256バイトの範囲内である必要があります。

例外

なし。

8.4.6　@Tccアノテーション（TCC-Participant限定）

説明

executeTryメソッドと、executeTryメソッドの前後処理を紐づけるアノテーションです。TccServiceインタフェースに付与することでHMP-PCTOが前後処理を行います。

詳細な実装方法は「2.2　Javaアプリケーションの開発」の@Tccアノテーションの付与を参照してください。

適用可能要素

クラス

属性

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.participant.tcc.api

9　パラメタ

9.1　HMP-PCTOの各コンポーネントおよび連携先製品に設定するパラメタ

HMP-PCTOの各コンポーネントおよび連携先製品に設定するパラメタを説明します。

HMP-PCTOのパラメタは、次のとおりに設定してください。

表9‒1　HMP-PCTOのパラメタ設定方法

コンポーネントの分類

パラメタ設定方法

コンポーネント

参照先

ユーザのコンポーネント

Spring Bootのコンフィグソース（application.properties、application.yml、環境変数など）に設定

共通

9.2.1　共通

JDBC Proxy Driver

9.2.2　JDBC Proxy Driver

Orchestrator

9.2.3　Orchestrator

Entity-Module

9.2.4　Entity-Module

SQL-Participant

9.2.5　SQL-Participant

TCC-Participant

9.2.6　TCC-Participant

HMP-PCTOのコンポーネント

Helmチャートのvalues.yamlに設定

Mediator

9.3.1　Mediator

TP1-Bridge

9.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）

EADS（通常版限定）

9.3.3　EADS（通常版限定）

Ext-Cons（トライアル版の場合）

9.3.4　Ext-Cons（トライアル版限定）

Filebeat

9.3.5　Filebeat

Jaeger-query

9.3.6　Jaeger-query

HMP-PCTOとRASのコンポーネント

Jaeger-collector

9.3.7　Jaeger-collector

Prometheus

9.3.8　Prometheus

Metricbeat

9.3.9　Metricbeat

Elasticsearch

9.3.10　Elasticsearch

Logstash

9.3.11　Logstash

Metrics Server

9.3.12　Metrics Server

連携先製品のパラメタは、次のとおりに設定してください。

表9‒2　連携先製品のパラメタ設定方法

連携先製品

パラメタ設定方法

参照先

PostgreSQL（SQL-Participant限定）

PostgreSQLのサーバ側のパラメタに設定

9.4.1　PostgreSQL（SQL-Participant限定）

SQL Server（SQL-Participant限定）

SQL Serverのサーバ側のオプションに設定

9.4.2　SQL Server（SQL-Participant限定）

HiRDB（SQL-Participant限定）

HiRDBの次の定義に設定

サーバ定義

クライアント環境定義

9.4.3　HiRDB（SQL-Participant限定）

OpenTP1（通常版かつTP1-Bridge 限定）

連携先のOpenTP1の次の定義に設定

rapリスナーサービス定義

システム共通定義

トランザクションサービス定義

ユーザサービス定義

9.5　TP1連携時の連携先OpenTP1に設定が必要なパラメタ（通常版かつTP1-Bridge限定）

uCosminexus Application Server（通常版かつTP1-Bridge 限定）

uCosminexus Application Serverの次のファイルに設定

usrconf.propertiesファイル

usrconf.cfgファイル

9.6　uCosminexus Application Serverに設定が必要なTP1-Converterのパラメタ（通常版かつTP1-Bridge限定）

重要

パラメタ設定の注意事項

パラメタの型がString（文字列）の場合に設定できる文字はASCII文字です。マルチバイト文字は設定できません。

このマニュアルに記載しているOSSのパラメタ、およびこの章で説明しているパラメタ以外の他社製品のパラメタの一覧については、「付録B　HMP-PCTOに関連するOSSおよび他社製品のパラメタ一覧」を参照してください。各パラメタの詳細は、関連のOSSおよび他社製品の公式ドキュメントを参照してください。

9.2　ユーザのコンポーネントに設定するパラメタ

ユーザのコンポーネントに設定するパラメタについて説明します。

9.2.1　共通

Orchestrator-Service、Relay-Service、Entity-Service(SQL)、Entity-Service(TCC)、Orchestrator-Service(SQL)、Alternate-ServiceおよびAlternate-Service(SQL)で共通のパラメタを説明します。

(1)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表9‒3　共通のjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

tracing.instance-id

HMP-PCTOの各コンテナイメージを識別するための識別子を設定してください。この指定値は、分散トレースのサービス名として表示します。

システムで一意になるようにコンテナイメージの役割に応じた値を設定してください。

異なる役割のコンテナイメージに同一の値を設定した場合、どのコンテナイメージが出力した分散トレース情報かを判別できません。

kubernetesマニフェストファイルのspec.replicasパラメタに2以上を設定する場合やスケーリング対応機能を使用する場合は、このパラメタを必ず指定してください。

複数のPodが起動した場合、同じサービス名となり、分散トレース情報の検索が容易になります。

このパラメタを設定した場合は、次のサービス名となります。

Orchestrator-Service/Relay-Service/Entity-Service(SQL)/Entity-Service(TCC)/Orchestrator-Service(SQL)/Alternate-Service/Alternate-Service(SQL)/TP1-Bridge：

<このパラメタの設定値>

Mediator：

<このパラメタの設定値>@<Mediatorのホスト名>

また、このパラメタの設定を省略した場合は、次のサービス名となります。

Orchestrator-Service：

Orchestrator@<Orchestrator-Serviceのホスト名>

Relay-Service：

Entity-Service@<Relay-Serviceのホスト名>

Entity-Service(SQL)：

SQL-Participant@<Entity-Service(SQL)のホスト名>

Entity-Service(TCC)：

TCC-Participant@<Entity-Service(TCC)のホスト名>

Orchestrator-Service(SQL)：

SQL-Participant@<Orchestrator-Service(SQL)のホスト名>

Alternate-Service：

Orchestrator@<Alternate-Serviceのホスト名>

Alternate-Service(SQL)：

SQL-Participant@<Alternate-Service(SQL)のホスト名>

TP1-Bridge：

TP1-Bridge@<TP1-Bridgeのホスト名>

Mediator：

Mediator@<Mediatorのホスト名>

String

32文字

なし

tracing.url

HMP-PCTOが分散トレースの送信先に使用する分散トレース収集アプリケーションまたはサービスの接続先（URL）を指定します。

パラメタtracing.use-traceの指定値がtrue、かつ分散トレース送信先がGoogle Cloud Platform以外の場合は省略できません。

Jaegerの場合

次の形式で指定してください。

Jaeger-collectorが同一namespaceの場合

http://jaeger-collector:<ポート番号>/api/traces

Jaeger-collectorが異なるnamespaceの場合

http://jaeger-collector.<Namespace名>.svc.cluster.local:<ポート番号>/api/traces

指定例

Jaeger-collectorが同一namespaceの場合

http://jaeger-collector:14268/api/traces

Jaeger-collectorが異なるnamespaceの場合

http://jaeger-collector.my-namespace.svc.cluster.local:14268/api/traces

OpenTelemetry Collectorの場合

次の形式で指定してください。

OpenTelemetry Collectorが同一namespaceの場合

http://<OpenTelemetry Collectorの.metadata.nameフィールドに指定した値>:<ポート番号>/api/traces

OpenTelemetry Collectorが異なるnamespaceの場合

http://<OpenTelemetry Collectorの.metadata.nameフィールドに指定した値>.<Namespace名>.svc.cluster.local:<ポート番号>/api/traces

指定例

OpenTelemetry Collectorが同一namespaceの場合

http://otel-collector:4318/v1/traces

OpenTelemetry Collectorが異なるnamespaceの場合

http://otel-collector.my-namespace.svc.cluster.local:4318/v1/traces

Microsoft Azureの場合

Azure Monitor Application Insightsの接続文字列（connection string）を確認し、その文字列を指定してください。

Azure Monitor Application Insightsの作成方法、および接続文字列の取得方法についてはMicrosoft Azureの公式ドキュメントを参照してください。

Google Cloud Platformの場合

指定は不要です。

Podのサービスアカウントに紐づいている、Google Cloud PlatformのプロジェクトのCloud Traceに、自動的に送信します。

String

−

なし

tracing.use-trace

分散トレースの取得有無を指定します。

true

分散トレースを取得します。

false

分散トレースを取得しません。テスト環境などでJaegerを使用できない場合に指定してください。本番環境では指定しないでください。

Boolean

true | false

true

tracing.debug

デバッグ情報を含むスパン取得有無を指定します。

true

デバッグ情報を含むスパンを取得します。

false

デバッグ情報を含むスパンを取得しません。

HMP-PCTOではデバッグ情報を含むスパンを取得することで、詳細な処理の内容を確認できます。

このパラメタにtrueを指定するとデバッグ情報を含むスパンを取得します。デバッグ情報を含むスパンを取得すると、分散トレースのディスク使用量が増加します。

Boolean

true | false

false

tracing.queue-size

メモリ上のキューに保持できる分散トレース数を指定します。tracing.use-traceパラメタの指定値がtrueの場合は省略できません。

この設定値を上回る数の分散トレースが発生した場合、その分散トレースは破棄されます。

キューに存在する分散トレースは、次のどちらかの条件を満たすごとに分散トレース収集アプリケーションまたはサービスに送信されます。

キュー内の分散トレース数がjp.co.Hitachi.soft.hmppcto.tracing.batch-sizeパラメタで設定した値を上回った場合

前回の送信からjp.co.Hitachi.soft.hmppcto.tracing.delay-time-in-millisパラメタで設定した値以上の時間が経過した場合

Integer

10,000-100,000

20,000

tracing.delay-time-in-millis

分散トレースを分散トレース収集アプリケーションまたはサービスに送信する間隔をミリ秒単位で指定します。tracing.use-traceパラメタの指定値がtrueの場合は省略できません。

前回の送信からこのパラメタに設定した値以上の時間が経過すると、キューに存在する分散トレースが分散トレース収集アプリケーションまたはサービスに送信されます。

Integer

1,000-5,000

1,000

tracing.batch-size

分散トレースを分散トレース収集アプリケーションまたはサービスに送信する際に、一度に送信する分散トレース数を指定します。tracing.use-traceパラメタの指定値がtrueの場合は省略できません。

キューに存在する分散トレース数が、このパラメタに設定した値を上回ると、キューに存在する分散トレースが分散トレース収集アプリケーションまたはサービスに送信されます。

Integer

1,000-10,000

2,000

tracing.grpc.debug

gRPC通信の送受信メッセージのスパンイベントの取得有無を設定します。

true

gRPC通信の送受信メッセージのスパンイベントを取得します。

false

gRPC通信の送受信メッセージのスパンイベントを取得しません。

対象のスパンイベント

sent message(hmppcto)

received message(hmppcto)

このパラメタにtrueを設定するとHMP-PCTOのOrchestrator、ParticipantおよびMediatorが実施しているgRPC通信の送受信メッセージのスパンイベントが取得され、gRPC通信の内容を確認できます。

ただし、gRPC通信のメッセージ長によって、分散トレースの取得処理が増え、処理時間や分散トレースのディスク使用量が増加します。

このパラメタにfalseを設定することでgRPC通信の送受信メッセージをスパンイベントに取得しなくなるため、処理時間が短縮され、分散トレースのディスク使用量を抑えることができます。

Boolean

true | false

false

tracing.jdbc.debug

SQL-ParticipantでのJDBC Driverメソッド開始および終了のスパンイベントの取得有無を設定します。

true

JDBC Driverメソッド開始および終了のスパンイベントを取得します。

false

JDBC Driverメソッド開始および終了のスパンイベントを取得しません。

対象のスパンイベント

start:jdbc <JDBC Driverのクラス名>.<JDBC Driverのメソッド名>

end:jdbc

このパラメタにtrueを設定すると、HMP-PCTOのSQL-Participantで実行されたJDBC Driverメソッド開始および終了のスパンイベントが取得され、JDBC Driverメソッドの発行状況および処理時間を確認できます。

ただし、JDBC Driverメソッドの発行回数によって、分散トレースの取得処理が増え、処理時間や分散トレースのディスク使用量が増加します。

このパラメタにfalseを設定することでJDBC Driverメソッド開始および終了のスパンイベントを取得しなくなるため、処理時間が短縮され、分散トレースのディスク使用量を抑えることができます。

Boolean

true | false

false

metrics.collection.tomcat

Tomcatのメトリクスを設定します。

true

Spring Bootの組み込みTomcatのメトリクスを取得します。

false

Spring Bootの組み込みTomcatのメトリクスは取得しません。

このパラメタにtrueを設定すると、Spring Bootの組み込みTomcatのメトリクス（接続数、スレッド数、レスポンスタイムなど）を取得できます。

ただし、このパラメタの設定をtrueにすると、メトリクスの取得対象が増えるため、ディスク使用量が増加します。

Tomcatを使用したHTTPリクエストの処理を行わない場合、Tomcatのメトリクスは不要なため、このパラメタにはfalseを設定してください。不要なデータの蓄積を防ぎ、ディスク使用量を抑えることができます。

Boolean

true | false

true

（凡例）−：該当しません。

9.2.2　JDBC Proxy Driver

JDBC Proxy Driverを使用する場合に設定するパラメタを説明します。JDBC Proxy Driverを使用しない場合は設定不要です。

JDBC Proxy Driverのパラメタは、Entity-Service(SQL)、Orchestrator-Service(SQL)、Alternate-Service(SQL)に設定します。

(1)　spring.datasourceのパラメタ

各パラメタの接頭辞は、spring.datasourceです。

spring.datasourceにJDBC Proxy Driverの設定をすることで、APはJDBC Proxy DriverのDataSourceを参照できます。

表9‒4　spring.datasourceのパラメタ

パラメタ

説明

型

driver-class-name

Spring FrameworkがJDBC Driverクラスを特定するパラメタです。

次のHMP-PCTOのJDBC Proxy Driverのクラス名を設定してください。

jp.co.Hitachi.soft.hmppcto.client.PctoDriver

String

type

Spring FrameworkがDBのコネクション制御に使用するDataSourceを指定するパラメタです。

次のHMP-PCTOのJDBC Proxy Driverのクラス名を設定してください。

jp.co.Hitachi.soft.hmppcto.jdbc.client.PctoDataSource

String

url

Spring FrameworkがDBに接続するために使用するURLです。

HMP-PCTOはこの設定値を使用しないため任意の文字列を設定してください。

実際にDBに接続するためのURLはSQL-Participantで設定します。

String

username

Spring FrameworkがDBに接続するために使用するユーザ名を設定します。

HMP-PCTOはこの設定値を使用しないため任意の文字列を設定してください。

実際にDBに接続するためのユーザ名はSQL-Participantで設定します。

String

password

Spring FrameworkがDBに接続するために使用するパスワードを設定します。

HMP-PCTOはこの設定値を使用しないため、任意の文字列を設定してください。

実際にDBに接続するためのパスワードはSQL-Participantで設定します。

String

なお、設定範囲とデフォルト値は、Spring Frameworkの仕様に依存します。

(2)　spring.sqlのパラメタ

各パラメタの接頭辞は、spring.sqlです。

表9‒5　spring.sqlのパラメタ

パラメタ

説明

型

init.mode

Spring FrameworkがSQLデータベースの初期化を行うかどうかを指定するパラメタです。

HMP-PCTOではSQLデータベースの初期化を行う必要がないため、次の値を設定してください。

never

String

なお、設定範囲とデフォルト値は、Spring Frameworkの仕様に依存します。

9.2.3　Orchestrator

Orchestratorのパラメタを説明します。

Orchestratorのパラメタは、Orchestrator-Service、Orchestrator-Service(SQL)、Alternate-Service、およびAlternate-Service(SQL)に設定します。

(1)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表9‒6　Orchestratorのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

instance-id

Orchestratorを一意に識別するためのIDです。

32文字以内の任意の文字列を設定してください。

同じMediatorに複数のOrchestratorから接続する場合は、Orchestratorごとに異なる値を設定してください。

String

32文字

なし

必ず設定してください。

learner.consensus-type

トランザクションの決着に使用する分散合意のアルゴリズムを設定します。アルゴリズムの詳細は、取扱説明書「HMP-PCTO テクニカルガイド」の分散合意習得方式の説明を参照してください。

String

Three-Quarters |

Privileged-Value

なし

必ず設定してください。

mediator.name

MediatorのpodのDNS名中のStatefulSet名を設定してください。

MediatorのpodはStatefulSetのため、DNS名は次の形式です。この中のStatefulSet名を設定します。

<StatefulSet名>-<連番>.<Service名>.<Namespace名>.svc.cluster.local

例えばDNS名が

「mediator-0.mediator.space1.svc.cluster.local」の場合は、「mediator」を設定してください。

HMP-PCTOは、Kubernetesと連携してmediator.nameとmediator.name-suffixをキーにOrchestratorが接続するMediatorを決定します。

String

−

なし

必ず設定してください。

mediator.name-suffix

MediatorのpodのDNS名中のService名以降の文字を指定してください。

MediatorのpodはStatefulSetのため、DNS名は次の形式です。この中のService名以降の文字列を設定します。

<StatefulSet名>-<連番>.<Service名>.<Namespace名>.svc.cluster.local

例えば、DNS名が「mediator-0.mediator.space1.svc.cluster.local」の場合は、「.mediator.space1.svc.cluster.local」を設定してください。

String

−

なし

必ず設定してください。

mediator.port

MediatorのHMP-PCTOがgRPCを受信するポート番号を指定します。

Mediatorのパラメタgrpc.portに設定した値と同じ値を設定してください。

Integer

1,024-65,535

20,551

mediator.size

トランザクションの合意に参加するMediator数を設定してください。

learner.consensus-typeにThree-Quartersを設定した場合は、5以上かつ奇数の値を設定してください。

設定する値については、取扱説明書「HMP-PCTO テクニカルガイド」のMediator数の設定要件に関する説明を参照して決定してください。

Integer

2-16

なし

必ず設定してください。

mediator.initial-size

Orchestrator起動時にチェックを行うMediator数を設定してください。

mediator.sizeで設定した数以上の値を設定してください。mediator.sizeで設定した数より小さい値を設定した場合は、Orchestratorの初期化時に異常終了します。

設定する値については、取扱説明書「HMP-PCTO テクニカルガイド」のMediator数の設定要件に関する説明を参照して決定してください。

Integer

2-64

mediator.size設定値

mediator.minimum-start-size

Orchestratorでトランザクション開始時に、mediator.sizeで設定した数のMediatorの起動を確認できなかった場合に、トランザクションを開始する最小限のMediator数を設定してください。

mediator.sizeで設定した数以下の値を設定してください。mediator.sizeで設定した数より大きい値を設定した場合はOrchestratorの初期化時に異常終了します。

トランザクション開始時のMediatorの起動数がこのパラメタに設定した数未満の場合は、トランザクションの開始に失敗します。

learner.consensus-typeにThree-Quartersを設定した場合は、5以上かつ奇数の値を設定してください。

設定する値については、取扱説明書「HMP-PCTO テクニカルガイド」のMediator数の設定要件に関する説明を参照して決定してください。

Integer

2-16

mediator.size設定値

mediator.termination-thread-pool-size

OrchestratorからMediatorへの送信に使用するスレッド数を指定してください。

1トランザクションの終了時にmediator.size指定値分のスレッドを使用して送信します。スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから送信します。

スレッドの空き待ちを回避するための理論上の必要なスレッド数は、サービスの同時実行数×mediator.sizeです。

設計指針とチューニング方法については、「3.12.1　スレッドプール」を参照してください。

Integer

1-1,000

20

mediator.discovery-retry-count

Orchestrator起動時に、トランザクションの合意に必要なMediatorが起動しているかのチェックをリトライする回数を設定します。

Mediatorの起動が確認できるまで最大で、mediator.discovery-retry-count ×mediator.discovery-interval-in-millis（ミリ秒）待ち合わせます。

Integer

0-100

18

mediator.discovery-interval-in-millis

Orchestrator起動時に、トランザクションの合意に必要なMediatorが起動しているかのチェックをリトライする際のリトライ間隔をミリ秒単位で設定します。

Integer

1-60,000

10,000

branch.qualifier.list

APがサービスを呼び出す際に、HMP-PCTOがトランザクションブランチを識別するために付与する識別子を設定してください。

REST通信で呼び出す場合は、次の形式で指定します。

<サービスのホスト名>:<サービスのポート番号><サービスのエンドポイント>@識別子
gRPC通信で呼び出す場合は、次の形式で指定します。
<gRPCサーバのホスト名>:<gRPCサーバのポート番号><protobufで定義したサービス名>/<protobufで定義したメソッド名>@識別子

識別子は、32文字以内で設定してください。

複数のサービスを設定する場合は「,」で区切って設定してください。

設定例：

host1:80/service1@qualifier1,host2:80/service2@qualifier2

String

−

なし

省略した場合、および指定しなかったURLの識別子はHMP-PCTOがUUIDを生成して設定します。

orchestrator.grpc.use-tls

暗号化通信をするかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Boolean

true | false

false

orchestrator.grpc.tls.client.server-auth.certificate

接続先サーバのサーバ証明書を発行したCAの証明書(X.509のPEM形式)ファイルの絶対パス名を指定します。

String

−

なし

暗号化通信をする場合は、必ず指定してください。

orchestrator.grpc.tls.client.client-auth.certificate

クライアント認証をする場合に、自プロセスのクライアント証明書ファイル(X.509のPEM形式)の絶対パス名を指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

orchestrator.grpc.tls.client.client-auth.key

クライアント認証をする場合に、自プロセスのクライアント証明書を作成した秘密鍵ファイル(pkcs8のPEM形式)の絶対パス名を指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

orchestrator.grpc.tls.session.cache-size

SSLセッション情報のキャッシュ数を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-2,147,483,647

0

orchestrator.grpc.tls.session.timeout-in-seconds

キャッシュしたSSLセッション情報の保持時間（秒）を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-65,535

0

orchestrator.grpc.keepalive.interval-in-seconds

PING要求電文の送信間隔を秒単位で指定します。

0を指定した場合は、PING要求電文を送信しません。1〜9を指定した場合は10秒となります。

ネットワーク機器の無通信監視タイマなどによるTCPコネクション切断回避が目的の場合は、無通信監視タイマ値より小さい値を指定してください。

Integer

0-100,000

0

orchestrator.grpc.keepalive.timeout-in-seconds

PING応答電文の応答待ち時間を秒単位で指定します。

PING要求電文の送信後、このタイマの指定値以内にPING応答電文を受信できない場合はTCPコネクションを切断します。

Integer

1-65,535

60

orchestrator.grpc.watchtime-in-seconds

Mediatorへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

0を指定した場合は、タイマ監視をせずに無限に応答を待ちます。

Orchestratorからトランザクションに参加したMediatorにcommit/rollbackの要求電文を送信して、すべての通信でこのタイマがタイムアウトした場合、Orchestratorは応答の待ち合わせを終了し、全Mediatorが障害と判断してトランザクションの決着結果は不明としてAPに応答します。そのため、応答電文の待ち時間はトランザクション制御には依存せず、APの業務処理として許容できる待ち時間となります。

Integer

0-65,535

100

lb.list-timeout-in-seconds

Kubernetesからのサービス一覧取得の待ち時間を秒単位で指定します。タイマ指定値以内に応答を受信できない場合は、Podの起動処理を異常終了します。

Integer

1-10,800

60

use-scaling

スケーリング対応機能を使用するかどうかを指定します。

true：スケーリング対応機能を使用します。

false：スケーリング対応機能を使用しません。

Orchestrator、Entity-Module、SQL-Participant、TCC-Participant、TP1-BridgeおよびMediatorそれぞれに設定するこのパラメタには、同じ値を指定してください。

Boolean

true | false

true

set-routing

ルーティング方法を指定します。

inner：HMP-PCTOが提供するルーティング機能を使用し、ルーティングします。

user：ユーザ側でロードバランサを構成し、ロードバランサでルーティングします。

このパラメタはuse-scalingパラメタにtrueを指定している場合だけ有効になります。

Orchestrator、Entity-Module、SQL-Participantそれぞれのこのパラメタの設定値はすべて統一してください。

String

inner | user

inner

（凡例）−：該当しません。

9.2.4　Entity-Module

Entity-Moduleのパラメタについて説明します。

Entity-Moduleのパラメタは、Relay-Service、Entity-Service(SQL)、Entity-Service(TCC)、Alternate-Service、Alternate-Service(SQL)に設定します。

(1)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表9‒7　Entity-Moduleのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

client.proposer.type

SQL-ParticipantまたはTCC-Participantの使用を設定します。

SQL：SQL-Participantを使用します。

TCC：TCC-Participantを使用します。

TP1-Bridgeを使用する場合、指定は不要です。

String

SQL | TCC

なし

TP1-Bridgeを使用しない場合は、必ず設定してください。

branch.qualifier.list

Orchestratorのbranch.qualifier.listと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

branch.qualifier.propagation-order

Orchestratorのbranch.qualifier.propagation-orderと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

lb.list-timeout-in-seconds

Orchestratorのlb.list-timeout-in-secondsと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

use-scaling

Orchestratorのuse-scalingと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

set-routing

Orchestratorのset-routingと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

9.2.5　SQL-Participant

SQL-Participantのパラメタについて説明します。

SQL-Participantのパラメタは、Entity-Service(SQL)、Orchestrator-Service(SQL)、Alternate-Service(SQL)に設定します。

(1)　serverのパラメタ

各パラメタの接頭辞は、serverです。

表9‒8　SQL-Participantのserverのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

port

SQL-Participant用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないように設定してください。

Integer

1,024-65,535

なし

必ず指定してください。

(2)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表9‒9　SQL-Participantのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

external-consensus.interval-in-millis

Mediatorなどに障害が発生し、補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で指定してください。

このタイマが短ければ、Mediatorなどに障害が発生した場合のトランザクションの遅延を小さくできます。

ただし、このタイマが短過ぎると通信遅延を障害と誤認し、不要な補助合意が発生するため、通信遅延を考慮した値を設定してください。

この設定値に1,000ミリ秒以上を指定した場合は1,000の単位に切り上げたタイマ値とします。

なお、このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1,000ミリ秒以上の場合の誤差は最大1,000ミリ秒です。

Integer

100-10,000

1,000

external-consensus.eads.properties

補助合意に使用するEADSのクライアントプロパティファイルの絶対パス名を設定してください。

String

ファイルパス

/eads-properties/hmp-pcto.eads-client.properties

external-consensus.eads.cache

補助合意に使用するEADSクラスタに対して、eztool createcacheコマンドで作成したキャッシュ名を設定してください。

String

32バイト以内の半角英数字（0〜9、A〜Z、およびa〜z）

hmppctoCache

sql.pool.allocation-wait-time-in-millis

SQL-ParticipantがDBアクセスのためのコネクションをコネクションプールから取得する際に、コネクションプールに空きが無かった場合の空き待ち時間をミリ秒単位で設定します。

0を指定した場合は、コネクションプールの空き待ちを行いません。

空きがなかった場合、このパラメタに指定した時間だけコネクションの空きを待ちます。空き待ちを行わない、または待ち時間内にコネクションの空きができなかった場合はエラーとなり、JDBC Proxy Driverを使用してコネクションの取得を実行したAPに例外を送出します。

Long

0-65,535,000

60,000

sql.pod.service-name

SQL-Participantを構成するPodを定義したKubernetesのServiceのService名とNamespace名を「.」でつないだ形式で設定します。

Service名とNamespace名には、英小文字（a〜z）、数字（0〜9）、およびダッシュ（-）を使用できます。ただし、Service名およびNamespace名の先頭と終端に使用できるのは英小文字（a〜z）、または数字（0〜9）です。

このパラメタには、Mediatorからホスト名として認識できる値を設定する必要があります。

設定例：

name.namespace

String

3バイト〜41バイトの文字列

なし

必ず指定してください。

sql.jdbc.driver.path

SQL-ParticipantがDBに接続するために使用するJDBC Driverについて、「2.3　コンテナイメージ作成」でコンテナ内に配置したパスを設定します。絶対パスで指定してください。

String

−

なし

必ず指定してください。

sql.jdbc.driver.additional-library-paths

Oracle DatabaseでXMLType型を利用する場合に、必要なJDBC Driverの追加ライブラリの絶対パスを指定します。「2.3　コンテナイメージ作成」でコンテナ内に配置したパスを設定してください。

Oracle DatabaseでXMLType型を利用する場合は、次を指定してください。

xdb

xmlparserv2_sans_jaxp_services

詳細は、Oracle Databaseのマニュアルを参照してください。

なお、複数指定する場合は「;」区切りで指定してください。

例：/deployments/xdb-23.6.0.24.10.jar;/deployments/xmlparserv2_sans_jaxp_services-23.6.0.24.10.jar

String

−

なし

sql.datasource.class-name

SQL-ParticipantがJDBC Driverからロードするデータソースのクラス名を設定します。

接続するRDBMSごとのデータソースのクラス名を次に示します。

PostgreSQLの場合

org.postgresql.xa.PGXADataSource

SQL Serverの場合

com.microsoft.sqlserver.jdbc.SQLServerXADataSource

HiRDBの場合

JP.co.Hitachi.soft.HiRDB.JDBC.PrdbXADataSource

Oracle Databaseの場合

oracle.jdbc.xa.client.OracleXADataSource

String

−

なし

必ず指定してください。

sql.datasource.property.values

JDBC Driverからロードしたデータソースに設定するプロパティの名前と値を「=」でつないだ形式で指定します。複数のプロパティを指定する場合はsql.datasource.property.delimiterで設定した値で区切って設定してください。

データソースに設定するプロパティには、次の値を指定しないでください。

=

sql.datasource.property.delimiterで設定した値

設定例：

＜PostgreSQLの場合＞

serverName=sample-bank1;portNumber=5431;databaseName=appuser1;user=appuser1;password=appuser1

PostgreSQLのJDBC Driverの場合、次のプロパティを指定できます。

serverName

databaseName

portNumber

user

password

詳細は、PostgreSQL JDBC DriverのサイトのDataSourceのプロパティを参照してください。

PostgreSQLのJDBC Driverは、databaseNameを省略すると、userに指定した値をdatabaseNameの値として使用します。

＜SQL Serverの場合＞

encrypt=false;serverName=sql-server-pod1;portNumber=5431;user=appuser1;password=appuser1

SQL ServerのJDBC Driverの場合、次のプロパティを指定できます。

encrypt

serverName

portNumber

user

password

詳細は、SQL ServerのサイトのJDBCの接続プロパティを参照してください。

＜HiRDBの場合＞

XAOpenString=HDB1+/deployments/HiRDB.ini;XACloseString=HDB1+/deployments/HiRDB.ini

HiRDBのJDBC Driverの場合、次に示す形式でHiRDBのクライアント環境定義ファイル（HiRDB.ini）を指定してください。

XAOpenString=<HiRDBの環境変数グループ識別子（任意の4文字の英数字列）> + <HiRDB.iniファイルのパス>;XACloseString= <HiRDBの環境変数グループ識別子（任意の4文字の英数字列）> + <HiRDB.iniファイルのパス>

HiRDB.iniに指定する接続情報については、「9.4.3　HiRDB（SQL-Participant限定）」を参照してください。

＜Oracle Databaseの場合＞

serverName=oracle-db-sample;portNumber=1521;user=appuser1;password=appuser1;driverType=thin;serviceName=FREEPDB1;nativeXA=true

Oracle DatabaseのJDBC Driverの場合、次のプロパティを指定できます。

serverName

portNumber

user

password

driverType

「Thin」を必ず指定してください。

serviceName

nativeXA

「true」を指定することを推奨します。

詳細については、Oracle DatabaseのマニュアルのJDBC接続プロパティの説明を参照してください。

String

−

なし

必ず指定してください。

sql.datasource.property.delimiter

sql.datasource.property.valuesで複数のプロパティを指定した場合の区切りとなる文字を設定します。

String

「=」以外の1バイトの文字

; (半角セミコロン)

sql.pool.max-pool-size

SQL-ParticipantがコネクションプールにプールするDBコネクションの数を設定します。

SQL-Participant起動時にこのパラメタに指定した数のDBコネクションがプールされます。

データベースの同時接続数以下、かつ同時実行するトランザクション数以上の値を指定してください。

スケーリング対応機能を使用する場合は、定期実行の未決着トランザクションのRecovery処理でコネクションを使用するため、上記の指定値に2以上を加えた値を指定してください。

データベースの同時接続数が指定されているパラメタを次に示します。

PostgreSQLの場合

max_connections

SQL Serverの場合

user connections

HiRDBの場合

pd_max_users

Oracle Databaseの場合

SESSIONS

SQL-Participant起動時に、SQL-Participantが使用するDBコネクションの数がsql.pool.max-pool-sizeに指定した値を超えた場合、コネクションの確立が失敗して、起動に失敗します。

また、SQL-Participantの起動後に、SQL-Participantが使用するDBコネクションの数がsql.pool.max-pool-sizeに指定した値を超えた場合、コネクションプールの空き待ちになります。

Integer

1-100,000

なし

必ず指定してください。

sql.pool.connection-retry-limit

SQL-Participantのコネクションプールの初期化で、DBとのコネクションの取得に失敗した場合に行うリトライの最大リトライ回数を設定します。

Integer

1-30

20

sql.pool.connection-retry-interval-in-seconds

SQL-Participantのコネクションプールの初期化で、DBとのコネクションの取得に失敗した場合に行うリトライのリトライ間隔を秒単位で設定します。

Integer

1-10

3

sql.pool.transaction-timeout-in-seconds

DB側のトランザクションタイムアウト時間を秒単位で設定します。

0を指定した場合、次の動作になります。0を設定してトランザクションタイムアウト時間を無制限または無限に近い値とすることを推奨します。

DB側でトランザクションタイムアウト時間を設定できる場合（postgreSQLおよびHiRDB）、DB側の設定が有効になります。

DB側で無制限または無限に近い値を設定することを推奨します。

DB側にトランザクションタイムアウト時間を設定できない場合（Oracle DatabaseおよびSQL Server）、無制限となります。

このトランザクションタイムアウト時間はjavax.transaction.xa.XAResource.setTransactionTimeout()メソッドを使用して設定します。

そのため、使用するJDBC DriverがsetTransactionTimeout()メソッドをサポートしているか確認してください。サポートしていない場合は、DB側のトランザクションタイムアウト時間の設定が有効になります。

定義を省略した場合は0を指定した場合と同様の動作となります。

Integer

0-65,535

トランザクションタイムアウト時間に設定できる範囲は、使用するJDBC Driverの仕様を確認してください。

0

sql.transaction-termination.timeout-in-millis

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で設定します。

DBの排他ロックが解けない状態となることを許容できる時間をタイマ監視し、該当する時間を超えてもトランザクションが決着しなかった場合に、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

APがユーザにレスポンスを返すまでの許容時間、またはトランザクションブランチの処理時間の業務要件に応じた値を指定してください。

なお、複数の業務サービスがある場合は、すべてのサービスの業務要件に応じた値の合計時間で監視時間を設定する必要があります。

業務サービスはトランザクションルートとなるサービスから呼び出され、DBなどのリソースの更新を行う複数のサービスを指します。

このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1,000ミリ秒以上の場合の誤差は最大1,000ミリ秒です。また、この設定値に1,000ミリ秒以上を指定した場合は、1,000の単位に切り上げたタイマ値とします。

Long

100-6,000,000

60,000

sql.transaction-termination.consensus.replay-interval-in-millis

トランザクション分散合意インターバルタイマのタイマ監視時間をミリ秒単位で設定します。

このパラメタの値は次の処理のために設定します。この値に設定した時間を超えてもトランザクションが決着しなかった場合、トランザクション決着処理を再実行（リプレイ）し、DBの排他ロック解除のためにトランザクションを決着に向かわせます。

トランザクションをコミットまたはロールバックするためにトランザクション決着処理をする

トランザクション決着監視タイマのタイムアウトによるトランザクション決着処理をする

SQL-Participantダウンからの再起動時にトランザクション決着処理をする

このタイマを短く設定することで、SQL-Participant内で合意が滞ったトランザクションを速やかに決着できますが、障害が長引いた場合にリトライの回数が多くなり、トランザクション決着のための通信に負荷が掛かるため、通信負荷を考慮した値を設定してください。

このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1,000ミリ秒以上の場合の誤差は最大1,000ミリ秒です。また、この設定値に1,000ミリ秒以上を指定した場合は、1,000の単位に切り上げたタイマ値とします。

Long

100-6,000,000

1,000

sql.participant-processing.thread-pool-size

SQL-Participantがトランザクション処理で実行するスレッド数（Prepare指示／トランザクションのキャンセル指示、投票処理、分散合意処理およびトランザクション完了通知処理）を指定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、トランザクションに参加するMediator数×同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1,000

12

sql.participant-processing.queue-size

SQL-Participantがトランザクション処理(Prepare指示／トランザクションのキャンセル指示、投票処理、分散合意処理およびトランザクション完了通知処理)に使用するスレッドの割り当てを待つキューのサイズを指定します。

理論上の必要な設定値は次のとおりです。

（m＋7×m）×p×m×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2,147,483,647

4,096,000

recover.interval-in-millis

recover処理の実施の間隔をミリ秒単位で指定します。

このパラメタは、スケーリング対応機能を使用している場合だけ有効になります。

Integer

100-6,000,000

60,000

mediator-process-management.thread-pool-size

Mediatorへ送信を行うスレッドを管理するスレッド数を指定します。

理論上必要なスレッド数は、トランザクションに参加するMediator数×2×同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-32,767

30

mediator-communication.thread-pool-size

ParticipantがMediatorと送受信を行うスレッド数を指定します。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、トランザクションに参加するMediator数×2×同時実行するトランザクション数です。

ただし、送受信が重ならないかぎりは、理論上の必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1,000

30

mediator-communication.queue-size

ParticipantがMediatorとの送受信に使用するスレッドの割り当てを待つキューのサイズを指定します。

理論上必要な設定値は次のとおりです。

（m＋7×m）×p×m×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2,147,483,647

4,096,000

sql.db-type

SQL-Participantが接続するRDBMSを指定します。

String

PostgreSQL | SQLServer | HiRDB | OracleDatabase

なし

必ず指定してください。

external-consensus.type

トライアル版の補助合意サーバを使用する場合に指定します。

トライアル版の補助合意サーバは、補助合意サーバ障害時の補助合意を必要とするトランザクションの分散合意の一貫性を保証しません。

String

free

なし

トライアル版を使用する場合必ず指定してください。

grpc.use-tls

暗号化通信をするかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Boolean

true | false

false

grpc.tls.client.server-auth.certificate

接続先サーバのサーバ証明書を発行したCAの証明書(X.509のPEM形式)ファイルの絶対パス名を指定します。

String

−

なし

暗号化通信をする場合は、必ず指定してください。

grpc.tls.client.client-auth.certificate

クライアント認証をする場合に、自プロセスのクライアント証明書ファイル(X.509のPEM形式)の絶対パス名を指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.client.client-auth.key

クライアント認証をする場合に、自プロセスのクライアント証明書を作成した秘密鍵ファイル(pkcs8のPEM形式)の絶対パス名を指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.session.cache-size

SSLセッション情報のキャッシュ数を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-2,147,483,647

0

grpc.tls.session.timeout-in-seconds

キャッシュしたSSLセッション情報の保持時間（秒）を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-65,535

0

grpc.keepalive.interval-in-seconds

PING要求電文の送信間隔を秒単位で指定します。

0を指定した場合は、PING要求電文を送信しません。1〜9を指定した場合は10秒となります。

ネットワーク機器の無通信監視タイマなどによるTCPコネクション切断回避が目的の場合は、無通信監視タイマ値より小さい値を指定してください。

Integer

0-100,000

0

grpc.keepalive.timeout-in-seconds

PING応答電文の応答待ち時間を秒単位で指定します。

PING要求電文の送信後、このタイマの指定値以内にPING応答電文を受信できない場合はTCPコネクションを切断します。

Integer

1-65,535

60

mediator.name

Orchestratorのmediator.nameと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

mediator.name-suffix

Orchestratorのmediator.name-suffixと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

mediator.port

Orchestratorのmediator.portと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

use-scaling

Orchestratorのuse-scalingと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

set-routing

Orchestratorのset-routingと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

（凡例）−：該当しません。

9.2.6　TCC-Participant

TCC-Participantのパラメタについて説明します。

TCC-Participantのパラメタは、Entity-Service(TCC)に設定します。

(1)　serverのパラメタ

各パラメタの接頭辞は、serverです。

表9‒10　TCC-Participantのserverのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

port

TCC-Participant用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないように設定してください。

Integer

1,024-65,535

なし

必ず指定してください。

(2)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表9‒11　TCC-Participantのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

tcc.pod.service-name

TCC-Participantを構成するPodを定義したKubernetesのServiceのService名とNamespace名を「.」でつないだ形式で設定します。

Service名とNamespace名には、英小文字（a〜z）、数字（0〜9）、およびダッシュ（-）を使用できます。ただし、Service名およびNamespace名の先頭と終端に使用できるのは英小文字（a〜z）、または数字（0〜9）です。

このパラメタには、Mediatorからホスト名として認識できる値を設定する必要があります。

設定例：

name.namespace

String

3バイト〜41バイトの文字列

なし

必ず指定してください。

tcc.recover.enabled

TCC-Participantが未決着トランザクションのRecovery機能を実施するかどうかを設定します。trueを設定した時Recovery機能が実行され、falseを設定した時は実行されません。

このパラメタは、実運用では必ずtrueを設定してください。運用テスト中にexecuteRecoverがない状態で動作確認したい場合にfalseを指定します。

Boolean

true | false

true

tcc.recover.order

未決着トランザクションのRecovery機能について、Spring FrameworkのApplicationListener機能の「ApplicationReadyEvent」イベントハンドラでの実行優先度のオーダー値を指定します。

APでも「ApplicationReadyEvent」イベントハンドラを使用するケースを考慮し、HMP-PCTOのApplicationReadyEventイベントハンドラ（未決着トランザクションのRecovery機能）と、APのApplicationReadyEventイベントハンドラの実行順序を設定できるようにするためのパラメタです。

Spring Frameworkはオーダー値が小さいイベントハンドラから順に実行します。

もしオーダー値が一致しているイベントハンドラが複数存在した場合の実行順序は不定です。

Integer

-2,147,483,648-2,147,483,647

2,147,483,647

tcc.transaction-termination.timeout-in-millis

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で設定します。

障害によってトランザクション決着に至らない状態となることを許容できる時間をタイマ監視し、設定時間を超えてもトランザクションが決着しなかった場合に、ユーザが許容できる時間（業務要件）を超過したと判断しトランザクションを決着に向かわせるタイマです。

トランザクションブランチの処理時間の業務要件に応じた値を指定してください。

なお、複数の業務サービスがある場合は、すべてのサービスの業務要件に応じた値の合計時間で監視時間を設定する必要があります。

このタイマ値が短過ぎるとトランザクションがCancel決着します。

このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1,000ミリ秒以上の場合の誤差は最大1,000ミリ秒です。 また、この設定値に1,000ミリ秒以上を指定した場合は1,000の単位に切り上げたタイマ値とします。

Long

100-6,000,000

60,000

tcc.consensus.interval-in-millis

トランザクション分散合意処理をリトライする間隔をミリ秒単位で設定します。

障害などによってトランザクションの分散合意ができないとき、設定した間隔でトランザクションの分散合意が決着するまで分散合意処理をリトライし、分散合意によるトランザクションの決着が必ず行われるようにするためのリトライ間隔です。

また、TCC-Participantが再起動したときに未決着となっているトランザクションがある場合にも分散合意によってトランザクションを決着させます。この場合も設定した間隔によってトランザクションの分散合意が決着するまで分散合意処理をリトライします。

この間隔が短過ぎるとトランザクションの分散合意のリトライが無駄に実施され、トランザクションのレイテンシやシステム負荷に影響が出ます。

このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1,000ミリ秒以上の場合の誤差は最大1,000ミリ秒です。また、この設定値に1,000ミリ秒以上を指定した場合は1,000の単位に切り上げたタイマ値とします。

Long

100-6,000,000

60,000

tcc.participant-processing.thread-pool-size

TCC-Participantがトランザクション処理で実行するスレッド数(投票処理、分散合意処理およびトランザクション完了通知処理)を指定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、トランザクションに参加するMediator数×同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1,000

12

tcc.participant-processing.queue-size

TCC-Participantがトランザクション処理（投票処理、分散合意処理およびトランザクション完了通知処理）に使用するスレッドの割り当てを待つキューのサイズを指定します。

理論上必要な設定値は次のとおりです。

（m＋7×m）×p×m×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2,147,483,647

4,096,000

mediator-process-management.thread-pool-size

SQL-Participantのmediator-process-management.thread-pool-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-32,767

30

mediator-communication.thread-pool-size

SQL-Participantのmediator-communication.thread-pool-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-1,000

30

mediator-communication.queue-size

SQL-Participantのmediator-communication.queue-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-2,147,483,647

4,096,000

external-consensus.interval-in-millis

Mediatorなどに障害が発生し、補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で指定してください。

このタイマが短ければ、Mediatorなどに障害が発生した場合のトランザクションの遅延を小さくできます。

ただし、このタイマが短過ぎると通信遅延を障害と誤認し、不要な補助合意が発生するため、通信遅延を考慮した値を設定してください。

この設定値に1,000ミリ秒以上を指定した場合は1,000の単位に切り上げたタイマ値とします。

なお、このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1,000ミリ秒以上の場合の誤差は最大1,000ミリ秒です。

Integer

100-10,000

1,000

external-consensus.eads.properties

補助合意に使用するEADSのクライアントプロパティファイルの絶対パス名を設定してください。

String

ファイルパス

/eads-properties/hmp-pcto.eads-client.properties

external-consensus.eads.cache

補助合意に使用するEADSクラスタに対して、eztool createcacheコマンドで作成したキャッシュ名を設定してください。

String

32バイト以内の半角英数字（0〜9、A〜Z、およびa〜z）

hmppctoCache

external-consensus.type

トライアル版の補助合意サーバを使用する場合に指定します。

トライアル版の補助合意サーバは、補助合意サーバ障害時の補助合意を必要とするトランザクションの分散合意の一貫性を保証しません。

String

free

なし

トライアル版を使用する場合必ず指定してください。

mediator.name

Orchestratorのmediator.nameと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

なし

必ず設定してください。

mediator.name-suffix

Orchestratorのmediator.name-suffixと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

なし

必ず設定してください。

mediator.port

Orchestratorのmediator.portと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

20,551

grpc.use-tls

暗号化通信を行うかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Boolean

true | false

false

grpc.tls.client.server-auth.certificate

接続先サーバのサーバ証明書を発行したCAの証明書(X.509のPEM形式)ファイルの絶対パス名を指定します。

String

−

なし

暗号化通信をする場合は、必ず指定してください。

grpc.tls.client.client-auth.certificate

クライアント認証をする場合に、自プロセスのクライアント証明書ファイル(X.509のPEM形式)の絶対パス名を指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.client.client-auth.key

クライアント認証をする場合に、自プロセスのクライアント証明書を作成した秘密鍵ファイル(pkcs8のPEM形式)の絶対パス名を指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.session.cache-size

SSLセッション情報のキャッシュ数を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-2,147,483,647

0

grpc.tls.session.timeout-in-seconds

キャッシュしたSSLセッション情報の保持時間（秒）を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-65,535

0

grpc.keepalive.interval-in-seconds

PING要求電文の送信間隔を秒単位で指定します。

0を指定した場合はPING要求電文を送信しません。1〜9を指定した場合は10秒となります。

ネットワーク機器の無通信監視タイマなどによるTCPコネクション切断回避が目的の場合は、無通信監視タイマ値より小さい値を指定してください。

Integer

0-100,000

0

grpc.keepalive.timeout-in-seconds

PING応答電文の応答待ち時間を秒単位で指定します。

PING要求電文の送信後、このタイマの指定値以内にPING応答電文を受信できない場合はTCPコネクションを切断します。

Integer

1-65,535

60

use-scaling

スケーリング対応機能を使用するかどうかを指定します。

true：スケーリング対応機能を使用します。

false：スケーリング対応機能を使用しません。

TCC-Participantはスケーリング対応機能に対応していないため、必ずfalseを指定してください。

このパラメタの設定値はすべて統一する必要があるため、Orchestrator、Entity-Module、SQL-Participant、TCC-Participant、TP1-Bridge、Mediatorそれぞれの、このパラメタにも必ずfalseを指定してください。

Boolean

true | false

false

（凡例）−：該当しません。

9.3　HMP-PCTOとRASのコンポーネントに設定するパラメタ

HMP-PCTOのコンポーネントとRASのコンポーネントに設定するパラメタについて説明します。

9.3.1　Mediator

Mediatorのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

次の表に記載されていないパラメタは設定を変更しないでください。

表9‒12　MediatorのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

MediatorのNamespace名を設定してください。

String

−

my-namespace

replicas

起動するMediator数を設定してください。

Orchestratorのjp.co.Hitachi.soft.hmppcto.learner.consensus-typeにThree-Quartersを設定した場合は、5以上の値を設定してください。

オートスケールを使用する場合は、設定しないでください。

Integer

2-64

なし

オートスケールを使用しない場合は、

必ず設定してください。

image

「3.4.3　Mediatorコンテナイメージの作成（通常版限定）」で作成したMediatorのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

imagePullSecrets

コンテナイメージをPullする際の資格情報を設定してください。

次のように指定します。

imagePullSecrets:
- name: regcred

資格情報が不要な場合は、設定不要です。

List<Object>

−

[]

（半角左角括弧と半角右角括弧です）

imagePullPolicy

MediatorのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

resources

Mediatorのコンテナのリソースを設定します。

コンテナに割り当てるリソースを明示的に指定した場合に設定してください。

次の形式でrequestsやlimitsを設定します。

resources:
  limits:
    cpu: 2
    memory: 1Gi
  requests:
    cpu: 1
    memory: 512Mi

Object

−

{}

（波括弧です）

dependencyCheck.enabled

デプロイ依存関係チェック（初期化コンテナ）を有効にするかどうかを指定してください。

true：有効にします。

false：無効にします。

Azure MonitorまたはGoogle Cloud Platformを使用してトラブルシュート情報を収集する場合は、Elastic Stack、JaegerおよびPrometheusのPodのデプロイを待機する必要がないため、デプロイ依存関係チェックが不要になります。その場合はこのパラメタにfalseを設定してください。

Helmチャートの記載例については、「3.8.3　MediatorのHelmチャートのカスタマイズ」を参照してください。

Boolean

true | false

true

dependencyCheck.image

「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したDependency-Checkerのコンテナイメージを設定してください。

String

−

なし

dependencyCheck.enabledにtrueを設定した場合には、必ず設定してください。

dependencyCheck.imagePullPolicy

Dependency-CheckerのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

dependencyCheck.retryCount

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.targets

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのターゲットKubernetesオブジェクト群を設定してください。

指定方法の詳細は「7.6.1　デプロイ依存関係チェックスクリプト（dependency_check.sh）」を参照してください。

List<String>

−

- my-namespace/deployments/logstash

- my-namespace/deployments/jaeger-query

- my-namespace/deployments/jaeger-collector

- my-namespace/deployments/metricbeat

- my-namespace/daemonsets/filebeat

livenessProbe.initialDelaySeconds

Liveness Probeの初回実行待機秒数を設定してください。

Integer

0以上※

180

livenessProbe.periodSeconds

Liveness Probeの実行間隔秒数を設定してください。

Integer

1以上※

30

livenessProbe.failureThreshold

Liveness Probeの最大失敗回数を設定してください。

Integer

1以上※

3

livenessProbe.timeoutSeconds

Liveness Probeのタイムアウト秒数を設定してください。

Integer

1以上※

10

livenessProbe.healthCheck.retryCount

Liveness Probeで実行するトランザクションヘルスチェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

0

livenessProbe.healthCheck.retryIntervalSeconds

Liveness Probeで実行するトランザクションヘルスチェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

0

livenessProbe.healthCheck.connectTimeoutSeconds

Liveness Probeで実行するトランザクションヘルスチェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

livenessProbe.healthCheck.readTimeoutSeconds

Liveness Probeで実行するトランザクションヘルスチェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

postStart.healthCheck.retryCount

postStartフックで実行するトランザクションヘルスチェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

postStart.healthCheck.retryIntervalSeconds

postStartフックで実行するトランザクションヘルスチェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

postStart.healthCheck.connectTimeoutSeconds

postStartフックで実行するトランザクションヘルスチェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

postStart.healthCheck.readTimeoutSeconds

postStartフックで実行するトランザクションヘルスチェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

preStop.waitTransactions.retryCount

preStopフックで実行する未決着トランザクション待機スクリプトのリトライ回数を設定してください。

未決着トランザクション待機スクリプトの最大待機時間がトランザクション決着監視タイマの設定値を超えるように調整してください。

未決着トランザクション待機スクリプトの最大待機時間は「開始時待機秒数（20秒）」と「リトライ回数×リトライ間隔秒数」を合計した値です。

Integer

0-1,080

10

preStop.waitTransactions.retryIntervalSeconds

preStopフックで実行する未決着トランザクション待機スクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

preStop.waitTransactions.connectTimeoutSeconds

preStopフックで実行する未決着トランザクション待機スクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

preStop.waitTransactions.readTimeoutSeconds

preStopフックで実行する未決着トランザクション待機スクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

terminationGracePeriodSeconds

Podの安全な停止待機秒数を設定してください。

preStopによる未決着トランザクション待機スクリプトの最大待機秒数以上の値を設定してください。

デフォルト値である160秒は、未決着トランザクション待機スクリプトのリトライ回数（10回）×リトライ間隔秒数（10秒）+開始時待機時間（20秒）+バッファ（40秒）で算出した値です。

Integer

0-2,147,483,647

160

affinity

Podの割り当てノードの制御を設定してください。

デフォルト値は、1ノードにつき1つのPodだけを配置する指定です。

可用性の観点から、Podの数だけワーカーノードを用意し、各ワーカーノードにPodを1つずつ配置することを推奨します。

例：ワーカーノード数「5」に対してレプリカ数「5」の場合、各ノードにPodを1つ起動させる。

なお、インフラストラクチャのコスト削減の観点などで、用意するワーカーノードの数がPodの数を下回る場合でも、Mediatorは問題なく動作しますが、ワーカーノード数を削減する代わりに、ノード障害時のトランザクション決着（補助合意）に時間が掛かるおそれがあります。

また、可用性の観点から、各ワーカーノードに配置するPodの数は均等にすることを推奨します。

Object

−

podAntiAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
  - labelSelector:
      matchExpressions:
      - key: app.kubernetes.io/name
        operator: In
        values:
        - mediator
    topologyKey: kubernetes.io/hostname

securityContext

securityContextを指定します。

Google Cloud Platform環境の場合、fsGroup: 0を指定してください。

Object

−

{}

必ず設定してください。

participant.sender.threadPoolSize

MediatorからParticipantへの送信に使用するスレッド数を設定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから送信します。

スレッドの空き待ちを回避するための理論上の必要なスレッド数は、同時実行トランザクション数×Participant数です。

ただし、トランザクションの分散合意処理が重ならないかぎりは、理論上の必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1,000

30

participant.sender.queueSize

MediatorからParticipantへの送信に使用するスレッドの割り当て待ちキューのサイズを指定してください。

理論上の必要な設定値は次のとおりです。

（m＋7×m）×p×p×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2,147,483,647

5,120,000

mediator.judge.threadPoolSize

Mediatorの分散合意処理に使用するスレッド数を設定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、トランザクションに参加するParticipant数×同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1,000

30

mediator.judge.queueSize

Mediatorの分散合意処理に使用するスレッドの割り当て待ちキューのサイズを指定してください。

理論上の必要なスレッド数は次のとおりです。

（m＋7×m）×p×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2,147,483,647

256,000

grpc.server.threadPoolSize

Mediatorが受信に使用するスレッド数を設定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、トランザクションに参加するParticipant数×同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1,000

30

grpc.server.queueSize

Mediatorが受信に使用するスレッドの割り当て待ちキューのサイズを指定してください。

理論上の必要なスレッド数は次のとおりです。

｛（m＋7×m）×p＋1｝×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2,147,483,647

258,000

consensusLog.size

ConsensusLogファイルに保持するConsensusLogの数を設定してください。

TPS(1秒当たりのトランザクション処理件数)×8以上を設定してください。

この設定値を超えるConsensusLogの保持が発生した場合、該当するMediatorは分散合意に参加しません。

なお、この設定値に1,024（1つのConsensusLogのサイズ）を乗算し、1,048,576（ボリュームの書き込み容量不足にならないための予備サイズ（1MB））を加算したサイズを、MediatorのPodに割り当てるConsensusLogの永続ボリュームクレームのサイズに使用します。

Long

256-100,000

256

consensusLog.io.threadPoolSize

ConsensusLogファイルへの書き込みに使用するスレッド数を設定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1,000

12

consensusLog.io.queueSize

ConsensusLogファイルへの書き込みに使用するスレッドの割り当てを待つキューのサイズを指定してください。

理論上必要な設定値は、同時実行するトランザクション数です。

ただし、トランザクションの分散合意処理が重ならないかぎりは、理論上必要な設定値は必要ありません。通常はデフォルト値を使用してください。

Integer

1-2,147,483,647

100

consensusLog.io.watchInSeconds

ConsensusLogファイルへの書き込みおよび読み出し時のIO監視時間を秒で設定してください。

0を指定した場合、IO監視を行いません。

この設定値を短く設定すると、IOハングアップした場合に早期に検知できます。ただし、ハードウェアやドライバが障害検知するよりも短い時間を設定するとハードウェアやドライバによる障害理由が失われるおそれがあります。

IO監視時間を超過した場合は障害メッセージを出力します。

Integer

0-3,600

240

consensusLog.io.blockSize

ConsensusLogファイルのブロックサイズをバイトで設定してください。

1,024の倍数を設定してください。

ブロックサイズは1回のファイルIOのサイズです。

ConsensusLogファイルの永続ボリュームをNFSストレージとする場合は、1,024を指定してください。

ブロックサイズの単位でNFSサーバと通信します。ブロックサイズを小さくすると、1回のファイルIOのサイズが小さくなるため、NFSサーバとの通信量が減り、性能が向上します。

Integer

1,024-16,384

4,096

consensusLog.storageClassName

「3.7.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するMediatorのPodに割り当てるConsensusLogの永続ボリュームのストレージクラス名を設定してください。

String

−

なし

必ず設定してください。

http.port

Mediatorのhttpポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

なお、この設定値はトランザクションヘルスチェックスクリプトおよび未決着トランザクション待機スクリプトのコマンド引数のhttpポート番号にも使用します。

Integer

1,024-65,535

20,554

grpc.port

MediatorのgRPCを受信するポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

Integer

1,024-65,535

20,551

grpc.useTls

暗号化通信をするかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Boolean

true | false

false

grpc.tls.secretName

「(3)　TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成」でユーザが作成した「MediatorのgRPC通信機能の暗号化通信用シークレット」のKubernetesオブジェクト名称を指定します。

String

−

なし

grpc.useTlsにtrueを設定した場合は、必ず設定してください。

grpc.tls.clientAuth.enabled

クライアント認証を行うかどうかを指定します。

true：クライアント認証をします。

false：クライアント認証をしません。

このパラメタにtrueを設定する場合は、grpc.useTlsにもtrueを必ず設定してください。

Boolean

true | false

false

grpc.keepalive.intervalInSeconds

PING要求電文の送信間隔を秒単位で指定します。

0を指定した場合はPING要求電文を送信しません。1〜9を指定した場合は10秒となります。

ネットワーク機器の無通信監視タイマなどによるTCPコネクション切断回避が目的の場合は、無通信監視タイマ値より小さい値を指定してください。

Integer

0-100,000

0

grpc.keepalive.timeoutInSeconds

PING応答電文の応答待ち時間を秒単位で指定します。

PING要求電文の送信後、このタイマの指定値以内にPING応答電文を受信できない場合はTCPコネクションを切断します。

Integer

1-65,535

60

mediator.judge.proposalLogLimitNum

Mediatorが管理するProposal Logが、Participantからトランザクション完了通知を受信できないで、滞留してしまった場合にProposal Logとして許容できる数（Proposal Logが保存を許容できるグローバルトランザクション数）を指定します。

滞留したProposal Logがこのパラメタの件数を超えた場合、トランザクションの完了を確認するためMediatorからParticipantへトランザクション完了確認通知を送信します。

このパラメタの件数が小さ過ぎる場合、トランザクション完了通知の送信頻度が多くなり、通信量が増加します。

このパラメタの件数が大き過ぎる場合、トランザクション完了通知の送信頻度が少なくなり、メモリを圧迫します。

Proposal Logに使用するメモリ量は、グローバルトランザクションに含まれるParticipantの構成によって可変となります。

Proposal Log 1件当たりのメモリ使用量は次のとおりです。

1,400＋(800×トランザクションに参加したParticipant数)

Integer

1-17,000

512

tracing.instanceId

共通のtracing.instance-idと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.url

共通のtracing.urlと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.useTrace

共通のtracing.use-traceと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.debug

共通のtracing.debugと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.queueSize

共通のtracing.queue-sizeと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.delayTimeInMillis

共通のtracing.delay-time-in-millisと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.batchSize

共通のtracing.batch-sizeと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.grpc.debug

共通のtracing.grpc.debugと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

timezone

Mediatorコンテナのタイムゾーンを指定します。ユーザ責務のKubernetes アプリケーションと同じタイムゾーンに設定することを推奨します。

このパラメタに指定した値は環境変数TZユーザに設定します。

このパラメタに指定した値がタイムゾーンとして不正な文字列である場合、Mediatorコンテナのタイムゾーンは協定世界時(UTC)となります。

String

−

Asia/Tokyo

java.options

MediatorのJavaプロセス起動時にJava VMに渡すオプションを指定します。

半角スペース区切りで複数のオプションを指定できます。

このパラメタには「-XX:+UseG1GC」オプションを必ず含めてください。「-XX:+UseG1GC」オプションを含めなかった場合、「-XX:+UseG1GC」オプションを含めた場合と比較して、Mediatorの実行性能およびメモリ性能が低下することがあります。

String

−

-XX:+UseG1GC

ucars.enabled

MediatorコンテナでuCosminexus Application Runtime for Spring Bootを有効にするかどうかを設定します。

true：有効にします（通常版の場合）

false：無効にします（トライアル版の場合）

Boolean

true | false

true

ucars.snapshots.claimName

「3.7.10　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。

String

−

なし

ucars.enabledにtrueを設定した場合は、必ず設定してください。

use-scaling

Orchestratorのuse-scalingと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

（凡例）

−：該当しません。

注※

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

9.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）

TP1-Bridgeのパラメタを説明します。

tp1.cltjから始まるパラメタはTP1/Client/J環境定義に対応しています。パラメタの詳細については、マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」を参照してください。また、tp1.cltjから始まるパラメタとTP1/Client/J環境定義の対応については、取扱説明書「HMP-PCTO テクニカルガイド」のTP1/Client/Jの設定に関する説明を参照してください。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

表9‒13　TP1-BridgeのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

TP1-BridgeのNamespace名を設定してください。

String

−

my-namespace

image

「3.4.4　TP1-Bridgeコンテナイメージの作成（通常版かつTP1-Bridge限定）」で作成したTP1-Bridgeのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

imagePullSecrets

コンテナイメージをPullする際の資格情報を設定してください。

次のように設定します。

imagePullSecrets:
- name: regcred

資格情報が不要な場合は、設定不要です。

List<Object>

−

[]

（半角左角括弧と半角右角括弧です）

imagePullPolicy

TP1-BridgeのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

labels.appKubernetesIoName

ラベル「app.kubernetes.io/name」に指定する値を設定します。

ほかのKubernetesアプリケーションの「app.kubernetes.io/name」に設定した値と異なる値を設定してください。

Blue/Greenデプロイメントを実施する場合は、BlueとGreenの「labels.appKubernetesIoName」に同じ値を設定してください。

String

16バイト以内の文字列

なし

必ず設定してください。

resources

TP1-Bridgeのコンテナのリソースを設定します。

コンテナに割り当てるリソースを明示的に指定した場合に設定してください。

次の形式でrequestsやlimitsを設定します。

resources:
  limits:
    cpu: 2
    memory: 1Gi
  requests:
    cpu: 1
    memory: 512Mi

Object

−

{}

（波括弧です）

dependencyCheck.image

「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したDependency-Checkerのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

dependencyCheck.imagePullPolicy

Dependency-CheckerのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

dependencyCheck.retryCount

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.targets

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのターゲットKubernetesオブジェクト群を設定してください。

設定方法の詳細は、「7.6.1　デプロイ依存関係チェックスクリプト（dependency_check.sh）」を参照してください。

List<String>

−

- my-namespace/statefulsets/mediator

- my-namespace/statefulsets/eads-server

filebeat.enabled

Filebeatのサイドカーコンテナを有効にするかどうかを指定してください。

true：有効にします。

false：無効にします。

Boolean

true | false

true

filebeat.image

Filebeatのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

filebeat.imagePullPolicy

FilebeatのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

filebeat.output.logstash.namespace

LogstashアプリケーションをデプロイするNamespaceを設定してください。

String

−

なし

必ず設定してください。

filebeat.livenessProbe.initialDelaySeconds

FilebeatコンテナのLiveness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

10

filebeat.livenessProbe.periodSeconds

FilebeatコンテナのLiveness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

filebeat.livenessProbe.failureThreshold

FilebeatコンテナのLiveness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

filebeat.livenessProbe.timeoutSeconds

FilebeatコンテナのLiveness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

filebeat.readinessProbe.initialDelaySeconds

FilebeatコンテナのReadiness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

10

filebeat.readinessProbe.periodSeconds

FilebeatコンテナのReadiness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

filebeat.readinessProbe.failureThreshold

FilebeatコンテナのReadiness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

filebeat.readinessProbe.timeoutSeconds

FilebeatコンテナのReadiness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

livenessProbe.initialDelaySeconds

Liveness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

180

livenessProbe.periodSeconds

Liveness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

30

livenessProbe.failureThreshold

Liveness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

livenessProbe.timeoutSeconds

Liveness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

10

livenessProbe.healthCheck.connectTimeoutSeconds

Liveness Probeで実行するトランザクションヘルスチェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

livenessProbe.healthCheck.readTimeoutSeconds

Liveness Probeで実行するトランザクションヘルスチェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

postStart.healthCheck.retryCount

postStartフックで実行するトランザクションヘルスチェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

postStart.healthCheck.retryIntervalSeconds

postStartフックで実行するトランザクションヘルスチェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

postStart.healthCheck.connectTimeoutSeconds

postStartフックで実行するトランザクションヘルスチェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

postStart.healthCheck.readTimeoutSeconds

postStartフックで実行するトランザクションヘルスチェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

preStop.waitTransactions.retryCount

preStopフックで実行する未決着トランザクション待機スクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

preStop.waitTransactions.retryIntervalSeconds

preStopフックで実行する未決着トランザクション待機スクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

preStop.waitTransactions.connectTimeoutSeconds

preStopフックで実行する未決着トランザクション待機スクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

preStop.waitTransactions.readTimeoutSeconds

preStopフックで実行する未決着トランザクション待機スクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

terminationGracePeriodSeconds

Podの安全な停止待機秒数を設定してください。

Integer

0-2,147,483,647

330

securityContext

securityContextを設定します。

Google Cloud Platform環境の場合、fsGroup: 0を指定してください。

Object

−

{}

必ず設定してください。

server.tomcat.threads.max

Spring Bootのワーカースレッドの最大数を設定します。ワーカースレッドは、APからのOpenTP1のサービス呼び出し要求、メトリクスの収集などで使用します。

トランザクションの同時実行数＋3以上の値を設定してください。

設定値を超えるリクエストを受信した場合は、ワーカースレッドの空きを待つため、APからTP1-Bridgeへのリクエストのレスポンスに時間が掛かることがあります。また、コネクションの確立に失敗して、送信時に例外が発生することがあります。

Integer

Spring Bootの仕様に依存します。

Spring Bootの仕様に依存します。

server.tomcat.maxSwallowSize

Spring Bootが受信するリクエストボディの最大サイズを設定します。APがTP1-Bridgeに送信するリクエストボディの最大サイズ以上の値をバイト単位で設定してください。

String

Spring Bootの仕様に依存します。

Spring Bootの仕様に依存します。

converter.host

TP1-Converterが動作するuCosminexus Application ServerのNIO HTTPサーバのホスト名、またはIPアドレスを設定してください。

String

−

なし

必ず設定してください。

converter.port

TP1-Converterが動作するuCosminexus Application ServerのNIO HTTPサーバのポート番号を設定します。

uCosminexus Application Serverのusrconf.propertiesのwebserver.connector.nio_http.portの設定値と同じ値を設定してください。

Integer

1-65,535

8,008

converter.connectTimeInSeconds

TP1-Converterが動作するuCosminexus Application ServerのNIO HTTPサーバとのコネクション確立待ち時間を秒単位で設定してください。

Integer

1-60

10

converter.watchTimeInSeconds

TP1-Converterが動作するuCosminexus Application ServerのNIO HTTPサーバからの応答待ちタイムアウト時間を秒単位で設定してください。

0を設定した場合は、タイムアウトしないで無限に応答を待ちます。

Integer

0-65,535

10

tp1.cltj.dchost

呼び出し先のOpenTP1のホスト名を設定してください。

String

−

なし

必ず設定してください。

tp1.cltj.dcrapport

呼び出し先のOpenTP1のrapリスナーのポート番号を設定してください。

Integer

5,001-65,535

なし

必ず設定してください。

tp1.cltj.dcwatchtim

呼び出し先のOpenTP1に対しての要求を開始してから応答を受信するまでの待ち時間の最大値を秒単位で設定してください。

0を設定した場合は、OpenTP1からの応答の受信を無限に待ちます。

Integer

0-65,535

180

tp1.cltj.dcwatchtiminherit

最大応答待ち時間を呼び出し先のOpenTP1のrapサーバ側に引き継ぐかどうかを設定してください。

Y：最大応答待ち時間を引き継ぎます。

N：最大応答待ち時間を引き継ぎません。

String

Y | N

N

tp1.cltj.dcwatchtimrpcinherit

最大応答待ち時間を呼び出し先のOpenTP1に引き継ぐかどうかを設定してください。

Y：最大応答待ち時間を引き継ぎます。

N：最大応答待ち時間を引き継ぎません。

String

Y | N

N

tp1.cltj.dccltdelay

呼び出し先のOpenTP1のrapサーバ側の監視を早く終了させる場合に、その時間を秒単位で設定してください。

Integer

0-65,535

0

tp1.cltj.dcuaptrace

UAPトレースを取得するかどうかを設定してください。

Y：UAPトレースを取得します。

N：UAPトレースを取得しません。

String

Y | N

N

tp1.cltj.dcuaptracesize

UAPトレースファイルのサイズをバイト単位で設定してください。

Integer

4,096-1,048,576

4,096

tp1.cltj.dcdatatrace

データトレースを取得するかどうかを設定してください。

Y：データトレースを取得します。

N：データトレースを取得しません。

String

Y | N

N

tp1.cltj.dcdatatracesize

データトレースファイルのサイズをバイト単位で設定してください。

Integer

4,096-1,048,576

4,096

tp1.cltj.dcdatatracemaxsize

データトレース1件のデータ長の最大値をバイト単位で設定してください。

Integer

16-1,048,576

128

tp1.cltj.dcerrtrace

エラートレースを取得するかどうかを設定してください。

Y：エラートレースを取得します。

N：エラートレースを取得しません。

String

Y | N

N

tp1.cltj.dcerrtracesize

エラートレースファイルのサイズをバイト単位で設定してください。

Integer

4,096-1,048,576

4,096

tp1.cltj.dcmethodtrace

メソッドトレースを取得するかどうかを設定してください。

Y：メソッドトレースを取得します。

N：メソッドトレースを取得しません。

String

Y | N

N

tp1.cltj.dcmethodtracesize

メソッドトレースファイルのサイズをバイト単位で設定してください。

Integer

4,096-1,048,576

4,096

tp1.cltj.dccltrpcmaxmsgsize

RPCで受け渡しできる電文の最大長をメガバイト単位で設定してください。

Integer

1-8

1

tp1.cltj.dccltsendbuffsize

コネクションごとに確保されるTCP/IP送信バッファのサイズをバイト単位で設定してください。

省略した場合は、JavaVMの送信バッファサイズが適用されます。

Integer

8,192-2,147,483,647

省略した場合は、JavaVMの送信バッファサイズを適用します。

tp1.cltj.dccltrecvbuffsize

コネクションごとに確保されるTCP/IP受信バッファのサイズをバイト単位で設定してください。

省略した場合は、JavaVMの受信バッファサイズが適用されます。

Integer

8,192-2,147,483,647

省略した場合は、JavaVMの受信バッファサイズを適用します。

externalConsensus.intervalInMillis

Mediatorなどに障害が発生し、補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で設定してください。

この間隔が短ければ、Mediatorなどに障害が発生した場合のトランザクションの遅延を小さくできます。ただし、この間隔を短くし過ぎると、通信遅延を障害と誤認し不要な補助合意が発生します。そのため、通信遅延を考慮した値を設定してください。

この設定値に1,000ミリ秒以上を設定した場合は1,000の単位に切り上げた値とします。

なお、この値は初回だけ、最大でこの設定値分の正の誤差を持ちます。ただし、この設定値が1,000ミリ秒以上の場合の誤差は、最大1,000ミリ秒です。

Integer

100-10,000

1,000

externalConsensus.eads.cache

補助合意に使用するEADSクラスタに対して、eztool createcacheコマンドで作成したキャッシュ名を設定してください。

String

32バイト以内の半角英数字（0-9、A-Z、およびa-z）

hmppctoCache

tp1.pool.allocationWaitTimeInMillis

TP1-BridgeがOpenTP1にアクセスするためのコネクションをコネクションプールから取得する際に、コネクションプールに空きがなかった場合の空き待ち時間をミリ秒単位で設定します。

0を設定した場合は、コネクションプールの空き待ちをしません。

コネクションプールの空きがなかった場合、このパラメタに設定した時間だけ、コネクションプールの空き待ちをします。空き待ちをしない場合、または空き待ち時間内にコネクションプールの空きができなかった場合はエラーとなり、TP1-Bridgeは、呼び出し元にhttpステータス502を応答します。

Long

0-65,535,000

60,000

tp1.pod.serviceName

TP1-Bridgeを構成するPodを定義したKubernetesのServiceのService名とNamespace名を「.」でつないだ形式で設定します。

Service名とNamespace名には、英小文字（a〜z）、数字（0〜9）、およびダッシュ（-）を使用できます。ただし、Service名およびNamespace名の先頭と終端に使用できるのは英小文字（a〜z）、または数字（0〜9）です。

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

リリース名がtp1-bridge1の場合のService名の設定例：

tp1-bridge1

このパラメタには、Mediatorからホスト名として認識できる値を設定する必要があります。

設定例：

name.namespace

String

3バイト〜41バイトの文字列

なし

必ず設定してください。

tp1.pool.maxPoolSize

TP1-BridgeがコネクションプールにプールするOpenTP1とのコネクションの数を設定します。

TP1-Bridge起動時にこのパラメタに設定した数のコネクションがプールされます。

TP1-Bridgeが使用するコネクションの数がこのパラメタに設定した値を超えた場合、コネクションプールの空き待ちになります。

OpenTP1のrapリスナーの同時接続する最大クライアント数以下、およびrapサーバ数以下で、かつ同時実行するトランザクション数以上の値を設定してください。

Integer

1-1,024

なし

必ず設定してください。

tp1.transactionTermination.timeoutInMillis

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で設定します。

OpenTP1のSPPによるリソースの排他ロックが解除できない状態となることを許容できる時間をタイマ監視します。このパラメタの値に設定した時間を超えてもトランザクションが決着しなかった場合、OpenTP1のSPPによるリソースの排他ロック解除のためにトランザクションを決着に向かわせます。

APがユーザにレスポンスを返すまでの許容時間、またはトランザクションブランチの処理時間の業務要件に応じた値を設定してください。

なお、同一トランザクションのすべてのサービスの業務要件に応じた値の合計時間で監視時間を設定する必要があります。

このタイマ値は初回だけ、最大でこの設定値分の正の誤差を持ちます。ただし、この設定値が1,000ミリ秒以上の場合の誤差は、最大1,000ミリ秒です。また、この設定値に1,000ミリ秒以上を設定した場合は、1,000の単位に切り上げたタイマ値とします。

Long

100-6,000,000

60,000

tp1.transactionTermination.consensus.replayIntervalInMillis

トランザクション分散合意リプレイインターバルタイマのタイマ監視時間をミリ秒単位で設定します。

このパラメタの値は次の処理のために設定します。この値に設定した時間を超えてもトランザクションが決着しなかった場合、トランザクション決着処理を再実行（リプレイ）し、OpenTP1のSPPによるリソースの排他ロック解除のためにトランザクションを決着に向かわせます。

トランザクションをコミットまたはロールバックするためにトランザクション決着処理をする

トランザクション決着監視タイマのタイムアウトによるトランザクション決着処理をする

TP1-Bridgeダウンからの再起動時にトランザクション決着処理をする

このタイマを短く設定することで、TP1-Bridge内で合意が滞ったトランザクションを速やかに決着できます。ただし、障害が長引いた場合にリトライの回数が多くなり、トランザクション決着のための通信に負荷が掛かります。そのため、通信負荷を考慮した値を設定してください。

このタイマ値は初回だけ、最大でこの設定値分の正の誤差を持ちます。ただし、この設定値が1,000ミリ秒以上の場合の誤差は、最大1,000ミリ秒です。また、この設定値に1,000ミリ秒以上を設定した場合は1,000の単位に切り上げたタイマ値とします。

Long

100-6,000,000

1,000

tp1.participantProcessing.threadPoolSize

TP1-Bridgeがトランザクション処理（投票処理、分散合意処理、およびトランザクション完了通知処理）で使用するスレッド数を設定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。

スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、「トランザクションに参加するMediator数×同時実行するトランザクション数」です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常は、デフォルト値を使用してください。

Integer

1-1,000

12

tp1.participantProcessing.queueSize

TP1-Bridgeがトランザクション処理（投票処理、分散合意処理、およびトランザクション完了通知処理）に使用するスレッドの割り当て待ちをするキューのサイズを設定します。

理論上必要な設定値は、次のとおりです。

（m＋7×m）×p×m×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipantおよびTP1-Bridgeの数

t：同時実行するトランザクション数

Integer

1-2,147,483,647

4,096,000

mediatorProcessManagement.threadPoolSize

SQL-Participantのmediator-process-management.thread-pool-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-32,767

30

mediatorCommunication.threadPoolSize

SQL-Participantのmediator-communication.thread-pool-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-1,000

30

mediatorCommunication.queueSize

SQL-Participantのmediator-communication.queue-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-2,147,483,647

4,096,000

http.port

TP1-Bridgeのhttpポート番号を設定してください。

動的ポートなどのほかのポートと重ならない値を設定してください。

なお、この設定値は、トランザクションヘルスチェックスクリプトおよび未決着トランザクション待機スクリプトのコマンド引数のhttpポート番号、APからのOpenTP1のサービス呼び出し要求の受信にも使用します。

Integer

1,024-65,535

20,554

grpc.useTls

暗号化通信をするかどうかを設定してください。

true：暗号化通信をします。

false：暗号化通信をしません。

Boolean

true | false

false

grpc.tls.secretName

「(3)　TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成」で作成した、TP1-BridgeのgRPC通信機能の暗号化通信用シークレットのKubernetesオブジェクト名を設定してください。

String

—

なし

grpc.useTlsにtrueを設定した場合は、必ず設定してください。

grpc.tls.clientAuth.enabled

クライアント認証をするかどうかを設定してください。

true：クライアント認証をします。

false：クライアント認証をしません。

このパラメタにtrueを設定する場合は、grpc.useTlsにもtrueを必ず設定してください。

Boolean

true | false

false

grpc.tls.session.cacheSize

SSLセッション情報のキャッシュ数を設定してください。

0を設定するとgRPCのデフォルト値が使用されます。

Integer

0-2,147,483,647

0

grpc.tls.session.timeoutInSeconds

キャッシュしたSSLセッション情報の保持時間を、秒単位で設定してください。

0を設定するとgRPCのデフォルト値が使用されます。

Integer

0-65,535

0

grpc.keepalive.intervalInSeconds

PING要求電文の送信間隔を、秒単位で設定してください。

0を設定した場合は、PING要求電文を送信しません。また、1〜9を設定した場合は、10秒となります。

なお、ネットワーク機器の無通信監視タイマなどによる、TCPコネクションの切断回避が目的の場合は、無通信監視タイマ値より小さい値を設定してください。

Integer

0-100,000

0

grpc.keepalive.timeoutInSeconds

PING応答電文の応答待ち時間を、秒単位で設定してください。

PING要求電文の送信後、このタイマの設定値の時間以内にPING応答電文を受信できなかった場合は、TCPコネクションが切断されます。

Integer

1-65,535

60

mediator.name

Orchestratorのmediator.nameと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

なし

必ず設定してください。

mediator.nameSuffix

Orchestratorのmediator.name-suffixと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

なし

必ず設定してください。

mediator.port

Orchestratorのmediator.portと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

20,551

tracing.instanceId

共通のtracing.instance-idと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.url

共通のtracing.urlと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.useTrace

共通のtracing.use-traceと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.debug

共通のtracing.debugと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.queueSize

共通のtracing.queue-sizeと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.delayTimeInMillis

共通のtracing.delay-time-in-millisと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.batchSize

共通のtracing.batch-sizeと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.grpc.debug

共通のtracing.grpc.debugと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

timezone

TP1-Bridgeコンテナのタイムゾーンを設定してください。ユーザ責務のKubernetesアプリケーションと同じタイムゾーンに設定することを推奨します。

このパラメタに設定した値は環境変数TZユーザに設定されます。

なお、このパラメタに設定した値がタイムゾーンとして不正な文字列である場合は、TP1-Bridgeコンテナのタイムゾーンは、協定世界時（UTC）となります。

String

−

Asia/Tokyo

java.options

TP1-BridgeのJavaプロセス起動時にJava VMに渡すオプションを設定してください。複数のオプションを設定する場合は、半角スペースで区切ってください。

このパラメタには、「-XX:+UseG1GC」オプションを必ず含めてください。「-XX:+UseG1GC」オプションを含めなかった場合、「-XX:+UseG1GC」オプションを含めた場合と比較して、TP1-Bridgeの実行性能およびメモリ性能が低下することがあります。

String

−

-XX:+UseG1GC

ucars.snapshots.claimName

「3.7.10　uCosminexus Application Runtime for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime with Java for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称（.metadata.nameフィールドに指定した値）を設定してください。

String

−

必ず設定してください。

eads.client.properties

EADSクライアントのプロパティを設定します。パラメタには、EADSクライアントのパラメタを設定してください。※²

詳細については、「(2)　EADSクライアントのパラメタ」を参照してください。

String

−

eads.client.connect.servers=sv1,sv2,sv3

eads.client.sv1.address=eads-service-eads-service-0.my-namespace

eads.client.sv1.port=24600

eads.client.sv2.address=eads-service-eads-service-1.my-namespace

eads.client.sv2.port=24600

eads.client.sv3.address=eads-service-eads-service-2.my-namespace

eads.client.sv3.port=24600

eads.client.logger.dir=eads-log

eads.client.connectionPool.poolsize=1

use-scaling

スケーリング対応機能を使用するかどうかを指定します。

true：スケーリング対応機能を使用する

false：スケーリング対応機能を使用しない

TP1-Bridgeはスケーリング対応機能に対応していないため、必ずfalseを指定してください。

このパラメタの設定値はすべて統一する必要があるため、Orchestrator、Entity-Module、SQL-Participant、TCC-Participant、TP1-Bridge、Mediatorそれぞれの、このパラメタにも必ずfalseを指定してください。

Boolean

true | false

false

（凡例）

−：該当しません。

注※1

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数、および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

注※2

次に示すように「properties」の行に「|」を記述して、複数行の文字列を記述してください。

eads:
  client:
    properties: |
      eads.client.connect.servers=sv1,sv2,sv3
      eads.client.sv1.address=eads-service-eads-service-0.my-namespace
      eads.client.sv1.port=24600
      eads.client.sv2.address=eads-service-eads-service-1.my-namespace
      eads.client.sv2.port=24600
      eads.client.sv3.address=eads-service-eads-service-2.my-namespace
      eads.client.sv3.port=24600
      eads.client.logger.dir=eads-log
      eads.client.connectionPool.poolsize=1

9.3.3　EADS（通常版限定）

EADSをHMP-PCTOで動作させる際に、指定するパラメタを説明します。

EADSのパラメタの設定方法は、次の2とおりに分けられます。

EADSサーバ

EADSサーバチャート用values.yamlファイルを編集します。

EADSクライアント

Participantの機能を使用するKubernetesアプリケーションのKubernetesマニフェストを編集します。

なお、EADSのデフォルト値のままとする設定は記載されていません。

プロパティの仕様や指定方法については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照してください。

マニュアル「Elastic Application Data Store ユーザーズガイド」に記載されている見積もり式で使用するパラメタのうち、EADSパラメタに依存しないパラメタは次のとおりです。

表9‒14　EADSパラメタに依存しないパラメタ

パラメタ

値

説明

キャッシュ数

1

ディスクキャッシュを1個だけ使用します。

さらにそのキャッシュではデータ自動削除機能（FIFOモード）を有効にします。

詳細は「(g)　eads_cache.＜キャッシュ名＞.properties（キャッシュ定義ファイル）」を参照してください。

EADS サーバに格納される key の最大サイズ（単位：バイト）

164

最大160文字（ASCIIコード）で構成された文字列です。

マニュアル「Elastic Application Data Store ユーザーズガイド」から、160+4で見積もっています。

EADS サーバに格納される value の最大サイズ（単位：バイト）

17

最大8文字（ASCIIコード）で構成されたJavaのjava.lang.String型インスタンスであり、java.io.ObjectOutputStream クラスで直列化したあとのバイト数は最大15バイトになります。

マニュアル「Elastic Application Data Store ユーザーズガイド」から、15+2で見積もっています。

最大同時更新データ数

1

EADSクライアントのAPIであるputAllおよびgetAllは使用していません。

ノンブロッキング通信制御

不採用

ノンブロッキング通信制御は使用していません。

グループ名の数

0

グループは使用していません。

補助合意結果保持件数（クラスタのディスクキャッシュに格納するデータ件数）

説明欄参照

補助合意結果は古い結果から自動削除しますが、トランザクション処理が完了する前に補助合意結果が削除されると分散合意の一貫性が保てなくなるため、トランザクション処理が完了する前に補助合意結果が削除されないよう十分な件数を指定してください。一方で件数が大き過ぎるとディスク使用量が増えるためシステム要件に合わせて指定してください。

具体的には下記計算式で見積もってください。

TPS（件/秒）×MAX※１(最大トランザクション実行時間（秒）＋許容する障害時のトランザクション実行遅延時間（秒）, 1)×安全係数※2

1レンジ当たりのデータ件数

説明欄参照

補助合意結果保持件数×余裕値係数※３÷EADSサーバの台数

1EADSサーバへのデータの更新操作のスループット（単位：件/秒）

説明欄参照

TPS（件/秒）÷EADSサーバの台数

1EADS サーバの1時間当たりの更新回数（単位：件/時）

説明欄参照

1EADSサーバへのデータの更新操作のスループット（件/秒）×3,600（秒/時）

コンパクションの実施間隔（単位：秒）

600

左記の値(600)はデフォルト値です。

コンパクションの実施間隔を変更したい場合は「(21)　EADSのセットアップ（通常版限定）」で、eztool compactionコマンドを定期的に実行する際のeads-command-cronjob-chart.tgzで指定するscheduleフィールドの値を変更してください。

マニュアル「Elastic Application Data Store ユーザーズガイド」の見積もり式の「コンパクションの実施間隔（単位：時）」には、この値を3,600（秒/時）で割った値を設定してください。

注※1

例えばMAX(A, B)であった場合、AとBのどちらか大きい方の値を返します。

注※2

安全係数は2以上を推奨します。

注※3

余裕値係数の見積もり方法の詳細は、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照してください。

(1)　EADSサーバのパラメタ

設定が必要なEADSサーバのプロパティファイルのパラメタ値について説明します。

(a)　EADSサーバチャート用values.yamlファイル

EADSサーバ用、eztoolコマンド実行用および生存監視ツール実行用のパラメタ指定値は、EADSサーバチャート用values.yamlファイルで設定します。values.yamlのサンプルを次に示します。

values.yamlファイルのサンプルは、取扱説明書「EADSコンテナオーケストレーションツール対応機能」を参照してください。

values.yamlファイルでの設定は、EADSサーバのHelmチャートのパラメタ値およびプロパティファイルに展開されます。

(b)　Helmチャートのパラメタ

Helmチャートのパラメタを説明します。

パラメタの仕様や指定方法および、生存監視ツールのパラメタについては、取扱説明書「EADSコンテナオーケストレーションツール対応機能」を参照してください。

表9‒15　EADSのHelmチャートのパラメタ

パラメタ

説明

release.server

EADSサーバのリリース名を指定します。

このマニュアルでは、eads-serverを指定した前提で各種例を記載しています。それ以外の値を指定する場合は、eads-serverを読み替えてください。

release.service

EADSサーバ用サービスのリリース名を指定します。

このマニュアルでは、eads-serviceを指定した前提で各種例を記載しています。それ以外の値を指定する場合は、eads-serviceを読み替えてください。

namespace

デプロイ先のNamespace名を指定します。

このマニュアルでは、my-namespaceを指定した前提で各種例を記載しています。それ以外の値を指定する場合は、my-namespaceを読み替えてください。

caches.name

キャッシュ名を指定します。

このマニュアルでは、hmppctoCacheを指定した前提で各種例を記載しています。それ以外の値を指定する場合は、hmppctoCacheを読み替えてください。

caches.pvc.accessModes

キャッシュに使用する永続ボリュームのアクセスモードとして、StatefulSet定義内のvolumeClaimTemplates配列内のaccessModesフィールドで使用されます。

永続ボリュームをローカル永続ボリューム（local）とする場合、ReadWriteOnceを指定してください。

永続ボリュームをNFSストレージとする場合、ReadWriteManyを指定してください。

caches.pvc.storageClassName

キャッシュに使用する永続ボリュームの種類がNFSストレージの場合のStorageClassの名称を指定します。

このマニュアルでは、eads-storageを指定した前提で各種例を記載しています。それ以外の値を指定する場合は、eads-storageを読み替えてください。

logs.accessModes

ログに使用する永続ボリュームのアクセスモードとして、StatefulSet定義内のvolumeClaimTemplates配列内のaccessModesフィールドで使用されます。

永続ボリュームをローカル永続ボリューム（local）とする場合、ReadWriteOnceを指定してください。

永続ボリュームをNFSストレージとする場合、ReadWriteManyを指定してください。

logs.storageClassName

ログに使用する永続ボリュームの種類がNFSストレージの場合のStorageClassの名称を指定します。

このマニュアルでは、eads-storageを指定した前提で各種例を記載しています。それ以外の値を指定する場合は、eads-storageを読み替えてください。

logs.dirType

ログの出力先ディレクトリの種別を指定します。

local：ワーカーノード上の領域を使用するディレクトリ

nfs：NFS上の領域を使用するディレクトリ

デフォルトはlocalです。

永続ボリュームをNFSストレージとする場合、nfsを指定してください。

store.storageClassName

ストアデータファイルに使用する永続ボリュームの種類がNFSストレージの場合のStorageClassの名称を指定します。

このマニュアルでは、eads-storageを指定した前提で各種例を記載しています。それ以外の値を指定する場合は、eads-storageを読み替えてください。

(c)　eads_command.properties（コマンド定義ファイル）

このファイルでは、設定が必要なEADSサーバのプロパティファイルのパラメタ値はありません。

(d)　eads_server.properties（サーバ定義ファイル）

eads_server.propertiesのパラメタについて説明します。

values.yamlの.properties.server.〜で設定します。

表9‒16　eads_server.propertiesのパラメタ

パラメタ

説明

eads.server.maxConnections

補助合意の時にEADSサーバに同時にアクセスする最大同時接続数を指定してください。EADSサーバに対してこの値を超過する接続があった場合、その接続は拒否されます。

推奨値は、トランザクションに参加するParticipant数×ParticipantのPodのレプリカの最大数※1×eads.client.connectionPool.poolsize×2（安全係数※2）となります。

eads.server.cache.maxExecuteThreads

eads.server.maxConnectionsに指定した値をこのプロパティにも指定してください。

eads.java.nio.maxCachedBufferSize

8,192を指定してください。

eads.logger.message.console.enable

EADSサーバによって出力されるメッセージログの、標準出力への出力を有効にするか、無効にするかを指定します。HMP-PCTOのトラブルシュート機能でEADSサーバのログを監視する場合は、trueを指定してください。

eads.server.connection.keepAlive.timeout

SQL-Participant、TCC-Participantが再起動した場合、EADSサーバが検知してからコネクションを切断するまでの時間を指定します。

推奨値は、70秒です。

eads.failureDetector.heartbeat.timeout

ハートビートのタイムアウト時間をミリ秒単位で指定します。

10,000を指定してください。ただし、実行環境に影響を受けるため、通信遅延が原因でタイムアウトが頻繁に発生する場合は、長めの値に調整してください。

このパラメタの指定値を変更すると、次のパラメタに影響します。

eads.failureDetector.connection.timeout

eads.failureDetector.read.timeout

eads.failureDetector.connection.timeout

生存確認の接続タイムアウト時間をミリ秒単位で指定します。

2,500を指定してください。なお、ハートビートのタイムアウト時間（eads.failureDetector.heartbeat.timeout）を変更した場合は、指定値を見直してください。

このパラメタの指定値は、ハートビートのタイムアウト時間の1/4を目安としてください。

eads.failureDetector.read.timeout

生存確認の受信タイムアウト時間をミリ秒で指定します。

2,500を指定してください。なお、ハートビートのタイムアウト時間（eads.failureDetector.heartbeat.timeout）を変更した場合は、指定値を見直してください。

このパラメタの指定値は、ハートビートのタイムアウト時間の1/4を目安としてください。

eads.logger.multipleWritePrevention.enable

ログファイルの多重書き込み防止機能を有効にするかを指定します。trueの場合有効となり、それ以外では無効となります。デフォルトはfalse（無効）です。

永続ボリュームをNFSストレージとする場合、trueを指定してください。

多重書き込み防止機能およびこのパラメタの仕様や指定方法については、取扱説明書「EADS コンテナオーケストレーションツール対応機能」を参照してください。

注※1

スケーリング対応機能を使用しない場合は1、スケーリング対応機能を使用する場合はオートスケール用HPAのKubernetesマニフェストに指定した「スケールアウトできる最大のPod数」です。

注※2

Participantが再起動すると、一時的にEADSサーバに同時にアクセスする接続数が倍になる場合があります。そのための安全係数です。

Participant再起動から、eads.server.connection.keepAlive.time経過後にコネクションが切断されます。eads.server.connection.keepAlive.time間に2回以上Participant再起動を考慮する場合は、安全係数をParticipant再起動回数+1としてください。

(e)　eads_shared.properties（共通設定ファイル）

eads_shared.propertiesのパラメタについて説明します。

values.yamlの.properties.shared.〜で設定します。

表9‒17　eads_shared.propertiesのパラメタ

パラメタ

説明

eads.replication.factor

（values.yamlの「cluster.replicationFactor」です）

EADSの多重度を指定してください。

多重度はEADSサーバの障害許容台数+1の値となります。

最低は2です。

2の場合、EADSサーバが1台故障しても、補助合意の継続が保証されます。

eads.replication.external.heapsize

見積もり方法の詳細については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表9‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

eads.java.heapsize

見積もり方法の詳細については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表9‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

eads.java.external.heapsize

見積もり方法の詳細については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表9‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

eads.cache.key.maxsize

「表9‒14　EADSパラメタに依存しないパラメタ」の「EADS サーバに格納される key の最大サイズ」を指定してください。

eads.cache.keyCount

見積もり方法の詳細については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表9‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

(f)　eads_cluster.properties（クラスタ定義ファイル）

eads_cluster.propertiesのパラメタについて説明します。

values.yamlの.cluster.〜で設定します。

表9‒18　eads_cluster.propertiesのパラメタ

パラメタ

説明

eads.node.＜EADSサーバID＞.address

（values.yamlの.cluster.serversです）

EADSサーバの台数を指定してください。

最低は3台です。

台数を増やすと1台当たりのメモリ・ディスク容量を減らすことができます。

(g)　eads_cache.＜キャッシュ名＞.properties（キャッシュ定義ファイル）

eads_cache.＜キャッシュ名＞.propertiesのパラメタについて説明します。

values.yamlの.caches.properties〜で設定します。

表9‒19　eads_cache.＜キャッシュ名＞.propertiesのパラメタ

パラメタ

説明

eads.cache.type

（values.yamlの.caches.type〜です）

EADSのキャッシュタイプを指定します。

Diskを指定してください。

eads.cache.eviction.policy

EADSに格納された補助合意結果の、自動削除ポリシーを指定します。

FIFO（古いデータから自動削除）を指定してください。

eads.cache.eviction.keyCount

自動削除でデータを削除するための閾値として使用する1レンジ当たりのデータ件数を指定します。

「表9‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタの「1レンジ当たりのデータ件数」を指定してください。

eads.cache.disk.filesize

キャッシュデータファイルのファイルサイズ(MB)を指定します。

見積もり方法の詳細は、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表9‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

eads.cache.disk.filenum

キャッシュデータファイルのファイル数を指定します。

見積もり方法の詳細は、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表9‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

eads.cache.disk.multipleWritePrevention.enable

キャッシュファイルの多重書き込み防止機能を有効にするかを指定します。trueの場合有効となり、それ以外では無効となります。デフォルトはfalse（無効）です。

永続ボリュームをNFSストレージとする場合、trueを指定してください。

多重書き込み防止機能およびこのパラメタの仕様や指定方法については、取扱説明書「EADS コンテナオーケストレーションツール対応機能」を参照してください。

(h)　eads_function.properties（ファンクション定義ファイル）

このファイルでは、設定が必要なEADSサーバのプロパティファイルのパラメタ値はありません。

(i)　注意事項

必要なリソース（メモリ使用量やディスク使用量など）については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照して、見積もってください。

(2)　EADSクライアントのパラメタ

(a)　EADSクライアント定義ファイル

EADSクライアント定義ファイルおよびパラメタの詳細についてはマニュアル「Elastic Application Data Store ユーザーズガイド」を参照してください。

ここでは、HMP-PCTOで使用する場合に指定が必要なパラメタについて説明します。次の表で示すパラメタ以外は、デフォルトとしてください。

EADSクライアント定義は、ユーザ責務で作成します。

EADSクライアント定義は、Participantの機能を使用するKubernetesアプリケーションのKubernetesマニフェストでEADSクライアント定義ファイルに設定するように定義します。「2.6.4　Entity-Service(SQL)のKubernetesマニフェストの作成（SQL-Participant限定）」、または「2.6.5　Entity-Service(TCC)のKubernetesマニフェストの作成（TCC-Participant限定）」を参照してください。

表9‒20　EADSクライアント定義ファイル

パラメタ

説明

eads.client.connect.servers

任意の名称を指定してください。

eads.client.＜接続先EADSサーバ＞.address

EADSサーバのDNS名※を指定してください。

eads.client.＜接続先EADSサーバ＞.port

EADSサーバのポート番号を指定してください。

EADSサーバのポート番号はEADSサーバチャート用values.yamlの.service.serverに指定した値です。

eads.client.logger.dir

"eads-log"を指定してください。

eads.client.connectionPool.poolsize

1を指定してください。

注※

＜EADSサーバのDNS名＞：＜Serviceリリース名＞-eads-service-＜複製インデックス＞.＜Namespace名＞

・＜Serviceリリース名＞：EADSサーバデプロイ時のServiceリリース名

・＜複製インデックス＞：EADSサーバデプロイ時のStatefulSetが複製したEADSサーバPodの名前（＜StatefulSetの名前＞-[0-9]+）の末尾に割り当てられた数値です。0からシーケンシャルに割り当てられます。

・＜Namespace名＞：EADSサーバデプロイ時のNamespace名

EADSクライアント定義ファイルの指定例を次に示します。

EADSクライアント定義ファイルの指定例

eads.client.connect.servers=sv1,sv2,sv3
eads.client.sv1.address=eads-service-eads-service-0.my-namespace
eads.client.sv1.port=24600
eads.client.sv2.address=eads-service-eads-service-1.my-namespace
eads.client.sv2.port=24600
eads.client.sv3.address=eads-service-eads-service-2.my-namespace
eads.client.sv3.port=24600
eads.client.logger.dir=eads-log
eads.client.connectionPool.poolsize=1

9.3.4　Ext-Cons（トライアル版限定）

Ext-Consのパラメタを説明します。トライアル版HMP-PCTOを使用する場合に設定します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

表9‒21　Ext-ConsのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

Ext-ConsのNamespace名を設定してください。

String

−

my-namespace

image

Ext-Consのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

imagePullSecrets

コンテナイメージをPullする際の資格情報を設定してください。

次のように指定します。

imagePullSecrets:

- name: regcred

資格情報が不要な場合は設定不要です。

List<Object>

−

[]

（半角左角括弧と半角右角括弧です）

imagePullPolicy

Ext-ConsのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

dependencyCheck.image

「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したDependency-Checkerのコンテナイメージを設定してください。

String

−

なし

dependencyCheck.enabledにtrueを設定した場合は、必ず設定してください。

dependencyCheck.imagePullPolicy

Dependency-CheckerのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

dependencyCheck.retryCount

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.targets

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのターゲットKubernetesオブジェクト群を設定してください。

指定方法の詳細は「7.6.1　デプロイ依存関係チェックスクリプト（dependency_check.sh）」を参照してください。

List<String>

−

- my-namespace/deployments/logstash

- my-namespace/deployments/jaeger-query

- my-namespace/deployments/jaeger-collector

- my-namespace/deployments/metricbeat

- my-namespace/daemonsets/filebeat

http.port

Ext-Consのhttpポート番号を設定してください。

動的ポートなどほかのポートと重ならないよう設定してください。

Integer

1,024-65,535

20,556

timezone

Ext-Consコンテナのタイムゾーンを指定します。ユーザ責務のKubernetes アプリケーションと同じタイムゾーンに設定することを推奨します。

このパラメタに指定した値は環境変数TZユーザに設定します。

このパラメタに指定した値がタイムゾーンとして不正な文字列である場合、Ext-Consコンテナのタイムゾーンは協定世界時(UTC)となります。

String

−

Asia/Tokyo

java.options

Ext-ConsのJavaプロセス起動時にJava VMに渡すオプションを指定します。

半角スペース区切りで複数のオプションを指定できます。

このパラメタには「-XX:+UseG1GC」オプションを必ず含めてください。「-XX:+UseG1GC」オプションを含めなかった場合、「-XX:+UseG1GC」オプションを含めた場合と比較して、Ext-Consの実行性能およびメモリ性能が低下することがあります。

String

−

-XX:+UseG1GC

（凡例）−：該当しません。

9.3.5　Filebeat

Filebeatのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表9‒22　FilebeatのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

FilebeatのNamespace名を設定してください。

String

−

my-namespace

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※3

−※1、※3

1,000m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

2Gi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

1,000m

必ず設定してください。

limits.memory

コンテナで上限のメモリを設定してください。

String※3

−※1、※3

2Gi

必ず設定してください。

image

Filebeatのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

imagePullSecrets

コンテナイメージをPullする際の資格情報を設定してください。

次のように指定します。

imagePullSecrets:

- name: regcred

資格情報が不要な場合は設定不要です。

List<Object>

−

[]

（半角左角括弧と半角右角括弧です）

imagePullPolicy

コンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

livenessProbe.initialDelaySeconds

Liveness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

10

livenessProbe.periodSeconds

Liveness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

livenessProbe.failureThreshold

Liveness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

livenessProbe.timeoutSeconds

Liveness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

livenessProbe.successThreshold

Liveness Probeの最小連続成功数を設定してください。

Integer

1以上※1

1

readinessProbe.initialDelaySeconds

Readiness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

10

readinessProbe.periodSeconds

Readiness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

readinessProbe.failureThreshold

Readiness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

readinessProbe.timeoutSeconds

Readiness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

readinessProbe.successThreshold

Readiness Probeの最小連続成功数を設定してください。

Integer

1以上※1

1

terminationGracePeriodSeconds

Podの安全な停止待機秒数を設定してください。

Integer

0-2,147,483,647

30

nodes.hostnames

HMP-PCTOのpodを割り当てるKubernetesノードのホスト名を配列で設定してください。

List<String>

−

[]

（半角左角括弧と半角右角括弧です）

hmpPcto.namespaces

HMP-PCTOで使用しているPodの、標準出力の収集対象とするnamespaceを指定します。

namespace名をシーケンス（配列）で設定してください。次のように指定します。

["my-namespace1", "my-namespace2"]

List<String>

−

[]

（半角左角括弧と半角右角括弧です）

dependencyCheck.enabled

Dependency-Checkerを有効にするかどうかを設定してください。

Boolean

true | false

true

dependencyCheck.image

「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したDependency-Checkerのコンテナイメージを設定してください。

String

−

なし

dependencyCheck.enabledにtrueを設定した場合は、必ず設定してください。

dependencyCheck.imagePullPolicy

Dependency-CheckerのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

dependencyCheck.retryCount

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

filebeat.queue.maxSize

Filebeatの内部キューとして使用する容量の最大値を設定してください。

設定した値は次のパラメタとして有効になります。

Filebeatのqueue.disk.max_size

String※3

−※2、※3

10GB

必ず設定してください。

filebeat.queue.readAhead

Filebeatの内部キューから、Logstashへの出力のためにメモリに読み取る必要のあるイベント数を設定してください。

設定した値は次のパラメタとして有効になります。

Filebeatのqueue.disk.read_ahead

String※3

−※2、※3

512

必ず設定してください。

filebeat.output.maxRetries

Logstashへの送信に失敗した際に実施する再送の試行回数を設定してください。

設定した値は次のパラメタとして有効になります。

Filebeatのoutput.logstash.max_retries

String※3

−※2、※3

3

必ず設定してください。

（凡例）

−：該当しません。

注※1

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

注※2

Filebeatへの設定値であるため、最大値、最大文字数および許容される文字パターンは、Filebeatに依存します。詳細はFilebeatドキュメントを参照してください。

注※3

Helmの仕様によって、7桁以上のInteger、Long型の入力は指数形式（例：「1e+06」）に自動で変換されるため、String型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

9.3.6　Jaeger-query

Jaeger-queryのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表9‒23　Jaeger-queryのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

Jaeger-queryのNamespace名を設定してください。

String

−

my-namespace

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※3

−※1、※3

500m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

1Gi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

500m

必ず設定してください。

limits.memory

コンテナで上限のメモリを設定してください。

String※3

−※1、※3

1Gi

必ず設定してください。

image

Jaeger-queryのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

imagePullSecrets

コンテナイメージをPullする際の資格情報を設定してください。

次のように指定します。

imagePullSecrets:

- name: regcred

資格情報が不要な場合は設定不要です。

List<Object>

−

[]

（半角左角括弧と半角右角括弧です）

imagePullPolicy

コンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

livenessProbe.initialDelaySeconds

Liveness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

30

livenessProbe.periodSeconds

Liveness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

15

livenessProbe.failureThreshold

Liveness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

livenessProbe.timeoutSeconds

Liveness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

10

livenessProbe.successThreshold

Liveness Probeの最小連続成功数を設定してください。

Integer

1以上※1

1

readinessProbe.initialDelaySeconds

Readiness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

30

readinessProbe.periodSeconds

Readiness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

5

readinessProbe.failureThreshold

Readiness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

readinessProbe.timeoutSeconds

Readiness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

4

readinessProbe.successThreshold

Readiness Probeの最小連続成功数を設定してください。

Integer

1以上※1

1

terminationGracePeriodSeconds

Podの安全な停止待機秒数を設定してください。

Integer

0-2,147,483,647

30

http.port

JaegerのWeb UIアクセス用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

Integer

1,024-65,535

なし

必ず指定してください。

jaegerQuery.maxSpanAge

Elasticsearchから分散トレースを取得する際、検索の範囲とする時間を設定してください。

設定した値は次のパラメタとして有効になります。

Jaeger-collectorの--es.max-span-age

String

−※2

168h0m0s

必ず指定してください。

dependencyCheck.enabled

Dependency-Checkerを有効にするかどうかを設定してください。

Boolean

true | false

true

dependencyCheck.image

「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したDependency-Checkerのコンテナイメージを設定してください。

String

−

なし

dependencyCheck.enabledにtrueを設定した場合は、必ず設定してください。

dependencyCheck.imagePullPolicy

Dependency-CheckerのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

dependencyCheck.retryCount

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

tls.enabled

Elasticsearchと暗号化通信をするかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Elasticsearchのtls.enabledをtrueにした場合はtrueを指定してください

Boolean

true | false

false

tls.secretName

ElasticsearchのTLS通信シークレットの名前を設定してください。

String

−

なし

tls.enabledにtrueを設定した場合は、必ず設定してください。

elasticUserSecretName

tls.enabledパラメタにtrueを設定した場合、Elasticsearchのelasticユーザアカウントに設定するパスワードが設定されたシークレットの名前を設定してください。

シークレットのdata.passwordにパスワードを設定してください。

この設定が行われていない場合、elasticユーザアカウントのパスワードは"changeme"となります。

String

−

なし

（凡例）

−：該当しません。

注※1

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

注※2

Jaeger-queryへの設定値であるため、最大値、最大文字数および許容される文字パターンは、Jaeger-queryに依存します。詳細はJaeger-queryドキュメントを参照してください。

注※3

Helmの仕様によって、7桁以上のInteger、Long型の入力は指数形式（例：「1e+06」）に自動で変換されるため、String型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

9.3.7　Jaeger-collector

Jaeger-collectorのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表9‒24　Jaeger-collectorのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

Jaeger-collectorのNamespace名を設定してください。

String

−

my-namespace

replicas

起動するJaeger-collector数を設定してください。

設定した値は次のパラメタとして有効になります。

Jaeger-collectorの--es.num-replicas

Integer

1以上

1

必ず設定してください。

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※3

−※1、※3

1,000m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

500Mi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

1,000m

必ず設定してください。

limits.memory

コンテナで上限のメモリを設定してください。

String※3

−※1、※3

500Mi

必ず設定してください。

image

Jaeger-collectorのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

imagePullSecrets

コンテナイメージをPullする際の資格情報を設定してください。

次のように指定します。

imagePullSecrets:

- name: regcred

資格情報が不要な場合は設定不要です。

List<Object>

−

[]

（半角左角括弧と半角右角括弧です）

imagePullPolicy

コンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

livenessProbe.initialDelaySeconds

Liveness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

300

livenessProbe.periodSeconds

Liveness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

livenessProbe.failureThreshold

Liveness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

livenessProbe.timeoutSeconds

Liveness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

livenessProbe.successThreshold

Liveness Probeの最小連続成功数を設定してください。

Integer

1以上※1

1

readinessProbe.initialDelaySeconds

Readiness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

60

readinessProbe.periodSeconds

Readiness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

readinessProbe.failureThreshold

Readiness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

readinessProbe.timeoutSeconds

Readiness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

readinessProbe.successThreshold

Readiness Probeの最小連続成功数を設定してください。

Integer

1以上※1

3

terminationGracePeriodSeconds

Podの安全な停止待機秒数を設定してください。

Integer

0-2,147,483,647

30

collector.queueSize

Jaeger-collectorの内部キューのサイズを設定してください。

設定した値は次のパラメタとして有効になります。

Jaeger-collectorの--collector.queue-sizeパラメタ

String※3

−※2、※3

10,000

collector.numWorkers

Jaeger-collectorの内部で動作するワーカの数を設定してください。

設定した値は次のパラメタとして有効になります。

Jaeger-collectorの--collector.num-workers

String※3

−※2、※3

50

collector.numShards

Jaeger-collectorがElasticsearch上に作成するインデックスのシャード数を設定してください。

設定した値は次のパラメタとして有効になります。

Jaeger-collectorの--es.num-shards

String※3

−※2、※3

5

dependencyCheck.enabled

Dependency-Checkerを有効にするかどうかを設定してください。

Boolean

true | false

true

dependencyCheck.image

「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したDependency-Checkerのコンテナイメージを設定してください。

String

−

なし

dependencyCheck.enabledにtrueを設定した場合は、必ず設定してください。

dependencyCheck.imagePullPolicy

Dependency-CheckerのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

dependencyCheck.retryCount

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

tls.enabled

Elasticsearchと暗号化通信をするかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Elasticsearchのtls.enabledをtrueにした場合はtrueを指定してください

Boolean

true | false

false

tls.secretName

ElasticsearchのTLS通信シークレットの名前を設定してください。

String

−

なし

tls.enabledにtrueを設定した場合は、必ず設定してください。

elasticUserSecretName

tls.enabledパラメタにtrueを設定した場合、Elasticsearchのelasticユーザアカウントに設定するパスワードが設定されたシークレットの名前を設定してください。

シークレットのdata.passwordにパスワードを設定してください。

この設定が行われていない場合、elasticユーザアカウントのパスワードは"changeme"となります。

String

−

なし

（凡例）

−：該当しません。

注※1

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

注※2

Jaeger-collectorに対する設定値であるため、最大値、最大文字数および許容される文字パターンについては、Jaeger-collectorのドキュメントを参照してください。

注※3

Helmの仕様によって、7桁以上のInteger、Long型の入力は指数形式（例：「1e+06」）に自動で変換されるため、String型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

9.3.8　Prometheus

Prometheusは公式ドキュメントを参照し、インストールします。この時、HMP-PCTOとして制約のあるパラメタがあります。制約について、次の表に示します。

表9‒25　PrometheusでHMP-PCTOとして制約のあるパラメタ

パラメタ

説明

制約

image

起動するコンテナイメージのバージョンやビルド元を明示的に管理するために使用します。

Prometheusのコンテナイメージを設定してください。

使用できるPrometheusのバージョンは「1.4.3　関連プログラム」を参照してください。

service.port

外部アクセスや他コンポーネントとの連携に使用します。

Prometheus用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

Prometheusの各パラメタは公式ドキュメントに従って設定してください。

9.3.9　Metricbeat

Metricbeatのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表9‒26　MetricbeatのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

MetricbeatのNamespace名を設定してください。

String

−

my-namespace

replicas

起動するMetricbeatの数を設定してください。

Integer

1以上

1

必ず設定してください。

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※3

−※1、※3

1,000m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

2Gi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

1,000m

必ず設定してください。

limits.memory

コンテナで上限のメモリを設定してください。

String※3

−※1、※3

2Gi

必ず設定してください。

image

Metricbeatのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

imagePullSecrets

コンテナイメージをPullする際の資格情報を設定してください。

次のように指定します。

imagePullSecrets:

- name: regcred

資格情報が不要な場合は設定不要です。

List<Object>

−

[]

（半角左角括弧と半角右角括弧です）

imagePullPolicy

コンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

livenessProbe.initialDelaySeconds

Liveness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

10

livenessProbe.periodSeconds

Liveness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

livenessProbe.failureThreshold

Liveness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

livenessProbe.timeoutSeconds

Liveness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

livenessProbe.successThreshold

Liveness Probeの最小連続成功数を設定してください。

Integer

1以上※1

1

readinessProbe.initialDelaySeconds

Readiness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

10

readinessProbe.periodSeconds

Readiness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

readinessProbe.failureThreshold

Readiness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

readinessProbe.timeoutSeconds

Readiness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

readinessProbe.successThreshold

Readiness Probeの最小連続成功数を設定してください。

Integer

1以上※1

1

terminationGracePeriodSeconds

Podの安全な停止待機秒数を設定してください。

Integer

0-2,147,483,647

30

metricbeat.queue.maxSize

Metricbeatの内部キューとして使用する容量の最大値を設定してください。

設定した値は次のパラメタとして有効になります。

Metricbeatのqueue.disk.max_size

String※3

−※2、※3

10GB

必ず設定してください。

metricbeat.queue.readAhead

Metricbeatの内部キューから、Elasticsearchへの出力のためにメモリに読み取る必要のあるイベント数を設定してください。

設定した値は次のパラメタとして有効になります。

Metricbeatのqueue.disk.read_ahead

String※3

−※2、※3

512

必ず設定してください。

metricbeat.output.maxRetries

Elasticsearchへの送信に失敗した際に実施する再送の試行回数を設定してください。

設定した値は次のパラメタとして有効になります。

Metricbeatのoutput.elasticsearch.max_retries

String※3

−※2、※3

3

必ず設定してください。

dependencyCheck.enabled

Dependency-Checkerを有効にするかどうかを設定してください。

Boolean

true | false

true

dependencyCheck.image

「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したDependency-Checkerのコンテナイメージを設定してください。

String

−

なし

dependencyCheck.enabledにtrueを設定した場合は、必ず設定してください。

dependencyCheck.imagePullPolicy

Dependency-CheckerのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

dependencyCheck.retryCount

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

tls.enabled

Elasticsearchと暗号化通信をするかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Elasticsearchのtls.enabledをtrueにした場合はtrueを指定してください

Boolean

true | false

false

tls.secretName

ElasticsearchのTLS通信シークレットの名前を設定してください。

String

−

なし

tls.enabledにtrueを設定した場合は、必ず設定してください。

elasticUserSecretName

tls.enabledパラメタにtrueを設定した場合、Elasticsearchのelasticユーザアカウントに設定するパスワードが設定されたシークレットの名前を設定してください。

シークレットのdata.passwordにパスワードを設定してください。

この設定が行われていない場合、elasticユーザアカウントのパスワードは"changeme"となります。

String

−

なし

（凡例）

−：該当しません。

注※1

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

注※2

Metricbeatへの設定値であるため、最大値、最大文字数および許容される文字パターンは、Metricbeatに依存します。詳細はMetricbeatドキュメントを参照してください。

注※3

Helmの仕様によって、7桁以上のInteger、Long型の入力は指数形式（例：「1e+06」）に自動で変換されるため、String型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

9.3.10　Elasticsearch

Elasticsearchのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表9‒27　ElasticsearchのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

ElasticsearchのNamespace名を設定してください。

String

−

my-namespace

replicas

起動するElasticsearch数を設定してください。

Integer

1以上

1

必ず設定してください。

image

Elasticsearchのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

imagePullSecrets

コンテナイメージをPullする際の資格情報を設定してください。

次のように指定します。

imagePullSecrets:

- name: regcred

資格情報が不要な場合は設定不要です。

List<Object>

−

[]

（半角左角括弧と半角右角括弧です）

imagePullPolicy

コンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

role

デプロイするElasticsearchのロールを設定してください。

最小機器構成の場合はデフォルト値をそのまま使用してください。

Elasticsearchをクラスタ構成で構築する場合は、マスターノード用values.yamlには「master」、データノード用values.yamlには「data」を設定してください。

String

−

なし

livenessProbe.initialDelaySeconds

Liveness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

300

livenessProbe.periodSeconds

Liveness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

livenessProbe.failureThreshold

Liveness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

livenessProbe.timeoutSeconds

Liveness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

livenessProbe.successThreshold

Liveness Probeの最小連続成功数を設定してください。

Integer

1以上※1

1

readinessProbe.initialDelaySeconds

Readiness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

60

readinessProbe.periodSeconds

Readiness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

readinessProbe.failureThreshold

Readiness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

readinessProbe.timeoutSeconds

Readiness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

readinessProbe.successThreshold

Readiness Probeの最小連続成功数を設定してください。

Integer

1以上※1

3

terminationGracePeriodSeconds

Podの安全な停止待機秒数を設定してください。

Integer

0-2,147,483,647

120

affinity

Podの割り当てノードの制御をします。

Object

−

podAntiAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
  - labelSelector:
      matchExpressions:
      - key: app.kubernetes.io/name
        operator: In
        values:
        - elasticsearch-master
    topologyKey: kubernetes.io/hostname

クラスタ構成で、データノードとして起動させる場合は、elasticsearch-masterをelasticsearch-dataに変更してください。

http.port

Elasticsearch REST API用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

Integer

1,024-65,535

なし

必ず指定してください。

data.storageClassName

「3.7.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するElasticsearchのPodに割り当てるリポジトリディレクトリの永続ボリュームのストレージクラス名を設定してください。

クラスタ構成で構築する場合、マスターノード用values.yamlの場合はマスターノード用のストレージクラス名、データノード用values.yamlの場合はデータノード用のストレージクラスを設定してください。

String

−

なし

必ず指定してください。

data.storageSize

「3.7.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するElasticsearchのPodに割り当てるデータディレクトリの永続ボリュームのサイズを設定してください。

String

−

なし

必ず指定してください。

repo.storageClassName

「3.7.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するElasticsearchのPodに割り当てるリポジトリディレクトリの永続ボリュームのストレージクラス名を設定してください。

String

−

なし

必ず指定してください。

repo.storageSize

「3.7.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するElasticsearchのPodに割り当てるリポジトリディレクトリの永続ボリュームのサイズを設定してください。

String

−

なし

必ず指定してください。

sysctlVmMaxMapCount

Elasticsearchコンテナのカーネルパラメタvm.max_map_countの値です。ElasticsearchのPodがダウンする場合、この値を262,144より大きくしてください。

Integer

−

262,144

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※2

−※1、※2

2,000m

必ず指定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※2

−※1、※2

4Gi

必ず指定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※2

−※1、※2

2,000m

必ず指定してください。

limits.memory

コンテナで上限のメモリを設定してください。

String※2

−※1、※2

4Gi

必ず指定してください。

tls.enabled

Elasticsearchと暗号化通信をするかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Boolean

true | false

false

tls.secretName

ElasticsearchのTLS通信シークレットの名前を設定してください。

String

−

なし

tls.enabledにtrueを設定した場合は、必ず設定してください。

elasticUserSecretName

tls.enabledパラメタにtrueを設定した場合、Elasticsearchのelasticユーザアカウントに設定するパスワードが設定されたシークレットの名前を設定してください。

シークレットのdata.passwordにパスワードを設定してください。

この設定が行われていない場合、elasticユーザアカウントのパスワードは"changeme"となります。

String

−

なし

（凡例）

−：該当しません。

注※1

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

注※2

Helmの仕様によって、7桁以上のInteger、Long型の入力は指数形式（例：「1e+06」）に自動で変換されるため、String型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

9.3.11　Logstash

Logstashのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表9‒28　LogstashのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

LogstashのNamespace名を設定してください。

String

−

my-namespace

replicas

起動するLogstashの数を設定してください。

Integer

1以上

1

必ず設定してください。

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※3

−※1、※3

1,000m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

3Gi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

1,000m

必ず設定してください。

limits.memory

コンテナで上限のメモリを設定してください。

String※3

−※1、※3

3Gi

必ず設定してください。

image

Logstashのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

imagePullSecrets

コンテナイメージをPullする際の資格情報を設定してください。

次のように指定します。

imagePullSecrets:

- name: regcred

資格情報が不要な場合は設定不要です。

List<Object>

−

[]

（半角左角括弧と半角右角括弧です）

imagePullPolicy

コンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

logstash.pipeline.batchSize

LogstashがInput処理によって収集するイベントの最大数を設定してください。

設定した値は次のパラメタとして有効になります。

Logstashのpipeline.batch.size

String※3

−※2、※3

125

logstash.queue.event.enabled

Logstashの内部キューで、イベント数によるキューサイズ設定を有効にするかどうかを設定してください。

logstash.queue.event.enabledとlogstash.queue.byte.enabledがfalseに設定された場合、内部キューの最大値に対して無制限が設定され、Logstashは起動します。

Boolean

true | false

true

必ず設定してください。

logstash.queue.event.maxEvents

Logstashの内部キューでの未読イベントの最大数を設定してください。

logstash.queue.event.enabledがtrueに設定された場合、このパラメタの設定値は有効になります。

logstash.queue.byte.maxBytesが有効な場合、この設定も有効になります。

設定した値は次のパラメタとして有効になります。

Logstashのqueue.max_events

String※3

−※2、※3

0（無制限）

logstash.queue.byte.enabled

Logstashの内部キューで、Byteによるキューサイズ設定を有効にするかどうかを設定してください。

logstash.queue.event.enabledとlogstash.queue.byte.enabledがfalseに設定された場合、内部キューの最大値に対して無制限が設定され、Logstashは起動します。

Boolean

true | false

false

必ず設定してください。

logstash.queue.byte.maxBytes

Logstashの内部キューの最大容量を設定してください。

logstash.queue.byte.enabledがtrueに設定された場合、このパラメタの設定値は有効になります。

logstash.queue.event.maxEventsが有効な場合、この設定は無効となります。

設定した値は次のパラメタとして有効になります。

Logstashのqueue.max_bytes

String※3

−※2、※3

なし

livenessProbe.initialDelaySeconds

Liveness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

300

livenessProbe.periodSeconds

Liveness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

livenessProbe.failureThreshold

Liveness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

livenessProbe.timeoutSeconds

Liveness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

livenessProbe.successThreshold

Liveness Probeの最小連続成功数を設定してください。

Integer

1以上※1

1

readinessProbe.initialDelaySeconds

Readiness Probeの初回実行待機秒数を設定してください。

Integer

0以上※1

60

readinessProbe.periodSeconds

Readiness Probeの実行間隔秒数を設定してください。

Integer

1以上※1

10

readinessProbe.failureThreshold

Readiness Probeの最大失敗回数を設定してください。

Integer

1以上※1

3

readinessProbe.timeoutSeconds

Readiness Probeのタイムアウト秒数を設定してください。

Integer

1以上※1

5

readinessProbe.successThreshold

Readiness Probeの最小連続成功数を設定してください。

Integer

1以上※1

3

terminationGracePeriodSeconds

Podの安全な停止待機秒数を設定してください。

Integer

0-2,147,483,647

120

dependencyCheck.enabled

Dependency-Checkerを有効にするかどうかを設定してください。

Boolean

true | false

true

dependencyCheck.image

「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したDependency-Checkerのコンテナイメージを設定してください。

String

−

なし

dependencyCheck.enabledにtrueを設定した場合は、必ず設定してください。

dependencyCheck.imagePullPolicy

Dependency-CheckerのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent | Always | Never

IfNotPresent

dependencyCheck.retryCount

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ回数を設定してください。

Integer

0-1,080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

tls.enabled

Elasticsearchと暗号化通信をするかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Elasticsearchのtls.enabledをtrueにした場合はtrueを指定してください。

Boolean

true | false

false

tls.secretName

ElasticsearchのTLS通信シークレットの名前を設定してください。

String

−

なし

tls.enabledにtrueを設定した場合は、必ず設定してください。

elasticUserSecretName

tls.enabledパラメタにtrueを設定した場合、Elasticsearchのelasticユーザアカウントに設定するパスワードが設定されたシークレットの名前を設定してください。

シークレットのdata.passwordにパスワードを設定してください。

この設定が行われていない場合、elasticユーザアカウントのパスワードは"changeme"となります。

String

−

なし

（凡例）

−：該当しません。

注※1

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

注※2

Logstashへの設定値であるため、最大値、最大文字数および許容される文字パターンは、Logstashに依存します。詳細はLogstashドキュメントを参照してください。

注※3

Helmの仕様によって、7桁以上のInteger、Long型の入力は指数形式（例：「1e+06」）に自動で変換されるため、String型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

9.3.12　Metrics Server

Metrics Serverは公式ドキュメントを参照し、インストールします。この時、HMP-PCTOとして制約のあるパラメタがあります。制約について、次の表に示します。

表9‒29　Metrics ServerでHMP-PCTOとして制約のあるパラメタ

パラメタ

説明

制約

image

起動するコンテナイメージのバージョンやビルド元を明示的に管理するために使用します。

Metrics Serverのコンテナイメージを設定してください。

使用できるMetrics Serverのバージョンについては、「1.4.3　関連プログラム」を参照してください。

service.port

外部アクセスや他コンポーネントとの連携に使用します。

Metrics Server用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

9.4　各RDBMSの使用に必要なパラメタおよび設定（SQL-Participant限定）

次に示すRDBMSを使用する際に必要なパラメタおよび設定について説明します。

PostgreSQL

SQL Server

HiRDB

Oracle Database

9.4.1　PostgreSQL（SQL-Participant限定）

(1)　パラメタ

PostgreSQLを使用する際に必要なパラメタは、HMP-PCTOのパラメタではなく、PostgreSQLのサーバ側のパラメタです。HMP-PCTOを意識して設定してください。各パラメタのデフォルト値などを含めた詳細については、PostgreSQLのマニュアルを参照してください。

表9‒30　PostgreSQLのパラメタ

パラメタ

説明

max_connections

PostgreSQLサーバに同時接続する最大数を設定します。sql.pool.max-pool-sizeに指定した値×ParticipantのPodのレプリカの最大数※より大きい値を指定してください。

sql.pool.max-pool-sizeについては、「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

max_prepared_transactions

同時にプリペアド状態にできるトランザクションの最大数を設定します。アプリケーションのサービスの同時実行数以上の値とするとともに、障害時にコミット、ロールバックのリトライを行うトランザクションの実行数を考慮した十分な値を指定してください。

idle_in_transaction_session_timeout

PostgreSQLサーバが開いているトランザクション内でアイドル状態になっている（クライアントのクエリを待っている）セッションを終了する時間をミリ秒で指定します。

PostgreSQLではトランザクションタイムアウト時間をSQL-Participantから設定できないため、このパラメタの設定が必要です。トランザクションブランチの処理時間（業務要件）に応じたタイマ監視時間であるsql.transaction-termination.timeout-in-millisのパラメタより大きい値を指定してください。

注※

スケーリング対応機能を使用しない場合は1、スケーリング対応機能を使用する場合はオートスケール用HPAのKubernetesマニフェストに指定した「スケールアウトできる最大のPod数」です。

(2)　接続するユーザに付与する権限

HMP-PCTOがRDBMSに接続する際のユーザに、次に示す権限を付与してください。詳細については、PostgreSQLのマニュアルを参照してください。

CONNECT権限

他ユーザの未決着トランザクションを決着させる場合は、スーパーユーザ権限

9.4.2　SQL Server（SQL-Participant限定）

(1)　パラメタ

SQL Serverを使用する際に必要なパラメタは、HMP-PCTOのパラメタではなく、SQL Serverのサーバ側のオプションです。HMP-PCTOを意識して設定してください。各オプションのデフォルト値などを含めた詳細については、SQL Serverのマニュアルを参照してください。

また、HMP-PCTOはXAインタフェースを使用してSQL Serverに接続します。そのため、SQL Server側でXA分散トランザクションコンポーネントを有効化して、必要なロールを設定してください。

表9‒31　SQL Serverのオプション

オプション

説明

user connections

SQL Serverに同時接続する最大数を設定します。sql.pool.max-pool-sizeに指定した値×ParticipantのPodのレプリカの最大数※より大きい値を指定してください。

sql.pool.max-pool-sizeについては、「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

注※

スケーリング対応機能を使用しない場合は1、スケーリング対応機能を使用する場合はオートスケール用HPAのKubernetesマニフェストに指定した「スケールアウトできる最大のPod数」です。

(2)　接続するユーザに付与する権限

HMP-PCTOがRDBMSに接続する際のユーザに、次に示す権限を付与してください。詳細については、SQL Serverのマニュアルを参照してください。

SqlJDBCXAUserロール

9.4.3　HiRDB（SQL-Participant限定）

(1)　パラメタ

HiRDBを使用する際に必要なパラメタは、HMP-PCTOのパラメタではなく、HiRDBのサーバ側のサーバ定義のオペランドです。HMP-PCTOを意識して設定してください。

表9‒32　HiRDBのサーバ定義のオペランド

オペランド

説明

pd_max_users

HiRDBに同時接続する最大数を設定します。sql.pool.max-pool-sizeに指定した値×ParticipantのPodのレプリカの最大数※より大きい値を指定してください。

sql.pool.max-pool-sizeについては、「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

注※

スケーリング対応機能を使用しない場合は1、スケーリング対応機能を使用する場合はオートスケール用HPAのKubernetesマニフェストに指定した「スケールアウトできる最大のPod数」です。

また、HiRDBサーバと接続するために、HiRDBのクライアント環境定義ファイル（HiRDB.ini）を作成する必要があります。HiRDBサーバに接続し、データベースを更新するために必要な定義を次に示します。

表9‒33　HiRDBのクライアント環境定義

クライアント環境定義

説明

PDHOST

接続するHiRDBサーバのホスト名を設定してください。

PDNAMEPORT

接続するHiRDBサーバのポート番号を設定してください。

PDSRVTYPE

接続するHiRDBサーバのサーバ種別を設定してください。

PDCONTYPE

HiRDBの接続時の接続方式を設定します。

ACTIVEを指定してください。

PDUSER

認可識別子およびパスワードを設定してください。

PDSWAITTIME

HiRDBサーバがHiRDBクライアントからの要求に対する応答を返してから、次にHiRDBクライアントから要求が来るまでのHiRDBサーバの最大待ち時間を設定します。

HiRDBを使用する場合、トランザクションタイムアウト時間をSQL-Participantから設定できないため、このパラメタの設定が必要です。トランザクションブランチの処理時間（業務要件）に応じたタイマ監視時間のsql.transaction-termination.timeout-in-millisパラメタより大きい値を指定してください。

HiRDBのサーバ定義およびHiRDBのクライアント環境定義の各定義のデフォルト値などを含めた詳細については、マニュアル「HiRDB システム定義」を参照してください。

(2)　接続するユーザに付与する権限

HMP-PCTOがRDBMSに接続する際のユーザに、次に示す権限を付与してください。詳細については、HiRDB のマニュアルを参照してください。

CONNECT権限

9.4.4　Oracle Database（SQL-Participant限定）

(1)　パラメタ

Oracle Databaseを使用する際に必要なパラメタは、HMP-PCTOのパラメタではなく、Oracle Databaseのサーバ側のパラメタです。HMP-PCTOを意識して設定してください。各パラメタのデフォルト値など含めた詳細については、Oracle Databaseのマニュアルを参照してください。

表9‒34　Oracle Databaseのパラメタ

パラメタ

説明

SESSIONS

Oracle Databaseに同時接続する最大数を設定します。sql.pool.max-pool-sizeに設定した値×ParticipantのPodのレプリカの最大数※に指定した値より大きい値を指定してください。

詳細については、「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

注※

スケーリング対応機能を使用しない場合は1、スケーリング対応機能を使用する場合はオートスケール用HPAのKubernetesマニフェストに指定した「スケールアウトできる最大のPod数」です。

(2)　接続するユーザに付与する権限

HMP-PCTOがRDBMSに接続する際のユーザに、次に示す権限を付与してください。詳細については、Oracle Databaseのマニュアルを参照してください。

SYS.DBA_PENDING_TRANSACTIONSのSELECT権限

FORCE ANY TRANSACTION権限

9.5　TP1連携時の連携先OpenTP1に設定が必要なパラメタ（通常版かつTP1-Bridge限定）

TP1連携機能を使用する際に必要なパラメタは、HMP-PCTOのパラメタではなく、連携先のOpenTP1の次の定義のオペランドです。HMP-PCTOを意識して設定してください。

rapリスナーサービス定義

システム共通定義

トランザクションサービス定義

ユーザサービス定義

各定義のオペランドのデフォルト値などを含めた詳細については、マニュアル「OpenTP1 システム定義」を参照してください。

9.5.1　rapリスナーサービス定義（通常版かつTP1-Bridge限定）

連携先のOpenTP1のrapリスナーサービス定義に設定が必要なオペランドを次に示します。

表9‒35　連携先のOpenTP1のrapリスナーサービス定義のオペランド

オペランド

説明

rap_listen_port

rapリスナーのポート番号を設定します。

TP1-Bridgeのtp1.cltj.dcrapportの設定値と同じ値を指定してください。

rap_recovery_serve

XAリソースサービスを使用する場合、クライアントからのリカバリ要求用待機rapサーバ数を設定します。

rapサーバに接続するTP1-Bridgeのpod数を指定してください。

rap_parallel_server

rapサーバ数を設定します。

rap_recovery_serverの設定値に、次の値を加算した値以上の値を設定してください。

TP1-Bridgeのtp1.pool.maxPoolSizeの設定値

なお、複数のTP1-Bridgeから同じrapリスナー経由でrapサーバに接続する場合は、rap_recovery_serverの設定値に、次の値を加算した値以上の値を設定してください。

各TP1-Bridgeのtp1.pool.maxPoolSizeの設定値の合計

rap_connection_assign_type

ダイナミックコネクションスケジュール機能を使用するかどうかを設定します。

TP1-Bridgeでの常設コネクションのスケジュール方法は、スタティックコネクションスケジュールモードを前提としているため、staticを指定してください。

9.5.2　システム共通定義（通常版かつTP1-Bridge限定）

連携先のOpenTP1のシステム共通定義に設定が必要なオペランドを次に示します。

表9‒36　連携先のOpenTP1のシステム共通定義のオペランド

オペランド

説明

rpc_max_message_size

RPCコールで送受信できるメッセージ（ユーザ電文）の最大長を設定します。

TP1-Bridgeのtp1.cltj.dccltrpcmaxmsgsizeの設定値と同じ値を指定してください。

このパラメタの設定値を変更する場合は、TP1-Bridgeのserver.tomcat.maxSwallowSizeの設定値が、APがTP1-Bridgeに送信するリクエストボディの最大サイズ以上の値となっているか見直してください。

9.5.3　トランザクションサービス定義（通常版かつTP1-Bridge限定）

連携先のOpenTP1のトランザクションサービス定義に設定が必要なオペランドを次に示します。

表9‒37　連携先のOpenTP1のトランザクションサービス定義のオペランド

オペランド

説明

trn_xar_use

XAリソースサービスを使用するかどうかを設定します。

XAリソースサービスを使用するため、Yを指定してください。

9.5.4　HMP-PCTOのトランザクションに参加するSPPのユーザサービス定義（通常版かつTP1-Bridge限定）

連携先のOpenTP1のHMP-PCTOのトランザクションに参加するSPPのユーザサービス定義に設定が必要なオペランドを次に示します。

表9‒38　連携先のOpenTP1のユーザサービス定義のオペランド

オペランド

説明

atomic_update

サービスグループのプロセスでトランザクションを発生させるかどうかを設定します。

トランザクションの範囲に入れるため、Yを指定してください。

9.6　uCosminexus Application Serverに設定が必要なTP1-Converterのパラメタ（通常版かつTP1-Bridge限定）

TP1-Converterのパラメタは、次の2つのファイルに設定してください。

uCosminexus Application Serverのusrconf.properties（J2EEサーバ用ユーザプロパティファイル）

uCosminexus Application Serverのusrconf.cfg（J2EEサーバ用オプション定義ファイル）

jp.co.Hitachi.soft.hmppctoのパラメタ以外は、uCosminexus Application Serverのパラメタです。uCosminexus Application Serverのパラメタの詳細については、マニュアル「Cosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。

ファイルの格納場所は、「/opt/Cosminexus/CC/server/usrconf/ejb/TP1Converter/」です。

9.6.1　usrconf.properties（通常版かつTP1-Bridge限定）

(1)　jp.co.Hitachi.soft.hmppctoのパラメタ

パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表9‒39　usrconf.propertiesのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

tp1.data-conversion.definition-file.directory

データ変換で使用する定義ファイルを格納するディレクトリの絶対パス名を設定してください。

String

−

なし

必ず設定してください。

（凡例）−：該当しません。

(2)　webserver.connectorのパラメタ

表9‒40　usrconf.propertiesのwebserver.connectorのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

webserver.connector.nio_http.max_threads

TP1-Bridgeのデータ変換機能を実行するリクエスト処理スレッドの最大数を設定します。

トランザクションの同時実行数+1以上の値を設定してください。+1は、キャッシュの参照およびリフレッシュの実行で使用される分です。

複数のTP1-Bridgeが同一のTP1-Converterを使用する場合は、それぞれのTP1-Bridgeのトランザクションの同時実行数の合計+1以上の値を設定してください。

uCosminexus Application Serverの仕様に依存します。

webserver.connector.nio_http.max_servlet_execute_threads

webserver.connector.nio_http.max_threadsのうち、Webコンテナが同期サーブレットを実行するスレッドの最大数を設定します。

TP1-Converterは、同期サーブレットとして実装されています。そのため、webserver.connector.nio_http.max_threadsと同じ値を設定してください。

webserver.connector.nio_http.port

TP1-Bridgeのデータ変換機能に対するリクエストを受信するuCosminexus Application ServerのNIO HTTPサーバのポート番号を設定します。

TP1-Bridgeのconverter.portと同じ値を設定してください。

webserver.connector.nio_http.limit.max_request_body

HTTPリクエストのリクエストボディの最大サイズを設定します。

上限値なしを意味する-1（デフォルト値）を設定してください。

(3)　ejbserver.applicationのパラメタ

表9‒41　usrconf.propertiesのejbserver.applicationのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

ejbserver.application.userlog.loggers

TP1-Converterがメッセージの出力に使用するロガーを設定します。

「jp.co.Hitachi.soft.hmppcto.converter」を設定してください。

uCosminexus Application Serverの仕様に依存します。

ejbserver.application.userlog.Logger.jp.co.Hitachi.soft.hmppcto.converter.handlers

ロガーが使用するハンドラを設定します。

「com.hitachi.software.ejb.application.userlog.CJMessageFileHandler;conf1」を設定してください。

ejbserver.application.userlog.CJLogHandler.conf1.level

ハンドラが出力するメッセージのレベルを設定します。

「INFO」を設定してください。

ejbserver.application.userlog.Logger.jp.co.Hitachi.soft.hmppcto.converter.level

ロガーが出力するメッセージのレベルを設定します。

「INFO」を設定してください。

9.6.2　usrconf.cfg（通常版かつTP1-Bridge限定）

(1)　addのパラメタ

表9‒42　usrconf.cfgのaddのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

add.class.path

uCosminexus Application Serverのデータ変換APIのライブラリの絶対パス名を設定します。

「/opt/Cosminexus/CSC/lib/cscdt_api.jar」を設定してください。

uCosminexus Application Serverの仕様に依存します。

10　メッセージ

10.1　メッセージの概要

10.1.1　メッセージの記述形式

メッセージログの記述形式を記載します。

KFSGN₁N₂N₃N₄N₅-X (Y)

メッセージテキスト

メッセージの説明や要因コードなど、個別出力項目の説明を示します。

(Ｓ)システムの動作を示します。

(Ｏ)オペレータの処置を示します。

〔対策〕

システム管理者の処置を示します。

メッセージ中の、オペレータの処置、または対策で「保守員に連絡してください。」とは、購入時の契約に基づいて、システム管理者が当社問い合わせ窓口へ連絡することを示します。

メッセージIDの各項目についての説明を記載します。

KFSG：メッセージプレフィックス

N₁N₂N₃N₄N₅：コード

X：インジケータ

メッセージのレベルを表します。インジケータの表記と、対応するログレベル、内容を次の表に示します。

表10‒1　インジケータの表記と対応する内容

表記

ログレベル

内容

E

ERROR

稼働に支障のあるメッセージです。

参考例

環境設定、パラメタ誤りによって稼働できない

稼働に支障のある障害発生

W

WARN

継続稼働しますが、注意が必要なメッセージです。

参考例

環境設定、パラメタ誤りのうち継続稼働可能なケースの警告

メモリの使用状況などの警告

ロールバックの通知

I

INFO

稼働状況変化（正常動作）を示すメッセージです。

参考例

起動、終了

Y：出力先

メッセージログの出力先を示します。複数の出力先に出力する場合は、複数記載します。

表10‒2　メッセージログの出力先

表記

出力先

M

標準出力（標準エラー出力を含む）

J

例外メッセージ

ユーザ責務のKubernetesアプリケーションのユーザコーディング処理に例外の詳細メッセージとして渡します。

D

Kubernetesのイベントリソース※1

C

TP1-Converterが出力するuCosminexus Service PlatformのJ2EEアプリケーションのユーザログ※2

注※1

KubernetesのコマンドでKubernetesのイベントリソースへ出力されたメッセージログを参照できるのは、コンテナのライフサイクルイベントで実行した処理がエラー終了した場合だけです。コンテナのライフサイクルイベントで実行した処理が正常終了した場合は、KubernetesのコマンドでKubernetesのイベントリソースを参照してもメッセージログはありません。

注※2

uCosminexus Service PlatformのJ2EEアプリケーションのユーザログは、「xxuser_log.log」のファイル名で次のディレクトリに出力されます。なお、ファイル名のxxは、1から16の整数です。

/opt/Cosminexus/CC/server/public/ejb/TP1Converter/logs/user

10.1.2　メッセージ系統

メッセージIDはコードごとに系統が分かれています。メッセージの系統を次の表に示します。

表10‒3　メッセージ系統

メッセージコード

メッセージの系統

00001〜09999

不使用

10000〜19999

不使用

20000〜29999

不使用

30000〜39999

不使用

40000〜49999

不使用

50000〜59999

不使用

60000〜69999

エラーメッセージ全般、警告メッセージも含む

70000〜79999

トラブルシュート機能のメッセージ

80000〜89999

正常に動作しているときのメッセージ

90000〜99999

コマンド実行時のメッセージ

10.1.3　メッセージの説明

(1)　メッセージテキストの形式

メッセージテキストは英文です。次の形式が基本となります。

メッセージ主文 (詳細情報名 = 詳細情報, 詳細情報名 = 詳細情報...)

【メッセージテキスト例】

The aaa server ended abnormally. (information 1 = aa....aa, information 2 = bb....bb, information 3 = cc....cc)

詳細情報は動的にテキストとして埋め込まれます。

(2)　詳細情報の出力要否

障害発生時には、値が取得可能な場合、次の情報を詳細情報として出力します。

ブランチXID(未採番の場合はルートXID)：分散トレースとの紐づけに使用します。Base64エンコードした値を出力します。

【メッセージテキスト例】

Test message. (branchxid = aa....aa)

aa....aa：ブランチXID

Test message. (rootxid = aa....aa)

aa....aa：ルートXID

次の情報は、メッセージログ出力処理で付与するため、詳細情報での出力は不要です。

出力日時

ログレベル

ホスト名

スレッド名

クラス名

プロセスID

(3)　例外の扱い

処理中に例外をthrowする場合、次のとおりメッセージを出力します。

新規に例外オブジェクトを作成（例：throw new Exception("KSFG10001-E test message.");）し、ユーザの対処が必要な例外詳細メッセージを付与する場合、KFSG64001-Eメッセージを出力します。

初回に異常系の例外をthrowする場合、java.lang.Throwable.printStackTrace()でスタックトレースを出力します。スタックトレース出力はメッセージ出力method内で実行します。

(4)　記載例KFSG10000の場合

メッセージの記載例を次に示します。

KFSG10000-E (Y)M

The aaa server ended abnormally. (information 1 = aa....aa, information 2 = bb....bb)

aaaサーバを異常終了します。

aa....aa：情報1

bb....bb：情報2

(Ｓ)aaaサーバを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

xxxメッセージログファイルにこのメッセージが出力された場合

aaaaaaaaコマンドを実行してトラブルシュート情報を取得してから、保守員に連絡してください。

yyyメッセージログファイルにこのメッセージが出力された場合

yyyのバックアップを取得してから、保守員に連絡してください。

(5)　メッセージで出力するパラメタ名の形式

メッセージ中のパラメタ名はケバブケースで出力します。

パラメタがMediatorのパラメタの場合はキャメルケースに置き換えてパラメタの確認を行ってください。

例：(parameter = jp.co.Hitachi.soft.participant.sender.queue-size)

(parameter = jp.co.Hitachi.soft.participant.sender.queue-size)の場合、キャメルケースでのパラメタ名はパッケージ名"jp.co.Hitachi.soft"を除いた"participant.sender.queueSize"となります。

10.2　メッセージ一覧

10.2.1　KFSG60000〜KFSG69999

KFSG60000〜KFSG69999のメッセージを次に示します。

KFSG60000-E (Y)M

Transaction control failed to access the Resource Manager. (branchxid = aa....aa, information 1 = bb....bb, information 2 = cc....cc, information 3 = dd....dd, information 4 = ee....ee, information 5 = ff....ff)

リソースマネージャへのトランザクションマネージャのアクセスが失敗しました。

aa....aa：ブランチXID

bb....bb：エラーが発生したリソースマネージャへのアクセス処理の種別

cc....cc：リソースマネージャが返却したエラーコード

dd....dd：接続先リソースマネージャのリソースマネージャ名

指定されていない場合は*

ee....ee：接続先リソースマネージャのサーバ名

指定されていない場合は*

ff....ff：接続先リソースマネージャのポート番号

指定されていない場合は*

(Ｓ)処理の種別が004の場合、スケーリング対応機能が無効なときは、Participantの起動を中止します。スケーリング対応機能が有効なときは、処理を継続します。

処理の種別が004以外の場合、Participantのトランザクションブランチ処理を中断し、Participantはサービス閉塞します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

処理の種別が004の場合、リソースマネージャで異常が発生していないか確認してください。リソースマネージャの異常を取り除いたあと、Participantを起動または再起動してください。

それ以外の場合、リソースマネージャのデータの整合性を確認してデータ修復後、Participantのサービス閉塞を解除するため再起動してください。解決しない場合は、保守員に連絡してください。

KFSG60001-E (Y)M

The gRPC server failed to start. (parameter name = aa....aa)

gRPCサーバの起動に失敗しました。

aa....aa：エラーが発生したポート番号のパラメタ名

jp.co.Hitachi.soft.hmppcto.grpc.port

(Ｓ)gRPCサーバの起動処理を終了します。

(Ｏ)直後に出力するスタックトレースを参照し、gRPCサーバが起動しなかった要因を除いたあと、Podを再起動してください。

〔対策〕

なし。

KFSG60002-E (Y)M

An error occurred in the initialization of the Participant.

Participantの初期化時にエラーが発生しました。

(Ｓ)Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

リソースマネージャで異常が発生していないか確認してください。このメッセージの直前に出力されたメッセージを参照して原因を取り除き、Participantを再起動してください。解決しない場合は、保守員に連絡してください。

KFSG60003-W (Y)M

Transaction control failed to access the Resource Manager. (branchxid = aa....aa, information 1 = bb....bb, information 2 = cc....cc, information 3 = dd....dd, information 4 = ee....ee, information 5 = ff....ff)

リソースマネージャへのトランザクションマネージャのアクセスが失敗しました。

aa....aa：ブランチXID

トランザクション処理以外からのアクセスの場合は*

bb....bb：エラーが発生したリソースマネージャへのアクセス処理の種別

cc....cc：リソースマネージャが返却したエラーコード

dd....dd：接続先リソースマネージャのリソースマネージャ名

指定されていない場合は*

ee....ee：接続先リソースマネージャのサーバ名

指定されていない場合は*

ff....ff：接続先リソースマネージャのポート番号

指定されていない場合は*

(Ｓ)エラーが発生したリソースマネージャへのアクセス処理の種別が001または005の場合はParticipantのトランザクションブランチをロールバックします。それ以外の場合はParticipantのトランザクションブランチ処理を続行します。

コミットまたはロールバック処理でこのメッセージが出力された場合、コミットまたはロールバックのリトライを開始します。リトライ中は同じメッセージの出力を60秒間抑止します。コミットまたはロールバックが成功すると、KFSG80007-IメッセージまたはKFSG80008-Iメッセージを出力します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

エラーコードが-7の場合はリソースマネージャが起動しているか確認し、起動していなければ起動してください。ネットワーク障害が発生している場合は原因を特定し対策してください。jp.co.Hitachi.soft.hmppcto.sql.db-typeパラメタにPostgreSQLを指定している場合はPostgreSQLのmax_prepared_transactionsパラメタの値を確認してください。

エラーが発生したリソースマネージャへのアクセス処理の種別が001または005の場合は、リソースマネージャで例外が発生しましたが、ロールバック処理を続行するため対策は不要です。

上記以外の場合は保守員に連絡してください。

KFSG60006-E (Y)M

The specified property cannot be set. (property name = aa....aa)

指定したプロパティは設定できません。

aa....aa：プロパティ名

(Ｓ)SQL-Participantの起動処理を中止します。

(Ｏ)jp.co.Hitachi.soft.hmppcto.sql.datasource.class-nameパラメタで指定したデータソースは、プロパティ名のプロパティをサポートしていません。jp.co.Hitachi.soft.hmppcto.sql.datasource.property.valuesパラメタに指定したプロパティ名を見直してください。そのあと、Podを再起動してください。

〔対策〕

なし。

KFSG60007-E (Y)M

An error occurred in the processing to set the transaction timeout for the database. (transaction timeout = aa....aa)

データベースのトランザクションタイムアウトの設定でエラーが発生しました。

aa....aa：トランザクションタイムアウトの値（jp.co.Hitachi.soft.hmppcto.sql.pool.transaction-timeout-in-secondsパラメタ）

(Ｓ)SQL-Participantの起動処理を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

出力した値がデータベースで有効かどうかを確認し値を見直してください。有効である場合は、直後に出力されるスタックトレースを参考に、データベースで異常が発生していないか確認してください。データベースの異常を取り除いたあと、Podを再起動してください。解決しない場合は、保守員に連絡してください。

KFSG60008-E (Y)M

An error occurred in the processing to set properties for the data source. (property name = aa....aa)

データソースにプロパティを設定するときにエラーが発生しました。

aa....aa：設定しようとしたプロパティ名称

(Ｓ)SQL-Participantの起動処理を中止します。

(Ｏ)直後に出力するスタックトレースを参照し、jp.co.Hitachi.soft.hmppcto.sql.datasource.property.valuesパラメタに指定した値を見直してください。そのあと、Podを再起動してください。

〔対策〕

なし。

KFSG60009-W (Y)M

An error occurred in the processing to release the database connection. (information 1 = aa....aa, information 2 = bb....bb, information 3 = cc....cc)

データベース接続の解放でエラーが発生しました。

aa....aa：接続先データベースのデータベース名。指定されていない場合は*

bb....bb：接続先データベースのサーバ名。指定されていない場合は*

cc....cc：接続先データベースのポート番号。指定されていない場合は*

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

データベースが起動していない場合は起動してください。ネットワーク障害が発生している場合は障害原因を取り除いてください。そのあと、データベースを確認し、SQL-Participantとの接続数がjp.co.Hitachi.soft.hmppcto.sql.pool.max-pool-sizeパラメタを超えている場合、データベースを再起動してください。解決しない場合は、保守員に連絡してください。

KFSG60010-W (Y)M+J

A new transaction branch cannot be started because the Participant is blocked. (branchxid = aa....aa, information = bb....bb)

Participantが閉塞しているため新規トランザクションブランチの開始はできません。

aa....aa：ブランチXID

bb....bb：サービス閉塞したParticipantの識別子

SQL-Participantを使用する場合：ラベル「app.kubernetes.io/name」に指定した値

TP1-Bridgeを使用する場合：labels.appKubernetesIoNameパラメタに指定した値

(Ｓ)アプリケーションからの要求を無視して処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージの直前に出力されたKFSG60014-Eメッセージを参照して原因を取り除き、Podを再起動してください。解決しない場合は保守員に連絡してください。

KFSG60011-E (Y)M+J

The transaction branch could not be started. (branchxid = aa....aa, information 1 = bb....bb, information 2 = cc....cc, information 3 = dd....dd, information 4 = ee....ee)

Participantのトランザクションブランチを開始できません。

aa....aa：ブランチXID

bb....bb：リソースマネージャが返却したエラーコードを示します。

cc....cc：接続先リソースマネージャのリソースマネージャ名

指定されていない場合は*

dd....dd：接続先リソースマネージャのサーバ

指定されていない場合は*

ee....ee：接続先リソースマネージャのポート番号

指定されていない場合は*

(Ｓ)アプリケーションからの要求を無視してトランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

エラーコードが-7の場合はリソースマネージャが起動しているか確認し、起動していなければ起動してください。ネットワーク障害が発生している場合は原因を特定し対策してください。解決しない場合は保守員に連絡してください。

KFSG60012-W (Y)M+J

The transaction branch has already been run. (branchxid = aa....aa)

ParticipantのトランザクションブランチはPrepare実行済みです。

aa....aa：ブランチXID

(Ｓ)アプリケーションからの要求を無視して処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

ユーザアプリケーションの処理を見直してください。解決しない場合は、保守員に連絡してください。

KFSG60013-W (Y)M+J

There are insufficient connections to between the Resource Manager stored in the connection pool. (branchxid = aa....aa)

コネクションプールに保管しているリソースマネージャとの間のコネクションが不足しました。

aa....aa：ブランチXID

(Ｓ)アプリケーションからの要求を無視して処理を続行します。

スケーリング対応機能が有効な場合は、未決着トランザクションのRecoveryを終了し処理を続行します。そのあと、jp.co.Hitachi.soft.hmppcto.recover.interval-in-millisパラメタに設定した間隔で、再度未決着トランザクションのRecoveryを実行します。

(Ｏ)次のパラメタの値を見直し、必要であれば再起動してください。

SQL-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.sql.pool.max-pool-size

TP1-Bridgeを使用する場合：tp1.pool.maxPoolSize

〔対策〕

なし。

KFSG60014-E (Y)M

The Participant has been blocked. (branchxid = aa....aa, information = bb....bb)

Participantが閉塞しました。

aa....aa：ブランチXID

bb....bb：サービス閉塞したParticipantの識別子

SQL-Participantを使用する場合：ラベル「app.kubernetes.io/name」に指定した値

TP1-Bridgeを使用する場合：labels.appKubernetesIoNameパラメタに指定した値

(Ｓ)Participantは新規にトランザクションブランチを開始しません。仕掛中のParticipantのトランザクションブランチはロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージに先行して出力されるKFSG60000-Eメッセージ、KFSG60034-EメッセージまたはKFSG60035-Eメッセージに従い対処してください。

KFSG60015-W (Y)M

The transaction termination timer timed out. (branchxid = aa....aa, transaction termination timeout = bb....bb)

トランザクション決着監視タイマがタイムアウトしました。

aa....aa：ブランチXID

bb....bb：トランザクション決着監視タイマの値

SQL-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millisの値

TP1-Bridgeを使用する場合：tp1.transactionTermination.timeoutInMillisの値

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

ログや分散トレースを参照し、タイムアウトの原因となっている問題点があるかどうか確認し、確認結果に従い対応してください。

トランザクション決着監視タイマのタイマ監視時間のパラメタの値が十分な値になっていないおそれがあります。「3.12.2　タイマ」を参照し、タイマのチューニングパラメタの指定値を見直してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG60016-E (Y)M

A heuristic error occurred in the commit processing. (branchxid = aa....aa, errorCode = bb....bb, learninglog = cc....cc)

Commit処理でヒューリスティックエラーが発生しました。

aa....aa：ブランチXID

bb....bb：リソースマネージャが返却したエラーコード

cc....cc：LearningLogの情報（MediatorのIP、Mediatorのポート番号、投票結果、ログ作成時刻）

(Ｓ)Commit処理を終了し、サービス閉塞を行います。

(Ｏ)システム管理者に連絡してください。

〔対策〕

リソースマネージャで異常が発生していないか確認してください。リソースマネージャの異常を取り除いたあと、Participantを再起動してください。解決しない場合は、保守員に連絡してください。

KFSG60017-E (Y)M

A heuristic error occurred in the rollback processing. (branchxid = aa....aa, errorCode = bb....bb, learninglog = cc....cc)

Rollback処理でヒューリスティックエラーが発生しました。

aa....aa：ブランチXID

bb....bb：リソースマネージャが返却したエラーコード

cc....cc：LearningLogの情報（MediatorのIP、Mediatorのポート番号、投票結果、ログ作成時刻）

(Ｓ)Rollback処理を終了し、サービス閉塞を行います。

(Ｏ)システム管理者に連絡してください。

〔対策〕

リソースマネージャで異常が発生していないか確認してください。リソースマネージャの異常を取り除いたあと、Participantを再起動してください。解決しない場合は、保守員に連絡してください。

KFSG60018-W (Y)M+J

The transaction branch has not been started. (branchxid = aa....aa)

Participantのトランザクションブランチは開始していません。

aa....aa：ブランチXID

(Ｓ)次のどれかの状態のため、アプリケーションからの該当するトランザクションブランチに対する要求に対してエラー応答して、処理を続行します。

Participantの再起動によってトランザクションブランチの情報が破棄された状態

先行プリペア機能によるプリペア処理で、リソースマネージャとの接続障害などのエラーが発生し、リソースマネージャとのコネクションが使用できない状態

トランザクションのキャンセル指示、トランザクション決着監視タイマのタイムアウト、またはトランザクション分散合意リプレイインターバルタイマのタイムアウトによるロールバック処理で、リソースマネージャとの接続障害などのエラーが発生し、リソースマネージャとのコネクションが使用できない状態

トランザクションのキャンセル指示、トランザクション決着監視タイマのタイムアウト、またはトランザクション分散合意リプレイインターバルタイマのタイムアウトによるロールバック処理で、ロールバックが成功し、リソースマネージャとのコネクションの使用を終了した状態

(Ｏ)必要ありません。

〔対策〕

新しいトランザクションブランチとして、アプリケーションからのSQLを再実行してください。

KFSG60019-E (Y)M

An invalid state was detected in a transaction branch. (branchxid = aa....aa)

Participantのトランザクションブランチで不正な状態を検知しました。

aa....aa：ブランチXID

(Ｓ)このメッセージのあとにKFSG60002-Eメッセージが出力された場合は、Participantを起動しません。KFSG60024-Eメッセージが出力された場合は、トランザクション決着を中止します。それ以外の場合はロールバックとして処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージが出力される場合はParticipantとして問題が発生しているため、保守員に連絡してください。

KFSG60020-E (Y)M

An invalid state was detected in a transaction branch. (branchxid = aa....aa, consensus type = bb....bb)

Participantのトランザクションブランチで不正な状態を検知しました。

aa....aa：ブランチXID

bb....bb：合意種別。"Commit"または"Rollback"。

(Ｓ)トランザクション決着を中止して処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージが出力される場合はParticipantとして問題が発生しているため、保守員に連絡してください。

KFSG60021-E (Y)M

An error occurred in the replay processing of the transaction termination timer. (branchxid = aa....aa)

トランザクション決着監視タイマのReplay投票処理でエラーが発生しました。

aa....aa：ブランチXID

(Ｓ)Replay投票をスキップします。そのあと、トランザクション分散合意リプレイインターバルタイマによって再投票が行われます。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージが出力される場合はParticipantとして問題が発生しているため、保守員に連絡してください。

KFSG60022-E (Y)M

An error occurred in the replay processing of the transaction distributed-consensus replay interval timer. (branchxid = aa....aa)

トランザクション分散合意リプレイインターバルタイマのReplay投票処理でエラーが発生しました。

aa....aa：ブランチXID

(Ｓ)Replay投票をスキップします。そのあと、トランザクション分散合意リプレイインターバルタイマによって再投票が行われます。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージが出力される場合はParticipantとして問題が発生しているため、保守員に連絡してください。

KFSG60023-E (Y)M

An error occurred in the initialization processing of the timer. (information = aa....aa)

タイマ制御機能の初期化処理でエラーが発生しました。

aa....aa：保守情報

お問い合わせの際に連絡してください。

(Ｓ)Participantの起動処理を中止します。

(Ｏ)直後に出力するスタックトレースを参照し、要因を除いたあと、Podを再起動してください。

〔対策〕

なし。

KFSG60024-E (Y)M

The transaction branch could not be settled. (rootxid = aa....aa)

Participantのトランザクションブランチの決着を行えませんでした。

aa....aa：ルートXID

(Ｓ)トランザクション決着処理を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージが出力される場合はParticipantとして問題が発生しているため、保守員に連絡してください。

KFSG60025-W (Y)M

The Participant is not running yet.

Participantが起動状態になっていません。

(Ｓ)要求を無視します。

(Ｏ)このメッセージより前に出力されているKFSG60001-Eメッセージを参照し、要因を除いたあと、Podを再起動してください。

〔対策〕

なし。

KFSG60026-W (Y)M

Transaction control failed to access the Resource Manager. (branchxid = aa....aa, information 1 = bb....bb, information 2 = cc....cc, information 3 = dd....dd, information 4 = ee....ee, information 5 = ff....ff)

リソースマネージャへのトランザクションマネージャのアクセスが失敗しました。

aa....aa：ブランチXID

トランザクション処理以外からのアクセスの場合は*

bb....bb：エラーが発生したリソースマネージャへのアクセス処理の種別

cc....cc：リソースマネージャが返却したエラーコード

dd....dd：接続先リソースマネージャのデータベース名

指定されていない場合は*

ee....ee：接続先リソースマネージャのサーバ名

指定されていない場合は*

ff....ff：接続先リソースマネージャのポート番号

指定されていない場合は*

(Ｓ)トランザクション完了通知の送信処理を中止します。ParticipantがMediatorからのトランザクション完了確認通知を受信すると、中止したトランザクション完了通知の送信処理をします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

エラーコードが-7の場合はリソースマネージャが起動しているか確認し、起動していなければ起動してください。ネットワーク障害が発生している場合は原因を特定し対策してください。それ以外の場合は保守員に連絡してください。

KFSG60027-E (Y)M

An error occurred in the processing to communicate with the participant. (service name = aa....aa, pod hostname = bb....bb, pod IP address = cc....cc)

Participantへの通信処理でエラーが発生しました。

aa....aa：Participantのドメイン名（Participant情報取得前の場合は*）

bb....bb：ParticipantのPodのホスト名（Participant情報取得前の場合は*）

cc....cc：ParticipantのPodのIPアドレス（Participant情報取得前の場合は*）

(Ｓ)Participantへの通信処理を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

ホスト名からIPアドレスの解決ができない状態のため、直後に出力するスタックトレースを参照し、要因を取り除いたあと、Mediatorを再起動してください。解決しない場合は、保守員に連絡してください。

KFSG60028-W (Y)M

The number of proposal log entries has exceeded the threshold. (threshold = aa....aa, proposal log size = bb....bb)

Proposal Logの件数が閾値を超えました。

aa....aa：jp.co.Hitachi.soft.hmppcto.mediator.judge.proposal-log-limit-numパラメタの値

bb....bb：閾値を超えた時のProposal Logの件数

(Ｓ)トランザクションが完了済みのProposal Logを削除します。トランザクションが完了していないProposal LogはParticipantへトランザクション完了確認通知を送信し、トランザクションの完了を確認します。

(Ｏ)このメッセージが頻繁に出力される場合は、jp.co.Hitachi.soft.hmppcto.mediator.judge.proposal-log-limit-numパラメタの値を見直してください。

〔対策〕

なし。

KFSG60029-W (Y)M+J

The SQL statement could not be executed, because the transaction termination timer timed out and rollback processing was performed. (branchxid = aa....aa, information 1 = bb....bb)

トランザクション決着監視タイマのタイムアウトによりロールバックしたためSQLを実行できません。

aa....aa：ブランチXID

bb....bb：保守情報

お問い合わせの際に連絡してください。

(Ｓ)SQLを実行せずParticipantのトランザクションブランチをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

KFSG62014-Wメッセージが出力されていないか確認してください。出力されている場合は、KFSG62014-Wメッセージに従って対策してください。出力されていない場合は、保守員に連絡してください。

KFSG60030-W (Y)M+J

Failed to obtain connection to database. (branchxid = aa....aa)

データベースとのコネクション取得に失敗しました。

aa....aa：ブランチXID

(Ｓ)アプリケーションからの要求の場合、要求を無視して処理を続行します。リトライはしません。

コミットまたはロールバック処理でこのメッセージが出力された場合、コミットまたはロールバックのリトライを開始します。リトライ中は同じメッセージの出力を60秒間抑止します。コミットまたはロールバックが成功すると、KFSG80007-IメッセージまたはKFSG80008-Iメッセージを出力します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

データベースが起動しているか確認してください。データベースが起動している場合は、直後に出力されるスタックトレースを参考に、データベースで異常が発生していないか確認してください。

KFSG60031-E (Y)M

Failed to obtain connection to database.

データベースとのコネクション取得に失敗しました。

(Ｓ)SQL-Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

データベースが起動しているか確認してください。データベースが起動している場合は、直後に出力されるスタックトレースを参考に、データベースで異常が発生していないか確認してください。必要に応じてデータソースの接続情報を確認してください。

KFSG60032-W (Y)M

Failed to obtain connection to database.

データベースとのコネクション取得に失敗しました。

(Ｓ)トランザクション完了通知の送信処理を中止します。SQL-ParticipantがMediatorからのトランザクション完了確認通知を受信すると、中止したトランザクション完了通知の送信処理をします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

データベースが起動しているか確認してください。データベースが起動している場合は、直後に出力されるスタックトレースを参考に、データベースで異常が発生していないか確認してください。

KFSG60033-W (Y)M

There are insufficient connections to between the Resource Manager stored in the connection pool. (branchxid = aa....aa)

コネクションプールに保管しているリソースマネージャとの間のコネクションが不足しました。

aa....aa：ブランチXID

(Ｓ)Commit処理またはRollback処理をリトライします。

(Ｏ)次のパラメタの値を見直し、必要であれば再起動してください。

SQL-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.sql.pool.max-pool-size

TP1-Bridgeを使用する場合：tp1.pool.maxPoolSize

〔対策〕

なし。

KFSG60034-E (Y)M

An internal contradiction was detected. (branchxid = aa....aa, information 1 = bb....bb, information 2 = cc....cc)

内部矛盾を検知しました。

aa....aa：ブランチXID。トランザクション処理以外からのアクセスの場合は*

bb....bb：エラーが発生したリソースマネージャへのアクセス処理の種別

cc....cc：リソースマネージャが返却したエラーコード

(Ｓ)処理の種別が004の場合、スケーリング対応機能が無効なときは、Participantの起動を中止します。スケーリング対応機能が有効なときは、処理を継続します。

処理の種別が004の以外の場合、Participantのトランザクションブランチ処理を中断し、Participantはサービス閉塞します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

保守員に連絡してください。

KFSG60035-E (Y)M

Invalid data was received from the Resource Manager. (branchxid = aa....aa, information 1 = bb....bb, information 2 = cc....cc)

リソースマネージャから不正なデータを受信しました。

aa....aa：ブランチXID。トランザクション処理以外からのアクセスの場合は*

bb....bb：エラーが発生したリソースマネージャへのアクセス処理の種別

cc....cc：リソースマネージャが返却したエラーコード

(Ｓ)処理の種別が004の場合、スケーリング対応機能が無効なときは、Participantの起動を中止します。スケーリング対応機能が有効なときは、処理を継続します。

処理の種別が004の以外の場合、Participantのトランザクションブランチ処理を中断し、Participantはサービス閉塞します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

保守員に連絡してください。

KFSG60036-E (Y)M

An error occurred in the processing to set the transaction timeout for the Resource Manager. Enable the transaction timeout setting on the Resource Manager side. (transaction timeout = aa....aa, information 1 = bb....bb)

リソースマネージャへのトランザクションタイムアウトの設定でエラーが発生しました。リソースマネージャ側のトランザクションタイムアウト設定が有効になります。

aa....aa：トランザクションタイムアウトの値（パラメタjp.co.Hitachi.soft.hmppcto.sql.pool.transaction-timeout-in-seconds）

bb....bb：リソースマネージャが返却したエラーコード

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG60037-E (Y)M

The library file does not exist. (file path = aa....aa)

ライブラリファイルが存在しません。

aa....aa：ライブラリファイルのパス（jp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタに指定したパス）

(Ｓ)Participantの初期化が失敗します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

ライブラリファイルが存在するかどうか、またはjp.co.Hitachi.soft.hmppcto.sql.jdbc.driver.additional-library-pathsパラメタの値が正しいかどうかを確認してください。

KFSG61001-E (Y)M

Initialization of the EADs client failed.

EADSクライアントの初期化に失敗しました。

メッセージの次行からEADSのException情報を出力します。

(Ｓ)Participantの初期化が失敗します。

(Ｏ)Exception情報を確認して対策を行うか、システム管理者に連絡してください。

〔対策〕

Exception情報を確認して、EADSクライアントの初期化失敗要因を取り除いてください。解決しない場合は、保守員に連絡してください。

KFSG61002-E (Y)M

An error occurred in the sending of a gRPC request to the mediator. (host = aa....aa, port = bb....bb, rootxid = cc....cc, information = dd....dd)

MediatorへのgRPC通信の送信でエラーが発生しました。

メッセージの次行からgRPC通信のException情報を出力します。

aa....aa：Mediatorのホスト名またはIPアドレス

bb....bb：Mediatorのポート番号

cc....cc：ルートXID

dd....dd：保守情報

お問い合わせの際に連絡してください。

(Ｓ)トランザクションは、ほかのMediatorとの通信によって処理を継続します。

(Ｏ)Exception情報を確認して対策を行うか、Mediatorなどに問題が発生していないかログおよびトレースを確認してください。

〔対策〕

Exceptionやログ、およびトレースの確認結果に従い対応してください。解決しない場合は、保守員に連絡してください。

KFSG61004-W (Y)M

External consensus failed. (rootxid = aa....aa, consensus value = bb....bb)

補助合意に失敗しました。補助合意は一定時間後にリトライします。

メッセージの次行からEADSのException情報を出力します。

aa....aa：補助合意を行うルートXID

bb....bb：補助合意の提案内容

"Commit"または"Rollback"

(Ｓ)処理を続行します。

(Ｏ)このメッセージが継続して出力される場合は、補助合意用のEADSに問題が発生しているおそれがあるため、システム管理者に連絡してください。

〔対策〕

EADSサーバのログを確認し、マニュアル「Elastic Application Data Store ユーザーズガイド」に従い対応してください。解決しない場合は、保守員に連絡してください。

KFSG61005-W (Y)M

External consensus failed. (rootxid = aa....aa, consensus value = bb....bb, reason = cc....cc)

補助合意に失敗しました。補助合意は一定時間後にリトライします。

aa....aa：補助合意を行うルートXID

bb....bb：補助合意の提案内容

"Commit"または"Rollback"

cc....cc：失敗したREST-APIのHTTPエラーコード

(Ｓ)処理を続行します。

(Ｏ)このメッセージが継続して出力される場合は補助合意用のExt-Consサーバに問題が発生しているおそれがあるため、必要ならばシステム管理者に連絡してください。

〔対策〕

Ext-Consサーバの状態を確認し、必要ならばExt-Consサーバを再起動してください。

KFSG61006-E (Y)M

An error occurred in the processing to create a timer. (parameter = aa....aa)

タイマの作成に失敗しました。

メッセージの次行からException情報を出力します。

aa....aa：タイマの作成に失敗した対象のパラメタ名

(Ｓ)ParticipantまたはMediatorの初期化が失敗します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Exceptionの確認結果に従い対応してください。解決しない場合は、保守員に連絡してください。

KFSG61007-W (Y)M

The timer value was rounded up. (parameter = aa....aa, original value = bb....bb, rounded up value = cc....cc)

タイマ値の切り上げを行いました。

aa....aa：タイマ値の切り上げを行った対象のパラメタ名

bb....bb：タイマ値の切り上げ前の値

cc....cc：タイマ値の切り上げ後の値

(Ｓ)処理を続行します。

(Ｏ)タイマ値の切り上げ後の値が妥当でない場合、パラメタの指定値を見直して変更してください。

〔対策〕

なし。

KFSG61008-E (Y)M

The thread pool queue overflowed. (aa....aa = bb....bb, cc....cc = dd....dd)

スレッドプールのキューあふれが発生しました。

aa....aa：キューあふれが発生したスレッドプールのスレッド数を指定したパラメタ名

bb....bb：キューあふれが発生したスレッドプールのスレッド数を指定したパラメタの値

cc....cc：キューあふれが発生したスレッドプールのスレッド割り当て待ちキューサイズを指定したパラメタ名

dd....dd：キューあふれが発生したスレッドプールのスレッド割り当て待ちキューサイズを指定したパラメタの値

(Ｓ)処理を続行します。

SQL-Participantのスレッドプールの場合：

jp.co.Hitachi.soft.hmppcto.sql.participant-processing.queue-size：トランザクションがロールバック決着します。

jp.co.Hitachi.soft.hmppcto.mediator-communication.queue-size：トランザクション分散合意リプレイインターバルタイマまたはトランザクション決着監視タイマでタイムアウトが発生します。

TCC-Participantのスレッドプールの場合：

jp.co.Hitachi.soft.hmppcto.tcc.participant-processing.queue-size：トランザクションがロールバック決着します。

jp.co.Hitachi.soft.hmppcto.mediator-communication.queue-size：トランザクション分散合意インターバルタイマまたはトランザクション決着監視タイマでタイムアウトが発生します。

TP1-Bridgeのスレッドプールの場合：

jp.co.Hitachi.soft.hmppcto.tp1.participant-processing.queue-size：トランザクションがロールバック決着します。

jp.co.Hitachi.soft.hmppcto.mediator-communication.queue-size：トランザクション分散合意リプレイインターバルタイマまたはトランザクション決着監視タイマでタイムアウトが発生します。

Mediatorのスレッドプールの場合：

SQL-Participant/TP1-Bridgeの場合は、トランザクション分散合意リプレイインターバルタイマまたはトランザクション決着監視タイマでタイムアウトが発生します。TCC-Participantの場合は、トランザクション分散合意インターバルタイマまたはトランザクション決着監視タイマでタイムアウトが発生します。

(Ｏ)スレッドプールのスレッド数およびスレッド割り当て待ちキューサイズのパラメタの指定値を見直し、必要であれば再起動してください。

SQL-Participantのスレッドプールの場合は、SQL-ParticipantがコネクションプールにプールするDBコネクションの数のパラメタ（jp.co.Hitachi.soft.hmppcto.sql.pool.max-pool-size）の指定値も見直してください。

TP1-Bridgeのスレッドプールの場合は、TP1-BridgeがコネクションプールにプールするOpenTP1とのコネクションの数のパラメタ（tp1.pool.maxPoolSize）の指定値も見直してください。

〔対策〕

なし

KFSG61101-E (Y)M

An error occurred in the initialization of the mediator.

Mediatorの初期化時にエラーが発生しました。

(Ｓ)Mediatorを異常終了します。

(Ｏ)このメッセージの前に出力されるメッセージを参照して障害を調査してください。

〔対策〕

なし。

KFSG61102-W (Y)M

Participation in consensus was not possible, because the status of the consensus log file is incorrect. (rootxid = aa....aa)

ConsensusLogの永続化に失敗したため、分散合意に参加しませんでした。

aa....aa：ルートXID

(Ｓ)処理を続行します。

(Ｏ)このメッセージに先行して出力されるKFSG61105-Eメッセージ、KFSG61106-Eメッセージ、KFSG61107-Eメッセージ、またはKFSG61108-Eメッセージに従い対処してください。

〔対策〕

なし。

KFSG61103-E (Y)M

An exception occurred in the warm start processing.

Mediatorの再起動処理で例外が発生しました。

メッセージの次行からException情報を出力します。

(Ｓ)Mediatorの初期化が失敗します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Mediatorの再起動時にConsensusLogファイルの障害で再起動に失敗した場合、Mediatorを再起動するためにはConsensusLogファイルを削除する必要があります。

しかし、ConsensusLogファイルを削除し、該当するMediatorを再起動すると分散合意の一貫性が維持できなくなります。

このため、ConsensusLogファイルを削除してMediatorを再起動しないでください。

再起動時にConsensusLogファイルの読み込みに失敗したMediatorを復旧させたい場合は、Mediatorおよび該当するMediatorと接続して、HMP-PCTOの機能を使用するアプリケーションのPodを停止してから、ConsensusLogファイルを削除してください。そのあと、各Podを再起動してください。

KFSG61104-E (Y)M

Creation of a consensus log file failed. (file name = aa....aa, reason = bb....bb)

ConsensusLogファイルの作成に失敗しました。

aa....aa：ConsensusLogファイル名

bb....bb：ConsensusLogファイルの作成に失敗した理由

disk capacity shortage：ディスクの容量不足

occurred io error：IOエラーが発生

(Ｓ)Mediatorの初期化が失敗します。

(Ｏ)Reasonの内容に従い対処を行い、Mediatorを再起動してください。

〔対策〕

disk capacity shortageの場合

Mediatorに紐づけるPersistentVolumeの容量を拡張してください。

occurred io errorの場合

このメッセージと併せて出力されるKFSG61105-Eメッセージ、またはKFSG61107-Eメッセージに従い対処してください。

KFSG61105-E (Y)M

File I/O processing for the consensus log file failed. (rootxid = aa....aa, file name = bb....bb, function = cc....cc, errno = dd....dd)

ConsensusLogファイルへのファイルIOに失敗しました。

aa....aa：ルートXID

bb....bb：ConsensusLogファイル名

cc....cc：システムコール名（pread、pwrite、open、またはclose）

dd....dd：システムコールのerrno

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

errnoを基にMediatorに紐づけたPersistentVolumeに異常がないか確認してください。異常を取り除いたあとMediatorを再起動してください。解決しない場合は、保守員に連絡してください。

KFSG61106-E (Y)M

A shortage of space in the consensus log file occurred in the processing to make the log persistent. (rootxid = aa....aa, max = bb....bb)

ConsensusLogの永続化時、ConsensusLogファイルの容量不足が発生しました。

aa....aa：ルートXID

bb…bb：jp.co.Hitachi.soft.hmppcto.consensus-log.sizeの値

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

jp.co.Hitachi.soft.hmppcto.consensus-log.sizeパラメタの値を見直し、必要なサイズに変更したあとMediatorを再起動してください。

KFSG61107-E (Y)M

A timeout occurred in the I/O processing. (time in seconds = aa....aa, rootxid = bb....bb, information = cc....cc)

ConsensusLogファイルへのファイルIO中にタイムアウトが発生しました。

aa....aa : IO監視時間（jp.co.Hitachi .soft.hmppcto.consensus-log.io.watch-in-secondsパラメタ）

bb....bb : ルートXID

cc....cc : 保守情報

お問い合わせの際に連絡してください。

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Mediatorに紐づけたPersistentVolumeに異常がないか確認してください。異常を取り除いたあと、Mediatorを再起動してください。解決しない場合は、保守員に連絡してください。

KFSG61108-E (Y)M

Allocation of an I/O area failed. (size = aa....aa)

メモリ容量不足のためConsensusLogファイルのファイルIO用メモリ領域の確保に失敗しました。

aa....aa：必要なサイズ

(Ｓ)Mediatorの初期化が失敗します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Mediatorに割り当てるメモリ容量を大きくして、Mediatorを再起動してください。

KFSG61109-E (Y)M

This file system does not support direct I/O.

Mediatorに紐づけるPersistentVolumeがダイレクトIOに対応していません。

(Ｓ)Mediatorの初期化が失敗します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Mediatorに紐づけるPersistentVolumeをダイレクトIO に対応したPersistentVolumeに変更してMediatorを再起動してください。

KFSG61110-E (Y)M

Shrinking of the consensus log file failed. (file name = aa....aa, shrink size = bb....bb, required size= cc....cc)

ConsensusLogファイルの縮小に失敗しました。

aa....aa：ConsensusLogファイル名

bb....bb：jp.co.Hitachi.soft.hmppcto.consensus-log.sizeの値

cc....cc：必要なサイズ

(Ｓ)Mediatorの初期化が失敗します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

jp.co.Hitachi.soft.hmppcto.consensus-log.sizeパラメタの値を見直し、必要なサイズに変更したあとMediatorを再起動してください。

KFSG61111-W (Y)M

The maximum number of participants in the transaction was exceeded. (rootxid = aa....aa)

トランザクションへ参加したParticipant数が上限数を超えました。

aa....aa：ルートXID

(Ｓ)処理を続行します。

(Ｏ)トランザクションへ参加したParticipant数が上限数を超えると、トランザクションはCommit決着できません。このため、トランザクション処理を見直してください。

〔対策〕

なし。

KFSG61112-E (Y)M

An attempt to read the ConsensusLog file failed. (file name = aa....aa, reason = bb....bb)

ConsensusLogファイルの読み込みに失敗しました。

aa....aa：ConsensusLogファイル名

bb....bb：ConsensusLogファイルの読み込みに失敗した理由

file corrupted：ConsensusLogファイルの破壊を検出

invalid format：ConsensusLogファイルのフォーマット不正を検出

(Ｓ)Mediatorの初期化が失敗します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Mediatorを再起動するためにはConsensusLogファイルを削除する必要があります。しかし、ConsensusLogファイルを削除し、該当するMediatorを再起動すると分散合意の一貫性が維持できなくなります。このため、ConsensusLogファイルを削除したMediatorの再起動はしないでください。再起動時にMediatorを復旧させたい場合は、該当するMediatorと接続して、HMP-PCTOの機能を使用するアプリケーションのPodを停止してから、ConsensusLogファイルを削除してください。そのあと、各Podを再起動してください。

KFSG61113-W (Y)M

The transaction termination timer timed out. (timeout in millis = aa....aa, branchxid = bb....bb)

トランザクション決着監視タイマがタイムアウトしました。

aa....aa：トランザクション決着監視タイマのタイマ監視時間(jp.co.Hitachi.soft.hmppcto.tcc.transaction-termination.timeout-in-millisパラメタ)

bb....bb：ブランチXID

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

ログや分散トレースを参照し、タイムアウトの原因となっている問題点があるかどうか確認し、確認結果に従い対応してください。

トランザクション決着監視タイマのタイマ監視時間のパラメタの値が十分な値になっていないおそれがあります。「3.12.2　タイマ」を参照し、タイマのチューニングパラメタの指定値を見直してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG61114-E (Y)M

All of the records in the consensus log file have become unusable. (file name = aa....aa)

ConsensusLogファイルの全レコードが使用できなくなりました。

aa....aa : ConsensusLogファイル名

(Ｓ)Mediatorの停止処理を行います。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Mediatorの再起動時にConsensusLogファイルの障害で再起動に失敗した場合、Mediatorを再起動するためにはConsensusLogファイルを削除する必要があります。

しかし、ConsensusLogファイルを削除し、該当するMediatorを再起動すると分散合意の一貫性が維持できなくなります。

このため、ConsensusLogファイルを削除してMediatorを再起動しないでください。

再起動時にConsensusLogファイルの読み込みに失敗したMediatorを復旧させたい場合は、Mediatorおよび該当するMediatorと接続して、HMP-PCTOの機能を使用するアプリケーションのPodを停止してから、ConsensusLogファイルを削除してください。そのあと、各Podを再起動してください。

KFSG61115-W (Y)M

Some of the records in the consensus log file have become unusable. (file name = aa....aa, number of records = bb....bb)

ConsensusLogファイルの一部のレコードが使用できなくなりました。

aa....aa : ConsensusLogファイル名

bb....bb : 使用可能なレコード数

(Ｓ)処理を続行します。

(Ｏ)このメッセージに先行して出力されるKFSG61105-Eメッセージ、KFSG61107-Eメッセージに従い対処してください。

〔対策〕なし。

KFSG62000-E (Y)M

An error occurred in the initialization of the TCC participant.

TCC-Participantの初期化時にエラーが発生しました。

(Ｓ)Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージの前に出力されるメッセージを参照して障害を調査してください。

KFSG62001-E (Y)M

An error occurred in the initialization of the thread pool.

スレッドプールの初期化時にエラーが発生しました。

(Ｓ)Podを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直後に出力するスタックトレースを参照し、スレッドプールの初期化でエラーが発生した要因を除いたあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62002-E (Y)M

TccService#executeTry() method was executed outside the scope of a transaction.

トランザクションの範囲外でTccService#executeTry()メソッドが実行されました。

(Ｓ)トランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーション側でトランザクション境界の設定、トランザクションの伝搬、トランザクションブランチの属性の設定が正しく実装できているかどうかを確認および修正してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62003-E (Y)M

The class annotated with @Tcc does not inherit the TccService interface. (class name = aa....aa)

@Tccアノテーションを付与しているクラスがTccServiceインタフェースを継承していません。

aa....aa：Try前処理で実行しようとしたインスタンスのクラス名

(Ｓ)トランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

@Tccアノテーションを付与しているクラスがTccServiceインタフェースを継承するようアプリケーションを修正してください。

KFSG62004-E (Y)M

The recovery processing failed. (operationid = aa....aa)

未決着トランザクションのRecovery処理が失敗しました。

aa....aa：OperationId

(Ｓ)Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直後に出力するスタックトレースを参照し、TccService#executeRecover()メソッドでエラーが発生した要因を除いたあと、Podを再起動してください。

KFSG62006-W (Y)M

An error occurred in the processing to vote on whether to update API resources. (branchxid = aa....aa)

APIリソース更新可否の投票処理でエラーが発生しました。

aa....aa：ブランチXID

(Ｓ)APIリソース更新可否の投票を中止します。そのあと、タイマ制御機能によってロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージが出力される場合はParticipantとして問題が発生しているため、保守員に連絡してください。

KFSG62007-E (Y)M

An error occurred in the confirmation processing. (branchxid = aa....aa, operationid = bb....bb)

Confirm実行処理で例外が発生しました。

aa....aa：ブランチXID

bb....bb：OperationId

(Ｓ)トランザクションを終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Podを再起動すると、未決着トランザクションのRecovery機能によってexecuteConfirm()メソッドを再実行し、トランザクションが決着に向かいます。

KFSG62008-E (Y)M

An error occurred in the cancellation processing. (branchxid = aa....aa, operationid = bb....bb)

Cancel実行処理で例外が発生しました。

aa....aa：ブランチXID

bb....bb：OperationId

(Ｓ)トランザクションを終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Podを再起動すると、未決着トランザクションのRecovery機能によってexecuteCancel ()メソッドを再実行し、トランザクションが決着に向かいます。

KFSG62009-W (Y)M

An error occurred in the replay processing of the timer. (branchxid = aa....aa)

タイマ制御機能によるReplay投票処理でエラーが発生しました。

aa....aa：ブランチXID

(Ｓ)処理を続行します。そのあと、再投票します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージが出力される場合はParticipantとして問題が発生しているため、保守員に連絡してください。

KFSG62010-E (Y)M

The XID lock processing failed. (xid = aa....aa)

トランザクション状態を更新するための排他ロック処理に失敗しました。

aa....aa：XID

(Ｓ)処理状況に応じてコミット、またはロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージが出力される場合はParticipantとして問題が発生しているため、保守員に連絡してください。

KFSG62011-W (Y)M

The thread pool executor has not finished.

スレッドプールの非同期タスクが終了していません。

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

未決着トランザクションを完了させたい場合など、必要に応じてPodを再起動してください。

KFSG62012-E (Y)M

An error occurred in the getOperationId processing. (class name = aa....aa)

getOperationId実行処理で例外が発生しました。

aa....aa：TccServiceインタフェースを実装したクラス名

(Ｓ)Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直後に出力するスタックトレースを参照し、TccService#getOperationId ()メソッドでエラーが発生した要因を除いたあと、Podを再起動してください。

KFSG62013-E (Y)M

The TccService#executeTry() method for the same OperationId cannot be called multiple times within the same transaction. (branchxid = aa....aa, operationid = bb....bb)

同一OperationIdのTccService#executeTry()メソッドは同一トランザクション内で複数回呼び出すことはできません。

aa....aa：ブランチXID

bb....bb：OperationId

(Ｓ)トランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

同一OperationIdのTccService#executeTry()メソッドは同一トランザクション内で複数回呼び出さないようにアプリケーションを修正してください。

KFSG62014-W (Y)M

Rollback/Cancel processing is performed because the transaction termination timer timed out. (timeout in millis = aa....aa, branchxid = bb....bb)

トランザクション決着監視タイマのタイムアウトによってRollback/Cancel処理を実行します。

aa....aa：トランザクション決着監視タイマのタイマ監視時間

SQL-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millisの値

TCC-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.tcc.transaction-termination.timeout-in-millisの値

TP1-Bridgeを使用する場合：tp1.transactionTermination.timeoutInMillisの値

bb....bb：ブランチXID

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

ログや分散トレースを参照し、タイムアウトの原因となっている問題点があるかどうか確認し、確認結果に従い対応してください。

トランザクション決着監視タイマのタイマ監視時間のパラメタの値が十分な値になっていないおそれがあります。「3.12.2　タイマ」を参照し、タイマのチューニングパラメタの指定値を見直してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62015-W (Y)M

Rollback/Cancel processing is performed because the transaction consensus interval timer timed out. (interval in millis = aa....aa, branchxid = bb....bb)

トランザクション分散合意リプレイインターバルタイマまたはトランザクション分散合意インターバルタイマのタイムアウトによって、Rollback/Cancel処理を実行します。

aa....aa：トランザクション分散合意処理をリトライする間隔

SQL-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.sql.transaction-termination.consensus.replay-interval-in-millisの値

TCC-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.tcc.consensus.interval-in-millisの値

TP1-Bridgeを使用する場合：tpl.transactionTermination.consensus.replayIntervalInMillisの値

bb....bb：ブランチXID

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。メッセージの出力が止まらない場合は、次のパラメタを見直してください。

SQL-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.sql.pod.service-name

TCC-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.tcc.pod.service-name

TP1-Bridgeを使用する場合：tp1.pod.serviceName

〔対策〕

ログや分散トレースを参照し、タイムアウトの原因となっている問題点があるかどうか確認し、確認結果に従い対応してください。

トランザクション分散合意処理をリトライする間隔のパラメタの値が十分な値になっていないおそれがあります。「3.12.2　タイマ」を参照し、タイマのチューニングパラメタの指定値を見直してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62016-E (Y)M

The constructor of the TccResponse class cannot be called outside of the transaction.

TccResponseクラスのコンストラクタはトランザクション外で呼び出すことはできません。

(Ｓ)Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーションでTccResponseクラスのコンストラクタを呼び出すタイミングがトランザクション開始前またはトランザクション完了後である場合、このエラーメッセージを出力します。「(a)　未決着状態かつ自身のTccServiceが登録した永続化したデータの一覧を返す」に記載されているアプリケーション実装要領に従い、アプリケーションを修正してください。

KFSG62017-E (Y)M

The return value of the TccService#executeTry() method is invalid. (branchxid = aa....aa, operationid = bb....bb, reason = cc....cc)

TccService#executeTry()メソッドの戻り値が不正です。

aa....aa：ブランチXID

bb....bb：OperationId

cc....cc：戻り値を不正と判断した理由を示します。

Null: 戻り値がnullである

The transactionKey is null: 戻り値のTccResponse クラスのインスタンスのtransactionKeyフィールドがnullである

(Ｓ)トランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このエラーメッセージに含まれているreasonの内容を基に、アプリケーションのTccService#executeTry()メソッドを修正してください。

KFSG62018-E (Y)M

The return value of the TccService#executeRecover() method is invalid. (operationid = aa....aa, reason = bb....bb)

TccService#executeRecover()メソッドの戻り値が不正です。

aa....aa：OperationId

bb....bb：戻り値を不正と判断した理由を示します。

Null: 戻り値がnullである

Contains null: 戻り値のjava.util.Setにnullが含まれている

The transactionKey is null: 戻り値のjava.util.SetにtransactionKeyフィールドがnullであるTccResponseクラスのインスタンスが含まれている

(Ｓ) Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このエラーメッセージに含まれているreasonの内容を基に、アプリケーションのTccService#executeRecover()メソッドを修正してください。

KFSG62019-E (Y)M

Null cannot be specified as the return value of the TccService#getOperationId() method. (class name = aa....aa)

TccService#getOperationId()メソッドの戻り値にnullを指定することはできません。

aa....aa：TccServiceインタフェースを実装したクラス名

(Ｓ) Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーションのTccService#getOperationId()メソッドを修正してください。

KFSG62020-E (Y)M

The length of the return value of the TccService#getOperationId() method is outside the valid range. (class name = aa....aa, length = bb....bb)

TccService#getOperationId()メソッドの戻り値の長さが範囲外です。

aa....aa：TccServiceインタフェースを実装したクラス名

bb....bb：戻り値のOperationIdの長さ(バイト)

(Ｓ) Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーションのTccService#getOperationId()メソッドを修正してください。

KFSG62021-E (Y)M

The same operation ID cannot be assigned to multiple TCC services. (operationid = aa....aa)

同一OperationIdを複数のTccServiceに割り当てることはできません。

aa....aa：OperationId

(Ｓ) Participantを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーションの各TccServiceのgetOperationId()メソッドについて、OperationIdがそれぞれ一意となるように修正してください。

KFSG62022-E (Y)M

An error occurred during initialization of the thread pool that is used for communication with the mediator.

Mediatorと通信するために使用するスレッドプールの初期化時にエラーが発生しました。

(Ｓ)Podを異常終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直後に出力するスタックトレースを参照し、スレッドプールの初期化でエラーが発生した要因を除いたあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62023-W (Y)M

The executor of the thread pool that is used for communication with the mediator has not ended.

Mediatorと通信するために使用するスレッドプールの非同期タスクが終了していません。

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

未決着トランザクションを完了させたい場合など、必要に応じてPodを再起動してください。

KFSG62024-E (Y)M

An error occurred in the confirmation preprocessing. (branchxid = aa....aa, operationid = bb....bb)

Confirmの前処理で例外が発生しました。

aa....aa：ブランチXID

bb....bb：operationid

(Ｓ)トランザクションを終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーション側でトランザクションをConfirm実行処理後の本来の結果に修復してください。

また、原因調査のため保守員に連絡してください。

KFSG62025-E (Y)M

An error occurred in the cancellation preprocessing. (branchxid = aa....aa, operationid = bb....bb)

Cancelの前処理で例外が発生しました。

aa....aa：ブランチXID

bb....bb：operationid

(Ｓ)トランザクションを終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーション側でトランザクションをCancel実行処理後の本来の結果に修復してください。

また、原因調査のため保守員に連絡してください。

KFSG62100-E (Y)D

One or more command arguments are invalid. (command line = aa....aa)

Usage: health_check.sh <retry-count> <retry-interval-seconds> <connect-timeout-seconds> <read-timeout-seconds> <http-port> [context-pass]

health_check.sh --version

トランザクションヘルスチェックスクリプトのコマンド引数が不正です。

aa....aa：実行されたコマンドライン

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

コマンドライン引数を修正したあと、Podを再起動してください。

KFSG62101-E (Y)D

One or more command arguments are invalid. (command line = aa....aa)

Usage: wait_transactions.sh <retry-count> <retry-interval-seconds> <connect-timeout-seconds> <read-timeout-seconds> <http-port> [context-pass]

wait_transactions.sh --version

未決着トランザクション待機スクリプトのコマンド引数が不正です。

aa....aa：実行されたコマンドライン

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

コマンドライン引数を修正したあと、Podを再起動してください。

KFSG62102-W (Y)D+M

An error occurred in the HTTP request. (error code = aa....aa)

HTTPリクエストに失敗しました。

aa....aa：curlコマンドのエラーコード

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

エラーが発生しているスクリプトが「トランザクションヘルスチェックスクリプト」または「未決着トランザクション待機スクリプト」の場合：

・直前に出力されているKFSG82100-Iメッセージ、またはKFSG82102-Iメッセージに含まれているHTTPポート番号が正しいかどうかを確認し、誤りがある場合はコマンドライン引数のHTTPポート番号を修正したあと、Podを再起動してください。

・「kubectl logs <Pod名> -c <コンテナ名>」コマンドを実行します。<コンテナ名>は、コンテナライフサイクル設定で「トランザクションヘルスチェックスクリプト」および「未決着トランザクション待機スクリプト」の実行を定義しているコンテナを指定してください。コンテナのコンソール出力内容にエラーメッセージが出力されている場合は、該当するメッセージの原因に従い対策を実施してください。そのあと、Podを再起動してください。

・上記対策を実施しても解決しない場合は、保守員に連絡してください。

エラーが発生しているスクリプトが「デプロイ依存関係チェックスクリプト」の場合：

KubernetesコントロールプレーンにKubernetes APIサーバ（kube-apiserver）のPodが正常に起動していることを確認してください。正常に起動していない場合はKubernetes APIサーバ（kube-apiserver）のPodを再起動するなどの対処を実施してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62103-W (Y)D+M

The HTTP status code indicates an error. (status code = aa....aa)

HTTPステータスコードがエラーを示しています。

aa....aa：HTTPステータスコード

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

エラーが発生しているスクリプトが「トランザクションヘルスチェックスクリプト」または「未決着トランザクション待機スクリプト」の場合：

・「kubectl logs <Pod名> -c <コンテナ名>」コマンドを実行します。<コンテナ名>は、コンテナライフサイクル設定で「トランザクションヘルスチェックスクリプト」および「未決着トランザクション待機スクリプト」の実行を定義しているコンテナを指定してください。コンテナのコンソール出力内容にエラーメッセージが出力されている場合は、該当するメッセージの原因に従い対策を実施してください。そのあと、Podを再起動してください。

・HTTPステータスコードが「000」の場合、コマンド引数に指定したポート番号が正しいかどうかを確認してください。誤りがある場合はコマンド引数のポート番号を修正したあと、Podを再起動してください。

・上記対策を実施しても解決しない場合は、保守員に連絡してください。

エラーが発生しているスクリプトが「デプロイ依存関係チェックスクリプト」の場合：

・KubernetesコントロールプレーンにKubernetes APIサーバ（kube-apiserver）のPodが正常に起動していることを確認してください。正常に起動していない場合はKubernetes APIサーバ（kube-apiserver）のPodを再起動するなどの対処を実施してください。

・HTTPステータスコードが「403」の場合、デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストが正しくデプロイできているかどうかを確認し、デプロイできていない場合はデプロイしたあと、Podを再起動してください。

・HTTPステータスコードが「403」の場合、デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの記述内容が正しいかどうかを確認し、誤りがある場合は記述内容を修正したあと、Podを再起動してください（デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの記述内容については、各PodのNamespaceに応じてリソースの種類を「Role＆RoleBinding」と「ClusterRole＆ClusterRoleBinding」のどちらにする必要があるかについても確認してください）。

・HTTPステータスコードが「404」の場合、直前に出力されているKFSG82104-Iメッセージに含まれているターゲットKubernetesオブジェクト群の指定内容が正しいかどうかを確認し、誤りがある場合は指定内容を修正したあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62104-W (Y)D+M

The JSON response body is invalid. (response body = aa....aa)

JSONレスポンスボディが不正です。

aa....aa：返却されたHTTPレスポンスボディの内容（改行などの特殊文字エスケープ済み）

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

エラーが発生しているスクリプトが「トランザクションヘルスチェックスクリプト」または「未決着トランザクション待機スクリプト」の場合：

・直前に出力されているKFSG82100-Iメッセージ、またはKFSG82102-Iメッセージに含まれているHTTPポート番号が正しいかどうかを確認し、誤りがある場合はコマンドライン引数のHTTPポート番号を修正したあと、Podを再起動してください。

・「kubectl logs <Pod名> -c <コンテナ名>」コマンドを実行します。<コンテナ名>は、コンテナライフサイクル設定で「トランザクションヘルスチェックスクリプト」および「未決着トランザクション待機スクリプト」の実行を定義しているコンテナを指定してください。コンテナのコンソール出力内容にエラーメッセージが出力されている場合は、該当するメッセージの原因に従い対策を実施してください。そのあと、Podを再起動してください。

・上記対策を実施しても解決しない場合は、保守員に連絡してください。

エラーが発生しているスクリプトが「デプロイ依存関係チェックスクリプト」の場合：

KubernetesコントロールプレーンにKubernetes APIサーバ（kube-apiserver）のPodが正常に起動していることを確認してください。正常に起動していない場合はKubernetes APIサーバ（kube-apiserver）のPodを再起動するなどの対処を実施してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62105-W (Y)D

The service is not ready yet.

サービスがまだ新規トランザクションを受け付けられる状態になっていません。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

直後にKFSG82101-Iメッセージ、またはKFSG82103-Iメッセージが出力されている場合は、リトライによって処理が成功しているため、対策は不要です。

直後にKFSG62107-Eメッセージ、またはKFSG62108-Eメッセージが出力されている場合は、リトライオーバーしているため、KFSG62107-Eメッセージ、またはKFSG62108-Eメッセージの対策を参照してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62106-W (Y)D

The service still has active transactions.

サービスにまだ未決着トランザクションが存在します。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

直後にKFSG82101-Iメッセージ、またはKFSG82103-Iメッセージが出力されている場合は、リトライによって処理が成功しているため、対策は不要です。

直後にKFSG62107-Eメッセージ、またはKFSG62108-Eメッセージが出力されている場合は、リトライオーバーしているため、KFSG62107-Eメッセージ、またはKFSG62108-Eメッセージの対策を参照してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62107-E (Y)D

The specified number of retries for the transaction health-check processing was exceeded.

トランザクションヘルスチェック処理でリトライオーバーが発生しました。

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

MediatorおよびParticipantのメッセージログファイルを確認してください。このメッセージが出力される直前の時間にエラーメッセージが出力されている場合は、該当するメッセージの原因に従い対策を実施したあと、Podを再起動してください。

MediatorおよびParticipantのメッセージログファイルで、メッセージが出力される直前の時間にエラーメッセージが出力されていない場合は、トランザクションヘルスチェックスクリプト、または未決着トランザクション待機スクリプトのコマンド引数に指定しているリトライ回数もしくはリトライ間隔秒数が、リトライに十分な値になっていないおそれがあります。リトライ回数、またはリトライ間隔秒数の指定値を見直したあと、Podを再起動してください。

コマンド引数に指定したポート番号が正しいかどうかを確認してください。誤りがある場合はコマンド引数のポート番号を修正したあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62108-E (Y)D

The specified number of retries for the processing that waits for active transactions was exceeded.

未決着トランザクション待機処理でリトライオーバーが発生しました。

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

MediatorおよびParticipantのメッセージログファイルを確認してください。このメッセージが出力される直前の時間にエラーメッセージが出力されている場合は、そのメッセージの原因に従い対策を実施してください。そのあと、未決着トランザクションを完了させたい場合など、必要に応じてPodを再起動してください。

MediatorおよびParticipantのメッセージログファイルで、メッセージが出力される直前の時間にエラーメッセージが出力されていない場合は、トランザクションヘルスチェックスクリプト、または未決着トランザクション待機スクリプトのコマンド引数に指定しているリトライ回数もしくはリトライ間隔秒数が、リトライに十分な値になっていないおそれがあります。リトライ回数、またはリトライ間隔秒数の指定値を見直してください。そのあと、未決着トランザクションを完了させたい場合など、必要に応じてPodを再起動してください。

コマンド引数に指定したポート番号が正しいかどうかを確認してください。誤りがある場合はコマンド引数のポート番号を修正したあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62109-E (Y)D+M

One or more command arguments are invalid. (command line = aa....aa)

Usage: dependency_check.sh <retry-count> <retry-interval-seconds> <connect-timeout-seconds> <read-timeout-seconds> {<namespace>/<resource>/[<name>|<label-selector>]} [...]

dependency_check.sh --version

デプロイ依存関係チェックスクリプトのコマンド引数が不正です。

aa....aa：実行されたコマンドライン

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

コマンドライン引数を修正したあと、Podを再起動してください。

KFSG62110-W (Y)D+M

The target Kubernetes object was not found. (target = aa....aa)

ターゲットKubernetesオブジェクトが存在していません。

aa....aa：ターゲットKubernetesオブジェクト

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

直後にKFSG82105-Iメッセージが出力されている場合は、リトライによって処理が成功しているため、対策は不要です。

直後にKFSG62112-Eメッセージが出力されている場合は、リトライオーバーしているため、KFSG62112-Eメッセージの対策を参照してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62111-W (Y)D+M

The target Kubernetes object is not ready yet. (target = aa....aa)

ターゲットKubernetesオブジェクトがまだ起動完了していません。

aa....aa：ターゲットKubernetesオブジェクト

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

直後にKFSG82105-Iメッセージが出力されている場合は、リトライによって処理が成功しているため、対策は不要です。

直後にKFSG62112-Eメッセージが出力されている場合は、リトライオーバーしているため、KFSG62112-Eメッセージの対策を参照してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62112-E (Y)D+M

The specified number of retries for the dependency check processing was exceeded.

デプロイ依存関係チェック処理でリトライオーバーが発生しました。

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直前にKFSG62102-Wメッセージ、KFSG62103-Wメッセージ、またはKFSG62104-Wメッセージが出力されている場合は、該当するメッセージの原因に従い対策を実施したあと、Podを再起動してください。

直前にKFSG62110-Wメッセージが出力されている場合は、該当するPodが起動していないため、Podを起動してください。

直前にKFSG62111-Wのエラーメッセージが出力されている場合は、デプロイ依存関係チェックスクリプトのコマンド引数に指定しているリトライ回数、またはリトライ間隔秒数が、リトライに十分な値になっていないおそれがあります。リトライ回数、またはリトライ間隔秒数の指定値を見直したあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62200-E (Y)J+M

Failed to read the kubeconfig file.

kubeconfigファイルの読み込みに失敗しました。

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

該当するコンテナで環境変数KUBECONFIGを定義している場合は、環境変数KUBECONFIGに設定しているkubeconfigファイルのパスおよびkubeconfigファイルの内容が正しいことを確認してください。直後に出力するスタックトレースを参照し、設定内容に誤りがあれば、設定内容を見直したあと、Podを再起動してください。

該当するコンテナに$HOME/.kube/configファイルが存在している場合は、このkubeconfigファイルの内容が正しいことを確認してください。直後に出力するスタックトレースを参照し、設定内容に誤りがあれば、設定内容を見直したあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62201-E (Y)J+M

The request to the Kubernetes API server timed out. (timeout in seconds = aa....aa)

Kubernetes APIサーバへのリクエストがタイムアウトしました。

aa....aa：Kubernetesからのサービス一覧取得の待ち時間（jp.co.Hitachi.soft.hmppcto.lb.list-timeout-in-secondsパラメタ）

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

該当するコンテナで「7.5　各Kubernetesアプリケーションの作成要件」に示すとおりPodに対するロールベースアクセス制御（RBAC）が設定されていることを確認してください。設定内容に誤りがあれば、設定内容を見直したあと、Podを再起動してください。

KubernetesコントロールプレーンにKubernetes APIサーバ（kube-apiserver）のPodが正常に起動していることを確認してください。正常に起動していない場合はKubernetes APIサーバ（kube-apiserver）のPodを再起動するなどの対処を実施してください。

jp.co.Hitachi.soft.hmppcto.lb.list-timeout-in-secondsパラメタに指定しているKubernetesからのサービス一覧取得の待ち時間が十分な値になっていないおそれがあります。値を見直したあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62202-E (Y)J+M

Failed to read the Kubernetes namespace file.

Kubernetes Namespaceファイルの読み込みに失敗しました。

(Ｓ)要求を無視します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直後に出力するスタックトレースを参照し、該当するコンテナにKubernetes Namespaceファイルがマウントされていない場合や、ファイルの状態が不正であるなどの場合は、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62300-E (Y)J+M

A request was received that cannot be processed because of a duplicate IP address. (branchxid = aa....aa, IP address = bb....bb)

IPアドレスが重複したため、処理できないリクエストを受信しました。

トランザクションの処理中に終了したPodと起動したPodでIPアドレスが重複したおそれがあります。

aa....aa：ブランチXID

bb....bb：IPアドレス

(Ｓ)リクエスト受信後、対応したアプリケーションを呼び出さないでトランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

なし。

繰り返し表示される場合は、保守員に連絡してください。

KFSG62301-E(Y)J+M

The specified in AP Service does not exist. (service = aa....aa, branchxid = bb....bb)

アプリケーションで指定したServiceが存在しません。

aa....aa：アプリケーションで指定したService

bb....bb：ブランチXID

(Ｓ)リクエストを送信しないでトランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーションで指定したServiceを示すドメイン名が「2.2.8　通信によるトランザクションブランチの作成（REST通信-クライアント）」の「Serviceを示すドメイン名の指定形式」になっていることを確認してください。

Kubernetesマニフェストの該当のServiceの定義が、アプリケーションで指定したServiceのドメイン名・ポート番号と一致していることを確認してください。

Kubernetes上で該当のServiceが起動した状態になっていることを確認してください。

KFSG62302-E(Y)J+M

There is no Pod associated with the Service specified in the AP (service = aa....aa, branchxid = bb....bb)

アプリケーションで指定したServiceに紐づくPodが存在しません。

aa....aa：アプリケーションで指定したService

bb....bb：ブランチXID

(Ｓ)リクエストを送信しないでトランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

指定したServiceに紐づくPodが起動した状態になっていることを確認してください。

KFSG62303-E (Y)J+M

An error occurred in the request to the Kubernetes API server. (branchxid = aa....aa)

Kubernetes APIサーバへのリクエストでエラーが発生しました。

aa....aa：ブランチXID

トランザクション処理中でない場合は*

(Ｓ)Pod起動時の場合は、Podの起動を停止します。

トランザクション処理中の場合は、処理を中断しトランザクションをロールバックします。

未決着トランザクションのRecovery機能やトランザクション完了確認機能の処理で出力した場合は、処理をスキップします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

次の対策を実施してください。

該当のコンテナで「7.5　各Kubernetesアプリケーションの作成要件」に示すとおりPodに対するロールベースアクセス制御（RBAC）が設定されていることを確認してください。設定内容に誤りがあれば、設定内容を見直したあと、Podを再起動してください。

KubernetesコントロールプレーンにKubernetes APIサーバ（kube-apiserver）のPodが正常に起動していることを確認してください。正常に起動していない場合はKubernetes APIサーバ（kube-apiserver）のPodを再起動するなどの対処を実施してください。

直後に出力されるスタックトレースを参照し、Kubernetes APIサーバへのリクエストでエラーが発生した要因を除いたあと、Podを再起動してください。

KFSG62304-E (Y)J+M

The label value is invalid or not specified. (label = aa....aa, value = bb....bb, reason = cc....cc)

ラベルの指定値が不正または指定されていません。

aa....aa：ラベル名

bb....bb：ラベルの指定値

指定されていない場合は、「null」が表示されます。

cc....cc：理由コード

VALUE：ラベルの指定値が不正です。

NULL：必須ラベルが指定されていません。

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Participantの機能を使用するKubernetesアプリケーションのKubernetesマニフェストのラベルの指定値を見直してください。そのあと、Podを再起動してください。

ラベル（app.kubernetes.io/name）の設定例については、「2.6　Kubernetesマニフェスト作成」を参照してください。

KFSG62305-E (Y)J+M

Transaction rolled back due to communication with different Pods of the same Service within a single transaction. (branchxid = aa....aa, expected pod uid = bb....bb, actual pod uid = cc....cc)

同一トランザクション内で同一のサービスに対して、異なるPodへ通信が行われたため、トランザクションをロールバックしました。

aa....aa：ブランチXID

bb....bb：トランザクションの最初に通信したPodのuid

cc....cc：エラー発生時に通信したPodのuid

(Ｓ)リクエスト受信後、対応したアプリケーションを呼び出さないでトランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーションの実装および配置したロードバランサの設定を見直し、同一トランザクション内で複数回同一のサービスに対して通信する場合に、同一のPodに対して通信するように修正してください。

KFSG62306-W (Y)J+M

Hostname resolution for Mediator by the DNS server has failed.(host = aa....aa)

DNSサーバによるMediatorのホスト名の名前解決が失敗しました。

aa....aa：名前解決に失敗したMediatorのホスト名

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

DNSサーバの設定を見直してください。DNSサーバの設定方法は、利用しているDNSサーバの公式ドキュメントを参照してください。

KFSG63000-E (Y)J+M

The method is not supported by the JDBC proxy driver.

JDBC Proxy Driverがサポートしていないメソッドです。

(Ｓ)要求を無視します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

サポート対象のメソッドを使用するようアプリケーションを修正してください。

KFSG63003-E (Y)J+M

The JDBC proxy driver was run outside the scope of a transaction.

JDBC Proxy Driverがトランザクションの範囲外で実行されました。

(Ｓ)要求を無視します。

(Ｏ) JDBC Proxy Driverはトランザクションの範囲内で実行するようプログラムを修正してください。

〔対策〕

なし。

KFSG63100-E (Y)M

In the processing to initialize the orchestrator, the specified number of retries for waiting for the mediator to start was exceeded. (expected value = aa....aa, counted mediator = bb....bb)

Orchestratorの初期化処理でMediatorの起動の待ち合わせのリトライ回数が設定値を超えました。

aa....aa：期待するMediator起動数(mediator.initial-size設定値)

bb....bb：現在のMediator起動数

(Ｓ)Orchestratorを異常終了します。

(Ｏ)MediatorのHelmチャートに設定したレプリカ数がmediator.initial-sizeの設定値以上かどうか確認してください。また、Mediatorの状態を確認して、Mediatorがmediator.initial-sizeの設定値以上起動しているのにこのメッセージが出力される場合は、mediator.name、mediator.name.suffixの設定値に誤りがないか確認してください。誤っていた場合は修正してください。

〔対策〕

なし。

KFSG63101-E (Y)M

A failure occurred in the processing to send a transaction settlement notification from the orchestrator to the mediator. (rootxid = aa....aa, host = bb....bb, port = cc....cc)

OrchestratorからMediatorへのトランザクションの決着通知の送信で障害が発生しました。

aa....aa：ルートXID

bb....bb：Mediatorのホスト名

cc....cc：Mediatorのポート番号

(Ｓ)処理を続行します。

(Ｏ)このメッセージのあとに出力される例外情報を参照して障害の原因を調査してください。

〔対策〕

なし。

KFSG63102-E (Y)M

In the processing to initialize the orchestrator, a failure occurred in the processing to send a transaction cancellation notification to mediator. (host = aa....aa, port = bb....bb)

Orchestratorの初期化処理でMediatorへのトランザクションのキャンセル通知の送信で障害が発生しました。

aa....aa：Mediatorのホスト名

bb....bb：Mediatorのポート番号

(Ｓ)処理を続行します。

(Ｏ)このメッセージのあとに出力される例外情報を参照して障害の原因を調査してください。

〔対策〕

なし。

KFSG63103-E (Y)J+M

The transaction could not be started. (reason = aa....aa, expected value = bb....bb, counted mediator = cc....cc)

トランザクションを開始できませんでした。

aa....aa：トランザクションを開始できなかった理由

Lack of mediator to participate in the transaction：トランザクションに参加するMediatorの不足

bb....bb：期待するMediator起動数(mediator.minimum-start-size設定値)

cc....cc：現在のMediator起動数

(Ｓ)トランザクションを開始せずに呼び出し元に例外を送出します。

(Ｏ)Mediatorの動作状況を確認して期待するMediator起動数以上のMediatorを起動してください。

〔対策〕

なし。

KFSG63104-E (Y)J+M

A failure occurred in the processing to send a transaction settlement notification to all mediators participating in the transaction. (rootxid = aa....aa)

トランザクションに参加するすべてのMediatorへのトランザクションの決着通知の送信で障害が発生しました。トランザクションの決着結果は不明です。

aa....aa：ルートXID

(Ｓ)処理を続行します。

(Ｏ)このメッセージの前に出力されているKFSG63101-Eメッセージの例外情報を参照して通信障害の原因を確認してください。

トランザクションの決着結果は、HMP-PCTOが出力する分散トレースのオペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」のスパンタグconsensus-valueで確認できます。consensus-valueにCOMMIT、ROLLBACKのどちらかを出力します。

"root-xid"="< KFSG63104-Eメッセージのaa....aa 出力値>"のスパンタグを検索し、該当トランザクションの分散トレースを表示します。

該当トランザクションの分散トレースから「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」のオペレーションを検索し、スパンタグを確認してください。

オペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」のspanが出力されていない場合は、まだトランザクションが決着していません。Mediator、Participantに出力されているメッセージを参照してトランザクションが決着していない原因を調査してください。

〔対策〕

なし。

KFSG63105-W (Y)J+M

The transaction was settled as a rollback. (rootxid = aa....aa, reason = bb....bb)

トランザクションがロールバック決着しました。

aa....aa：ルートXID

bb....bb：トランザクションがロールバック決着した理由を示します。

Communication failure with Service：送信先のサービスとの通信障害

Rollback request from Service：送信先のサービスからのロールバック要求

Rollback target exception occurs：Rollback対象の例外が発生

Rollback settlement notification from mediator：MediatorからのRollback決着通知

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

次の表を参照してトランザクションがロールバックした原因を調査して、必要に応じて対策してください。

bb....bbの出力値

原因の調査方法

Communication failure with Service

アプリケーションが送信先のサービスとの通信時に出力している情報から通信障害の原因を調査してください。

Rollback request from Service

送信先のサービスで出力しているKFSG63107-Wメッセージを参照して、アプリケーションがロールバック対象のステータスコードを設定した原因を調査してください。

Rollback target exception occurs

このメッセージが出力している例外情報中の「Suppressed:」以降がアプリケーションが送出した例外の情報です。この情報やアプリケーションが出力している情報から、アプリケーションがロールバック対象の例外を送出した原因を調査してください。

Rollback settlement notification from mediator

Mediator、またはParticipantで次のメッセージが出力されていないか確認してください。出力されている場合は、これらのメッセージからロールバックした原因を調査してください。出力されていない場合は、保守員に連絡してください。

KFSG60003-W

KFSG60011-E

KFSG60014-E

KFSG60018-W

KFSG60019-E

KFSG60021-E

KFSG60022-E

KFSG60029-W

KFSG61008-E

KFSG62002-E

KFSG62003-E

KFSG62006-W

KFSG62009-W

KFSG62010-E

KFSG62013-E

KFSG62014-W

KFSG62015-W

KFSG62017-E

KFSG63005-E

KFSG63107-W (Y)M

The transaction branch was marked as a rollback. (branchxid = aa....aa, reason = bb....bb, status code = cc....cc)

Entity-Moduleのトランザクションブランチをロールバックにマークしました。

aa....aa：ブランチXID

bb....bb：トランザクションをロールバックにマークした理由

Communication failure with Entity-Module：Entity-Moduleとの通信障害

Participant failure：Participantの障害

The HTTP status of the rollback target：Rollback対象のHTTPステータス

The gRPC status of the rollback target：Rollback対象のgRPCステータス

cc....cc：HTTPステータスコードまたはgRPCステータスコード（ロールバックにマークした理由がRollback対象のHTTPステータスまたはRollback対象のgRPCステータス以外の場合は「null」を表示します）

(Ｓ)トランザクションブランチをロールバックにマークして処理を続行します。トランザクションはロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

次の表を参照してトランザクションがロールバックした原因を調査して、必要に応じて対策してください。

bb....bbの出力値

原因の調査方法

Communication failure with Entity-Module

アプリケーションがEntity-Moduleとの通信時に出力している情報から通信障害の原因を調査してください。

Participant failure

Participant、またはEntity-Moduleで次のメッセージが出力されていないか確認してください。出力されている場合は、これらのメッセージからロールバックした原因を調査してください。出力されていない場合は、保守員に連絡してください。

KFSG60010-W

KFSG60011-E

KFSG60012-E

KFSG60013-W

KFSG60016-E

KFSG63002-E

KFSG63005-E

KFSG63200-E

KFSG63201-E

KFSG63208-W

The HTTP status of the rollback target

アプリケーションがロールバック対象のHTTPステータスコードを設定した原因を調査してください。

The gRPC status of the rollback target

アプリケーションがロールバック対象のgRPCステータスコードを設定した原因を調査してください。

KFSG63108-E (Y)M

An error occurred in the initialization of the orchestrator. Initialization of the orchestrator failed.

Orchestratorの初期化時にエラーが発生しました。Orchestratorの初期化に失敗しました。

(Ｓ)Orchestratorを異常終了します。

(Ｏ)このメッセージの前に出力されているメッセージを参照して障害を調査してください。

〔対策〕

なし。

KFSG63109-E (Y)M

An error occurred in the initialization of the entity module. Initialization of the entity module failed.

Entity-Moduleの初期化時にエラーが発生しました。Entity-Moduleの初期化に失敗しました。

(Ｓ)Entity-Moduleを異常終了します。

(Ｏ)このメッセージの前に出力されているメッセージを参照して障害を調査してください。

〔対策〕

なし。

KFSG63110-E (Y)J+M

The transaction branch could not be started.

トランザクションブランチを開始できませんでした。

(Ｓ)要求を無視します。

(Ｏ)トランザクションルートまたはトランザクションブランチの範囲内で@PctoTransactionBranchアノテーションを使用するように、プログラムを修正してください。

〔対策〕

なし。

KFSG63111-E (Y)J+M

Mediator has returned an unknown transaction settlement result, so the transaction settlement result is unknown. If the transaction has already been settled on the participant side due to communication delay between the participant and the mediator, the settlement result of the transaction will be unknown. (rootxid = aa....aa)

Mediatorからトランザクションの決着結果不明が返却されたため、トランザクションの決着結果は不明です。Participant - Mediator間の通信遅延などによって、Participant側でトランザクションがすでに決着している場合、トランザクションの決着結果が不明になります。

aa....aa：ルートXID

(Ｓ)処理を続行します。

(Ｏ)トランザクションの決着結果は、HMP-PCTOが出力する分散トレースのオペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」のスパンタグconsensus-valueで確認できます。consensus-valueにCOMMIT、ROLLBACKのどちらかを出力します。

"root-xid"="< aa....aa 出力値>"のスパンタグを検索し、該当トランザクションの分散トレースを表示します。該当トランザクションの分散トレースから「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」のオペレーションを検索しスパンタグを確認してください。

〔対策〕

なし。

KFSG63200-E (Y)M

An error occurred in the communication process with TP1-Converter. (branchxid = aa....aa, URL = bb....bb)

TP1-Converterとの通信処理でエラーが発生しました。

aa....aa：ブランチXID

bb....bb：通信先のTP1-ConverterへのリクエストURL

(Ｓ)OpenTP1のサービスの呼び出し処理を中止して、TP1-Bridgeを呼び出したアプリケーションにエラー応答を返します。

(Ｏ)このメッセージのあとに出力されている例外情報、およびTP1-Converterのログを参照して障害を調査してください。

〔対策〕

なし。

KFSG63201-E (Y)M

Failed to obtain connection to TP1. (reason = aa....aa)

OpenTP1とのコネクション取得に失敗しました。

aa....aa：コネクション取得に失敗した理由コード

TIMEOUT：コネクションプールからの割り当て待ち時間のタイムアウト

(Ｓ)OpenTP1のサービスの呼び出し処理を中止して、TP1-Bridgeを呼び出したアプリケーションにエラー応答を返します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

次のパラメタの設定値を見直してください。

jp.co.Hitachi.soft.hmppcto.tp1.pool.max-pool-size

tp1.pool.allocationWaitTimeInMillis

そのあと、TP1-Bridgeを再起動してください。

KFSG63204-E (Y)M

TP1-Bridge was run outside the scope of a transaction.

TP1-Bridgeがトランザクションの範囲外で実行されました。

(Ｓ)OpenTP1のサービスの呼び出し処理を中止して、TP1-Bridgeを呼び出したアプリケーションにエラー応答を返します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

TP1-Bridgeを呼び出したアプリケーションを、トランザクションの範囲内でTP1-Bridgeを呼び出すように修正してください。

KFSG63205-W (Y)M

Failed to return connection to TP1.

OpenTP1のコネクションの返却に失敗しました。

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

保守員に連絡してください。

KFSG63207-E (Y)M

Execution of the TP1/Client/J method failed. (method = aa....aa)

TP1/Client/Jのメソッドの実行に失敗しました。

aa....aa：実行に失敗したOpenTP1/Client/Jのメソッド名

(Ｓ)TP1-Bridgeの開始時にこのメッセージを出力した場合は、TP1-Bridgeを異常終了します。TP1-Bridgeの開始時以外でこのメッセージを出力した場合は、処理を続行します。

(Ｏ)このメッセージの前後に出力されている例外情報を参照して障害を調査してください。

〔対策〕

なし。

KFSG63208-E (Y)M

TP1 service called could not be executed, because the transaction termination timer timed out and rollback processing was performed. (branchxid = aa....aa, information 1 = bb....bb)

トランザクション決着監視タイマのタイムアウトによってロールバックしたため、OpenTP1のサービスの呼び出しができませんでした。

aa....aa：ブランチXID

bb....bb：保守情報

お問い合わせの際に連絡してください。

(Ｓ)OpenTP1のサービスの呼び出し処理を中止して、TP1-Bridgeを呼び出したアプリケーションにエラー応答を返します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージの前にKFSG62014-Wメッセージが出力されているかどうかを確認してください。

出力されている場合は、KFSG62014-Wメッセージに従って対策してください。出力されていない場合は、保守員に連絡してください。

KFSG63209-E (Y)M

Failed to call TP1 service. (service_group_name = aa....aa, service_name = bb....bb)

OpenTP1のサービスの呼び出しに失敗しました。

aa....aa：呼び出し先のOpenTP1のサービスグループ名

bb....bb：呼び出し先のOpenTP1のサービス名

(Ｓ)OpenTP1のサービスの呼び出し処理を中止して、TP1-Bridgeを呼び出したアプリケーションにエラー応答を返します。

(Ｏ)このメッセージの前後に出力されている例外情報を参照して障害を調査してください。

〔対策〕

なし。

KFSG63300-E (Y)C

An error occurred in the initialization of the tp1 converter. Initialization of the tp1 converter failed.

TP1-Converterの初期化時にエラーが発生しました。TP1-Converterの初期化に失敗しました。

(Ｓ)TP1-Converterを異常終了します。

(Ｏ)このメッセージの前に出力されているメッセージを参照して障害を調査してください。

〔対策〕

なし。

KFSG63301-E (Y)C

A parameter is outside the valid range or was not specified. (parameter = aa....aa, value = bb....bb, reason = cc....cc)

パラメタに設定範囲外の値が指定されている、またはパラメタが指定されていません。

aa....aa：パラメタ名

複数のパラメタが関係する場合は、「;」で区切られて複数表示されます。

bb....bb：パラメタの指定値

指定されていない場合は、「null」が表示されます。

複数のパラメタが関係する場合は、「;」で区切られて複数表示されます。

cc....cc：理由コード

VALUE：パラメタの指定値が設定範囲外です。

NULL：必須パラメタが指定されていません。

(Ｓ)TP1-Converterを異常終了します。

(Ｏ)パラメタの指定値を見直して、正しい値を指定してください。そのあと、TP1-Converterを再起動してください。

〔対策〕

なし。

KFSG63302-E (Y)C

The service group is not registered in the cache. (service_group_name = aa....aa)

サービスグループがキャッシュに登録されていません。

aa....aa：登録されていないサービスグループ名

(Ｓ)データ変換処理を終了し、TP1-Bridgeにエラー応答を返します。

(Ｏ)このメッセージのあとに出力されている例外情報を参照して障害を調査してください。

〔対策〕

なし。

KFSG63303-E (Y)C

Failed to read request data.

リクエストデータの読み取りに失敗しました。

(Ｓ)データ変換処理を終了し、TP1-Bridgeにエラー応答を返します。

(Ｏ)このメッセージのあとに出力されている例外情報を参照して障害を調査してください。

〔対策〕

なし。

KFSG63304-E (Y)C

The definition file storage directory does not exist. (path = aa....aa)

定義ファイル格納ディレクトリが存在しません。

aa....aa：定義ファイル格納ディレクトリのパス名

(Ｓ)TP1-Converter起動時に発生した場合は、TP1-Converterの起動を停止します。リフレッシュ処理実行時に発生した場合は、リフレッシュ処理の実行元にエラー応答を返します。

(Ｏ)tp1.data-conversion.definition-file.directoryパラメタの設定値が正しいかどうかを確認してください。

設定値が誤っていた場合：正しい値に変更してください。

設定値のディレクトリが存在していない場合：ディレクトリを作成してください。

そのあと、TP1-Converterを再起動してください。

〔対策〕

なし。

KFSG63305-E (Y)C

Failed to load subdirectories of the definition file storage directory. (path = aa....aa)

定義ファイル格納ディレクトリのサブディレクトリの読み込みに失敗しました。

aa....aa：定義ファイル格納ディレクトリのパス名

(Ｓ)TP1-Converter起動時に発生した場合は、TP1-Converterの起動を停止します。リフレッシュ処理実行時に発生した場合は、リフレッシュ処理の実行元にエラー応答を返します。

(Ｏ)このメッセージのあとに出力されている例外情報を参照して障害を調査してください。

〔対策〕

なし。

KFSG63306-W (Y)C

The definition files required for data conversion are not available. (path = aa....aa, service = bb....bb)

データ変換に必要な定義ファイルがそろっていません。

aa....aa：定義ファイル格納ディレクトリ下のサービスグループ名のディレクトリのパス名

bb....bb：サービス名

サービスグループ名のディレクトリ内に定義ファイルが1つもない場合は、「null」が表示されます。

(Ｓ)キャッシュ登録処理を続行します。

(Ｏ)必要な定義ファイルを作成して定義ファイル格納ディレクトリ内に格納してください。そのあと、キャッシュのリフレッシュ処理を実行してください。

〔対策〕

なし。

KFSG63307-E (Y)C

JSON conversion failed.

JSON変換に失敗しました。

(Ｓ)キャッシュ参照処理を終了し、キャッシュ参照処理の実行元にエラー応答を返します。

(Ｏ)このメッセージのあとに出力されている例外情報を参照して障害を調査してください。

〔対策〕

なし。

KFSG63308-E (Y)C

Failed to create message. (message ID = aa....aa, details = bb....bb, exception = cc....cc)

メッセージの作成に失敗しました。

aa....aa：入力されたメッセージID

指定されていない場合は、「null」が表示されます。

bb....bb：詳細情報

指定されていない場合は、「null」が表示されます。

複数の詳細情報が関係する場合は、「;」で区切られて複数表示されます。

cc....cc：例外情報

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

保守員に連絡してください。

KFSG63309-E (Y)C

Failed to load the list of definition files or load the definition files. (path = aa....aa)

定義ファイルの一覧または定義ファイルの読み込みに失敗しました。

aa....aa：読み込みに失敗したパス名

定義ファイルの一覧の読み込みに失敗した場合：定義ファイルを格納しているディレクトリのパス名

定義ファイルの読み込みに失敗した場合：定義ファイルのパス名

(Ｓ)キャッシュ登録処理を続行します。

(Ｏ)このメッセージのあとに出力されている例外情報を参照して障害を調査してください。

〔対策〕

なし。

KFSG63310-E (Y)C

A new exception was thrown. (message = aa....aa)

処理中に例外が発生しました。

aa....aa：発生した例外の詳細メッセージ

(Ｓ)TP1-Converterを異常終了するか、または呼び出し元にエラー応答を返します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

保守員に連絡してください。

KFSG63311-W (Y)C

The definition file name does not have _jtob or _btoj. (path = aa....aa, file name = bb....bb)

定義ファイルのファイル名に、「_jtob」または「_btoj」がありません。

aa....aa：定義ファイル格納ディレクトリ下のサービスグループ名のディレクトリのパス名

bb....bb：定義ファイル名

(Ｓ)キャッシュ登録処理を続行します。

(Ｏ)出力された定義ファイルのファイル名を修正してください。そのあと、キャッシュのリフレッシュ処理を実行してください。

〔対策〕

なし。

KFSG63312-E (Y)C

Cache registration of definition file failed. (message = aa....aa)

定義ファイルのキャッシュ登録に失敗しました。

aa....aa：発生した例外の詳細メッセージ

(Ｓ)キャッシュ登録処理を続行します。

(Ｏ)キャッシュ登録に失敗した定義ファイルを修正して、キャッシュのリフレッシュ処理を実行してください。

定義ファイルのファイル名の形式を次に示します。

<キャッシュ名>.<拡張子>

<キャッシュ名>は、次のどちらかです。

発生した例外の詳細メッセージ中の「キャッシュ名」

「cacheName」

<拡張子>は、次のどれかです。

発生した例外の詳細メッセージ中の「種別」

「formatDataKind」が「FDX」の場合：fdx

「formatDataKind」が「XSLT」の場合：xsl

〔対策〕

なし。

KFSG64001-E (Y)M

A new exception was thrown. (message = aa....aa)

処理中に例外が発生しました。

aa....aa：発生した例外の詳細メッセージ

(Ｓ)処理を続行します。

(Ｏ)例外の詳細メッセージまたは直後に出力されたメッセージに従ってください。

〔対策〕

なし。

KFSG64002-E (Y)M

A parameter is outside the valid range or was not specified. (parameter = aa....aa, value = bb....bb, reason = cc....cc)

パラメタに設定範囲外の値が指定されている、またはパラメタが指定されていません。

aa....aa：パラメタ名

複数のパラメタが関係する場合は、「;」で区切られて複数表示されます。

bb....bb：パラメタの指定値

指定されていない場合は、「null」が表示されます。複数のパラメタが関係する場合は、「;」で区切られて複数表示されます。

cc....cc：理由コード

VALUE：パラメタの指定値が設定範囲外です。

NULL：必須パラメタが指定されていません。

(Ｓ)処理を終了します。

(Ｏ)パラメタの指定値を見直し正しい値に変更したあと、再起動してください。

〔対策〕

なし。

KFSG64601-E (Y)M

The processing to initialize encryption failed.

暗号化の初期化処理に失敗しました。

メッセージの次行から暗号化の初期化処理で発生したException情報を出力します。

(Ｓ)Podの起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Exceptionやログおよびトレースの確認結果に従い対応してください。

次に、出力されるException例と原因を示します。

java.security.cert.CertificateExpiredException：NotAfter:日付

原因：証明書ファイルの有効期限が切れています。

java.lang.IllegalArgumentException：File does not contain valid private key：証明書の秘密鍵ファイル名

原因：秘密鍵ファイルのフォーマット不正、証明書ファイルに対応していない、など。

KFSG64602-E (Y)M

An error occurred in the sending of a gRPC request to the participant. (service name = aa....aa, port = bb....bb, rootxid = cc....cc, information = dd....dd)

ParticipantへのgRPC通信の送信でエラーが発生しました。

メッセージの次行からgRPC通信のException情報を出力します。

aa....aa：Participantの<Service名>.<Namespace名>

bb....bb：Participantのポート番号　*を出力します。

cc....cc：ルートXID

トランザクション処理以外のgRPC通信の場合は*

dd....dd：保守情報

お問い合わせの際に連絡してください。

(Ｓ)処理を継続します。

(Ｏ) Exception情報を確認して対策を行うか、Participantなどに問題が発生していないかログおよび分散トレースを確認してください。分散トレースを確認する際は、オペレーション名「j.c.H.s.h.t.o.t.PeriodicallyRecoveryJob:execute」に記録されるスパンイベント「hostname」を参照し、トランザクションで利用しているParticipantを特定してください。

また、次のParticipantのパラメタの設定値を見直してください。

SQL-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.sql.pod.service-name

TCC-Participantを使用する場合：jp.co.Hitachi.soft.hmppcto.tcc.pod.service-name

TP1-Bridgeを使用する場合：tp1.pod.serviceName

〔対策〕

Exceptionやログおよび分散トレースの確認結果に従い対応してください。

10.2.2　KFSG70000〜KFSG79999

KFSG70000〜KFSG79999のメッセージを次に示します。

KFSG74001-E (Y)M

A new exception was thrown. (message = aa....aa)

処理中に例外が発生しました。

aa....aa：発生した例外の詳細メッセージ。

(Ｓ)処理を続行します。

(Ｏ)例外の詳細メッセージまたは直後に出力されたメッセージに従ってください。

〔対策〕

なし。

KFSG74002-E (Y)M

A parameter is outside the valid range or was not specified. (parameter = aa....aa, value = bb....bb, reason = cc....cc)

パラメタに設定範囲外の値が指定されている、またはパラメタが指定されていません。

aa....aa：パラメタ名

複数のパラメタが関係する場合は、「;」で区切られて複数表示されます。

bb....bb：パラメタの指定値

指定されていない場合は、「null」が表示されます。複数のパラメタが関係する場合は、「;」で区切られて複数表示されます。

cc....cc：理由コード

VALUE：パラメタの指定値が設定範囲外です。

NULL：必須パラメタが指定されていません。

(Ｓ)処理を終了します。

(Ｏ)パラメタの指定値を見直し正しい値に変更したあと、再起動してください。

〔対策〕

なし。

KFSG74100-I (Y)M

Initialization of the message logging function will now start.

メッセージログ機能の初期化を開始します。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74101-I (Y)M

The message logging function will now start.

メッセージログ機能を開始します。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74102-E (Y)M

The message logging function failed.

メッセージログ機能の開始に失敗しました。

(Ｓ)Podの起動処理を終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直後に出力するスタックトレースを参照し、メッセージログ機能が起動しなかった要因を除いたあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG74103-E (Y)M

The logger could not find the message property file.

ロガーがメッセージプロパティファイルを取得できませんでした。

(Ｓ)Podの起動処理を終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直後に出力するスタックトレースを参照し、メッセージログ機能が起動しなかった要因を除いたあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG74104-E (Y)M

Creation of a message failed. (message ID = aa....aa, detail(s) = bb....bb, exception = cc....cc)

メッセージの作成に失敗しました。

aa....aa：入力されたメッセージID

指定されていない場合は「null」を表示します。

bb....bb：詳細情報

指定されていない場合は「null」を表示します。複数の詳細情報が関係する場合は「;」で区切って複数表示します。

cc....cc：例外情報

指定されていない場合は「null」を表示します。

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG74105-I (Y)M

HMP-PCTO Version. (Version = aa....aa)

起動したHMP-PCTOのバージョンです。

aa....aa：HMP-PCTOバージョン

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74200-I (Y)M

Initialization of the trace function will now start.

分散トレース機能の初期化を開始します。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74201-I (Y)M

The trace function will now start.

分散トレース機能を開始します。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74202-E (Y)M

The trace function failed.

分散トレース機能の開始に失敗しました。

(Ｓ)Podの起動処理を終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直後に出力するスタックトレースを参照し、メッセージログ機能が起動しなかった要因を除いたあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG74203-I (Y)M

The processing to stop the trace function will now start.

分散トレース機能の終了処理を開始します。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74204-I (Y)M

The trace function will now stop.

分散トレース機能を終了します。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74205-W (Y)M

The trace function is disabled. (reason = aa....aa)

分散トレース機能が無効です。

aa....aa：理由コード

PARAMETER：jp.co.Hitachi.soft.hmppcto.tracing.use-traceにfalseが設定されています。

LIBRARY：jp.co.Hitachi.soft.hmppcto.tracing.use-traceにtrueが設定されていますが、分散トレース機能を使用するためのライブラリがアプリケーションに組み込まれていないか、読み込むことができません。

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

テスト環境などでJaegerを使用できない場合などを除き、分散トレース機能を有効にしてください。

jp.co.Hitachi.soft.hmppcto.tracing.use-traceパラメタにtrueを設定してください。そのあと、Podを再起動してください。

分散トレース機能を使用するためのライブラリがアプリケーションに組み込まれているか確認してください。組み込まれていない場合、「2.2.17　分散トレース機能の設定」を参照して組み込んでください。

解決しない場合は保守員に連絡してください。

KFSG74206-I (Y)M

The trace will be sent to Tracing service. (service = aa....aa, instance-id = bb....bb, URL = cc....cc)

分散トレースを分散トレース収集アプリケーションサービスに送信します。

aa....aa：送信先の分散トレース収集アプリケーションまたはサービス

分散トレース収集アプリケーションとしてJaegerを使用する場合：Jaeger-Thrift

分散トレース収集サービスとしてAzure Monitor Application Insightsを使用する場合：Azure

分散トレース収集サービスとしてCloud Traceを使用する場合：GCP

分散トレース収集サービスとしてOpenTelemetry Collectorを使用する場合：OTLP（http/protobuf）

bb....bb：jp.co.Hitachi.soft.hmppcto.tracing.instance-idパラメタの設定値。未設定の場合は自動生成されたID

cc....cc：jp.co.Hitachi.soft.hmppcto.tracing.urlパラメタの設定値

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74401-I (Y)M

The metrics function is running.

メトリクス機能の起動中です。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74402-I (Y)M

The metrics function will now start.

メトリクス機能を開始します。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74403-I (Y)M

The metrics function will now stop.

メトリクス機能を終了します。

(Ｓ)メトリクス機能が停止（終了）します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74404-I (Y)M

Initialization of the metrics collector timer will now start. (component = aa....aa)

メトリクスコレクタタイマの初期化を開始します。

aa....aa：初期化を実施するコンポーネント名

Mediator

SQL-Participant

TCC-Participant

TP1-Bridge

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74405-I (Y)M

Initialization of the metrics collector timer finished. (component = aa....aa)

メトリクスコレクタタイマの初期化が完了しました。

aa....aa：初期化を実施するコンポーネント名

Mediator

SQL-Participant

TCC-Participant

TP1-Bridge

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74406-I (Y)M

The metrics collector timer was stopped. (component = aa....aa)

メトリクスコレクタタイマを終了しました。

aa....aa：初期化を実施するコンポーネント名

Mediator

SQL-Participant

TCC-Participant

TP1-Bridge

(Ｓ)メトリクス機能が停止（終了）します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG74407-E (Y)M

Creation of a metrics collector timer failed. (component = aa....aa)

メトリクスコレクタタイマの初期化に失敗しました。

aa....aa：初期化を実施するコンポーネント名

Mediator

SQL-Participant

TCC-Participant

TP1-Bridge

(Ｓ)Podの起動処理を終了します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

直後に出力するスタックトレースを参照し、メトリクスコレクタタイマが初期化できなかった要因を除いたあと、Podを再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG74408-W (Y)M

Failed to clear the metrics collector timer. (component = aa....aa)

メトリクスコレクタタイマの破棄に失敗しました。

aa....aa：初期化を実施するコンポーネント名

Mediator

SQL-Participant

TCC-Participant

TP1-Bridge

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

10.2.3　KFSG80000〜KFSG89999

KFSG80000〜KFSG89999のメッセージを次に示します。

KFSG80000-I (Y)M

The gRPC server will now start. (port = aa....aa)

gRPCサーバを起動します。

aa....aa：gRPCサービスが使用するポート番号

(Ｓ)gRPCサーバの起動処理を実行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG80001-I (Y)M

The processing to initialize the Participant will now start.

Participantの初期化処理を開始します。

(Ｓ)Participantの初期化処理を行います。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG80002-I (Y)M

The processing to initialize the Participant finished.

Participantの初期化処理が完了しました。

(Ｓ)Participantの初期化処理を終了します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG80003-I (Y)M

Shutdown of the gRPC server will now start. (port = aa....aa)

gRPCサーバの停止を開始します。

aa....aa：gRPCサーバのポート番号

(Ｓ)gRPCサーバを停止します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG80004-I (Y)M

The Participant has started.

Participantが起動しました。

(Ｓ)Participantが起動しました。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG80005-I (Y)M

Shutdown of the gRPC server finished. (port = aa....aa)

gRPCサーバの停止が完了しました。

aa....aa：gRPCサーバのポート番号

(Ｓ)Podを終了します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG80006-I (Y)M

The SQL-Participant will now shut down.

SQL-Participantの停止処理を行います。

(Ｓ)SQL-Participantの停止処理を行います。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG80007-I (Y)M

The commit processing retry has completed. (branchxid = aa....aa)

Commit処理のリトライが完了しました。

aa....aa：ブランチXID

(Ｓ)Commit処理のリトライを終了します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG80008-I (Y)M

The rollback processing retry has completed. (branchxid = aa....aa)

Rollback処理のリトライが完了しました。

aa....aa：ブランチXID

(Ｓ)Rollback処理のリトライを終了します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG81001-I (Y)M

The SQL-Participant initialization processing is waiting for the obtaining connection to database. (retry count = aa....aa, retry interval in seconds = bb....bb)

SQL-Participantの初期化処理でデータベースとのコネクション取得を待ち合わせます。

aa....aa：データベースとのコネクション取得をリトライする回数（jp.co.Hitachi.soft.hmppcto.sql.pool.connection-retry-limit設定値）

bb....bb：データベースとのコネクション取得をリトライする間隔（単位：秒）（jp.co.Hitachi.soft.hmppcto.sql.pool.connection-retry-interval-in-seconds設定値）

(Ｓ)データベースとのコネクション取得をaa....aaの回数、bb....bbの間隔でリトライします。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG81002-I (Y)M

The obtaining connection to database finished.

データベースとのコネクション取得が完了しました。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG81101-I (Y)M

The processing to initialize the mediator will now start.

Mediatorの初期化処理を開始します。

(Ｓ)Mediatorの初期化処理を行います。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG81102-I (Y)M

The processing to initialize the mediator finished.

Mediatorの初期化処理が完了しました。

(Ｓ)Mediatorの初期化処理を終了します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG81105-I (Y)M

The mediator will now shutdown.

Mediatorの停止処理を行います。

(Ｓ)Mediatorの停止処理を行います。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG81107-I (Y)M

A consensus log file was created. (file name = aa....aa)

ConsensusLogファイルの作成を行いました。

aa....aa：ConsensusLogファイル名

(Ｓ)処理を継続します。

(Ｏ)必要ありません。

〔対策〕

なし

KFSG81108-I (Y)M

The consensus log file already exists. (file name = aa....aa)

ConsensusLogファイルが存在しました。

aa....aa：ConsensusLogファイル名

(Ｓ)処理を継続します。

(Ｏ)必要ありません。

〔対策〕

なし

KFSG81109-I (Y)M

The consensus log file was closed. (file name = aa....aa)

Mediatorの停止によって、ConsensusLogファイルをクローズしました。

aa....aa : ConsensusLogファイル名

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG82000-I (Y)M

The processing to initialize the TCC participant will now start.

TCC-Participantの初期化処理を開始します。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82002-I (Y)M

The processing to initialize the thread pool will now start. (thread pool size = aa....aa)

スレッドプールの初期化処理を開始します。

aa....aa：スレッドプールサイズ

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82003-I (Y)M

The processing to initialize the TCC participant finished.

TCC-Participantの初期化処理が完了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82004-I (Y)M

The TCC participant has started.

TCC-Participantが起動しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82005-I (Y)M

The TCC participant will now shut down.

TCC-Participantの停止処理を行います。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82006-I (Y)M

The initialization process for the thread pool that is used for communication with the mediator will now start. (jp.co.Hitachi.soft.hmppcto.mediator-process-management.thread-pool-size = aa....aa, jp.co.Hitachi.soft.hmppcto.mediator-communication.thread-pool-size = bb....bb, jp.co.Hitachi.soft.hmppcto.mediator-communication.queue-size = cc....cc)

Mediatorと通信するために使用するスレッドプールの初期化処理を開始します。

aa....aa：Mediatorへ送信を行うスレッドを管理するスレッドが使用するスレッドプールサイズ

bb....bb：Mediatorへのトランザクション決着要求スレッドおよびMediator受信スレッドが使用するスレッドプールサイズ

cc....cc：Mediatorへのトランザクション決着要求スレッドおよびMediator受信スレッドが使用するキューサイズ

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82007-I (Y)M

The initialization process for the thread pool will now start. (aa....aa = bb....bb, cc....cc = dd....dd)

スレッドプールの初期化処理を開始します。

aa....aa：スレッドプールサイズを指定したパラメタ名

SQL-Participantの場合：jp.co.Hitachi.soft.hmppcto.sql.participant-processing.thread-pool-size

TCC-Participantの場合：jp.co.Hitachi.soft.hmppcto.tcc.participant-processing.thread-pool-size

TP1-Bridgeの場合：jp.co.Hitachi.soft.hmppcto.tp1.participant-processing.thread-pool-size

Mediatorの場合：jp.co.Hitachi.soft.hmppcto.grpc.server.thread-pool-size、jp.co.Hitachi.soft.hmppcto.mediator.judge.thread-pool-size、jp.co.Hitachi.soft.hmppcto.consensus-log.io.thread-pool-sizeまたはjp.co.Hitachi.soft.hmppcto.participant.sender.thread-pool-size

bb....bb：スレッドプールサイズを指定したパラメタの値

cc....cc：キューサイズを指定したパラメタ名

SQL-Participantの場合：jp.co.Hitachi.soft.hmppcto.sql.participant-processing.queue-size

TCC-Participantの場合：jp.co.Hitachi.soft.hmppcto.tcc.participant-processing.queue-size

TP1-Bridgeの場合：jp.co.Hitachi.soft.hmppcto.tp1.participant-processing.queue-size

Mediatorの場合：jp.co.Hitachi.soft.hmppcto.grpc.server.queue-size、jp.co.Hitachi.soft.hmppcto.mediator.judge.queue-size、jp.co.Hitachi.soft.hmppcto.consensus-log.io.queue-sizeまたはjp.co.Hitachi.soft.hmppcto.participant.sender.queue-size

dd....dd：キューサイズを指定したパラメタの値

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82100-I (Y)D

The transaction health check processing will now start. (retry count = aa....aa, retry interval seconds = bb....bb, connect timeout seconds = cc....cc, read timeout seconds = dd....dd, http port = ee....ee, context path = ff....ff)

トランザクションヘルスチェック処理を開始します。

aa....aa：リトライ回数

bb....bb：リトライ間隔秒数

cc....cc：接続タイムアウト秒数

dd....dd：応答タイムアウト秒数

ee....ee：HTTPポート番号

ff....ff：コンテキストパス

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82101-I (Y)D

The transaction health check processing finished.

トランザクションヘルスチェック処理が完了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82102-I (Y)D

The processing that waits for active transactions will now start. (retry count = aa....aa, retry interval seconds = bb....bb, connect timeout seconds = cc....cc, read timeout seconds = dd....dd, http port = ee....ee, context path = ff....ff)

未決着トランザクション待機処理を開始します。

aa....aa：リトライ回数

bb....bb：リトライ間隔秒数

cc....cc：接続タイムアウト秒数

dd....dd：応答タイムアウト秒数

ee....ee：HTTPポート番号

ff....ff：コンテキストパス

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82103-I (Y)D

The processing that waits for active transactions finished.

未決着トランザクション待機処理が完了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82104-I (Y)D+M

The dependency check processing will now start. (retry count = aa....aa, retry interval seconds = bb....bb, connect timeout seconds = cc....cc, read timeout seconds = dd....dd, targets = ee....ee)

デプロイ依存関係チェック処理を開始します。

aa....aa：リトライ回数

bb....bb：リトライ間隔秒数

cc....cc：接続タイムアウト秒数

dd....dd：応答タイムアウト秒数

ee....ee：ターゲットKubernetesオブジェクト群

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82105-I (Y)D+M

The dependency check processing finished.

デプロイ依存関係チェック処理が完了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG82200-I (Y)M

The scaling function is enabled.

スケーリング対応機能が有効になっています。

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

KFSG83100-I (Y)M

The orchestrator initialization processing is waiting for a mediator to start. (retry-count = aa....aa, interval-in-millis = bb....bb)

Orchestratorの初期化処理でMediatorの起動を待ち合わせます。

aa....aa：Mediatorが起動しているかのチェックをリトライする回数（mediator.discovery-retry-count設定値）

bb....bb：Mediatorが起動しているかのチェックをリトライする間隔（単位：ミリ秒）（mediator.discovery-interval-in-millis設定値）

(Ｓ)Mediatorが起動しているかのチェックをaa....aaの回数、bb....bbの間隔でリトライします。

(Ｏ)なし。

〔対策〕

なし。

KFSG83101-I (Y)M

Initialization of the orchestrator finished.

Orchestratorの初期化が終了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG83102-I (Y)M

Initialization of the entity module finished.

Entity-Moduleの初期化が終了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG83103-I (Y)C

Initialization of the tp1 converter finished.

TP1-Converterの初期化が終了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

第7編　システム運用に必要となる機能

11　システム運用に必要となる機能

11.1　概要

11.1.1　取得する情報および各情報の紐づけ方法

HMP-PCTOのトラブルシュート機能や連携製品で取得する情報、およびこれらの情報の紐づけ方法について説明します。

(1)　取得する情報

次の要件を満たすため、HMP-PCTOは最低限必要な情報取得先として次の表の情報を取得します。

ユーザによる障害検知ができること

どこで問題が起こっているか障害個所を調査できること

何が起こっているかを調査できること

表11‒1　HMP-PCTOの情報取得先

項番

情報取得先

名称

説明

1

メッセージログ

ユーザが障害検知するため、また、何が起こっているかを調査するため、詳細な情報を出力します。発生したイベントをタイムスタンプとともにテキストで取得します。

2

分散トレース

障害個所（エラー個所およびレスポンス遅延個所）の特定を行うため、サービス要求や製品機能間の通知に関するアクティビティを、関連づけ可能な形で取得します。各サービスでの処理時間、呼び出し関係と、付随する情報（種別など）を取得します。

分散トレースのイメージについては次の個所を参照してください。

SQL-Participant使用時：「図11‒1　分散トレースのイメージ（SQL-Participantを使用する場合）」

TCC-Participant使用時：「図11‒2　分散トレースのイメージ（TCC-Participantを使用する場合）」

TP1-Bridge使用時：「図11‒3　分散トレースのイメージ（TP1-Bridgeを使用する場合）」

3

メトリクス

レスポンス遅延が発生しているときに何が起こっているかを調査するため、システムの利用状況（CPU使用率など）、Java VMの利用状況（メモリ使用量など）、およびHMP-PCTOの性能を評価するための指標となる数値（トランザクション数など）を取得します。

HMP-PCTOにおける「ログ」は、ユーザに何が起こっているかを知らせる情報を文章として出力し、「トレース」はユーザにどこで問題が発生しているかを追跡するための情報を出力します。

分散トレースのイメージを次の図に示します。この図は分散トレースのイメージを表しているため、実際の処理シーケンスとは異なります。

図11‒1　分散トレースのイメージ（SQL-Participantを使用する場合）

図11‒2　分散トレースのイメージ（TCC-Participantを使用する場合）

図11‒3　分散トレースのイメージ（TP1-Bridgeを使用する場合）

要件「情報を永続化できること」を満たすため、HMP-PCTOはログ、分散トレース、およびメトリクスをそれぞれの管理基盤に送り永続化します。メトリクス情報の永続化の方法については、「11.4.2　サポートするアプリケーションおよびサービス」を参照してください。

また、管理基盤にElastic Stackを使用する場合は、障害が発生するケースに備えて、Elasticsearchをクラスタ構成にできます。クラスタはElasticsearchクラスタを制御するマスターノード群と情報を保持するデータノード群で構成されます。

分散トレースの情報は、ファイルにエクスポートする際に特定の種別の情報を抽出できます。例えば、SQL-Participant使用時の場合、XA関数発行時のトレースに絞って出力することで、1トランザクション当たりのXA関数の処理時間の合計を抽出できます。SQL-Participant使用時の場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートのイメージを次の図に示します。

図11‒4　HMP-PCTO 分散トレース・標準出力の送信およびエクスポート（SQL-Participantを使用する場合）

TCC-Participant使用時の場合、API Adapter発行時のトレースに絞って出力することで、1トランザクション当たりの処理時間の合計を抽出できます。TCC-Participantを使用する場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートイメージを次の図に示します。

図11‒5　HMP-PCTO 分散トレース・標準出力の送信およびエクスポート（TCC-Participantを使用する場合）

TP1-Bridge使用時の場合、RPCコール/XA関数発行時のトレースに絞って出力することで、1トランザクション当たりの処理時間の合計を抽出できます。TP1-Bridgeを使用する場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートイメージを次の図に示します。

図11‒6　HMP-PCTO 分散トレース・標準出力の送信およびエクスポート（TP1-Bridgeを使用する場合）

要件「システムへのリソースおよび性能の影響を最小限にすること」を満たすため、「表11‒1　HMP-PCTOの情報取得先」以外の情報は、連携製品側で出力される情報を使用します。HMP-PCTOのトラブルシュートで利用する連携製品の情報は次のとおりです。

なお、各連携製品側の名称や機能などの最新の情報については、各製品のマニュアルを参照してください。

表11‒2　トラブルシュートで利用する連携製品の情報

項番

名称

説明

1

PostgreSQLのログ情報

XA関数に対応したPostgreのログ情報をトラブルシュートに利用します。

2

HiRDBのトレース・ログ情報

XA関数に対応したHiRDBのトレース・ログ情報をトラブルシュートに利用します。

3

SQL Serverのトレース・ログ情報

SQL Serverのトレース・ログ情報をトラブルシュートに利用します。

4

EADSの各種トラブルシュートファイル

EADSサーバでレスポンスの低下が起こっている場合、ログ情報のエラーメッセージや統計情報をトラブルシュートに利用します。トライアル版では利用できません。

5

Tomcatのアクセスログ

APのREST API通信についてヘッダ情報をトラブルシュートに利用します。

6

uCosminexus Application Runtime for Spring Bootのログ

Tomcatに問題（スローダウンによるレスポンス遅延など）が発生した際にトラブルシュートに利用します。

7

uCosminexus Service Platformのトレース・ログ情報

TP1連携機能の使用時に、TP1-Converter、およびuCosminexus Service Platformのトラブルシュートに利用します。

8

OpenTP1のトレース・ログ情報

TP1連携機能の使用時に、OpenTP1のトラブルシュートに利用します。

9

TP1/Client/Jのトレース情報

TP1連携機能の使用時に、TP1/Client/Jのトラブルシュートに利用します。

10

Oracle Databaseのトレース・ログ情報

Oracle Databaseのトレース・ログ情報をトラブルシュートに利用します。

HMP-PCTOの取得先ごとに、調査に必要な情報は次のとおりです。

表11‒3　取得先ごとに調査で必要な情報

項番

情報取得先

名称

取得する情報

1

メッセージログ

エラー、警告の情報

スタックトレースの情報

＜例＞

EADS APIエラー時のキー名・実行結果の情報

ConsensusLogアクセス時のエラーの情報

gRPC通信失敗時の情報

2

分散トレース

各サービスでの処理時間、呼び出し関係と、付随する情報（種別など）

＜例＞

XA関数名、処理結果、DBのログと紐づけするための情報（ブランチXID）

EADSへのアクセスで遅延発生した場合の処理時間、処理範囲

ConsensusLogへのアクセス時に遅延発生した場合の処理時間、処理範囲

3

メトリクス

システムの利用状況

Java VMの利用状況

HMP-PCTOの性能を評価するための指標

＜例＞

CPU使用率

メモリ使用量

トランザクション数

4

PostgreSQLのログ情報

ログ情報

5

HiRDBのトレース・ログ情報

ログ情報

HiRDBサーバのトランザクションの状態表示の結果

SQLトレース

6

SQL Serverのトレース・ログ情報

クエリトレース

ログ情報

7

EADSの各種トラブルシュートファイル

ログ情報（異常時）

統計情報（レスポンス低下時）

上記のファイルは、トライアル版では取得できません。

8

Tomcatのアクセスログ

REST API通信のヘッダ情報（HMP-PCTOの情報と紐づけ可能なブランチXIDの情報が記録されている）

9

uCosminexus Application Runtime for Spring Bootのログ

uCosminexus Application Runtime for Spring Bootのトレース情報（HTTPリクエストのトレース）

uCosminexus Application Runtime for Spring Bootのトレース情報としてHTTPリクエストURIが出力されますが、HMP-PCTOの情報との紐づけは、Tomcatのアクセスログの情報を用いて行います。

10

uCosminexus Service Platformのトレース・ログ情報

J2EEアプリケーションのユーザログ

NIO HTTPサーバのアクセスログ

Webサーブレットログ

JavaVMスタックトレース情報

JavaVMのGCログ

JavaVMログ（JavaVMログファイル）

11

OpenTP1のトレース・ログ情報

リアルタイム出力機能

12

TP1/Client/Jのトレース情報

デバッグトレース

エラートレース

メソッドトレース

UAPトレース

データトレース

エラートレース、メソッドトレース、UAPトレース、およびデータトレースはデフォルトでは出力されません。アプリケーションのデバッグ時や、HMP-PCTOが出力するメッセージだけでは問題の解決が困難な場合に、トレースを取得してください。

13

Oracle Databaseのトレース・ログ情報

SQLトレース

ログ情報

(2)　各情報の紐づけ方法

サポート部署が調査する上で障害原因の究明を行うために、各情報を紐づける必要があります。

HMP-PCTOで取得するメッセージログ・分散トレース、および連携製品で取得する情報の紐づけ情報として、ブランチXIDの情報を使用します（ブランチXIDにはルートXIDの情報を含んでいます）。

それぞれの紐づけ方法について説明します。

分散トレースの情報から障害（エラーおよびレスポンス遅延）個所を切り分け、その後、何が起こっていたかをメッセージログなどの情報から抽出するための紐づけ情報として、次の分散トレース情報でブランチXIDを取得します。

HMP-PCTOの各コンポーネント間のREST API通信、およびgRPC通信

なお、OrchestratorからMediatorへの通信、およびMediatorからParticipantへの通信（分散合意結果通知）にはブランチXIDがないため取得できるのはルートXIDだけとなりますが、ブランチXIDにはルートXIDの情報を含むため、ルートXIDの情報で紐づけできます。

ブランチXIDは、次に示す表の項番1〜3の情報でも取得します。また項番4以降は、連携製品側の情報として記録されています。

表11‒4　ブランチXIDを取得する情報、および連携製品のトラブルシュート情報の紐づけ

項番

情報

説明

1

ブランチXIDを取得する情報

HMP-PCTOのメッセージログ（エラー時）

異常発生時にHMP-PCTOのメッセージログに出力されるエラーメッセージに、ブランチXIDを含めます。

2

HMP-PCTOでXA関数発行時に取得する分散トレース情報

XA関数とブランチXIDの情報を取得します。

3

HMP-PCTOでEADS API発行時に取得する分散トレース情報

EADS APIのキー情報とConsensusIDを取得します。ConsensusIDはルートXIDの16進数表記のため、ブランチXIDと紐づけできます。

なお、トライアル版ではEADS API発行時に取得する分散トレース情報は取得できません。

4

連携製品のトラブルシュート情報（共通）

Tomcatアクセスログ

REST API通信とブランチXIDの情報が記録されています。

5

EADSトラブルシュート情報

ブランチXIDの情報などのキーとなる情報は記録されません。このため、時刻をキーにしてEADSトラブルシュート情報の調査をします。

なお、トライアル版ではEADSトラブルシュート情報は取得できません。

6

連携製品のトラブルシュート情報（SQL-Participant使用時）

PostgreSQLのログ情報

メッセージにXA関数とブランチXIDの情報が記録されています。

7

HiRDBのトレース・ログ情報

ログ情報

トランザクションの障害時に出力されるメッセージにブランチXIDの情報が記録されています。

8

HiRDBサーバのトランザクションの状態表示の結果

トランザクション識別子として、ブランチXIDが記録されています。

9

SQLトレース

トランザクション識別子として、ブランチXIDが記録されています。

10

SQL Serverのトレース・ログ情報

クエリトレース

ブランチXIDの情報などのキーとなる情報は記録されません。

11

ログ情報

ブランチXIDの情報などのキーとなる情報は記録されません。

12

Oracle Databaseのトレース・ログ情報

SQLトレース

ブランチXIDの情報などのキーとなる情報は記録されません。

13

ログ情報

ブランチXIDの情報などのキーとなる情報は記録されません。

14

連携製品のトラブルシュート情報（TCC-Participant使用時）

API Adapterアクセスログ情報

API AdapterアクセスとブランチXIDの情報が記録されています。

15

連携製品のトラブルシュート情報（TP1-Bridge使用時）

uCosminexus Service Platformのトレース・ログ情報

J2EEアプリケーションのユーザログ

TP1-Converterが出力するメッセージ内に、ブランチXIDの情報が記録されています。

16

NIO HTTPサーバのアクセスログ

ログ中の時刻情報をキーに、そのほかのトラブルシュート情報と紐づけます。

17

Webサーブレットログ

ログ中の時刻情報をキーに、そのほかのトラブルシュート情報と紐づけます。

18

JavaVMスタックトレース情報

スタックトレース情報を参照し、例外が発生した要因および例外の発生個所を調査します。

19

JavaVMのGCログ

統計情報の確認のために取得する情報です。通信遅延などの現象が発生した場合、その現象が発生した時刻およびログの時刻情報を基にトラブルシュートを実施します。

20

JavaVMログ（JavaVMログファイル）

ログ中の時刻情報をキーに、そのほかのトラブルシュート情報と紐づけます。

21

OpenTP1のトレース・ログ情報

リアルタイム出力機能

時刻情報をキーにし、そのほかのトラブルシュート情報と紐づけます。

22

TP1/Client/Jのトレース情報

デバッグトレース

トレース情報は、TP1-Brdige Podの標準出力に出力されます。HMP-PCTOのメッセージ、メッセージが出力された時刻情報、およびトレースの時刻情報を基に、トラブルシュートを実施します。

23

エラートレース

時刻情報およびスレッド名をキーにし、そのほかのトラブルシュート情報と紐づけます。

24

メソッドトレース

時刻情報およびスレッド名をキーにし、そのほかのトラブルシュート情報と紐づけます。

25

UAPトレース

時刻情報およびスレッド名をキーにして、そのほかのトラブルシュート情報と紐づけます。

26

データトレース

時刻情報およびスレッド名をキーにし、そのほかのトラブルシュート情報と紐づけます。

「表11‒4　ブランチXIDを取得する情報、および連携製品のトラブルシュート情報の紐づけ」で述べた、分散トレースとそのほかの情報との紐づけのイメージについて次の図に示します。図中の番号は、表の項番に対応しています。

図11‒7　HMP-PCTO各情報の紐づけのイメージ（SQL-Participantを使用する場合）

図11‒8　HMP-PCTO各情報の紐づけのイメージ（TCC-Participantを使用する場合）

図11‒9　HMP-PCTO各情報の紐づけのイメージ（TP1-Bridgeを使用する場合）

HMP-PCTOが取得する分散トレースの情報と、連携製品の情報をブランチXIDで紐づけて調査できます。なお、HMP-PCTOが取得する各分散トレース情報（「図11‒7　HMP-PCTO各情報の紐づけのイメージ（SQL-Participantを使用する場合）」、「図11‒8　HMP-PCTO各情報の紐づけのイメージ（TCC-Participantを使用する場合）」、および「図11‒9　HMP-PCTO各情報の紐づけのイメージ（TP1-Bridgeを使用する場合）」の緑枠部分）は、分散トレース固有の紐づけ情報（トレースID）によって関連づけられるため、JaegerのWeb UIなどで一貫した情報として見ることができます。

(3)　性能評価の対象と取得する情報

HMP-PCTOを使用した分散システムで、ユーザが性能を評価する対象は次のとおりです。

表11‒5　性能評価の対象

項番

評価対象

説明

1

システムの利用状況

Kubernetesなどのコンテナ環境における性能

＜例＞CPU使用率

2

Java VMの利用状況

Javaプロセス固有の性能

＜例＞Java Heap、GC

3

HMP-PCTOの性能を評価するための指標

gRPC通信の性能

HMP-PCTOの各コンポーネント間のgRPC通信の性能

＜例＞gRPC通信の処理時間

4

非同期処理の性能

別スレッドで実行する非同期タスクの性能

＜例＞非同期タスクの実行回数・時間、未実行の（キューイングされている）数

5

機能固有の稼働統計情報

HMP-PCTOのコンポーネントごとに固有で取得する稼働統計情報

＜例＞

Mediatorの例：ProposalLog、ConsensusLogの状態ごとの件数

Participantの例：トランザクションの件数・時間

TP1-Bridgeの例：Spring Boot組み込みTomcatのスレッド数

要件「ユーザがHMP-PCTOの性能を評価するための情報を取得すること」を満たすため、HMP-PCTOは、最低限必要な情報取得先として次の表の情報を取得します。

表11‒6　HMP-PCTOの情報取得先

項番

情報取得先

名称

説明

1

メトリクス

HMP-PCTOを使用した分散システムでユーザが性能を評価するため、システムの利用状況（CPU使用率など）、Java VMの利用状況（メモリ使用量など）、およびHMP-PCTOの性能を評価するための指標となる数値（トランザクション数など）を取得します。

11.2　メッセージログ

11.2.1　概要

HMP-PCTOは、稼働状況管理、障害検知、および障害発生時の切り分けなどを目的としてメッセージログを出力します。メッセージログ出力の契機は、アプリケーションの稼働状況の変化、障害発生などです。

HMP-PCTOは、ロギングライブラリを使用して、メッセージログを標準出力します。HMP-PCTOが出力するメッセージログを監視し、出力されたメッセージログに従って適切に対応してください。

標準出力の内容は、ノード上でログ収集アプリケーションまたはサービスを使用して収集します。収集したログは、ログを永続化するためのアプリケーションまたはサービスに転送され、永続化および可視化されます。障害発生時は、必要に応じて保存されたログをエクスポートし、障害調査者に送付してください。詳細については、「11.6　HMP-PCTOの障害調査」を参照してください。

また、KubernetesのコンテナのライフサイクルイベントハンドラではMediatorの起動・停止に関するイベントがメッセージログとして出力されます。出力された内容はKubernetesのイベントリソースに保存されます。必要に応じてイベントリソースのメッセージログを確認し、適切に対応してください。

なお、ログ収集アプリケーションおよびサービスは、イベントソースに保存されたメッセージログを収集しません。必要に応じて、永続化する必要があります。詳細については、「11.6　HMP-PCTOの障害調査」を参照してください。

メッセージログの構成を次の図に示します。なお、メッセージログの出力形式は、各コンポーネントで共通です。

図11‒10　メッセージログの構成

HMP-PCTOでは、次に示すロギングライブラリを使用します。

Logback

重要

ユーザアプリケーションで使用するロギングライブラリ

ユーザアプリケーションでロギングライブラリを使用する場合、HMP-PCTOの使用するロギングライブラリと記載が一致している必要があります。一致していない場合は、メッセージログが正常な出力フォーマットで出力されないか、またはメッセージログが出力されないことがあります。

ユーザアプリケーションのログ出力形式

ユーザアプリケーションでログを出力する場合、ログの確認、永続化、および可視化の利便性の観点から、HMP-PCTOのメッセージログと同様に、標準出力への出力を推奨します。

11.2.2　サポートするアプリケーションおよびサービス

HMP-PCTOでは、次に示すアプリケーションおよびサービスをサポートしています。

表11‒7　サポートするアプリケーションおよびサービス

項番

環境

ログ収集アプリケーションおよびサービス

ログを永続化するためのアプリケーションおよびサービス

ログ閲覧アプリケーションおよびサービス

1

Elastic Stack使用環境

Filebeat

Logstash

Elasticsearch

Elasticsearch

Kibana

2

Microsoft Azure環境

Azure Monitor

Azure Monitor Log Analytics

Azure Monitor

3

Google Cloud Platform環境

Cloud Logging

Cloud Logging

Cloud Logging

4

New Relic使用時

New Relic

New Relic

New Relic UI（Web UI）

各アプリケーションおよびサービスの設定・運用方法については、次の説明を参照してください。

「3.6　共有ファイルシステムでの作業」

「3.7　Kubernetesマニフェスト作成」

「3.8　Helmチャートのカスタマイズ」

「3.9　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用」

「3.11　ログの取得および監視の設定」

(1)　New Relicを使用した場合の構成

New Relicへメッセージログを出力する際の構成図を示します。

HMP-PCTOのメッセージログを収集する場合、newrelic-loggingコンポーネントをデプロイまたは有効化する必要があります。

図11‒11　New Relic使用時の構成図

11.2.3　取得方針

HMP-PCTOは、アプリケーションの稼働状況の変化、障害発生などを契機に、メッセージIDを付与したメッセージを出力します。

メッセージは、ログレベル「ERROR」、「WARN」、および「INFO」で出力されます。メッセージの説明および対策については、「10.　メッセージ」を参照してください。

11.2.4　パラメタ

メッセージログに関するパラメタはありません。

ログ収集アプリケーションまたはサービスを使用したサイドカーコンテナに関するパラメタについては、「3.11.1　ログおよびトラブルシュート情報の取得の設定」を参照してください。

11.3　分散トレース

11.3.1　概要

HMP-PCTOは1つのトランザクション内で、Orchestrator、Mediator、Entity-Module、およびParticipantなどのコンポーネントがお互いに通信し動作しており、処理の流れが複雑です。HMP-PCTOは、トランザクションの開始から終了までの間の各コンポーネントでの処理の情報（開始時刻や実行時間など）を関連づけて、分散トレース情報として取得します。障害発生時に分散トレース情報を確認することでトランザクションの処理の複雑な流れを把握でき、問題のあった処理の特定を容易化します。

分散トレースはHMP-PCTOがOpenTelemetryを使用して取得し、分散トレース収集アプリケーションまたはサービスに送信します。収集された分散トレースについては、データの永続化が必要です。データを永続化しない場合、分散トレースの情報が失われ、HMP-PCTO利用者およびサポート部署ともに分散トレースを使用した調査ができません。そのため、分散トレースの構成は次のようになります。

HMP-PCTOの各コンポーネントの処理でOpenTelemetryを使用してトレース情報を取得

分散トレース収集アプリケーションまたはサービスにトレース情報を送信

分散トレースを永続化するためのアプリケーションまたはサービスにデータを送信しデータを永続化

分散トレース閲覧アプリケーションまたはサービス上でトレース情報を参照

図11‒12　分散トレースの概要

11.3.2　サポートするアプリケーションおよびサービス

HMP-PCTOでは、次に示すアプリケーションおよびサービスをサポートしています。

表11‒8　サポートするアプリケーションおよびサービス

項番

環境

分散トレース収集アプリケーションおよびサービス

分散トレースを永続化するためのアプリケーションおよびサービス

分散トレース閲覧アプリケーションおよびサービス

1

Elastic Stack使用環境

Jaeger-collector

Elasticsearch

Jaeger-query

2

Microsoft Azure環境

Azure Monitor Application Insights

Azure Monitor Log Analytics

Azure Monitor Application Insights

3

Google Cloud Platform環境

Cloud Trace

Cloud Trace

Cloud Trace

4

New Relic使用時

OpenTelemetry Collector

New Relic

New Relic UI（Web UI）

(1)　New Relicを使用した場合の構成

New Relicへ分散トレースを出力する際の構成図を示します。

OpenTelemetry Collectorへの送信形式には、http/protobuf、http/json、およびgRPCの3種類があります。

HMP-PCTOのPodからOpenTelemetry Collectorへの送信形式は、デフォルトのhttp/protobufだけをサポートします。

New Relic OTLPエンドポイントはhttp/protobufだけに対応するため、OpenTelemetry CollectorからNew Relic OTLPエンドポイントへのOTLPはhttp/protobufを選択する必要があります。

図11‒13　New Relic使用時の構成図

11.3.3　分散トレース機能の使用

(1)　分散トレース機能の設定

分散トレース機能を使用する場合、使用する分散トレース収集サービスによって異なるライブラリを組み込む必要があります。

ライブラリの組み込み方法については、「2.2.17　分散トレース機能の設定」を参照してください。

重要

分散トレース機能で付与するヘッダ

HMP-PCTOでは、Spanの親子関係やサンプリング有無などの情報を各コンポーネントに伝搬させるために、ほかのコンポーネントへのリクエストに特定のヘッダを付与することで、分散トレーシングを実現します。

なお、ヘッダの情報が変更されると、正しい情報が伝搬できなくなります。そのため、ほかの製品で同様のヘッダが付与されないようにしてください。

付与するヘッダを次に示します。

ヘッダ名がtraceparentの場合

トレースID、スパンID、およびサンプリング有無が付与されます。

ヘッダ名がtracestateの場合

OpenTelemetry固有のデータが付与されます。

(2)　分散トレースの送信に失敗したとき

(a)　分散トレース送信失敗時の検知、および分散トレース機能の抑止について

HMP-PCTOで、分散トレースを定期的に分散トレース収集アプリケーションまたはサービスに送信しますが、エンドポイントが機能していない、送信先エンドポイントのパラメタ指定値が誤っている、などの要因で送信に失敗した場合、OpenTelemetryは警告メッセージを標準出力に出力します。このため、標準出力には定期的に警告メッセージが出力されることになります。

ユーザの運用での対処として、分散トレース収集アプリケーションまたはサービスへの送信失敗時の警告メッセージが、標準出力に出力されているかどうかを確認します。警告メッセージが出力されていた場合は、送信先定義を見直し、分散トレース収集アプリケーションまたはサービスが正常起動していることを確認してください。詳細については、「11.6　HMP-PCTOの障害調査」を参照してください。

(b)　分散トレース送信失敗時、トレース情報を一時的に別の出力先に変更することについて

「(a)　分散トレース送信失敗時の検知、および分散トレース機能の抑止について」にあるとおり、ユーザが運用で対処して分散トレース送信失敗を回復する必要があるため、HMP-PCTOではトレース情報の出力先を別の出力先に切り替えません。

そのため、ユーザが運用で対処するまでは、分散トレースを永続化するための収集アプリケーションまたはサービスにトレース情報が送信されず、トレース情報がロストするため注意してください。

11.3.4　トレースの単位

HMP-PCTOは分散トレースとしてSpanを取得します。Spanはトレースの単位です。HMP-PCTOでは、各コンポーネント（Orchestrator、Entity-Module、Participant、およびMediator）のプロセスをそれぞれ1つのマイクロサービスと考え、各コンポーネント内の特定処理（オペレーション）の開始時にSpan取得を開始し、特定処理の終了時にSpan取得を終了します。Spanを取得することで、特定処理の開始時刻と実行時間を取得できます。HMP-PCTOはSpanの取得開始から終了までの間に、Spanに特定処理に関する情報（ブランチXIDなど）を付加し取得します。

図11‒14　トレースの単位

HMP-PCTOは処理の起点（トランザクション開始時など）でトレースIDを採番します。トレースIDはグローバルに一意な識別子であり、同一トランザクションのすべてのコンポーネントにわたって同じトレースIDをコンポーネント間の通信に埋め込み伝搬し、各Spanに付与することでSpanをグループ化できます。Spanはネストできます。呼び出し元の処理が親Span、呼び出し先の処理が子Spanとなります。

分散トレース閲覧アプリケーションまたはサービスにアクセスし、トレースIDの一覧、およびトレースID単位での親Span、子Spanの呼び出し関係を確認することで、処理の流れを確認できます。

未決着トランザクションのRecovery機能が実行された場合、SQL-ParticipantまたはTCC-Participantの再起動前のトレースIDと再起動後のトレースIDは別の値となります。そのため、処理の流れを確認する場合は、同時に出力されているブランチXIDを基に処理の流れを確認する必要があります。

11.3.5　Spanへ付加する情報

Spanに付加する情報の形式について説明します。付加する情報の形式は3パターンあります。

(1)　スパンタグ

次のkey（情報名）、value（情報値）の形式で情報を取得します。分散トレース閲覧アプリケーションまたはサービスで、スパンタグの情報名、情報値を指定することで表示するトレースIDをフィルタできます。時間情報を必要としない情報の場合に、スパンタグに設定します。

例：受信した要求電文に含まれていたブランチXIDなど

図11‒15　スパンタグ（Azure Monitor Application Insightsの場合）

図11‒16　スパンタグ（Jaeger-queryの場合）

図11‒17　スパンタグ（Google Cloud PlatformのCloud Traceの場合）

図11‒18　スパンタグ（New Relicの場合）

(2)　スパンイベント

Azure Monitor Application Insightsの場合、「図11‒19　スパンイベント（Azure Monitor Application Insightsの場合）」のmessage、情報説明の形式で情報を取得します。Jaeger-queryの場合、「図11‒20　スパンイベント形式1（Jaeger-queryの場合）」のスパンイベント形式1、「図11‒21　スパンイベント形式2（Jaeger-queryの場合）」のスパンイベント形式2のどちらかの形式で情報を取得します。Google Cloud PlatformのCloud Traceの場合、「図11‒22　スパンイベント（Google Cloud PlatformのCloud Traceの場合）」のkey（情報名）、value（情報値）、情報説明の形式で情報を取得します。New Relicの場合、「図11‒23　スパンイベント（New Relicの場合）」のmessage、情報説明の形式で情報を取得します。

スパンタグは、Span内での処理の実施時刻を取得でき、Span内で遅延した処理の確認などに使用できます。時間情報を必要とする場合にスパンイベントに設定します（例：I/O開始、終了時刻など）。messageに対し、処理ごとの情報説明を設定します。情報説明には、対象情報がどのようなイベントかを設定します（ファイルI/O開始など）。

図11‒19　スパンイベント（Azure Monitor Application Insightsの場合）

Jaeger-queryの場合で、情報説明に加えてkey（情報名）、value（情報値）の形式で情報追加したいときは、スパンイベント形式2で情報を取得します。追加情報が不要であれば、スパンイベント形式1で取得します。

スパンタグとスパンイベント形式2の使い分け

対象イベントだけに関わる情報の場合はスパンイベント形式2へ、対象Span全体に関わる情報の場合はスパンタグに設定します。例えば、あるSpan内でファイルI/Oする場合に、スレッド名やブランチXIDなどSpan全体に関わる情報はスパンタグに、ファイルI/Oの結果はスパンイベント形式2に設定します。

図11‒20　スパンイベント形式1（Jaeger-queryの場合）

図11‒21　スパンイベント形式2（Jaeger-queryの場合）

図11‒22　スパンイベント（Google Cloud PlatformのCloud Traceの場合）

図11‒23　スパンイベント（New Relicの場合）

(3)　スパンコンテキスト

次のkey（情報名）、value（情報値）の形式でプロセスに関する情報を取得します。分散トレース閲覧アプリケーションまたはサービスでスパンコンテキストの名称、値を指定することで表示するトレースIDをフィルタできます。

図11‒24　スパンコンテキスト（Azure Monitor Application Insightsの場合）

図11‒25　スパンコンテキスト（Jaeger-queryの場合）

図11‒26　スパンコンテキスト（Google Cloud PlatformのCloud Traceの場合）

図11‒27　スパンコンテキスト（New Relicの場合）

11.3.6　取得方針

(1)　基本

Spanの基本の取得方針について説明します。EADS、XAについては、「(2)　EADS（通常版限定）」および「(3)　XA関数（SQL-Participant限定）」を参照してください。

取得個所、取得情報、および情報を取得するSpanについて説明します。

(a)　取得個所方針

HMP-PCTOではSpanを一般的な取得個所と、製品保守観点での取得個所で取得します。

一般的な取得個所でのSpanと、製品保守観点での取得個所でのSpanを、Spanに付与するオペレーション名で区別できます。オペレーション名は、各コンポーネント内の特定処理（オペレーション）を特定するため、製品のJavaクラス名やメソッド名などを組み合わせた文字列です。一般的な取得個所のSpanは、オペレーション名冒頭に「Recv」を付与します。

一般的な取得個所

分散トレースは一般的に、マイクロサービス間の情報を把握するために1回のサービス呼び出しで1Span取得します。HMP-PCTOでも、各コンポーネントでの処理開始時の上位処理でSpanを取得します。上位処理から呼び出す下位処理では別途Spanは取得しません。例外として、「製品保守観点での取得個所」に示す個所でSpanを取得します。

図11‒28　取得イメージ図

製品保守観点での取得個所

一般的なSpanの取得個所で情報を取得できない処理について、製品処理の調査のため別途Spanを取得します。

上位処理とは非同期に処理を実行する場合

タイマ処理など、他コンポーネントから要求の延長で実施した処理から登録し、別スレッドで実施する処理があります。これらの処理は登録元の処理が完了しても処理は続行するため、処理の終了時などの情報を、登録元のSpanへ登録できません。

そのため、コンポーネント内処理に応じて、次のどれかで取得します。

処理途中および終了時の情報を取得する場合（他コンポーネントや他製品と連携する場合など）

登録元処理のSpanを親Spanとした新たなSpanを作成します。

起動時の情報だけを取得する場合（処理途中、終了時情報が不要の場合）

登録元処理のSpanに、情報を付加します。

図11‒29　タイマ処理

電文送信処理

HMP-PCTOでは、複数の通信相手へ複数スレッドで同時送信する処理があります（OrchestratorからMediatorへのトランザクション決着要求など）。送信先の情報だけでは、ネットワーク遅延などが起きた場合に原因調査が難しいため、送信元での電文送受信時の情報（宛先、送受信時刻など）を取得したいため、送信先数分の情報取得が必要です。それらを1つのSpanで管理すると、宛先ごとの情報の確認がしづらくなります。そのため、送信先ごとに子Spanを取得し、送信先ごとの情報を子Spanで取得します。

図11‒30　通信処理

(b)　取得する付加情報方針

HMP-PCTOが取得する付加情報について説明します。

次の観点で付加情報を取得します。

他トラブルシュート情報との紐づけ情報（ルートXID/ブランチXIDなど）

対象処理がどこで実施した処理かの識別情報（ホスト名、スレッド名など）

通信先の情報（送信先のIPアドレス、ポート番号など）

通信データ（他コンポーネントへの指示内容（Commit/rollback要求）など）

対象処理の結果（commit/rollbackなど）

実行時間情報（ユーザアプリケーション、ファイルI/Oなど開始終了時間など）

重要

分散トレース閲覧サービスで確認できる情報について

HMP-PCTOのコンポーネントが取得する付加情報が同一であっても、使用する分散トレース閲覧サービスによっては、名称が異なったり、確認できなかったり、HMP-PCTOが取得した付加情報以外の情報が取得されていたりする場合があります。

詳細については、使用する分散トレース閲覧サービスのドキュメントを参照してください。

Azure Monitor Application Insightsを使用する場合に取得される情報については、Microsoft Azureの公式ドキュメントを参照してください。

Google Cloud PlatformのCloud Traceを使用する場合に取得される情報については、Google Cloud Platformの公式ドキュメントを参照してください。

New Relicを使用する場合に取得される情報については、New Relicの公式ドキュメントを参照してください。

付加する情報の一覧を次に示します。

コンポーネント共通

HMP-PCTOのコンポーネントが、共通でSpanに付加する情報の一覧を次に示します。

XID（ルートXID、ブランチXIDなど）

取得するスパンに関する情報（スパンのフォーマット、スレッド名など）

HMP-PCTOのPodが起動しているノード情報

HMP-PCTOが使用しているOpenTelemetryのライブラリに関する情報

スパンタグ

表11‒9　コンポーネント共通の付加情報（スパンタグ）

項番

情報名

Jaegerを使用する場合

Azure Monitor Application Insightsを使用する場合

Google Cloud PlatformのCloud Traceを使用する場合

New Relicを使用する場合

設定する情報値の説明

1

root-xid

○

○

○

○

ルートXIDをbase64エンコードした値を設定します。

ルートXIDとブランチXIDのうち、ルートXIDを使用する処理の場合に設定します。

2

branch-xid

○

○

○

○

ブランチXIDをbase64エンコードした値を設定します。

ルートXIDとブランチXIDのうち、ブランチXIDを使用する処理の場合に設定します。

3

thread-name

○

○

○

○

Spanが取得されたスレッド名を設定します。

4

otel.library.name

○

−

−

○

Spanを取得するライブラリの名称を設定します。

HMP-PCTOのライブラリで取得されたSpanの場合、「HMP-PCTO」が設定されます。

5

otel.library.version

○

−

−

○

Spanを取得するライブラリのバージョンを設定します。

HMP-PCTOのライブラリで取得されたSpanの場合、HMP-PCTOのライブラリのバージョン「V.R.S」が設定されます。

6

otel.scope.name

○

−

○

−

Spanを取得するスコープの名称を設定します。

HMP-PCTOのスコープで取得されたSpanの場合、「HMP-PCTO」が設定されます。

7

otel.scope.version

○

−

○

−

Spanを取得するスコープのバージョンを設定します。

HMP-PCTOのスコープで取得されたSpanの場合、HMP-PCTOのバージョン「V.R.S」が設定されます。

8

internal.span.format

○

−

−

−

Spanのフォーマットを設定します。

Jaeger向けのSpanの場合、「jaeger」が設定されます。

（凡例）

○：分散トレース閲覧サービスで確認できます。

−：分散トレース閲覧サービスで確認できません。

スパンイベント

付加情報はありません。

スパンコンテキスト

表11‒10　コンポーネント共通の付加情報（スパンコンテキスト）

項番

情報名

Jaegerを使用する場合

Azure Monitor Application Insightsを使用する場合

Google Cloud PlatformのCloud Traceを使用する場合

New Relicを使用する場合

設定する情報値の説明

1

hostname

○

−

−

−

コンポーネントのホスト名を設定します。

2

Role instance

−

○

−

−

コンポーネントのホスト名を設定します。

3

ip

○

−

−

−

コンポーネントのIPアドレスを設定します。

4

jaeger.version

○

−

−

−

Jaegerを使用する場合だけ設定されます。

HMP-PCTOが使用しているOpenTelemetryのライブラリを設定します。

「opentelemetry-java」が設定されます。

5

service.name

○

−

○

○

HMP-PCTOのjp.co.Hitachi.soft.hmppcto.tracing.instance-idパラメタに設定した値が設定されます。

6

Role name

−

○

−

−

HMP-PCTOのjp.co.Hitachi.soft.hmppcto.tracing.instance-idパラメタに設定した値が設定されます。

7

telemetry.sdk.language

○

−

○

○

HMP-PCTOが使用しているOpenTelemetryのライブラリの言語を設定します。

「java」が設定されます。

8

telemetry.sdk.name

○

−

○

○

HMP-PCTOが使用しているOpenTelemetryのライブラリの名称を設定します。

「opentelemetry」が設定されます。

9

telemetry.sdk.version

○

−

○

○

HMP-PCTOが使用しているOpenTelemetryのバージョンを設定します。

HMP-PCTO 01-01以降では、「1.38.0」が設定されます。

（凡例）

○：分散トレース閲覧サービスで確認できます。

−：分散トレース閲覧サービスで確認できません。

REST通信

コンポーネント共通の情報に加えて、REST通信を実施する際にSpanに付加する情報の一覧を次に示します。

リクエスト情報（HTTPメソッド、URL、レスポンスのHTTPステータスコードなど）

スケーリング対応機能の情報（ルーティング処理による書き換え後のリクエストURL）

スパンタグ

表11‒11　REST通信の付加情報（スパンタグ）

項番

項目名

説明

1

http-method

リクエストのHTTPメソッド。

例：POST、GETなど

2

http-url

リクエストのURL。

3

routed-http-url

スケーリング対応機能のルーティング処理による書き換え後のリクエストURL。

スケーリング対応機能を使用する場合だけ、この項目を設定します。

4

http-status-code

レスポンスのHTTPステータスコード。

通信障害でレスポンスが受信できなかった場合、この項目は設定されません。

スパンイベント

付加情報はありません。

スパンコンテキスト

付加情報はありません。

gRPC通信

コンポーネント共通の情報に加えて、gRPC通信を実施する際にSpanに付加する情報の一覧を次に示します。

gRPC情報（メソッド、サービス、ステータスコードなど）

HMP-PCTOが使用しているOpenTelemetryのライブラリに関する情報

スパンタグ

表11‒12　gRPC通信の付加情報（スパンタグ）

項番

項目名

Jaegerを使用する場合

Azure Monitor Application Insightsを使用する場合

Google Cloud PlatformのCloud Traceを使用する場合

New Relicを使用する場合

説明

1

network.peer.address

○

−

○

○

ネットワーク接続先のIPアドレスを設定します。

2

network.peer.port

○

−

○

○

ネットワーク接続先のポート番号を設定します。

3

network.type

○

−

○

○

ネットワークの種別を設定します。

「ipv4」を設定します。

4

rpc.grpc.status_code

○

−

○

○

gRPCのステータスコードを設定します。

5

rpc.method

○

−

○

○

gRPCのメソッドを設定します。

6

rpc.service

○

−

○

○

gRPCのサービスを設定します。

7

rpc.system

○

−

○

○

RPCの種別を設定します。

「grpc」が設定されます。

8

server.address

○

−

○

○

gRPCサーバのIPアドレスまたはホスト名を設定します。

9

server.port

○

−

○

○

gRPCサーバのポート番号を設定します。

10

span.kind

○

−

−

○

Span種別を設定します。

server：gRPCサーバの場合に設定します。

client：gRPCクライアントの場合に設定します。

11

otel.library.name

○

−

−

○

gRPC通信に関するSpanを取得するライブラリの名称を設定します。

12

otel.library.version

○

−

−

○

gRPC通信に関するSpanを取得するライブラリのバージョンを設定します。

13

otel.scope.name

○

−

○

−

gRPC通信に関するSpanを取得するスコープの名称を設定します。

14

otel.scope.version

○

−

○

−

gRPC通信に関するSpanを取得するスコープのバージョンを設定します。

（凡例）

○：分散トレース閲覧サービスで確認できます。

−：分散トレース閲覧サービスで確認できません。

スパンイベント

表11‒13　gRPC通信の付加情報（スパンイベント）

項番

項目名

説明

追加情報名

設定する情報値の説明

1

message

gRPCのメッセージ送信が行われたことを意味します。

message.id

メッセージのシーケンス番号

2

message.type

メッセージ送信時は「SENT」が設定されます。メッセージ受信時は「RECEIVED」が設定されます。

3

sent message(hmppcto)

gRPCのメッセージ送信が行われたことを意味します。

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debugパラメタがtrueの場合だけ取得されます。

json-convert

JSON形式での出力か、protobuf形式での出力かを示します。

true: JSON形式

false: protobuf形式

4

message-value

電文内容。

5

thread-name

gRPC通信のメッセージを送信したスレッド名を設定します。

6

sent message(hmppcto)

gRPCのメッセージ送信が行われたことを意味します。

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debugパラメタがfalseの場合だけ取得されます。

message.type

電文種別。

7

thread-name

gRPC通信のメッセージを送信したスレッド名を設定します。

8

received message(hmppcto)

gRPCのメッセージ受信が行われたことを意味します。

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debugパラメタがtrueの場合だけ取得されます。

json-convert

JSON形式での出力か、protobuf形式での出力かを示します。

true: JSON形式

false: protobuf形式

9

message-value

電文内容。

10

thread-name

gRPC通信のメッセージを送信したスレッド名を設定します。

11

received message(hmppcto)

gRPCのメッセージ受信が行われたことを意味します。

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debugパラメタがfalseの場合だけ取得されます。

message.type

電文種別。

12

thread-name

gRPC通信のメッセージを送信したスレッド名を設定します。

スパンコンテキスト

付加情報はありません。

Orchestrator

コンポーネント共通の情報に加えて、OrchestratorがSpanに付加する情報の一覧を次に示します。

トランザクション決着結果

先行プリペアの実施有無

スパンタグ

表11‒14　Orchestratorの付加情報（スパンタグ）

項番

情報名

設定する情報値の説明

1

result

グローバルトランザクション決着結果

Commit

コミット

Rollback

ロールバック

Failure

トランザクション決着失敗

2

prepare

先行プリペアの実施有無

Y

実行

N

未実行

スパンイベント

表11‒15　Orchestratorの付加情報（スパンイベント）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:service

OrchestratorのHMP-PCTOのトランザクション処理の開始を意味します。

情報なし

−

2

end:service

OrchestratorのHMP-PCTOのトランザクション処理の終了を意味します。

情報なし

−

3

start:branch

Orchestratorで@PctoTransactionBranchアノテーションを使用した際のトランザクションブランチの開始を意味します。

情報なし

−

4

end:branch

Orchestratorで@PctoTransactionBranchアノテーションを使用した際のトランザクションブランチの終了を意味します。

情報なし

−

5

start:AP

Orchestratorのユーザアプリケーション開始を意味します。

情報なし

−

6

end:AP

Orchestratorのユーザアプリケーション終了を意味します。

情報なし

−

7

start:pre process

OrchestratorでgRPCを通信手段とした際の、ユーザアプリケーション実行の前処理の開始を意味します。

情報なし

−

8

end:pre process

OrchestratorでgRPCを通信手段とした際の、ユーザアプリケーション実行の前処理の終了を意味します。

情報なし

−

9

return:InnerClientCall

OrchestratorでgRPCを通信手段とした際のユーザアプリケーション実行の前処理で、InnerClientCallインスタンスの返却を意味します。

情報なし

−

10

start:InnerClientCall

OrchestratorでgRPCを通信手段とした際のユーザアプリケーション実行の前処理で、InnerClientCallのstartの実行を意味します。

情報なし

−

11

start:post process

OrchestratorでgRPCを通信手段とした際の、ユーザアプリケーション実行の後処理の開始を意味します。

情報なし

−

12

end:post process

OrchestratorでgRPCを通信手段とした際の、ユーザアプリケーション実行の後処理の終了を意味します。

情報なし

−

13

start:execute

Orchestratorのユーザアプリケーションの送信処理内でHMP-PCTOの前処理が完了し送信処理を開始したことを意味します。

情報なし

−

14

end:execute

Orchestratorのユーザアプリケーションの送信処理内で送信処理が終了しHMP-PCTOの後処理を開始したことを意味します。

情報なし

−

15

response:get-status-code

Orchestratorのユーザアプリケーションの送信処理内でHMP-PCTOが応答のステータスコードを確認をしたことを意味します。

情報なし

−

（凡例）−：該当しません。

スパンコンテキスト

付加情報はありません。

Entity-Module

コンポーネント共通の情報に加えて、Entity-ModuleがSpanに付加する情報の一覧を次に示します。

Orchestratorへのトランザクション結果

先行プリペアの実施有無

スパンタグ

表11‒16　Entity-Moduleの付加情報（スパンタグ）

項番

情報名

設定する情報値の説明

1

result

Orchestratorへのトランザクション結果

Commit

コミット

Rollback

ロールバック

2

prepare

先行プリペアの実施有無

Y

実行

N

未実行

スパンイベント

表11‒17　Entity-Moduleの付加情報（スパンイベント）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:service

Entity-ModuleのHMP-PCTOのトランザクション処理のアプリケーション開始を意味します。

情報なし

−

2

end:service

Entity-ModuleのHMP-PCTOのトランザクション処理のアプリケーション終了を意味します。

情報なし

−

3

start:AP

Entity-Moduleのユーザアプリケーション開始を意味します。

情報なし

−

4

end:AP

Entity-Moduleのユーザアプリケーション終了を意味します。

情報なし

−

5

start:pre process

Entity-ModuleでgRPCを通信手段とした際の、ユーザアプリケーション実行の前処理の開始を意味します。

情報なし

−

6

end:pre process

Entity-ModuleでgRPCを通信手段とした際の、ユーザアプリケーション実行の前処理の終了を意味します。

情報なし

−

7

return:InnerClientCall

Entity-ModuleでgRPCを通信手段とした際のユーザアプリケーション実行の前処理で、InnerClientCallインスタンスの返却を意味します。

情報なし

−

8

start:InnerClientCall

Entity-ModuleでgRPCを通信手段とした際のユーザアプリケーション実行の前処理で、InnerClientCallのstartの実行を意味します。

情報なし

−

9

start:post process

Entity-ModuleでgRPCを通信手段とした際の、ユーザアプリケーション実行の後処理の開始を意味します。

情報なし

−

10

end:post process

Entity-ModuleでgRPCを通信手段とした際の、ユーザアプリケーション実行の後処理の終了を意味します。

情報なし

−

11

start:execute

Entity-Moduleのユーザアプリケーションの送信処理内でHMP-PCTOの前処理が完了し送信処理を開始したことを意味します。

情報なし

−

12

end:execute

Entity-Moduleのユーザアプリケーションの送信処理内で送信処理が終了しHMP-PCTOの後処理を開始したことを意味します。

情報なし

−

13

response:get-status-code

Entity-Moduleのユーザアプリケーションの送信処理内でHMP-PCTOが応答のステータスコードを確認をしたことを意味します。

情報なし

−

（凡例）−：該当しません。

スパンコンテキスト

付加情報はありません。

SQL-Participant

コンポーネント共通の情報に加えて、SQL-ParticipantでSpanに付加する情報の一覧を次に示します。

分散合意の実施状況

補助合意の実施状況

トランザクションブランチの状態遷移

ParticipantでのJDBCメソッドの開始および終了

スパンタグ

表11‒18　SQL-Participantの付加情報（スパンタグ）

項番

情報名

設定する情報値の説明

1

consensus-value

分散合意結果

Commit

コミット

Rollback

ロールバック

2

mediator-id

Mediatorのhost名とport番号を意味します。

3

proposer-id

Participant情報（<Service名>.<Namespace名>:IPアドレス:ホスト名）を意味します。

4

propose-values

投票内容を意味します。

COMMIT_VOTE

コミット投票

ROLLBACK_VOTE

ロールバック投票

5

before-transaction-status

遷移前のトランザクションブランチの状態を意味します。

0

NONE

1

PREPARING

2

COMMIT_VOTE

3

READ_ONLY

4

ROLLBACK_VOTE

5

COMMITTING

6

ROLLING_BACK

7

COMMITTED

8

ROLLED_BACK

9

COMMIT_ERROR

10

ROLLBACK_ERROR

11

ROLLED_BACK_BY_RM

6

after-transaction-status

遷移後のトランザクションブランチの状態を意味します。

0

NONE

1

PREPARING

2

COMMIT_VOTE

3

READ_ONLY

4

ROLLBACK_VOTE

5

COMMITTING

6

ROLLING_BACK

7

COMMITTED

8

ROLLED_BACK

9

COMMIT_ERROR

10

ROLLBACK_ERROR

11

ROLLED_BACK_BY_RM

7

recover-pod-hostname※

recover担当となったPodのホスト名

8

recover-pod-ip※

recover担当となったPodのIP

9

prepare

null

Entity-Moduleからトランザクションブランチのprepare要求を受けたことを意味します。

10

cancel

null

Entity-Moduleからトランザクションブランチのcancel要求を受けたことを意味します。

注※　この付加情報はスケーリング対応機能を使用する場合に、一定間隔で繰り返し実行される定期的なRecovery機能で出力します。

出力契機は次のとおりです。

jp.co.Hitachi.soft.hmppcto.tracing.debugパラメタがfalseの場合

jp.co.Hitachi.soft.hmppcto.recover.interval-in-millisパラメタが30分未満の場合は最後の出力から、30分経過後の定期実行時に出力

jp.co.Hitachi.soft.hmppcto.recover.interval-in-millisパラメタが30分以上の場合は定期実行のたびに常に出力

定期実行時にRecovery対象のトランザクションがある場合は必ず出力

jp.co.Hitachi.soft.hmppcto.tracing.debugパラメタがtrueの場合

定期実行のたびに、常に出力

スパンイベント

表11‒19　SQL-Participantの付加情報（スパンイベント）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

learning log size m/n

LearningLog（Mediatorから受信した合意）の数、m:受信数、n:Mediator数です。

情報なし

−

2

fast consensus

高速合意の実施を意味します。

情報なし

−

3

skip consensus

分散合意条件を満たせないため、分散合意をスキップしたことを意味します。

情報なし

−

4

external consensus

補助合意の実施を意味します。

情報なし

−

5

consensus finished

タイムアウト前に分散合意が完了していたことを意味します。

情報なし

−

6

The consensus has not been terminated for a long time.

分散合意が回収時間を経過していたことを意味します。

情報なし

−

7

start:termination-judge

Mediatorへの投票開始を意味します。

情報なし

−

8

end:termination-judge

Mediatorへの投票終了を意味します。

情報なし

−

9

start:jdbc <JDBC Driverのクラス名>.<JDBC Driverのメソッド名>

ParticipantでのJDBCメソッド開始を意味します。

jp.co.Hitachi.soft.hmppcto.tracing.jdbc.debugパラメタがtrueの場合だけ取得されます。

情報なし

−

10

end:jdbc

ParticipantでのJDBCメソッド終了を意味します。

jp.co.Hitachi.soft.hmppcto.tracing.jdbc.debugパラメタがtrueの場合だけ取得されます。

情報なし

−

11

start:recover-job

スケーリング対応機能を使用する場合の、未決着トランザクションのRecovery機能の処理開始を意味します。※

情報なし

−

12

end:recover-job

スケーリング対応機能を使用する場合の、未決着トランザクションのRecovery機能の処理終了を意味します。※

情報なし

−

13

old-pod-uuid

トランザクションのXIDに付与していたPodのUUIDです。

情報なし

−

14

counter

スケーリング対応機能を使用する場合の、未決着トランザクションのRecovery機能の実行回数です。

この付加情報は複数のスパンで同一の値を出力します。この値とトレースを出力しているPodのホスト名を用いてスパン同士を一意に紐づけする目的で出力しています。※

情報なし

上限を9999とし、超えた場合は1に戻ります。

15

pod-info-list

スケーリング対応機能を使用する場合の、未決着トランザクションのRecovery機能の実行時にKubernetesAPIによってPodを取得した結果です。※

情報なし

取得したPodのホスト名とUUIDの一覧

（凡例）−：該当しません。

注※　この付加情報はスケーリング対応機能を使用する場合に、一定間隔で繰り返し実行される定期的なRecovery機能で出力します。

出力契機は次のとおりです。

jp.co.Hitachi.soft.hmppcto.tracing.debugパラメタがfalseの場合

jp.co.Hitachi.soft.hmppcto.recover.interval-in-millisパラメタが30分未満の場合は最後の出力から、30分経過後の定期実行時に出力

jp.co.Hitachi.soft.hmppcto.recover.interval-in-millisパラメタが30分以上の場合は定期実行のたびに常に出力

定期実行時にRecovery対象のトランザクションがある場合は必ず出力

jp.co.Hitachi.soft.hmppcto.tracing.debugパラメタがtrueの場合

定期実行のたびに、常に出力

スパンコンテキスト

付加情報はありません。

TCC-Participant

コンポーネント共通の情報に加えて、TCC-ParticipantでSpanに付加する情報の一覧を次に示します。

分散合意の実施状況

補助合意の実施状況

トランザクションブランチの状態遷移

Try、Confirm、Cancelの開始および終了

スパンタグ

表11‒20　TCC-Participantの付加情報（スパンタグ）

項番

情報名

設定する情報値の説明

1

consensus-value

分散合意結果

Commit

コミット

Rollback

ロールバック

2

mediator-id

Mediatorのhost名とport番号を意味します。

3

proposer-id

Participant情報(<Service名>.<Namespace名>:IPアドレス:ホスト名)を意味します。

4

propose-values

投票内容を意味します。

COMMIT_VOTE

コミット投票

ROLLBACK_VOTE

ロールバック投票

5

before-transaction-status

遷移前のトランザクションブランチの状態を意味します。

0

NONE

1

PREPARING

2

COMMIT_VOTE

3

READ_ONLY

4

ROLLBACK_VOTE

5

COMMITTING

6

ROLLING_BACK

7

COMMITTED

8

ROLLED_BACK

9

COMMIT_ERROR

10

ROLLBACK_ERROR

11

ROLLED_BACK_BY_RM

6

after-transaction-status

遷移後のトランザクションブランチの状態を意味します。

0

NONE

1

PREPARING

2

COMMIT_VOTE

3

READ_ONLY

4

ROLLBACK_VOTE

5

COMMITTING

6

ROLLING_BACK

7

COMMITTED

8

ROLLED_BACK

9

COMMIT_ERROR

10

ROLLBACK_ERROR

11

ROLLED_BACK_BY_RM

スパンイベント

表11‒21　TCC-Participantの付加情報（スパンイベント）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

learning log size m/n

LearningLog（Mediatorから受信した合意）の数、m:受信数、n:Mediator数です。

情報なし

−

2

fast consensus

高速合意の実施を意味します。

情報なし

−

3

skip consensus

分散合意条件を満たせないため、分散合意をスキップしたことを意味します。

情報なし

−

4

external consensus

補助合意の実施を意味します。

情報なし

−

5

consensus finished

タイムアウト前に分散合意が完了していたことを意味します。

情報なし

−

6

The consensus has not been terminated for a long time.

分散合意が回収時間を経過していたことを意味します。

情報なし

−

7

start:termination-judge

Mediatorへの投票開始を意味します。

情報なし

−

8

end:termination-judge

Mediatorへの投票終了を意味します。

情報なし

−

9

start:try

Try開始を意味します。

情報なし

−

10

end:try

Try終了を意味します。

情報なし

−

11

start:confirm

Confirm開始を意味します。

情報なし

−

12

end:confirm

Confirm終了を意味します。

情報なし

−

13

start:cancel

Cancel開始を意味します。

情報なし

−

14

end:cancel

Cancel終了を意味します。

情報なし

−

（凡例）−：該当しません。

スパンコンテキスト

付加情報はありません。

TP1-Bridge

コンポーネント共通の情報に加えて、TP1-BridgeでSpanに付加する情報の一覧を次に示します。

分散合意の実施状況

補助合意の実施状況

トランザクションブランチの状態遷移

TP1-Client/Jのメソッドの呼び出し開始および終了

TP1-Converterの呼び出し開始および終了

スパンタグ

表11‒22　TP1-Bridgeの付加情報（スパンタグ）

項番

情報名

設定する情報値の説明

1

consensus-value

分散合意結果

Commit

コミット

Rollback

ロールバック

2

mediator-id

Mediatorのhost名とport番号を意味します。

3

proposer-id

Participant情報(<Service名>.<Namespace名>:IPアドレス:ホスト名)を意味します。

4

propose-values

投票内容を意味します。

COMMIT_VOTE

コミット投票

ROLLBACK_VOTE

ロールバック投票

5

before-transaction-status

遷移前のトランザクションブランチの状態を意味します。

0

NONE

1

PREPARING

2

COMMIT_VOTE

3

READ_ONLY

4

ROLLBACK_VOTE

5

COMMITTING

6

ROLLING_BACK

7

COMMITTED

8

ROLLED_BACK

9

COMMIT_ERROR

10

ROLLBACK_ERROR

11

ROLLED_BACK_BY_RM

6

after-transaction-status

遷移後のトランザクションブランチの状態を意味します。

0

NONE

1

PREPARING

2

COMMIT_VOTE

3

READ_ONLY

4

ROLLBACK_VOTE

5

COMMITTING

6

ROLLING_BACK

7

COMMITTED

8

ROLLED_BACK

9

COMMIT_ERROR

10

ROLLBACK_ERROR

11

ROLLED_BACK_BY_RM

7

prepare

null

Entity-Moduleからトランザクションブランチのprepare要求を受けたことを意味します。

8

cancel

null

Entity-Moduleからトランザクションブランチのcancel要求を受けたことを意味します。

スパンイベント

表11‒23　TP1-Bridgeの付加情報（スパンイベント）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

learning log size m/n

LearningLog（Mediatorから受信した合意）の数、m:受信数、n:Mediator数です。

情報なし

−

2

fast consensus

高速合意の実施を意味します。

情報なし

−

3

skip consensus

分散合意条件を満たせないため、分散合意をスキップしたことを意味します。

情報なし

−

4

external consensus

補助合意の実施を意味します。

情報なし

−

5

consensus finished

タイムアウト前に分散合意が完了していたことを意味します。

情報なし

−

6

The consensus has not been terminated for a long time.

分散合意が回収時間を経過していたことを意味します。

情報なし

−

7

start:termination-judge

Mediatorへの投票開始を意味します。

情報なし

−

8

end:termination-judge

Mediatorへの投票終了を意味します。

情報なし

−

9

start:<TP1/Client/Jのメソッド名>

TP1/Client/Jのメソッドの呼び出し開始を意味します。

情報なし

−

10

end:<TP1/Client/Jのメソッド名>

TP1/Client/Jのメソッドの呼び出し終了を意味します。

情報なし

−

11

start:TP1-Converter

TP1-Converterの呼び出し開始を意味します。

情報なし

−

12

end:TP1-Converter

TP1-Converterの呼び出し終了を意味します。

情報なし

−

（凡例）−：該当しません。

スパンコンテキスト

付加情報はありません。

Mediator

コンポーネント共通の情報に加えて、MediatorがSpanに付加する情報の一覧を次に示します。

ConsensusLogの作成、削除および更新

Proposal Logの作成、削除および更新

トランザクションの決着結果

スパンタグ

表11‒24　Mediatorの付加情報（スパンタグ）

項番

情報名

設定する情報値の説明

1

consensus-value

Participantでの分散合意結果

Commit

コミット

Rollback

ロールバック

2

prepare-priority

投票要求を送信する際の優先度を設定します。

スパンイベント

表11‒25　Mediatorの付加情報（スパンイベント）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:consensuslog

ConsensusLogへのアクセス(I/O)開始を意味します。

情報なし

−

2

end:consensuslog<追加情報>

ConsensusLogへのアクセス(I/O)終了を意味します。

ConsensusLogを追加する場合と削除する場合の、スパンイベント、出力内容および意味は次のとおりです。

end:consensuslog

ConsensusLogの追加または削除処理が終了しました。ファイルの読み込み前に例外が発生しました。

end:consensuslog read

ConsensusLogの追加または削除処理が終了しました。ファイルの書き込み前に読み込みをしました。

end:consensuslog not read

ConsensusLogの追加または削除処理が終了しました。ファイルの書き込み前に読み込みをしませんでした。

ConsensusLogを読み込む場合とConsensusLogのParticipant情報の更新をする場合の、スパンイベント、出力内容および意味は次のとおりです。

end:consensuslog

ConsensusLogの読み込みまたはParticipant情報の更新処理が終了しました。

情報なし

−

3

consensusid: <ConsensusIdの値>

ConsensusIdの値を意味します。

情報なし

−

4

start:proposallog-add-propose

Proposal Logへのアクセス（投票内容保存）の開始を意味します。

propose-values

Proposal Logに保存した投票内容の一覧を設定します。

COMMIT_VOTE

Commit投票

ROLLBACK_VOTE

Rollback投票

一覧は上記の値を","（コンマ）区切りで設定します。

[]で囲まれた中には分散トレース取得時にParticipantから受信した投票内容を設定します。

5

end:proposallog-add-propose

Proposal Logへのアクセス（投票内容保存）の終了を意味します。

情報なし

−

6

start:proposallog-add-propose-participant

Proposal Logへのアクセス（投票を受信したParticipant情報保存）の開始を意味します。

participants-value

Proposal Logに保存した投票を受信したParticipant情報（<Service名>.<Namespace名>:IPアドレス:ホスト名）の一覧を設定します。

一覧は<Service名>.<Namespace名>:IPアドレス:ホスト名を","（コンマ）区切りで設定します。

[]で囲まれた中には分散トレース取得時にParticipantから受信した投票内容を設定します。

7

end:proposallog-add-propose-participant

Proposal Logへのアクセス（投票を受信したParticipant情報保存）の終了を意味します。

情報なし

−

8

start:proposallog-add-all-participants

Proposal Logへのアクセス（トランザクションに参加したParticipant情報（<Service名>.<Namespace名>））の一覧の保存の開始を意味します。

all-participants

Proposal Logに保存されたトランザクションに参加したParticipant情報（<Service名>.<Namespace名>）の一覧を設定します。

一覧は<Service名>.<Namespace名>を","（コンマ）区切りで設定します。

9

end:proposallog-add-all-participants

Proposal Logへのアクセス（トランザクションに参加したParticipant情報（<Service名>.<Namespace名>））の一覧の保存の終了を意味します。

情報なし

−

10

start:proposallog-delete

Proposal Logの削除開始を意味します。

proposal-log-before-size

Proposal Logの削除前の件数を設定します。

11

end:proposallog-delete

Proposal Logの削除終了を意味します。

proposal-log-after-size

Proposal Logの削除後の件数を設定します。

12

start: terminated-transaction-verify

ConsensusLogのトランザクション完了確認通知の送信開始を意味します。

consensus log size

完了確認通知の送信を行ったConsensusLogの数を設定します。

13

end: terminated-transaction-verify

ConsensusLogのトランザクション完了確認通知の送信終了を意味します。

情報なし

−

14

send-consensus-value:<更新可否の決着結果>

Participantへ送信した更新可否の決着結果を示します。

情報なし

−

（凡例）−：該当しません。

スパンコンテキスト

付加情報はありません。

(c)　情報を取得するSpanの方針

付加情報をどのSpanで取得するかについて説明します。

Spanに付加する情報は、全Span共通で付加するわけではなく、他コンポーネントから伝達された情報（ブランチXIDなど）やプロセスに関わる情報（ホスト名）などは、他コンポーネントから呼び出された先頭処理（主に受信処理）のSpanで取得します。先頭処理から生成/呼び出した処理は、先頭Spanと差異のある情報（スレッド名など）を取得します。

図11‒31　取得する情報

(2)　EADS（通常版限定）

EADS API向け分散トレースは、分散合意取得機能の補助合意に使用されるEADSで、次の図に示すようなAPIを発行するParticipantとEADS間のデータ処理が妥当かどうかを判別するためにSpanを取得します。なお、トライアル版ではEADSは使用できません。

図11‒32　EADS向けトレース

このSpanによって、EADSへのアクセス時間、実行内容、実行結果を分析可能とし、障害発生時にトラブルシュートが可能になります。

(a)　取得個所

EADS APIのcreateおよびget向けにParticipantから補助合意のためにEADS APIを呼び出す時にSpanを取得します。

(b)　取得する情報

コンポーネント共通の情報に加えて、EADS API向けのSpanで取得する情報を次に示します。

EADSのAPI呼び出し

スパンタグ

付加情報はありません。

スパンイベント

表11‒26　EADSの付加情報（スパンイベント）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:EADS API

EADSのAPIの呼び出しが行われたことを意味します。

API-name

呼び出すEADS API名

create

createのEADS API

get

getのEADS API

2

consensus

補助合意提案値。createの場合だけ出力する。

Commit

コミット

Rollback

ロールバック

3

end:EADS API

EADSのAPIの実行が終わったことを意味します。

API-name

実行が終わったEADS API名

create

createのEADS API

get

getのEADS API

4

get

取得した補助合意提案値。getの場合だけ出力する。

Commit

コミット

Rollback

ロールバック

5

failed:EADS API

EADSのAPIの実行中に例外が発生したことを意味します。

API-name

例外が発生したEADS API名

create

createのEADS API

get

getのEADS API

6

message

例外の詳細メッセージ文字列

スパンコンテキスト

付加情報はありません。

(3)　XA関数（SQL-Participant限定）

XA関数向け分散トレースは、SQL-ParticipantとDB間のデータ処理が妥当かどうかを判別するためにSpanを取得します。トランザクションを対象としたSpanのため、次の図に示すような、処理1、処理2、処理3の個別な情報を取得するだけではなく、各処理が1つのトランザクションであることを把握できるデータも合わせて出力を行い、トランザクション全体での妥当性も確認します。このSpanによって、XA関数の実行順序、実行内容、実行結果を分析し、障害発生時にトラブルシュートが可能になります。

図11‒33　XA関数向けSpan

(a)　取得個所

Participant初期化で、prepare済みのトランザクションを取得する時にSpanを取得します。

Participantで、Commit、またはRollbackの通知のgRPC通信を受信した時のSpanにスパンイベントを追加します。

(b)　取得する情報

コンポーネント共通の情報に加えて、XA関数向けのSpanで取得する情報を次に示します。

XA関数の実行

スパンタグ

付加情報はありません。

スパンイベント

表11‒27　XA関数の付加情報（スパンイベント）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start: xa function

XA関数の呼び出しが行われたことを意味します。

xa-name

呼び出すXA関数名

xa_start

xa_start関数

xa_end

xa_end関数

xa_prepare

xa_prepare関数

xa_commit

xa_commit関数

xa_rollback

xa_rollback関数

xa_recover

xa_recover関数

2

end: xa function

XA関数の実行が終わったことを意味します。

xa-name

実行が終わったXA関数名

xa_start

xa_start関数

xa_end

xa_end関数

xa_prepare

xa_prepare関数

xa_commit

xa_commit関数

xa_rollback

xa_rollback関数

xa_recover

xa_recover関数

3

failed:xa function

XA関数の実行中に例外が発生したことを意味します。

xa-name

例外が発生したXA関数名

xa_start

xa_start関数

xa_end

xa_end関数

xa_prepare

xa_prepare関数

xa_commit

xa_commit関数

xa_rollback

xa_rollback関数

xa_recover

xa_recover関数

4

message

例外の詳細メッセージ文字列

スパンコンテキスト

付加情報はありません。

11.3.7　パラメタ

次のパラメタを使用します。

jp.co.Hitachi.soft.hmppcto.tracing.instance-id

jp.co.Hitachi.soft.hmppcto.tracing.url

jp.co.Hitachi.soft.hmppcto.tracing.use-trace

jp.co.Hitachi.soft.hmppcto.tracing.queue-size

jp.co.Hitachi.soft.hmppcto.tracing.delay-time-in-millis

jp.co.Hitachi.soft.hmppcto.tracing.batch-size

jp.co.Hitachi.soft.hmppcto.tracing.debug

jp.co.Hitachi.soft.hmppcto.tracing.grpc.debug

jp.co.Hitachi.soft.hmppcto.tracing.jdbc.debug

パラメタの詳細については、「9.　パラメタ」を参照してください。

11.4　メトリクス

ここでは、トラブルシュート機能および性能チューニング計測機能で使用するメトリクスの機能について説明します。

11.4.1　概要

HMP-PCTOが動作するシステムでサービスのレスポンス遅延が発生したときに、パフォーマンスの傾向を調査するため、また、HMP-PCTOの性能評価を行うため、システムのパフォーマンスの指標となるメトリクスを取得します。

(1)　メトリクスの評価対象

メトリクスの評価対象を次の表に示します。システム（Kubernetesの場合、コンテナ環境）の利用状況、Java VMの利用状況、およびHMP-PCTOの性能を評価するための指標となる数値を取得することで、HMP-PCTOが動作しているシステムのパフォーマンスの傾向を調査できます。

表11‒28　メトリクスの評価対象

項番

評価対象

説明

1

システムの利用状況

Kubernetesなどのコンテナ環境における性能

＜例＞

CPU使用率

2

Java VMの利用状況

Javaプロセス固有の性能

＜例＞

Java Heap

GC

3

HMP-PCTOの性能を評価するための指標

gRPC通信の性能

HMP-PCTOの各機能間のgRPC通信の性能

＜例＞

gRPC通信の処理時間

4

送信処理の性能

HMP-PCTO内部で実施される非同期送信処理の性能

＜例＞

実行回数・時間

未実行の（キューイングされている）数

5

機能固有の稼働統計情報

HMP-PCTOのコンポーネント（Mediatorなど）で固有に取得する稼働統計情報

＜例＞

Mediatorの例：ProposalLog、ConsensusLogの状態ごとの件数

Participantの例：トランザクションブランチ数・処理時間

TP1-Bridgeの例：Spring Boot組み込みTomcatのスレッド数

Jaeger-collectorの例：受信したSpan数、内部キューに登録されたデータ数

上記の評価対象ごとに取得する項目を次に示します。項目の詳細については、「(3)　出力内容」を参照してください。

各コンポーネントで「表11‒28　メトリクスの評価対象」の項番1〜4の情報を取得します。

項番5「機能固有の稼働統計情報」については、機能ごとに次の表のパフォーマンスを評価します。

表11‒29　機能固有の稼働統計情報の評価対象

項番

コンポーネント

評価対象

1

Orchestrator

Entity-Module

なし。

2

Mediator

ConsensusLogアクセス所要時間

3

SQL-Participant

TCC-Participant

TP1-Bridge

処理中のトランザクションブランチ数

完了したトランザクションブランチ数

完了したトランザクションブランチの処理時間

EADS APIの所要時間（トライアル版では評価できません）

4

Orchestrator

Entity-Module

SQL-Participant

TCC-Participant

TP1-Bridge

Spring Bootの組み込みTomcatで管理されるスレッド数

5

Jaeger-collector

Jaeger-collectorの内部キュー内のSpan数

Jaeger-collectorが受信したSpan数

上記で示したメトリクスの評価対象以外にも、次の表に示すExporterなどを用いたメトリクス収集アプリケーションまたはサービスの使用を推奨します。メトリクス収集アプリケーションまたはサービスでメトリクスの情報を収集することで、HMP-PCTOの各コンポーネントやKubernetesクラスタのパフォーマンス監視や保守を行うための情報を取得できます。

表11‒30　取得を推奨するメトリクスを出力するExporter

項番

Exporter/コンポーネント

概要

1

Node-Exporter

各Kubernetesノード上で実行し、各マシンのCPU、メモリの使用量などのマシンレベルのメトリクスを出力します。

2

kube-state-metrics

Kubernetes APIより、クラスタ上のリソース情報を収集し、メトリクスとして出力を行います。

3

cAdvisor

cgroupについてのメトリクスを収集するExporter。Kubernetes上で稼働するコンテナのパフォーマンスに関する情報を出力します。

(2)　メトリクスの取得手段

HMP-PCTOでは、各コンポーネントでMicrometerのライブラリを使用してメトリクスの情報を取得します。HMP-PCTOが対応しているメトリクス収集アプリケーションまたはサービスはPrometheusだけです。このため、HMP-PCTOはPrometheus向けのデータ形式でメトリクス情報を出力します。

Prometheusでは、HMP-PCTOがMicrometerで取得したメトリクスデータを収集します。このため、HMP-PCTOでは、Prometheusにメトリクスデータを送信できるように、Prometheusに対応したExporterをMicrometerで実装しています。

11.4.2　サポートするアプリケーションおよびサービス

HMP-PCTOでは、次に示すアプリケーションおよびサービスをサポートしています。

表11‒31　サポートするアプリケーションおよびサービス

項番

環境

メトリクス収集アプリケーションおよびサービス

メトリクス閲覧アプリケーションおよびサービス

メトリクスを永続化するためのアプリケーションおよびサービス

1

Elastic Stack使用環境

Prometheus

Prometheus

Elasticsearch

2

Microsoft Azure環境

Prometheus用のマネージドサービス

Grafana用のマネージドサービス

Azure Monitor

3

Google Cloud Platform環境

Google Cloud Managed Service for Prometheus

Cloud Monitoring

Cloud Monitoring

4

New Relic使用時

New Relic

New Relic

New Relic UI（Web UI）

(1)　New Relicを使用した場合の構成

New Relicへメトリクスを出力する際の構成図を示します。

HMP-PCTOのメトリクスを収集する場合、nri-prometheusコンポーネントをデプロイまたは有効化する必要があります。

図11‒34　New Relic使用時の構成図

(2)　Elastic StackおよびPrometheusを使用した場合の構成

Elastic StackまたはPrometheusを使用してメトリクス収集を行う際の構成図を次に示します。

図11‒35　HMP-PCTOメトリクスの構成（SQL-Participantの場合）

図11‒36　HMP-PCTOメトリクスの構成（TCC-Participantの場合）

図11‒37　HMP-PCTOメトリクスの構成（TP1-Bridgeの場合）

「表11‒28　メトリクスの評価対象」の評価対象ごとの取得手段を次の表に示します。

表11‒32　メトリクスの取得手段

項番

評価対象

取得手段

1

システムの利用状況

Micrometerが標準で用意するライブラリでPrometheusに送信するメトリクスデータを生成します。

2

Java VMの利用状況

Micrometerが標準で用意するライブラリでPrometheusに送信するメトリクスデータを生成します。

3

HMP-PCTOの性能を評価するための指標

gRPC通信の性能

Micrometerが標準で用意するライブラリでPrometheusに送信するメトリクスデータを生成します。

4

送信処理の性能

HMP-PCTO内部で実施される非同期送信処理に関する項目について、Micrometerを使用して独自に作成し、この取得項目についてPrometheusに送信するメトリクスデータを生成します。

5

機能固有の稼働統計情報

HMP-PCTOが各コンポーネント固有の稼働統計情報について、Micrometerを使用して独自に作成し、この取得項目についてPrometheusに送信するメトリクスデータを生成します。

Jaeger-collectorは、Jaeger-collectorの機能によってメトリクス情報を生成します。

6

Spring Bootの組み込みTomcatの情報

Spring Bootの組み込みTomcatに関する情報について、Tomcat Webサーバに関する情報を独自に作成し、Micrometerが標準で用意するライブラリを用いて、Prometheusに送信するメトリクスデータを生成します。

重要

メトリクスデータの取得条件

Micrometerのライブラリによって取得されるメトリクスデータには、取得条件を満たした場合だけ記録されるため、メトリクス閲覧アプリケーションまたはサービスで閲覧できないことがあります。

メトリクスデータの取得条件については、Micrometerのライブラリのドキュメントを参照してください。

重要

Prometheusを利用してメトリクス収集を行う場合

Prometheus-Server自体は永続化の手段を持たないため、さらに永続化を目的として外部に送信を行います。次の送信先があります。

Elasticsearch

Prometheus-ServerはRemote_write機能を使用してMetricbeatに送信し、MetricbeatがElasticsearchに送信します。

Prometheus-Serverが収集したメトリクスデータを閲覧するには、PrometheusのWeb UIを使用します。詳細については、「11.5.3　メトリクス」を参照してください。

11.4.3　パラメタ

次のパラメタを使用します。

jp.co.Hitachi.soft.hmppcto.metrics.collection.tomcat

パラメタの詳細については、「9.　パラメタ」を参照してください。

11.5　データおよびファイル

11.5.1　メッセージログ

(1)　出力先

(a)　HMP-PCTOが出力するメッセージログ

HMP-PCTOは、メッセージログをログレベルに応じて標準出力および標準エラー出力に出力します。メッセージログのログレベルと出力先の対応を次の表に示します。

表11‒33　ログレベルと出力先

ログレベル

出力先

ERROR

標準エラー出力

WARN

標準出力

INFO

標準出力

出力内容は、次の方法で確認できます。

Kubernetesのkubectl logsコマンド

出力内容は、Kubernetesのkubectl logsコマンドで確認できます。詳細については、Kubernetesのリファレンスを参照してください。

Kibanaなどの可視化ツール

Elasticsearchに格納された情報を、Kibanaなどの可視化ツールで確認できます。詳細については、Kibanaなどの可視化ツールのリファレンスを参照してください。

KibanaのDiscover機能でHMP-PCTOのメッセージを抽出するためのフィールドを次の表に示します。このフィールドはFilebeatによって設定されています。

表11‒34　検索対象のフィールド

フィールド名

説明

@timestamp

Filebeatで付与された時刻情報。

検索時に対象時刻の絞り込みに使用します。

kubernetes.container.name

ログが出力されたコンテナ名。

サイドカーとして起動したFilebeatで収集したログでは、「-」として表されます。

kubernetes.deployment.name

Podを定義したDeploymentリソースの名前。

サイドカーとして起動したFilebeatで収集したログでは、「-」として表されます。

Deploymentで作成したPodではない場合は、「-」として表されます。

kubernetes.daemonset.name

Podを定義したDaemonsetリソースの名前。

サイドカーとして起動したFilebeatで収集したログでは、「-」として表されます。

Daemonsetで作成したPodではない場合は、「-」として表されます。

kubernetes.labels.*

Podに設定したラベルに設定した値。

* には、ラベルのkeyに相当する値が入ります。

サイドカーとして起動したFilebeatで収集したログでは、「-」として表されます。

kubernetes.namespace

ログが出力されたPodが作成されているNamespace名。

サイドカーとして起動したFilebeatで収集したログでは、Pod名を付与するために設定が必要です。設定内容については、「3.7　Kubernetesマニフェスト作成」に記載のマニフェスト例を参照してください。

kubernetes.node.name

ログが出力されたPodが起動しているKubernetesノードの名前。

サイドカーとして起動したFilebeatで収集したログでは、Pod名を付与するために設定が必要です。設定内容については、「3.7　Kubernetesマニフェスト作成」に記載のマニフェスト例を参照してください。

kubernetes.pod.name

ログが出力されたPod名。

サイドカーとして起動したFilebeatで収集したログでは、Pod名を付与するために設定が必要です。設定内容については、「3.7　Kubernetesマニフェスト作成」に記載のマニフェスト例を参照してください。

検索時には、メッセージを抽出したいHMP-PCTOのコンポーネントを指定します。

（例）「mediator」

kubernetes.statefulset.name

Podを定義したStatefulsetリソースの名前。

サイドカーとして起動したFilebeatで収集したログでは、「-」として表されます。

Statefulsetで作成したPodではない場合は、「-」として表されます。

log.file.path

ログが出力されたファイルパス。

message

ログ本文。

検索時には、「KFSG*」と指定して、HMP-PCTOが出力したメッセージを抽出します。

図11‒38　検索の例

(b)　ライフサイクルイベントハンドラが出力するメッセージログ

Kubernetesのコンテナのライフサイクルイベントハンドラは、メッセージログを標準出力および標準エラー出力します。出力内容は、Kubernetesのイベントリソースに保存されます。Kubernetesのkubectl describeコマンドまたはkubectlget eventsコマンドで確認できます。

詳細については、Kubernetesのリファレンスを参照してください。

(2)　出力フォーマット

(a)　HMP-PCTOが出力するメッセージログ

メッセージの出力フォーマットを次に示します。

yyyy-mm-dd hh:mm:ss.SSS level hostname thread classname PID KFSGN₁N₂N₃N₄N₅-X message

表11‒35　出力情報

出力情報

説明

yyyy-mm-dd hh:mm:ss.SSS

出力日時

年月日 時分秒ミリ秒

level

ログレベル

hostname

ホスト名の値を取得し、出力します。

値が取得できない場合は、nullを表示します。

thread

スレッド名

HMP-PCTOで作成される非同期スレッドは、「表11‒36　スレッド名」に記載しているスレッド名で出力します。

classname

メッセージ出力元クラス名

短縮名で表示します。

＜例＞

正式名称:jp.co.Hitachi.soft.hmppcto.common.Myclass

短縮名:j.c.H.s.h.c.Myclass

PID

プロセスID

KFSGN₁N₂N₃N₄N₅-X

メッセージID

message

メッセージテキスト

表11‒36　スレッド名

コンポーネント

スレッドの役割

スレッド名

Orchestrator

OrchestratorからMediatorへの送信に使用するスレッド

m.t-thread-xxxx

SQL-Participant

SQL-Participantがトランザクション処理で実行するスレッド

p-p.thread-xxxx

Mediatorに送信を行うスレッドを管理するスレッド

m-p-m.thread-xxxx

ParticipantがMediatorとの送受信に使用するスレッド

m-c.thread-xxxx

TCC-Participant

TCC-Participantがトランザクション処理で実行するスレッド

p-p.thread-xxxx

Mediatorに送信を行うスレッドを管理するスレッド

m-p-m.thread-xxxx

ParticipantがMediatorとの送受信に使用するスレッド

m-c.thread-xxxx

TP1-Bridge

TP1-Bridgeがトランザクション処理で実行するスレッド

p-p.thread-xxxx

Mediatorに送信を行うスレッドを管理するスレッド

m-p-m.thread-xxxx

ParticipantがMediatorとの送受信に使用するスレッド

m-c.thread-xxxx

Mediator

MediatorからParticipantへの送信に使用するスレッド

p.s.thread-xxxx

Mediatorの分散合意処理に使用するスレッド

m.j.thread-xxxx

Mediatorが受信に使用するスレッド

g.s.thread-xxxx

ConsensusLogファイルへの書き込みに使用するスレッド

c.i.thread-xxxx

（凡例）

xxxx：スレッドのシーケンス番号

メッセージログ出力例を次に示します。

2023-03-09 18:49:08.347 INFO myhost Main j.c.H.s.h.c.Myclass 31 KSFG10000-E test message. information = test information

(b)　ライフサイクルイベントハンドラが出力するメッセージログ

メッセージの出力フォーマットを次に示します。

KFSGN₁N₂N₃N₄N₅-X message

(3)　文字コード

(a)　HMP-PCTOが出力するメッセージログ

HMP-PCTOは、メッセージログの文字コードにUTF-8を指定して、出力します。

(4)　メッセージログ機能が参照するファイル

(a)　ロギングライブラリの設定ファイル

HMP-PCTOは、メッセージログを出力するためのロギングライブラリとしてLogbackを使用します。その設定はロギングライブラリの設定ファイルを参照しています。ファイルはHMP-PCTOのライブラリファイル内に格納されています。

重要

ユーザ責務のKubernetesアプリケーションでLogbackを使用し、その設定をリソースディレクトリの直下のlogback-spring.xmlに記載する場合、次の記載が必要です。記載しない場合は、メッセージログが正常な出力フォーマットで出力されなくなります。また、メッセージログが出力されないことがあります。ユーザ責務のKubernetesアプリケーションで、ロギングライブラリの設定を変更しない場合、次の記載は不要です。HMP-PCTOと同様の出力フォーマットでログが出力されます。

記載個所

次のどちらかに記載します。

記載個所1

<configuration>
記載個所
</configuration>

記載個所2

<springProfile name={プロファイル名}>
記載個所
</springProfile >

記載内容

logback-spring.xmlへの記載内容を次に示します。

<include resource="hmppcto-include.xml"/>
<logger name="HMPPCTO_STDOUT" level="INFO" additivity="false">
        <appender-ref ref="HMPPCTO_STDOUT" />
</logger>
<logger name="HMPPCTO_STDERR" level="ERROR" additivity="false">
        <appender-ref ref="HMPPCTO_STDERR" />
</logger>

(b)　メッセージプロパティファイル

HMP-PCTOは、メッセージログを作成するためにメッセージプロパティファイルを参照しています。ファイルはHMP-PCTOのライブラリファイル内に格納されています。

重要

ユーザ責務のKubernetesアプリケーションで使用するプロパティファイル

ユーザ責務のKubernetesアプリケーションでは、リソースディレクトリの直下に次のプロパティファイルを作成しないでください。作成した場合は、メッセージログが正常な出力フォーマットで出力されなくなります。

プロパティファイル名：hmppcto_messages.properties

11.5.2　分散トレース

(1)　出力先

使用するアプリケーションまたはサービスによって、分散トレースの出力先が異なります。

(a)　Jaegerを使用する場合

Jaegerと連携したElasticsearchに分散トレースが出力されます。

(b)　Azure Monitor Application Insightsを使用する場合

Microsoft Azure環境で分散トレースを収集する際は、Azure Monitor Application Insightsによって分散トレースが収集され、Azureのワークスペースに出力されます。詳細については、Microsoft Azureの公式ドキュメントを参照してください。

(c)　Google Cloud PlatformのCloud Traceを使用する場合

Google Cloud Platform環境で分散トレースを収集する際は、Cloud Traceに分散トレースが出力されます。詳細については、Google Cloud Platformの公式ドキュメントを参照してください。

(d)　New Relicを使用する場合

New Relic使用時に分散トレースを収集する際は、OpenTelemetry Collectorを経由して分散トレースが収集され、New Relicに出力されます。詳細については、New Relicの公式ドキュメントを参照してください。

(2)　出力形式

(a)　Jaeger-queryのWeb UIによる参照

収集された分散トレースは、JaegerのWeb UIの次のURLにアクセスすることで参照できます。

http://A...A:B...B

A...A：KubernetesワーカーノードのIPアドレス

B...B：ポート番号(「4.2.8 Jaeger-query」のhttp.portに指定した値)

JaegerのWeb UI上での表示内容について説明します。この製品で使用する2つの画面について説明します。それ以外の画面に関してはJaegerの公式ページを参照してください。

Search Page

分散トレースの検索画面です。検索条件に合致したトレースIDの一覧を表示します。

図11‒39　Search Page

表11‒37　Search Page項目

図中番号

項目名

説明

1

Service

HMP-PCTOのコンポーネントのservice名を選択します。この項目は選択必須です。

service名の形式は、jp.co.Hitachi.soft.hmppcto.tracing.instance-idパラメタの説明を参照してください。

2

Operation

HMP-PCTOのオペレーション名です。デフォルトはallです。

Operationの詳細については、「Trace Page」を参照してください。

3

Tags

SpanのTagsを指定します。Tagsの詳細については、「Trace Page」を参照してください。

4

−

検索対象範囲を指定します。詳細はJaegerの公式情報を参照してください。

5

Find trace

検索を実行します。

6

トレース情報

トレースID 1件分の情報を表示します。このエリアをクリックすると、「Trace Page」へ遷移します。

7

−

次の項目を表示します。

親SpanのService名：親SpanのOperation名：トレースID

8

−

該当トレースIDでの実行時間を表示します。

9

−

該当トレースIDでの開始時刻を表示します。

10

−

該当トレースIDで取得したSpan数を表示します。

11

−

該当トレースIDに含むSpanのserviceごとのSpan数を表示します。

（凡例）−：該当しません。

Trace Page

「Search Page」で選択したトレースIDのトレース情報を表示します。

図11‒40　Trace Page

表11‒38　Trace Page項目

図中番号

項目名

説明

1

−

トレースIDの情報を表示します。

該当トレースIDでの開始時刻

該当トレースIDでの実行時間

該当トレースIDで取得したSpanのservice数

該当トレースIDで最も深い親Spanと子Spanの階層数

該当トレースIDに含むSpan数

2

−

親Span、子Spanを階層構造で表示します。該当するSpanをクリックすると、Spanの詳細を表示します。

「V」：クリックすると、子Spanが非表示になります。

「>」：クリックすると、子Spanが表示されます。

3

Operation

選択Spanを取得したHMP-PCTOのオペレーション名です。

一般的な取得個所のSpanは、オペレーション名冒頭に「Recv」を付与します。

4

Service

HMP-PCTOのコンポーネントのservice名です。詳細は「Search Page」を参照してください。

5

Duration

選択Spanの実行時間です。

6

Starttime

該当するトレースIDを開始してから、選択したSpanのトレースを開始するまでの経過時間です。

7

Tags

選択Spanでの付加情報です。次の形式で表示します。

情報名  情報値

8

Logs

選択Spanでの付加情報です。次の形式で表示します。

経過時間 message 情報

経過時間は、該当するトレースIDを開始してから、選択したSpanのトレースを開始するまでの経過時間です。

9

Process

選択Spanでの付加情報です。次の形式で表示します。

情報名  情報

（凡例）−：該当しません。

(b)　Azure Monitor Application Insightsによる参照

Microsoft Azure環境で分散トレースを閲覧する場合は、Azure Monitor Application Insightsを使用して分散トレースを参照します。詳細についてはMicrosoft Azureの公式ドキュメントを参照してください。

(c)　Google Cloud PlatformのCloud Traceによる参照

Google Cloud Platform環境で分散トレースを閲覧する場合は、Cloud Traceを使用して分散トレースを参照します。詳細についてはGoogle Cloud Platformの公式ドキュメントを参照してください。

(d)　New Relicによる参照

New Relic使用時に分散トレースを閲覧する場合は、New Relic UI（Web UI）を使用して分散トレースを参照します。詳細についてはNew Relicの公式ドキュメントを参照してください。

11.5.3　メトリクス

(1)　出力先

HMP-PCTOの各コンポーネントは、Micrometerを使用してメトリクスデータを取得し、Prometheus向けのExporterを使って、テキストのデータをPrometheusサーバに送ります。

また、Jaeger-collectorから出力されるメトリクスについてもPrometheusサーバで収集します。

(2)　出力形式

(a)　PrometheusサーバのWeb UIによる参照

Prometheusサーバの標準のWeb UIにアクセスすると、次の画面が表示されます。

図11‒41　Prometheusサーバの標準のWeb UI

画面上部のテキストフィールドにPromQLの構文でクエリを入力し、Executeボタンを押すことでクエリの結果のメトリクス情報が画面に出力されます。

(b)　Grafanaによる参照

Prometheusで収集されたメトリクスは、メトリクス閲覧アプリケーションであるGrafanaで確認できます。Microsoft Azure環境でメトリクスを収集した場合は、マネージドGrafanaを使用してメトリクスを確認してください。Grafanaの詳細については、公式ドキュメントを参照してください。

(c)　Kibanaなどの可視化ツールによる参照

Elasticsearchに保存されたメトリクスはKibanaなどの可視化ツールで確認できます。詳細はKibanaなどの可視化ツールのリファレンスを参照してください。

Kibanaを例として、HMP-PCTOのメトリクスを抽出するためのフィールドを指定する例を次に示します。

prometheus.metrics.<メトリクス取得項目※1> : *※2

注※1

メトリクス取得項目に関しては、「(3)　出力内容」の項目を参照してください。

注※2

数値に関して特に条件がない場合は、": *"を指定することで、該当するメトリクスを取得した項目の絞り込みができます。

図11‒42　Kibanaによるメトリクス参照例

(d)　Google Cloud PlatformのCloud Monitoringによる参照

Google Cloud Platform環境でメトリクスを確認する場合は、Cloud Monitoringを使用してメトリクスを参照します。詳細については、Google Cloud Platformの公式ドキュメントを参照してください。

(e)　New Relicによる参照

New Relic使用時にメトリクスを確認する場合は、New Relic UI（Web UI）を使用してメトリクスを参照します。詳細については、New Relicの公式ドキュメントを参照してください。

(3)　出力内容

メトリクスデータとして出力する、HMP-PCTOのメトリクス取得項目については、「付録C　HMP-PCTOのメトリクス取得項目」を参照してください。

なお、ユーザアプリケーション（業務処理）部分は、ユーザがメトリクスを取得する必要があります。

(4)　参照方法

(a)　PrometheusのWeb UI参照方法

Prometheusサーバに収集されたメトリクスデータは、Prometheusサーバが公開しているWeb UIに、次のURLにアクセスすることで参照できます。

http://A...A:B...B

A...A：PrometheusのWeb UIのDNS名またはIPアドレス

B...B：PrometheusのWeb UIのポート番号

(b)　エンドポイント

HMP-PCTOのメトリクスデータと、Mediatorでの処理中のトランザクションブランチ数、処理が完了したトランザクションブランチ数を参照可能とするために、各コンポーネントでエンドポイントを次の形式で用意しています。

http://A...A/B...B

A...A：各コンポーネントのPodのDNS名

B...B：メトリクスのエンドポイント

次にHMP-PCTOの各コンポーネントにおけるエンドポイントの詳細を示します。

Orchestrator-Serviceコンテナイメージ

Orchestrator-Serviceコンテナイメージのエンドポイントを次に示します。

表11‒39　Orchestrator-Serviceコンテナイメージのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/metrics

Prometheusにメトリクスを公開するためのエンドポイント

Relay-Serviceコンテナイメージ

Relay-Serviceコンテナイメージのエンドポイントを次に示します。

表11‒40　Relay-Serviceコンテナイメージのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/metrics

Prometheusにメトリクスを公開するためのエンドポイント

Entity-Service(SQL)コンテナイメージ

Entity-Service(SQL)コンテナイメージのエンドポイントを次に示します。

表11‒41　Entity-Service(SQL)コンテナイメージのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/metrics

Prometheusにメトリクスを公開するためのエンドポイント

Entity-Service(TCC)コンテナイメージ

Entity-Service(TCC)コンテナイメージのエンドポイントを次に示します。

表11‒42　Entity-Service(TCC)コンテナイメージのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/metrics

Prometheusにメトリクスを公開するためのエンドポイント

Orchestrator-Service(SQL)コンテナイメージ

Orchestrator-Service(SQL)コンテナイメージのエンドポイントを次に示します。

表11‒43　Orchestrator-Service(SQL)コンテナイメージのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/metrics

Prometheusにメトリクスを公開するためのエンドポイント

Alternate-Serviceコンテナイメージ

Alternate-Serviceコンテナイメージのエンドポイントを次に示します。

表11‒44　Alternate-Serviceコンテナイメージのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/metrics

Prometheusにメトリクスを公開するためのエンドポイント

Alternate-Service(SQL)コンテナイメージ

Alternate-Service(SQL)コンテナイメージのエンドポイントを次に示します。

表11‒45　Alternate-Service(SQL)コンテナイメージのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/metrics

Prometheusにメトリクスを公開するためのエンドポイント

Mediatorコンテナイメージ

Mediatorコンテナイメージのエンドポイントを次に示します。

表11‒46　Mediatorコンテナイメージのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/metrics

Prometheusにメトリクスを公開するためのエンドポイント

TP1-Bridgeコンテナイメージ

TP1-Bridgeコンテナイメージのエンドポイントを次に示します。

表11‒47　TP1-Bridgeコンテナイメージのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/metrics

Prometheusにメトリクスを公開するためのエンドポイント

11.5.4　定義するデータ形式

(1)　XIDの形式

HMP-PCTOでは、トランザクションを一意に識別する情報としてXIDを使用します。XIDをコンポーネント間で引き渡して、トランザクションの制御をします。

XIDの構造は、javax.transaction.xaインタフェースで定義された構造（X/Openトランザクション識別子XID構造のJavaマッピング）とします。XIDの構造と内容を次の表に示します。

表11‒48　XIDの構造

名称

説明

GlobalTransactionId

（グローバルトランザクション識別子）

トランザクションザクションを一意に識別するためのID。

FormatId

（形式識別子/フォーマットID）

XIDの形式を示す数値。

現時点のHMP-PCTOではフォーマットID=1の一形式。

将来的に、HMP-PCTOのバージョン、使用する機能などによって形式が変わる場合は、この値で形式を区別します。

BranchQualifier

（トランザクションブランチ識別子）

トランザクションブランチを一意に識別するためのID。

(2)　フォーマットID=1のXID形式

(a)　GlobalTransactionId

64バイトのbyte配列です。内容を次に示します。

表11‒49　GlobalTransactionIdの内容

名称

オフセット（単位：バイト）

長さ（単位：バイト）

説明

UUID

（ユニバーサル固有識別子）

0

16

UUIDをbyte配列に変換した値です。Javaの標準クラスでタイプ4（擬似ランダム生成）UUIDを生成して格納します。

BIG ENDIANです。

MediatorNumbersMap

（Mediator番号）

16

8

トランザクションに参加するMediatorの番号に対応するビットマップです。

次のようにマッピングします。

番号0を2^0ビットへマッピング

番号63を2^63ビットへマッピング

BIG ENDIANです。

consensusType

（分散合意種別）

24

1

Orchestratorのパラメタjp.co.Hitachi.soft.hmppcto.learner.consensus-typeの設定値に対応した1バイトの文字です。

T：Three-Quarters

P：Privileged-Value

filler

（空き領域）

25

7

未使用領域です。

「’/’」で埋めます。

instanceId

（インスタンス識別子）

32

32

どのOrchestratorのトランザクションか判断するための識別子です。

Orchestratorのパラメタjp.co.Hitachi.soft.hmppcto.instance-id設定値をbyte配列に変換した値です。

設定値が32バイト未満の場合は、「’/’」で埋めます。

(b)　FormatId

int型の1です。

(c)　BranchQualifier

32バイトのbyte配列です。

Entity-Moduleを呼び出すOrchestrator、またはEntity-Moduleのパラメタjp.co.Hitachi.soft.hmppcto.branch.qualifier.listに設定した識別子をbyte[]に変換した値です。設定値が32バイト未満の場合は、「#」で埋めます。

ルートXIDの場合、BranchQualifierは意味はありません。0x00（1バイト）が設定されますが、使用されません。

11.6　HMP-PCTOの障害調査

HMP-PCTOで障害が発生した場合に取得する情報と、その収集方法について説明します。

11.6.1　取得する情報

ユーザ（システム運用者）が調査するため、また、システム運用者がサポート部署へ資料を送付するために取得する情報を次の表に示します。

表11‒50　取得する情報

項番

情報の種類

取得する情報

1

標準出力の情報

（HMP-PCTOのメッセージを含む）

ログを永続化するためのアプリケーションまたはサービスに格納された標準出力の情報（HMP-PCTOのメッセージを含む）です。

HMP-PCTOは、各podの標準出力をログ収集アプリケーションまたはサービスに送信します。ログ収集アプリケーションまたはサービスは、ログを永続化するためのアプリケーションまたはサービスに情報を送信します。

各コンテナの標準出力には、HMP-PCTOと同一コンテナ上で動作している次の項目が出力したメッセージなどを含みます。ログ閲覧アプリケーションまたはサービスで、どの項目が出力した情報なのかを検索したり、フィルタリングしたりできます。

ユーザ責務のKubernetesアプリケーションが出力したメッセージ

HMP-PCTOの前提プログラム/連携製品

・Spring Boot

・Java VM

・Javaランタイム

・TP1/Client/J

2

分散トレースの情報

分散トレースを永続化するためのアプリケーションまたはサービスに格納された分散トレース情報です。

HMP-PCTOは、各podの分散トレース情報を分散トレース収集アプリケーションまたはサービスに送信します。分散トレース収集アプリケーションまたはサービスは、分散トレースを永続化するためのアプリケーションまたはサービスに情報を送信します。

3

メトリクスの情報

メトリクス情報を永続化するためのアプリケーションまたはサービスに格納されたメトリクス情報です。

HMP-PCTOは、各podのメトリクス情報をメトリクス収集アプリケーションまたはサービスに送信します。メトリクス収集アプリケーションまたはサービスはメトリクス情報を永続化するためのアプリケーションまたはサービスに情報を送信します。

4

Kubernetesの情報

Kubernetes上のpodの詳細情報です。

Podで問題が発生していないかどうか、発生している場合はEvent情報で、どんな問題が発生しているかを確認します。

このEvent情報にはライフサイクルイベントハンドラで実行したHMP-PCTOのシェルスクリプトの標準出力の情報も出力されます。

5

連携製品が出力したトラブルシュート情報

各連携製品コンテナのボリュームに出力される情報です。

PostgreSQLのログ情報

EADSサーバのトラブルシュート情報

6

HMP-PCTOコンテナのボリュームに出力される情報です。

EADSクライアントのトラブルシュート情報

Tomcatのアクセスログ

TP1/Client/Jのトレース情報

7

連携製品が稼働するマシン上に出力される情報です。

HiRDBのトレース・ログ情報

SQL Serverのトレース・ログ情報

Oracle Databaseのトレース・ログ情報

uCosminexus Service Platformのトレース・ログ情報

OpenTP1のトレース・ログ情報

ユーザ（システム運用者）が調査する方法を次の表に示します。

表11‒51　ユーザの調査方法

項番

情報の種類

調査方法

1

標準出力の情報

（HMP-PCTOのメッセージを含む）

ログを永続化するためのアプリケーションまたはサービスに送られた標準出力の情報を、ログ閲覧アプリケーションまたはサービスで確認します。

2

分散トレースの情報

分散トレースを永続化するためのアプリケーションまたはサービスに送られた分散トレースの情報を、分散トレース閲覧アプリケーションまたはサービスで確認します。

3

メトリクスの情報

メトリクスを永続化するためのアプリケーションまたはサービスに送られたメトリクスの情報を、メトリクス閲覧アプリケーションまたはサービスで確認します。

4

Kubernetesの情報

コマンド「kubectl describe」で確認します。

5

連携製品が出力したトラブルシュート情報

各連携製品のコンテナのボリュームに出力される情報を次のどちらかの方法で収集し、情報を確認します。

各連携製品のマニュアルに記載されている出力場所や、出力方法を参照して収集します。

Elastic Stackを使用している場合、各Podのトラブルシュート情報のファイルの内容をサイドカーのFilebeatコンテナに組み込むことでElasticsearchに情報が格納され、リアルタイムで確認できます。

6

HMP-PCTOコンテナのボリュームに出力される情報を次のどちらかの方法で収集し情報を確認します。

uCosminexus Application Runtime for Spring Bootのスナップショットログ収集機能を使用することで、指定したボリュームの内容をスナップショットログとして出力できます。

Elastic Stackを使用している場合、各コンテナのトラブルシュート情報のファイルの内容をサイドカーのFilebeatコンテナに組み込むことでElasticsearchに情報が格納され、リアルタイムで確認できます。

7

連携製品が稼働するマシン上に出力される情報を次の方法で収集して確認します。

各連携製品のマニュアルに記載されている出力場所や、出力方法を参照して収集します。

注　Microsoft Azure環境、Google Cloud Platform環境またはNew Relicを使用している場合、各コンテナのボリュームに出力される情報について、サイドカーコンテナの組み込みによる情報の収集ができません。そのため、uCosminexus Application Runtime for Spring Bootのスナップショットログ機能を使用して、HMP-PCTOコンテナのボリュームに出力される情報を収集してください。

ユーザが調査しても原因不明だった場合、システム運用者がサポート部署へ資料を送付するために収集する資料を次の表に示します。

表11‒52　情報の収集方法

項番

情報の種類

収集する情報

収集方法

1

標準出力の情報

（HMP-PCTOのメッセージを含む）

ログを永続化するためのアプリケーションまたはサービスに格納された標準出力の情報

Elastic Stack使用環境の場合

Elasticsearchのスナップショット機能で収集します。

Microsoft Azure環境の場合

Azure Monitorのエクスポート機能で収集します。

Google Cloud Platform環境の場合

Google Cloud Platformのログエクスプローラで収集します。

New Relic使用時の場合

New RelicのNRQLを使用して収集します。

2

分散トレースの情報

分散トレースを永続化するためのアプリケーションまたはサービスに格納された分散トレース情報をエクスポートしたファイル

3

メトリクスの情報

メトリクスを永続化するためのアプリケーションまたはサービスからメトリクス情報をエクスポートしたファイル

4

Kubernetesの情報

Kubernetes上のpodの詳細情報

コマンド「kubectl describe」で出力された情報をファイルに出力します。

5

連携製品が出力したトラブルシュート情報

各連携製品コンテナのボリュームに出力される情報

PostgreSQLのログ情報

EADSサーバのトラブルシュート情報

連携製品が稼働するコンテナ上でトラブルシュート情報の収集・出力を実施します。

uCosminexus Application Runtime for Spring Bootのスナップショットログ収集機能を使用して収集します。

Elastic Stack使用環境の場合

Elasticsearchのスナップショット機能で収集します。

6

HMP-PCTOコンテナのボリュームに出力される情報

EADSクライアントのトラブルシュート情報

Tomcatのアクセスログ

TP1/Client/Jのトレース情報

uCosminexus Application Runtime for Spring Bootのスナップショットログ収集機能を使用して収集します。

Elastic Stack使用環境の場合

Elasticsearchのスナップショット機能で収集します。

7

連携製品が稼働するマシン上に出力される情報

HiRDBのトレース・ログ情報

SQL Serverのトレース・ログ情報

Oracle Databaseのトレース・ログ情報

uCosminexus Service Platformのトレース・ログ情報

OpenTP1のトレース・ログ情報

連携製品が稼働するマシン上でトラブルシュート情報の収集・出力を実施します。

11.6.2　情報の収集方法

サポート部署へ資料を送付する目的で、収集方法を次に示します。

(1)　Elasticsearchに格納された情報の収集方法

Elasticsearchのスナップショット機能で収集します。収集先として、不揮発のストレージに出力してください。

ElasticsearchにHMP-PCTOが出力する情報のindex名は、次の文字で始まります。

表11‒53　Elasticsearchのindex名のプレフィックス

項番

情報の種類

Elasticsearchのindex名のプレフィックス

1

標準出力の情報

（HMP-PCTOのメッセージを含む）

連携製品が出力したトラブルシュート情報

「logstash」

2

分散トレースの情報

「jaeger」

3

メトリクスの情報

「metricbeat」

Elasticsearchのスナップショット機能で収集する場合、Kubernetesコントロールプレーン上で次のコマンド例でバックアップを行ってください（Elasticsearchのhttp.portが30202、elasticユーザのパスワードがpasswordの場合）。Elasticsearchリポジトリディレクトリに情報が格納されます。

# curl --cacert ca.crt --key elastic.key --cert elastic.crt -u elastic:password -XPUT 'https://localhost:30202/_snapshot/backup/snapshot1'

Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリで情報が作成されていることを確認してください。

# ls /elasticsearch-repo-volume
index  indices  meta-snapshot-2023.07.11.dat

サポート部署へ送付するなどの目的でElasticsearchリポジトリディレクトリの情報を1つのファイルにまとめる場合は、次の例を参考にしてください。

＜Elasticsearchリポジトリディレクトリの情報をrepo.tgzというファイルにまとめる例＞

# cd /elasticsearch-repo-volume
# tar cvfz /repo.tgz *

Elasticsearchリポジトリディレクトリの情報を見るためにリストアする場合は、Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリにElasticsearchリポジトリディレクトリの情報を展開し、Kubernetesコントロールプレーン上で次のコマンド例でリストアを行ってください（Elasticsearchのhttp.portが30202、elasticユーザのパスワードがpasswordの場合）。

# curl --cacert ca.crt --key elastic.key --cert elastic.crt -u elastic:password -XPOST 'https://localhost:30202/_snapshot/backup/snapshot1/_restore'

(2)　Microsoft Azureに格納された情報の収集方法

Azure Monitorのエクスポート機能を使用して情報を収集します。収集先として、Azure Blob Storageなどの永続ストレージに出力してください。

＜Azure Monitorのエクスポート機能で収集する手順＞

Azureポータルにログイン

対象のAzure Monitor Log Analyticsワークスペースを選択

「エクスポート」オプションを選択

エクスポート先としてAzure Blob Storageを指定

サポート部署へ送付するなどの目的で、Azure Blob Storageにエクスポートされた情報を1つのファイルにまとめる場合は、次の例を参考にしてください。

＜Azure Monitor Log Analyticsの情報をdate.tgzというファイルにまとめる例＞

az storage blob download-batch -d . --source <コンテナ名> --account-name <ストレージアカウント名>
tar cvfz log_analytics_data.tgz *

(3)　Google Cloud Platformに格納された情報の収集方法

Cloud Logging、Cloud TraceおよびCloud Monitoringの情報を取得してください。

Cloud Loggingのログ エクスプローラで収集する場合

ログ エクスプローラを開き、「操作」メニューをクリックしたあと、「ダウンロード」をクリックしてください。

詳細については、Google Cloud Platformの公式ドキュメントを参照してください。

Cloud TraceからCloud Consoleで収集する場合

Cloud ConsoleからCloud Trace APIを使用して、対象の分散トレースを取得してください。

詳細については、Google Cloud Platformの公式ドキュメントを参照してください。

Cloud Monitoring のメトリクスエクスプローラで収集する場合

「CSV形式でダウンロード」ボタンをクリックしてください。

詳細については、Google Cloud Platformの公式ドキュメントを参照してください。

(4)　New Relicに格納された情報の収集方法

NRQLを使用してNew Relicに保存されたメッセージログ、分散トレースおよびメトリクスの情報を取得してください。メッセージログは、New Relicで一度に出力できる最大行数までをNew Relic UIを使用して取得できます。

詳細については、New Relicの公式ドキュメントを参照してください。

(5)　uCosminexus Application Runtime for Spring Bootのスナップショットログ収集機能での収集方法

uCosminexus Application Runtime for Spring Bootの「スナップショットログ収集機能」によって、コンテナ内の連携製品が出力したトラブルシュート情報のファイルを収集し、不揮発のストレージに出力してください。

コンテナ内に出力されるトラブルシュート情報をuCosminexus Application Runtime for Spring Bootの機能で収集したい場合は、uCosminexus Application Runtime for Spring Bootの設定ファイル（config.properties）を定義したConfigMapのマニフェストファイルに、次のパラメタを追加してください。このパラメタに収集対象とするファイルが出力されるファイルパスを指定することで、スナップショットログの収集対象を追加できます。

snapshot.include.paths.<n>※ = <追加収集するファイルパス>

注※

<n>には、1以上の整数を指定してください。

スナップショットログ収集機能についての詳細は、マニュアル「uCosminexus Application Runtime for Spring Boot ユーザーズガイド」を参照してください。

(6)　連携製品が稼働するマシン上のトラブルシュート情報の収集方法

マシン上で直接起動する連携製品のトラブルシュート情報の出力・収集は、ユーザの設定に依存します。そのため、各製品のマニュアルを参照して、トラブルシュート情報を出力・収集してください。

11.6.3　障害原因の調査方法

HMP-PCTOで発生する障害と、原因の調査方法について説明します。

(1)　障害発生時の流れ

標準出力（標準エラー出力を含む）に出力されたメッセージログのエラーメッセージ（警告メッセージを含む）、または分散トレースの出力情報によって、障害発生を検知できます。

HMP-PCTOの障害発生時に、ユーザ（システム運用者）およびサポート部署が実施する障害調査の流れは次のとおりです。

資料取得

主なトラブルと調査個所

障害個所の特定

障害原因の調査

障害対策

次に、それぞれのフェーズでユーザ（システム運用者）およびサポート部署が実施する内容を示します。

図11‒43　HMP-PCTO 障害発生時の流れ（SQL-Participantを使用する場合）

図11‒44　 HMP-PCTO障害発生時の流れ（TCC-Participantを使用する場合）

図11‒45　HMP-PCTO 障害発生時の流れ（TP1-Bridgeを使用する場合）

(2)　資料取得

トラブルシュートを行うために必要な資料を収集する方法は、「11.6.2　情報の収集方法」を参照してください。

(3)　主なトラブルと調査個所

トラブル（障害）が発生するフェーズは次のとおりです。

環境構築時および起動時

HMP-PCTOの各コンポーネントで使用するPod・コンテナを構築し、起動した際に障害となった場合

システム稼働中

HMP-PCTOの各コンポーネントが稼働中に障害となった場合

障害の種類と調査個所について、次の表に示します。

表11‒54　障害の種類と調査個所

項番

障害の種類

現象

主な原因

調査個所

1

通信エラー

エラーメッセージ出力

サービス要求や各コンポーネント間の通信に異常が起こる

標準出力をKibanaなどの可視化ツールで確認

分散トレースをJaegerのWeb UIで確認

2

通信レスポンス遅延

応答遅延

サービス要求や各コンポーネント間の通信でレスポンスが遅延する

分散トレースをJaegerのWeb UIで確認

メトリクスをPrometheusのWeb UIなどの可視化ツールで確認

3

連携製品のエラー

エラーメッセージ出力

HMP-PCTOから連携製品（DBなど）へのアクセス時のエラー

標準出力をKibanaなどの可視化ツールで確認

分散トレースをJaegerのWeb UIで確認

4

連携製品のレスポンス遅延

応答遅延

HMP-PCTOから連携製品（DBなど）へのアクセスでレスポンスが遅延する

分散トレース

メトリクスをPrometheusのWeb UIなどの可視化ツールで確認

5

製品内部のエラー

エラーメッセージ出力

HMP-PCTO各コンポーネントの内部で、製品処理に起因しない要因でエラー

＜例＞

ConsensusLogアクセス時にエラーが返る

標準出力をKibanaなどの可視化ツールで確認

分散トレースをJaegerのWeb UIで確認

6

製品内部のレスポンス遅延

応答遅延

HMP-PCTO各コンポーネントの内部で、製品処理に起因しない要因でレスポンスが遅延する

＜例＞

ConsensusLog出力に時間が掛かりレスポンスが遅延する

分散トレースをJaegerのWeb UIで確認

メトリクスをPrometheusのWeb UIなどの可視化ツールで確認

7

Pod障害

エラーメッセージ出力

Podが異常終了する

標準出力をKibanaなどの可視化ツールで確認

Kubernetesの詳細情報

8

メモリ不足

エラーメッセージ出力

HMP-PCTO各コンポーネントが使用できるメモリが不足する

標準出力をKibanaなどの可視化ツールで確認

メトリクスをPrometheusのWeb UIなどの可視化ツールで確認

9

パラメタ設定ミス

エラーメッセージ出力

パラメタに誤りがありHMP-PCTOが動作しない

標準出力をKibanaなどの可視化ツールで確認

10

HTTPヘッダ設定ミス

・HTTPステータスコード3xx/4xx/5xx

HTTPヘッダに誤りがありサービスからエラーが返る

標準出力をKibanaなどの可視化ツールで確認

分散トレースをJaegerのWeb UIで確認

11

製品不良

エラーメッセージ出力

HMP-PCTO製品に問題があり正常に動作しない

＜例＞

通信データ不正

標準出力をKibanaなどの可視化ツールで確認

分散トレースをJaegerのWeb UIで確認

また、障害の種類と、ユーザの対策方法について次の表に示します。

表11‒55　障害の種類と対策

項番

障害の種類

現象

主な原因

調査個所

対策

1

HMP-PCTOのPodが終了しない

KFSG82103-Iメッセージ（未決着トランザクション待機処理が完了）が出ず、Podが終了しない

未決着トランザクションの情報が取得できない。

Kubernetesの詳細情報（Event情報）

preStopフックで実行する未決着トランザクション待機スクリプトのリトライ回数、リトライ間隔の設定を見直してください。

(4)　障害個所の特定、原因の調査・対策

ユーザ（システム運用者）、およびサポート部署が行う、障害個所の特定、原因の調査・対策についてそれぞれ次に示します。

(a)　ユーザ（システム運用者）の調査、対策

ユーザ（システム運用者）は、次のそれぞれの情報について調査、および対策を行ってください。

調査順序

次の順序で障害を調査します。

JaegerのWeb UIで、分散トレースの情報にエラー、または処理の遅延がないかどうかを確認します。エラーまたは処理の遅延があった場合、発生した個所や時刻を確認します。

Kibanaなどの可視化ツールで発生時間帯の標準出力を確認し、HMP-PCTOのメッセージなどエラーの情報があるかどうか確認します。

PrometheusのWeb UIなどの可視化ツールでメトリクスの情報を確認し、処理の遅延や、スレッドのキューへの滞留があるかどうかを確認します。

Podの障害、またはPodが終了しない事象があった場合は、Kubernetes上のpodの詳細情報を取得して、Podの状態やEvent情報を確認します。

調査個所、対策

それぞれ次の個所を調査し、対策を行います。

標準出力の情報

標準出力をKibanaなどの可視化ツールで確認してください。標準出力にHMP-PCTOが出力したエラーメッセージがあったときは、「10.　メッセージ」を参照してください。メッセージに対策が記載されている場合は、それに従って対策を行ってください。

HMP-PCTOが出力したエラーメッセージに出力されたブランチXID（またはルートXID）の情報から、分散トレースや、連携製品のTomcatやDBのログのトラブルシュート情報に、同じブランチXID（またはルートXID）の情報があるかどうか、あった場合はその情報から、サービス依頼元やDBに問題がないかを合わせて確認してください。

パラメタの誤りがある場合は、修正して再度HMP-PCTOを起動してください。

分散トレースの情報

分散トレースをJaegerのWeb UIで確認してください。処理結果がエラーとなっている個所、または、処理が遅延している個所を確認してください。また、その処理がHMP-PCTO製品内部の処理かどうかも確認してください。

分散トレースに出力されたブランチXID（またはルートXID）の情報から、連携製品のTomcatやDBのログのトラブルシュート情報に、同じブランチXID（またはルートXID）の情報があるかどうか、あった場合はその情報から、サービス依頼元やDBに問題がないかを合わせて確認してください。

HMP-PCTO製品内部の処理でエラー、または遅延が発生している場合は、「6.5.1 取得する情報」に記載の情報を収集し、サポート部署へ調査を依頼してください。

HMP-PCTOの処理ではない場合は、連携製品でのエラー、遅延であるため連携製品のサポートに調査を依頼してください。

メトリクスの情報

メトリクスをPrometheusのWeb UIなどの可視化ツールで確認してください。CPU使用率・メモリ使用量などの情報から、処理が遅延している個所を確認してください。必要に応じてCPUコアやメモリの増強を行ってください。また、スレッドのキューへの滞留数を示している「hmppcto_executor_queued_tasks」「hmppcto_asynctask_queued_operations」が常時1以上になっている場合、同時実行可能なスレッド数を増やしてください。

Kubernetesの情報

Kubernetes上のpodの詳細情報を取得し、環境不正またはpodの操作ミスがないか確認してください。また、詳細情報の中のEvent情報から、ライフサイクルイベントハンドラで実行するHMP-PCTOのシェルスクリプトが出力したエラーメッセージがあったときは、「10.　メッセージ」を参照してください。メッセージに対策が記載されている場合は、それに従って対策を行ってください。

(b)　サポート部署の調査、対策

ユーザから調査依頼を受け、ユーザから資料を入手したサポート部署が調査する内容は次のとおりです。

標準出力の情報をエクスポートしたファイル

HMP-PCTOのエラーメッセージ、またはスタックトレースが出力されていないか確認します。

また、次に示す、そのほかの連携製品から出力された標準出力の情報からエラーメッセージが出力されていないか確認します。

Spring Boot

Java VM

TP1/Client/J

SQL Server

HiRDB

Kubernetesの情報

サポート部署は、ユーザにpodの情報収集した出力結果ファイルを依頼し、その結果から状態を確認します。

分散トレース情報をエクスポートしたファイル

サービス呼び出し関連が知りたい場合や、遅延が発生していて遅延個所を特定したい場合は、分散トレースを確認します。分散トレースでは、トランザクション内の次の実行時間を確認できます。

トランザクション（ルートXIDの割り当て〜合意）

サービスの実行時間

DBアクセス時間

EADS APIアクセス時間（トライアル版では取得できません）

ConsensusLogアクセス時間

REST API通信時間

gRPC通信時間

連携製品側のトラブルシュートが必要になった場合、関連部署へ調査依頼を行います。

EADS（トライアル版では不要です）

uCosminexus Application Runtime for Spring Boot

TP1/Client/J

uCosminexus Service Platform

OpenTP1

HiRDB

OSSでのトラブルシュートが必要になった場合、関連部署（OSSサポートチーム）へ調査依頼を行います。

Spring Boot

PostgreSQL

SQL Server

通信データの確認

製品不良による電文設定ミス、ユーザのHTTPヘッダミス（SQL-Participantを使用する場合の先行プリペア設定もれなど）のおそれがある場合は、次の情報を確認します。

Tomcatアクセスログ

ヘッダ情報から、REST API通信の内容を確認します。

分散トレース

gRPC通信の内容を確認します。

連携製品の調査

DB障害やEADS障害などの連携製品については、連携製品側のトラブルシュート情報を取得し、連携製品のサポート部署に調査を依頼します。

HiRDBのトレース・ログ情報

EADSのトラブルシュートファイル（トライアル版では取得できません）

uCosminexus Service Platformのトレース・ログ情報

OpenTP1のトレース・ログ情報

TP1/Client/Jのトレース情報

次の情報を、連携製品調査の補助資料として必要に応じて連携製品側へ情報を提供します。

分散トレース

次の項目を確認します。

・XA関数実行時の順序、内容、実行結果を確認します。

・EADS API実行時の順序、内容、実行結果を確認します。なお、トライアル版では確認不要です。

標準出力

エラーメッセージ、またはスタックトレースが出力されているかどうかを確認します。

統計情報確認

通信遅延、プロセススローダウンなどの遅延が発生した場合、ブランチXIDの情報だけでは原因の特定（例えば、通信量やディスクIOが競合したなど）が難しいため、次の情報から、遅延発生時間帯やその時間帯に動いていたブランチXIDを特定します。

メトリクス

gRPC通信量、GC回数、CPU情報を取得します。

分散トレース

通信やファイルアクセスで遅延が発生し始めた時間を特定します。

11.7　システム運用に必要となる機能の障害対策

ここでは、HMP-PCTOのシステム運用に必要となる機能機能で障害が発生した場合の対策について説明します。

HMP-PCTOのライブラリ、またはライブラリ以外でシステム運用に必要となる機能で使用するPod・コンテナで障害が発生した場合についても記載します。

11.7.1　障害の原因および対策

障害の種類と原因、対策について説明します。

(1)　メッセージログ

(a)　共通

メッセージログに関する障害の種類と対策を次の表に示します。

表11‒56　メッセージログに関する障害の種類と対策

項番

障害の種類

現象

主な原因

対策

1

メッセージが出力されない

標準出力にHMP-PCTOのメッセージが出力されない

HMP-PCTOのアプリケーションが動作していない

HMP-PCTOのPodが動作していることを確認してください。

誤って削除したなどの要因で、既定のディレクトリに製品提供のlogback-spring.xmlがない

製品提供のlogback-spring.xmlを既定のディレクトリに配置してください。

コンテナのLogging Driverの障害

コンテナの設定でLogging Driverがデフォルトの「json-file」であることを確認してください。

イベントリソースにHMP-PCTOのメッセージが出力されない（ライフサイクルイベントハンドラで実行されたHMP-PCTOのシェルスクリプトが出力する）

ライフサイクルイベントハンドラでHMP-PCTOのシェルスクリプトが実行されていない（シェルスクリプトが実行されている場合、KFSG82102-Iメッセージがイベントリソースに出力される）

livenessProbe、およびreadinessProbeが正しく設定されていることを確認してください。

2

プロセスダウン

KFSG74103-Eメッセージが出力された（「ロガーがメッセージプロパティファイルを取得できませんでした。」）

誤って削除したなどの要因で、既定のディレクトリに製品提供の「hmppcto_messages.properties」がない

製品提供の「hmppcto_messages.properties」を既定のディレクトリに配置してください。

(b)　Elastic Stack使用環境の場合

メッセージログに関する障害の種類と対策を次の表に示します。

表11‒57　メッセージログに関する障害の種類と対策（Elastic Stack使用環境の場合）

項番

障害の種類

現象

主な原因

対策

1

メッセージが出力されない

Kibanaなどのログ可視化ツールでHMP-PCTOのメッセージが出力されない

FilebeatのLogstashへの送信に失敗している

LogstashからElasticsearchへの送信に失敗している

Filebeat、Logstash、Elasticsearchの状態を確認し、再起動してください。

可視化ツールの設定ミス

可視化ツールの設定を見直してください。

可視化ツールにアクセスするURLが誤っている

URLが正しいかどうか確認してください。

Elasticsearchの容量が不足している

各コンポーネントをいったん停止し、Elasticsearchの容量を拡大してから、再度、各コンポーネントを開始してください。

(c)　Microsoft Azure環境の場合

メッセージログに関する障害の種類と対策を次の表に示します。

表11‒58　メッセージログに関する障害の種類と対策（Microsoft Azure環境の場合）

項番

障害の種類

現象

主な原因

対策

1

メッセージが出力されない

Microsoft Azureポータル上でHMP-PCTOのメッセージを確認できない

リソースグループ内にLog Analyticsワークスペースが作成されていない

Microsoft Azureポータルからリソースグループ内にLog Analyticsワークスペースを作成してください。

AKSクラスタがLog Analyticsワークスペースに接続されていない

AzureポータルまたはAzure CLIを使用して、AKSクラスタのモニタリングを有効化し、Log Analyticsワークスペースに接続してください。

Azure Monitor Agentがデプロイされていない

AKSクラスタ内でAzure Monitor Agentがデプロイされていることを確認してください。

Log Analyticsワークスペースへのアクセス権がない

利用ユーザに適切なアクセス権限を設定してください。

メッセージログの検索クエリに誤りがある

Kustoの形式に沿った検索クエリが使用されていることを確認してください。

(d)　Google Cloud Platform環境の場合

特になし。

(e)　New Relic使用時の場合

メッセージログに関する障害の種類と対策を次の表に示します。

表11‒59　メッセージログに関する障害の種類と対策（New Relic使用時の場合）

項番

障害の種類

現象

主な原因

対策

1

メッセージが出力されない

New Relic UI上でHMP-PCTOのメッセージを確認できない

New RelicのKubernetes integrationのコンポーネントがデプロイされていない

Kubernetesクラスタ内にKubernetes integrationコンポーネントがデプロイされていることを確認してください。

(2)　分散トレース

(a)　共通

分散トレースに関する障害の種類と対策を次の表に示します。

表11‒60　分散トレースに関する障害の種類と対策

項番

障害の種類

現象

主な原因

対策

1

分散トレースの情報が出力されない

JaegerのWeb UIに、HMP-PCTOの分散トレースの情報が出力されない

HMP-PCTOのアプリケーションが動作していない

HMP-PCTOのPodが動作していることを確認してください。

(b)　Elastic StackおよびJaeger使用環境の場合

分散トレースに関する障害の種類と対策を次の表に示します。

表11‒61　分散トレースに関する障害の種類と対策（Elastic StackおよびJaeger使用環境の場合）

項番

障害の種類

現象

主な原因

対策

1

分散トレースの情報が出力されない

JaegerのWeb UIに、HMP-PCTOの分散トレースの情報が出力されない

標準出力に、「WARNING 〜 Failed to export traces:〜」というメッセージが出力される

HMP-PCTOのPodからJaeger-collectorへの送信が失敗している（左記の「WARNING〜」が出力されている）

HMP-PCTOの、分散トレースの送信先の設定（「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」のtracing.url）で指定するURLが、Jaeger-collectorのホスト名・ポートと合っているか確認してください。

Jaeger-collectorからElasticsearchへの送信が失敗している

Jaeger-collectorおよびElasticsearchの状態を確認し、再起動してください。

Jaeger-collectorで内部キューあふれが発生し、分散トレース情報のdropが発生している

Jaeger-collectorを一度アンデプロイします。その後、Jaeger-collectorの内部キューの容量の設定（「(1)　Helmチャートのパラメタ」のcollector.queueSize）で内部キューのサイズを変更し、再度Jaeger-collectorをデプロイしてください。

Jaeger-queryのPodが動作していない

Jaeger-queryの状態を確認し、再起動してください。

JaegerのWeb UIにアクセスするURLが誤っている

URLが正しいかどうか確認してください。

(c)　Microsoft Azure環境の場合

分散トレースに関する障害の種類と対策を次の表に示します。

表11‒62　分散トレースに関する障害の種類と対策（Microsoft Azure環境の場合）

項番

障害の種類

現象

主な原因

対策

1

分散トレースの情報が出力されない

Microsoft Azureポータル上で分散トレースを確認できない

標準出力に、「WARNING 〜 Failed to export traces:〜」というメッセージが出力される

HMP-PCTOのPodからの分散トレースの送信が失敗している（左記の「WARNING〜」が出力されている）

HMP-PCTOの、分散トレースの送信先の設定（「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」のtracing.url）で指定するURLが、AzureポータルのApplication Insights上で確認可能な接続文字列と一致しているか確認してください。

リソースグループ内にApplication Insightsインスタンスが作成されていない

Microsoft Azureポータルからリソースグループ内にApplication Insightsインスタンスを作成してください。

Application Insightsインスタンスへのアクセス権がない

利用ユーザに適切なアクセス権限を設定してください。

(d)　Google Cloud Platform環境の場合

特になし。

(e)　New Relic使用時の場合

分散トレースに関する障害の種類と対策を次の表に示します。

表11‒63　分散トレースに関する障害の種類と対策（New Relic使用時の場合）

項番

障害の種類

現象

主な原因

対策

1

分散トレースの情報が出力されない

New Relic UI上で分散トレースを確認できない

標準出力に、「WARNING 〜 Failed to export traces:〜」というメッセージが出力される

HMP-PCTOのPodからの分散トレースの送信が失敗している（左記の「WARNING〜」が出力されている）

HMP-PCTOの、分散トレースの送信先の設定（「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」のtracing.url）で指定するURLが、OpenTelemetry Collectorのホスト名およびポートと合っているかを確認してください。

New Relicへ送信する設定が誤っている

New Relic OTLPエンドポイントおよびNew Relicのライセンスキーが正しいかどうか確認してください。

(3)　メトリクス

(a)　共通

メトリクスに関する障害の種類と対策を次の表に示します。

表11‒64　メトリクスに関する障害の種類と対策

項番

障害の種類

現象

主な原因

対策

1

メトリクスの情報が出力されない

PrometheusのWeb UIに、HMP-PCTOのメトリクスの情報が出力されない

HMP-PCTOのアプリケーションが動作していない

HMP-PCTOのPodが動作していることを確認してください。

(b)　Elastic StackおよびPrometheus使用環境の場合

メトリクスに関する障害の種類と対策を次の表に示します。

表11‒65　メトリクスに関する障害の種類と対策（Elastic StackおよびPrometheus使用環境の場合）

項番

障害の種類

現象

主な原因

対策

1

メトリクスの情報が出力されない

PrometheusのWeb UIに、HMP-PCTOのメトリクスの情報が出力されない

Prometheus-Serverが動作していない

Prometheus-ServerのPodが動作していることを確認してください。

Prometheus-Serverが、HMP-PCTOのメトリクス情報の収集に失敗している

Prometheus-Serverの設定（「9.3.8　Prometheus」）を見直してください。

PrometheusのWeb UIにアクセスするURLが誤っている

URLが正しいかどうか確認してください。

Prometheus-Serverが何らかの要因で再起動した

Elasticsearchに登録されたメトリクスの情報を、Kibanaなどの可視化ツールで参照してください。

ElasticsearchにあるHMP-PCTOのメトリクスの情報が、Kibanaなどの可視化ツールで出力されない

Prometheus-ServerからMetricbeatへの送信が失敗している

MetricbeatからElasticsearchへの送信が失敗している

Prometheus-Server、Metricbeat、Elasticsearchの状態を確認し、再起動してください。

可視化ツールの設定ミス

可視化ツールの設定を見直してください。

可視化ツールにアクセスするURLが誤っている

URLが正しいかどうか確認してください。

(c)　Microsoft Azure環境の場合

メトリクスに関する障害の種類と対策を次の表に示します。

表11‒66　メトリクスに関する障害の種類と対策（Microsoft Azure環境の場合）

項番

障害の種類

現象

主な原因

対策

1

メトリクスの情報が出力されない

Microsoft Azureポータル上でHMP-PCTOのメトリクスの情報を確認できない

Azure Monitor Agentがデプロイされていない

AKSクラスタ内でAzure Monitor Agentがデプロイされていることを確認してください。

リソースグループ内にAzure Monitorワークスペースが作成されていない

リソースグループ内にGrafanaワークスペースが作成されていない

Microsoft Azureポータルからリソースグループ内に対応するワークスペースを作成してください。

Application Insightsインスタンスへのアクセス権がない

利用ユーザに適切なアクセス権限を設定してください。

(d)　Google Cloud Platform環境の場合

特になし。

(e)　New Relic使用時の場合

メトリクスに関する障害の種類と対策を次の表に示します。

表11‒67　メトリクスに関する障害の種類と対策（New Relic使用時の場合）

項番

障害の種類

現象

主な原因

対策

1

メトリクスの情報が出力されない

New Relic UI上でHMP-PCTOのメトリクスの情報を確認できない

nri-prometheusコンポーネントがデプロイされていない

Kubernetesクラスタ内にnri-prometheusコンポーネントがデプロイされていることを確認してください。

HMP-PCTOのPodがメトリクスの収集対象になっていない

HMP-PCTOのKubernetesマニフェストに設定されたアノテーションprometheus.io/*の値を確認してください。

アノテーションの詳細については、システム編「3.7.13　New Relicによるメトリクス収集のKubernetesマニフェスト作成」を参照してください。

付録

付録A　提供ファイル

HMP-PCTOおよびオプション製品の提供ファイルについて説明します。

HMP-PCTOおよびオプション製品は、提供媒体内に各種提供ファイルを格納しています。

「2.　ユーザ責務のKubernetesアプリケーション開発」および「3.　HMP-PCTOのコントロールプレーンのKubernetesアプリケーションおよびRASのデプロイ」の手順に従い、提供媒体内ファイルを各環境に配置して使用してください。

付録A.1　提供ファイル一覧

提供ファイル一覧を次に示します。

(1)　Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator

表A‒1　提供ファイル一覧（Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator）

項番

ディレクトリ/ファイル

「¥」はディレクトリの区切り文字

説明

1

libs¥jp¥co¥Hitachi¥soft¥hmppcto

HMP-PCTOライブラリ配置用ディレクトリ

2

hmppcto-common¥V.R.S

共通用ライブラリ配置ディレクトリ

3

hmppcto-common-V.R.S.jar

共通用ライブラリファイル

4

hmppcto-common-V.R.S.module

共通用moduleファイル

5

hmppcto-common-V.R.S.pom

共通用pomファイル

6

hmppcto-orchestrator¥V.R.S

Orchestrator用ライブラリ配置ディレクトリ

7

hmppcto-orchestrator-V.R.S.jar

Orchestrator用ライブラリファイル

8

hmppcto-orchestrator-V.R.S.module

Orchestrator用moduleファイル

9

hmppcto-orchestrator-V.R.S.pom

Orchestrator用pomファイル

10

hmppcto-entity-service¥V.R.S

Entity-Service用ライブラリ配置ディレクトリ

11

hmppcto-entity-service-V.R.S.jar

Entity-Service用ライブラリファイル

12

hmppcto-entity-service-V.R.S.module

Entity-Service用moduleファイル

13

hmppcto-entity-service-V.R.S.pom

Entity-Service用pomファイル

14

hmppcto-server-http-filter¥V.R.S

Entity-Service用ライブラリ配置ディレクトリ

15

hmppcto-server-http-filter-V.R.S.jar

Server側http filter用ライブラリファイル

16

hmppcto-server-http-filter-V.R.S.module

Server側http filter用moduleファイル

17

hmppcto-server-http-filter-V.R.S.pom

Server側http filter用pomファイル

18

hmppcto-server-grpc-interceptor¥V.R.S

Server側gRPC interceptor用ライブラリ配置ディレクトリ

19

hmppcto-server-grpc-interceptor-V.R.S.jar

Server側gRPC interceptor用ライブラリファイル

20

hmppcto-server-grpc-interceptor-V.R.S.module

Server側gRPC interceptor用moduleファイル

21

hmppcto-server-grpc-interceptor-V.R.S.pom

Server側gRPC interceptor用pomファイル

22

hmppcto-jdbc-proxy-driver¥V.R.S

JDBC Proxy Driver用ライブラリ配置ディレクトリ

23

hmppcto-jdbc-proxy-driver-V.R.S.jar

JDBC Proxy Driver用ライブラリファイル

24

hmppcto-jdbc-proxy-driver-V.R.S.module

JDBC Proxy Driver用moduleファイル

25

hmppcto-jdbc-proxy-driver-V.R.S.pom

JDBC Proxy Driver用pomファイル

26

hmppcto-propagation-rest-template¥V.R.S

RestTemplate用ライブラリ配置ディレクトリ

27

hmppcto-propagation-rest-template-V.R.S.jar

RestTemplate用ライブラリファイル

28

hmppcto-propagation-rest-template-V.R.S.module

RestTemplate用moduleファイル

29

hmppcto-propagation-rest-template-V.R.S.pom

RestTemplate用pomファイル

30

hmppcto-propagation-grpc¥V.R.S

gRPC用ライブラリ配置ディレクトリ

31

hmppcto-propagation-grpc-V.R.S.jar

gRPC用ライブラリファイル

32

hmppcto-propagation-grpc-V.R.S.module

gRPC用moduleファイル

33

hmppcto-propagation-grpc-V.R.S.pom

gRPC用pomファイル

34

hmppcto-mediator¥V.R.S

Mediator用ライブラリ配置ディレクトリ

35

hmppcto-mediator-V.R.S.jar

Mediator用ライブラリファイル

36

hmppcto-mediator-V.R.S.module

Mediator用moduleファイル

37

hmppcto-mediator-V.R.S.pom

Mediator用pomファイル

38

libhmppcto-mediator-V.R.S.so

Mediator用のダイレクトIO用ライブラリファイル

39

hmppcto-participant-common¥V.R.S

SQL-Participant/TCC-Participant共通用ライブラリ配置ディレクトリ

40

hmppcto-participant-common-V.R.S.jar

SQL-Participant/TCC-Participant共通用ライブラリファイル

41

hmppcto-participant-common-V.R.S.module

SQL-Participant/TCC-Participant共通用moduleファイル

42

hmppcto-participant-common-V.R.S.pom

SQL-Participant/TCC-Participant共通用pomファイル

43

hmppcto-participant-sql¥V.R.S

SQL-Participant用ライブラリ配置ディレクトリ

44

hmppcto-participant-sql-V.R.S.jar

SQL-Participant用ライブラリファイル

45

hmppcto-participant-sql-V.R.S.module

SQL-Participant用moduleファイル

46

hmppcto-participant-sql-V.R.S.pom

SQL-Participant用pomファイル

47

hmppcto-participant-tcc¥V.R.S

TCC-Participant用ライブラリ配置ディレクトリ

48

hmppcto-participant-tcc-V.R.S.jar

TCC-Participant用ライブラリファイル

49

hmppcto-participant-tcc-V.R.S.module

TCC-Participant用moduleファイル

50

hmppcto-participant-tcc-V.R.S.pom

TCC-Participant用pomファイル

51

hmppcto-lb¥V.R.S

ロードバランス用ライブラリ配置ディレクトリ

52

hmppcto-lb-V.R.S.jar

ロードバランス用ライブラリ

53

hmppcto-lb-V.R.S.module

ロードバランス用moduleファイル

54

hmppcto-lb-V.R.S.pom

ロードバランス用pomファイル

55

hmppcto-tx-paxos-manager¥V.R.S

トランザクション制御分散合意用ライブラリ配置ディレクトリ

56

hmppcto-tx-paxos-manager-V.R.S.jar

トランザクション制御分散合意用ライブラリ

57

hmppcto-tx-paxos-manager-V.R.S.module

トランザクション制御分散合意用moduleファイル

58

hmppcto-tx-paxos-manager-V.R.S.pom

トランザクション制御分散合意用pomファイル

59

hmppcto-participant-adapter¥V.R.S

Participantアダプタ用ライブラリ配置ディレクトリ

60

hmppcto-participant-adapter-V.R.S.jar

Participantアダプタ用ライブラリ

61

hmppcto-participant-adapter-V.R.S.module

Participantアダプタ用moduleファイル

62

hmppcto-participant-adapter-V.R.S.pom

Participantアダプタ用pomファイル

63

hmppcto-observability-modules-jaeger-thrift¥V.R.S

トラブルシュート機能（Jaeger）用ライブラリ配置ディレクトリ

64

hmppcto-observability-modules-jaeger-thrift-V.R.S.jar

トラブルシュート機能（Jaeger）用ライブラリ

65

hmppcto-observability-modules-jaeger-thrift-V.R.S.module

トラブルシュート機能（Jaeger）用moduleファイル

66

hmppcto-observability-modules-jaeger-thrift-V.R.S.pom

トラブルシュート機能（Jaeger）用pomファイル

67

hmppcto-observability-modules-otlp-http¥V.R.S

トラブルシュート機能（OTLP（http/protobuf））用ライブラリ配置ディレクトリ

68

hmppcto-observability-modules-otlp-http-V.R.S.jar

トラブルシュート機能（OTLP（http/protobuf））用ライブラリ

69

hmppcto-observability-modules-otlp-http-V.R.S.module

トラブルシュート機能（OTLP（http/protobuf））用moduleファイル

70

hmppcto-observability-modules-otlp-http-V.R.S.pom

トラブルシュート機能（OTLP（http/protobuf））用pomファイル

71

hmppcto-observability-modules-azure¥V.R.S

トラブルシュート機能（Microsoft Azure）用ライブラリ配置ディレクトリ

72

hmppcto-observability-modules-azure-V.R.S.jar

トラブルシュート機能（Microsoft Azure）用ライブラリ

73

hmppcto-observability-modules-azure-V.R.S.module

トラブルシュート機能（Microsoft Azure）用moduleファイル

74

hmppcto-observability-modules-azure -V.R.S.pom

トラブルシュート機能（Microsoft Azure）用pomファイル

75

hmppcto-observability-modules-gcp¥V.R.S

トラブルシュート機能（Google Cloud Platform）用ライブラリ配置ディレクトリ

76

hmppcto-observability-modules-gcp-V.R.S.jar

トラブルシュート機能（Google Cloud Platform）用ライブラリ

77

hmppcto-observability-modules-gcp-V.R.S.module

トラブルシュート機能（Google Cloud Platform）用moduleファイル

78

hmppcto-observability-modules-gcp-V.R.S.pom

トラブルシュート機能（Google Cloud Platform）pomファイル

79

java-projects

HMP-PCTO Javaプロジェクト配置用ディレクトリ

80

mediator

Mediator用Javaプロジェクトディレクトリ

81

src¥main¥java¥jp¥co¥Hitachi¥soft¥hmppcto¥Application.java

Mediator用Javaソースファイル

82

build.gradle

Mediator用build.gradleファイル

83

settings.gradle

Mediator用settings.gradleファイル

84

gradle.properties

Mediator用gradle.propertiesファイル

85

scripts

HMP-PCTOスクリプトファイル配置用ディレクトリ

86

dependency_check.sh

デプロイ依存関係チェックスクリプト

87

health_check.sh

トランザクションヘルスチェックスクリプト

88

wait_transactions.sh

未決着トランザクション待機スクリプト

89

templates

HMP-PCTOテンプレートファイル配置用ディレクトリ

90

container-files

Containerfile配置ディレクトリ

91

RHEL8

RHEL8用のContainerfile配置ディレクトリ

92

mediator

Mediator用Containerfile配置ディレクトリ

93

normal

Mediator用Containerfile配置ディレクトリ（uCosminexus Application Runtime for Spring Bootの修正パッチがない場合）

94

Containerfile

Mediator用Containerfile（uCosminexus Application Runtime for Spring Bootの修正パッチがない場合）

95

patch

Mediator用Containerfile配置ディレクトリ（uCosminexus Application Runtime for Spring Bootの修正パッチがある場合）

96

Containerfile

Mediator用Containerfile（uCosminexus Application Runtime for Spring Bootの修正パッチがある場合）

97

dependency-checker

Dependency-Checker用Containerfile配置ディレクトリ

98

Containerfile

Dependency-Checker用Containerfile

99

RHEL9

RHEL9用のContainerfile配置ディレクトリ

100

mediator

Mediator用Containerfile配置ディレクトリ

101

normal

Mediator用Containerfile配置ディレクトリ（uCosminexus Application Runtime for Spring Bootの修正パッチがない場合）

102

Containerfile

Mediator用Containerfile（uCosminexus Application Runtime for Spring Bootの修正パッチがない場合）

103

patch

Mediator用Containerfile配置ディレクトリ（uCosminexus Application Runtime for Spring Bootの修正パッチがある場合）

104

Containerfile

Mediator用Containerfile（uCosminexus Application Runtime for Spring Bootの修正パッチがある場合）

105

dependency-checker

Dependency-Checker用Containerfile配置ディレクトリ

106

Containerfile

Dependency-Checker用Containerfile

107

helm-charts

HMP-PCTOのHelmチャート配置ディレクトリ

108

mediator-V.R.S.tgz

Mediator用Helmチャートパッケージファイル

109

filebeat-V.R.S.tgz

FilebeatのHelmチャートのパッケージファイル

110

jaeger-query-V.R.S.tgz

Jaeger-queryのHelmチャートのパッケージファイル

111

jaeger-collector-V.R.S.tgz

Jaeger-collectorのHelmチャートのパッケージファイル

112

metricbeat-V.R.S.tgz

MetricbeatのHelmチャートのパッケージファイル

113

elasticsearch-V.R.S.tgz

ElasticsearchのHelmチャートのパッケージファイル

114

logstash-V.R.S.tgz

LogstashのHelmチャートのパッケージファイル

115

bundled-softwares

同梱ソフトウェア配置ディレクトリ

116

EADS-client

Hitachi Elastic Application Data Store Client for Javaインストーラ配置ディレクトリ

117

X64LIN

Hitachi Elastic Application Data Store Client for Javaインストーラ

118

PACK_TAR.Z

Hitachi Elastic Application Data Store Client for Javaの修正パッチ。修正パッチがない場合はこのファイルは提供物に含まない。

V.R.Sには、バージョンを設定します。Sは数値に変換します。

（例）

Ver 01-00開発時：1.0.0

Ver 01-02-/A開発時：1.2.1

(2)　Hitachi Microservices Platform - Bridge Option for OpenTP1

表A‒2　提供ファイル一覧（Hitachi Microservices Platform - Bridge Option for OpenTP1）

項番

ディレクトリ/ファイル

「¥」はディレクトリの区切り文字

説明

1

libs¥jp¥co¥Hitachi¥soft¥hmppcto

HMP-PCTOライブラリ配置用ディレクトリ

2

hmppcto-tp1-bridge¥V.R.S

TP1-Bridge用ライブラリ配置ディレクトリ

3

hmppcto-tp1-bridge-V.R.S.jar

TP1-Bridge用ライブラリファイル

4

hmppcto-tp1-bridge-V.R.S.module

TP1-Bridge用moduleファイル

5

hmppcto-tp1-bridge-V.R.S.pom

TP1-Bridge用pomファイル

6

java-projects

HMP-PCTO Javaプロジェクト配置用ディレクトリ

7

tp1-bridge

TP1-Bridge用Javaプロジェクトディレクトリ

8

src¥main¥java¥jp¥co¥Hitachi¥soft¥hmppcto¥Application.java

TP1-Bridge用Javaソースファイル

9

build.gradle

TP1-Bridge用build.gradleファイル

10

settings.gradle

TP1-Bridge用settings.gradleファイル

11

gradle.properties

TP1-Bridge用gradle.propertiesファイル

12

libs

TP1-Bridge用外部ライブラリ格納フォルダ

13

templates

HMP-PCTOテンプレートファイル配置用ディレクトリ

14

container-files

Containerfile配置ディレクトリ

15

RHEL8

RHEL8用のContainerfile配置ディレクトリ

16

tp1-bridge

TP1-Bridge用Containerfile配置ディレクトリ

17

normal

TP1-Bridge用Containerfile配置ディレクトリ（uCosminexus Application Runtime for Spring Bootの修正パッチがない場合）

18

Containerfile

TP1-Bridge用Containerfile配置（uCosminexus Application Runtime for Spring Bootの修正パッチがない場合）

19

patch

TP1-Bridge用Containerfile配置ディレクトリ（uCosminexus Application Runtime for Spring Bootの修正パッチがある場合）

20

Containerfile

TP1-Bridge用Containerfile配置（uCosminexus Application Runtime for Spring Bootの修正パッチがある場合）

21

RHEL9

RHEL9用のContainerfile配置ディレクトリ

22

tp1-bridge

TP1-Bridge用Containerfile配置ディレクトリ

23

normal

TP1-Bridge用Containerfile配置ディレクトリ（uCosminexus Application Runtime for Spring Bootの修正パッチがない場合）

24

Containerfile

TP1-Bridge用Containerfile配置（uCosminexus Application Runtime for Spring Bootの修正パッチがない場合）

25

patch

TP1-Bridge用Containerfile配置ディレクトリ（uCosminexus Application Runtime for Spring Bootの修正パッチがある場合）

26

Containerfile

TP1-Bridge用Containerfile配置（uCosminexus Application Runtime for Spring Bootの修正パッチがある場合）

27

helm-charts

HMP-PCTOのHelmチャート配置ディレクトリ

28

tp1-bridge-V.R.S.tgz

TP1-Bridge用Helmチャートパッケージファイル

29

TP1-Converter

TP1-Converter用ファイル配置ディレクトリ

30

lib

TP1-Converter用ライブラリ配置ディレクトリ

31

tp1converter.war

TP1-Converter用アプリケーションライブラリ

32

usrconf

TP1-Converter用J2EEサーバ定義ファイル配置ディレクトリ

33

usrconf.cfg

J2EEサーバ用オプション定義ファイルのテンプレート

34

usrconf.properties

J2EEサーバ用ユーザプロパティファイルのテンプレート

V.R.Sには、バージョンを設定します。Sは数値に変換します。

（例）

Ver 01-00開発時：1.0.0

Ver 01-02-/A開発時：1.2.1

付録B　HMP-PCTOに関連するOSSおよび他社製品のパラメタ一覧

このマニュアルに記載しているOSSのパラメタ、および9章で説明しているパラメタ以外の他社製品のパラメタの一覧を次の表に示します。各パラメタの詳細は、関連のOSSおよび他社製品の公式ドキュメントを参照してください。

付録B.1　Kubernetesのパラメタ

Kubernetesの各パラメタの詳細はKubernetesの公式ドキュメントを参照してください。

表B‒1　Kubernetesのパラメタ

項番

パラメタ名

1

apiVersion

2

automountServiceAccountToken

3

kind

4

metadata.labels

5

metadata.labels.app.kubernetes.io/instance

6

metadata.labels.app.kubernetes.io/managed-by

7

metadata.labels.app.kubernetes.io/name

8

metadata.labels.app.kubernetes.io/version

9

metadata.name

10

metadata.namespace

11

provisioner

12

roleRef.apiGroup

13

roleRef.kind

14

roleRef.name

15

rules

16

spec.accessModes

17

spec.advanced.horizontalPodAutoscalerConfig.behavior.scaleDown.policies

18

spec.behavior.scaleDown.policies

19

spec.behavior.scaleDown.policies.periodSeconds

20

spec.behavior.scaleDown.policies.type

21

spec.behavior.scaleDown.policies.value

22

spec.behavior.scaleUp.policies

23

spec.behavior.scaleUp.policies.periodSeconds

24

spec.behavior.scaleUp.policies.type

25

spec.behavior.scaleUp.policies.value

26

spec.capacity.storage

27

spec.claimRef

28

spec.csi.volumeHandle

29

spec.local

30

spec.local.path

31

spec.metrics

32

spec.metrics.resource.name

33

spec.metrics.resource.target.averageUtilization

34

spec.metrics.resource.target.type

35

spec.nfs

36

spec.nodeAffinity

37

spec.nodeAffinity.required.nodeSelectorTerms.matchExpressions

38

spec.nodeAffinity.required.nodeSelectorTerms.matchExpressions.operator

39

spec.nodeAffinity.required.nodeSelectorTerms.matchExpressions.values

40

spec.persistentVolumeReclaimPolicy

41

spec.replicas

42

spec.resources.requests.storage

43

spec.selector

44

spec.selector.matchLabels

45

spec.selector.matchLabels.app.kubernetes.io/instance

46

spec.selector.matchLabels.app.kubernetes.io/name

47

spec.storageClassName

48

spec.template.metadata.annotations

49

spec.template.metadata.labels

50

spec.template.metadata.labels.app.kubernetes.io/instance

51

spec.template.metadata.labels.app.kubernetes.io/name

52

spec.template.spec.containers.env

53

spec.template.spec.containers.lifecycle.postStart

54

spec.template.spec.containers.lifecycle.preStop

55

spec.template.spec.containers.livenessProbe

56

spec.template.spec.containers.livenessProbe.exec.command

57

spec.template.spec.containers.livenessProbe.failureThreshold

58

spec.template.spec.containers.livenessProbe.httpGet.path

59

spec.template.spec.containers.livenessProbe.httpGet.port

60

spec.template.spec.containers.livenessProbe.initialDelaySeconds

61

spec.template.spec.containers.livenessProbe.periodSeconds

62

spec.template.spec.containers.livenessProbe.timeoutSeconds

63

spec.template.spec.containers.readinessProbe

64

spec.template.spec.containers.readinessProbe.exec.command

65

spec.template.spec.containers.readinessProbe.failureThreshold

66

spec.template.spec.containers.readinessProbe.httpGet.path

67

spec.template.spec.containers.readinessProbe.httpGet.port

68

spec.template.spec.containers.readinessProbe.initialDelaySeconds

69

spec.template.spec.containers.readinessProbe.periodSeconds

70

spec.template.spec.containers.readinessProbe.timeoutSeconds

71

spec.template.spec.containers.volumeMounts

72

spec.template.spec.imagePullSecrets

73

spec.template.spec.securityContext

74

spec.template.spec.terminationGracePeriodSeconds

75

spec.template.spec.volumes

76

spec.template.spec.volumes[].persistentVolumeClaim.claimName

77

spec.volumeName

78

subjects

79

subjects[].kind

80

subjects[].name

81

subjects[].namespace

付録B.2　Azure Kubernetes Service（AKS）関連パラメタ

Azure Kubernetes Service（AKS）関連の各パラメタの詳細はMicrosoftの公式ドキュメントを参照してください。

表B‒2　Azure Kubernetes Service（AKS）関連パラメタ

項番

パラメタ名

1

spec.csi.volumeAttributes.containerName

2

spec.csi.volumeAttributes.folderName

3

spec.csi.volumeAttributes.protocol

4

spec.csi.volumeAttributes.shareName

5

spec.csi.volumeAttributes.storageAccount

付録B.3　Helm関連パラメタ

Helm関連の各パラメタの詳細はHelmの公式ドキュメントを参照してください。

表B‒3　Helm関連パラメタ

項番

パラメタ名

1

metadata.labels.helm.sh/chart

付録B.4　KEDA関連パラメタ

KEDA関連の各パラメタの詳細はKEDAの公式ドキュメントを参照してください。

表B‒4　KEDA関連パラメタ

項番

パラメタ名

1

spec.triggers

2

spec.triggers.metadata.query

3

spec.triggers.metadata.serverAddress

4

spec.triggers.metadata.threshold

5

spec.triggers.type

付録B.5　Prometheus関連パラメタ

Prometheus関連の各パラメタの詳細はPrometheusの公式ドキュメントを参照してください。

表B‒5　Prometheus関連パラメタ

項番

パラメタ名

1

spec.template.metadata.annotations.prometheus.io/path

2

spec.template.metadata.annotations.prometheus.io/port

3

spec.template.metadata.annotations.prometheus.io/scrape

付録B.6　Spring Boot関連パラメタ

Spring Boot関連の各パラメタの詳細はSpring Bootの公式ドキュメントを参照してください。

表B‒6　Spring Boot関連パラメタ

項番

パラメタ名

1

data.application.properties.spring.lifecycle.timeout-per-shutdown-phase

付録C　HMP-PCTOのメトリクス取得項目

ここでは、HMP-PCTOで取得するメトリクス項目について説明します。

表C‒1　メトリクスのMeter種別

Meter種別

説明

Counter

単調に増加する値

FunctionCounter

単調増加関数を追跡するカウンター

Gauge

上下する値

MultiGauge

複数のGauge

Timer

多数の短時間実行イベント

Prometheusサーバの標準のWeb UIで次のメトリクス項目名をクエリとして入力することでメトリクス情報が画面に出力されます。

表C‒2　システムの利用状況、およびJava VMの利用状況

Prometheus上の表記

Meter種別

tag※

単位

説明

jvm_gc_memory_allocated_bytes_total

Counter

−

bytes

あるGCの実施後から、次のGCの実施までの、JavaヒープNew世代領域のメモリプールサイズの増加量です。

jvm_gc_memory_promoted_bytes_total

Counter

−

bytes

あるGCの実施前とGCの実施後での、JavaヒープOld世代領域のメモリプールサイズの増加量です。

jvm_memory_used_bytes

Gauge

−

bytes

Java VMの使用メモリ量です。

jvm_memory_max_bytes

Gauge

−

bytes

Java VMで使用できるメモリの最大量です。

process_files_open_files

Gauge

−

files

開いているファイル記述子の数です。

process_files_max_files

Gauge

−

files

ファイル記述子の最大数です。

system_cpu_usage

Gauge

−

−

システム（Kubernetesの場合、コンテナ環境）の最近のCPU使用率です。

使用率は0.0〜1.0（double型）の範囲で表されます。

process_cpu_usage

Gauge

−

−

Java VMプロセスの最近のCPU使用率です。

使用率は0.0〜1.0（double型）の範囲で表されます。

（凡例）−：該当しません。

注※　独自Binderの場合だけ記載しています。

表C‒3　HMP-PCTOの性能を評価するための指標

Prometheus上の表記

Meter種別

tag※

単位

説明

hmppcto_mediator_consensus_logs

MultiGauge

id=＜ホスト名＞ status=＜状態＞

logs

ConsensusLogの状態ごとの件数です。

hmppcto_mediator_proposals_logs

MultiGauge

id=＜ホスト名＞ status=＜状態＞

logs

Proposal Logの状態ごとの件数です。

grpc_server_processing_duration_seconds_max

Timer

−

seconds

gRPCサーバが呼び出し完了に掛かった時間の統計情報です。

grpc_client_processing_duration_seconds_max

Timer

−

seconds

gRPCクライアントが通信完了するまでに掛かった合計時間の統計情報（ネットワーク遅延を含む）です。

hmppcto_asynctask_duration_seconds

Timer

name=＜クラス名＞

seconds

非同期タスク（HMP-PCTO内部で実行する非同期送信処理）の所要時間の統計情報です。

hmppcto_asynctask_operations_total

FunctionCounter

name=＜クラス名＞ kind=unique

operations

作成された非同期タスク（HMP-PCTO内部で実行する非同期送信処理）の数です。

hmppcto_asynctask_operations_total

FunctionCounter

name=＜クラス名＞ kind=success

operations

正常に終了した非同期タスク（HMP-PCTO内部で実行する非同期送信処理）の数です。

hmppcto_asynctask_operations_total

FunctionCounter

name=＜クラス名＞ kind=failure

operations

再試行された非同期タスク（HMP-PCTO内部で実行する非同期送信処理）の数と失敗した非同期タスクの数です。

hmppcto_asynctask_operations_total

FunctionCounter

name=＜クラス名＞ kind=retry

operations

実行中に例外が発生したため、再試行する予定の非同期タスク（HMP-PCTO内部で実行する非同期送信処理）の数です。

hmppcto_asynctask_queued_operations

Gauge

name=＜クラス名＞

operations

キュー内の非同期タスク（HMP-PCTO内部で実行する非同期送信処理）の数です。

hmppcto_participant_transactions_inProcess_operations

MultiGauge

id=＜ホスト名＞ status=＜状態＞

operations

処理中のトランザクションブランチ数です。

hmppcto_participant_transactions_terminated_operations

MultiGauge

id=＜ホスト名＞ status=＜状態＞

operations

完了したトランザクションブランチ数です。

hmppcto_mediator_consensus_duration_seconds

Timer

id=＜ホスト名＞

seconds

ConsensusLogの処理時間です。

hmppcto_participant_eads_duration_seconds

Timer

id=＜ホスト名＞

seconds

EADS APIの処理時間です。トライアル版では出力できません。

hmppcto_executor_active_threads

Gauge

−

threads

アクティブにタスクを実行しているスレッドのおおよその数です。

hmppcto_executor_queued_tasks

Gauge

−

tasks

実行待ちのタスクのおおよその数です。

tomcat_threads_busy_threads

Gauge

−

threads

Spring Boot組み込みTomcatで、ビジー状態のスレッド数

（凡例）−：該当しません。

注※　独自Binderの場合だけ記載しています。

表C‒4　Jaeger-collectorが出力するメトリクス

メトリクス取得項目

説明

出力するコンポーネント

jaeger_collector_queue_length

Jaeger-collectorの内部キュー内に存在するアイテム数

Jaeger-collector

jaeger_collector_spans_dropped_total

Jaeger-collectorの内部キューに存在し、Elasticsearchに送信されることなく、上書きされてしまったSpanの数

Jaeger-collector

表C‒5　Prometheusが出力するメトリクス

メトリクス取得項目

説明

出力するコンポーネント

up

スクレイプに成功したときは「1」、失敗したときは「0」を示すメトリックです。HMP-PCTOのKubernetesアプリケーションの稼働監視に利用できます。

Prometheus server

scrape_duration_seconds

スクレイプに掛かった時間を示すメトリックです。通常の運用では使用しません。

スクレイプが想定した時間内に終わらなかった場合の調査などで使用します。

Prometheus server

scrape_samples_post_metric_relabeling

メトリックのリラベル後に残ったサンプル数を示すメトリックです。通常の運用では使用しません。

環境構築時のデータ数の確認で使用します。

Prometheus server

scrape_samples_scraped

HMP-PCTOのKubernetesアプリケーションがスクレイプで返却したサンプル数を示すメトリックです。通常の運用では使用しません。

環境構築時のデータ数の確認で使用します。

Prometheus server

scrape_series_added

新しく生成した系列のおおよその数を示すメトリックです。通常の運用では使用しません。

Prometheus server

付録D　システム運用時の注意事項

システム運用時の注意事項について説明します。

付録D.1　システム時刻の補正時の注意事項

Pod内のシステム時刻は動作するワーカーノードのシステム時刻に依存します。時刻を補正するソフトウェア（NTPなど）を使用してワーカーノードのシステム時刻を補正する場合、次の点に注意して運用してください。システム時刻補正の詳細については、使用しているソフトウェアのマニュアルを参照してください。

NTPプログラムのslewモードのように、時刻飛びが発生しないように時刻のずれを徐々に補正するようにしてください。

一度に秒単位、またはそれより大きな単位で時刻補正が必要な場合は、HMP-PCTOのPodを停止してから時刻を補正してください。

また、時刻補正によってシステム時刻が戻ったり進んだりすると、次のような事象が発生することがあります。

トランザクションや通信などで、タイムアウトが想定より遅くなったり早くなったりする

ログやトレース情報の時系列が崩れる

付録E　このマニュアルの参考情報

付録E.1　関連ドキュメント

このマニュアルの関連ドキュメントを次に示します。必要に応じてお読みください。

(1)　取扱説明書

HMP-PCTO

取扱説明書「Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator　テクニカルガイド」

次の内容について説明しています。

システムの概要

Orchestrator/Entity-Moduleの機能

SQL-Participantの機能

TCC-Participantの機能

TP1-Bridgeの機能

コンポーネント共通機能

関連製品

取扱説明書「Hitachi Elastic Application Data Store　コンテナオーケストレーションツール対応機能」

取扱説明書「Hitachi Microservices Platform - Application Distributed Integration Framework　ユーザガイド」

なお、このマニュアルでは、取扱説明書名について次のように省略して表記しています。

取扱説明書名

表記

Hitachi Elastic Application Data Store　コンテナオーケストレーションツール対応機能

EADS コンテナオーケストレーションツール対応機能

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator　テクニカルガイド

HMP-PCTO テクニカルガイド

(2)　マニュアル

OpenTP1 Version 7 分散トランザクション処理機能　OpenTP1　システム定義（3000-3-D52）

OpenTP1 Version 7 分散トランザクション処理機能　OpenTP1　運用と操作（3000-3-D53）

OpenTP1 Version 7 分散トランザクション処理機能　OpenTP1　クライアント使用の手引　TP1/Client/J編（3000-3-D59）

インメモリデータグリッド　Hitachi Elastic Application Data Store ユーザーズガイド（3020-3-V22）

ノンストップデータベース　HiRDB Version 10 システム定義（UNIX(R)用）（3020-6-554）

ノンストップデータベース　HiRDB Version 10 システム定義（Windows(R)用）（3020-6-555）

ノンストップデータベース　HiRDB Version 10 システム運用ガイド（UNIX(R)用）（3020-6-556）

ノンストップデータベース　HiRDB Version 10 システム運用ガイド（Windows(R)用）（3020-6-557）

ノンストップデータベース　HiRDB Version 10 コマンドリファレンス（UNIX(R)用）（3020-6-558）

ノンストップデータベース　HiRDB Version 10 コマンドリファレンス（Windows(R)用）（3020-6-559）

ノンストップデータベース　HiRDB Version 10 UAP開発ガイド（3020-6-560）

Cosminexus V11 アプリケーションサーバ 機能解説 運用／監視／連携編（3021-3-J10）

Cosminexus V11 アプリケーションサーバ リファレンス コマンド編（3021-3-J15）

Cosminexus V11 アプリケーションサーバ リファレンス 定義編(サーバ定義)（3021-3-J16）

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編（3021-3-J43）

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド（3021-3-J45）

uCosminexus Application Runtime for Spring Boot ユーザーズガイド（3021-3-K03）

このマニュアルでは、関連マニュアルを次のように省略して表記しています。

マニュアル名

表記

OpenTP1 Version 7 分散トランザクション処理機能　OpenTP1　システム定義

OpenTP1 システム定義

OpenTP1 Version 7 分散トランザクション処理機能　OpenTP1　運用と操作

OpenTP1 運用と操作

OpenTP1 Version 7 分散トランザクション処理機能　OpenTP1　クライアント使用の手引　TP1/Client/J編

OpenTP1 クライアント使用の手引 TP1/Client/J編

インメモリデータグリッド　Hitachi Elastic Application Data Store ユーザーズガイド

Elastic Application Data Store ユーザーズガイド

ノンストップデータベース　HiRDB Version 10 システム定義（UNIX(R)用）

HiRDB システム定義

ノンストップデータベース　HiRDB Version 10 システム定義（Windows(R)用）

ノンストップデータベース　HiRDB Version 10 システム運用ガイド（UNIX(R)用）

HiRDB システム運用ガイド

ノンストップデータベース　HiRDB Version 10 システム運用ガイド（Windows(R)用）

ノンストップデータベース　HiRDB Version 10 コマンドリファレンス（UNIX(R)用）

HiRDB コマンドリファレンス

ノンストップデータベース　HiRDB Version 10 コマンドリファレンス（Windows(R)用）

ノンストップデータベース　HiRDB Version 10 UAP開発ガイド

HiRDB UAP開発ガイド

Cosminexus V11 アプリケーションサーバ 機能解説 運用／監視／連携編

Cosminexus アプリケーションサーバ 機能解説 運用／監視／連携編

Cosminexus V11 アプリケーションサーバ リファレンス コマンド編

Cosminexus アプリケーションサーバ リファレンス コマンド編

Cosminexus V11 アプリケーションサーバ リファレンス 定義編(サーバ定義)

Cosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編

Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編

Cosminexus V11 BPM/ESB 基盤 サービスプラットフォーム システム構築・運用ガイド

Cosminexus BPM/ESB 基盤 サービスプラットフォーム システム構築・運用ガイド

付録E.2　マニュアルで使用している略語

このマニュアルでの表記と正式名称を次の表に示します。

表記

製品名

Amazon EBS

Amazon Elastic Block Store

Amazon EFS

Amazon Elastic File System

EADS

Hitachi Elastic Application Data Store

HMP-PCTO

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator

RHEL

Red Hat Enterprise Linux

RHEL/UBI

Red Hat Universal Base Image

UBI

Tomcat

Apache Tomcat

付録E.3　英略語

このマニュアルで使用する英略語を次に示します。

英略語

英字での表記

ACID

Atomicity Consistency Isolation Durability

AKS

Azure Kubernetes Service

AP

Application Program

API

Application Programming Interface

APM

Application Performance Monitoring

BLOB

Binary Large Object

CA

Certification Authority

CLI

Command Line Interface

CN

Common Name

CPU

Central Processing Unit

CSV

Comma Separated Values

DB

Data Base

DBMS

Database Management System

DDL

Data Definition Language

DI

Dependency Injection

DNS

Domain Name System

FQDN

Fully Qualified Domain Name

GC

Garbage Collection

HTTP

Hyper Text Transfer Protocol

ID

Identifier

ILM

Information Life cycle Management

IP

Internet Protocol

ISC

Inter-Service Communication

JAR

Java Archive

Java SE

Java Platform, Standard Edition

Java VM

Java Virtual Machine

JDBC

Java Database Connectivity

JDK

Java Development Kit

JKS

Java Keystore

JSON

JavaScript Object Notation

KVS

Key-Value store

NFS

Network File System

NTP

Network Time Protocol

OS

Operating System

OTLP

OpenTelemetry Protocol

PEM

Privacy Enhanced Mail

PV

Persistent Volume

PVC

Persistent Volume Claim

RAS

RASIS

RASIS

Reliability Availability Serviceability Integrity Security

RDBMS

Relational Database Management System

REST

Representational State Transfer

RPC

Remote Procedure Call

RPM

RPM Package Manager

SCC

Security Context Constraints

SPP

Service Providing Program

TCC

Try、Confirm、Cancel

TCP

Transmission Control Protocol

TLS

Transport Layer Security

TPS

Transaction Per Second

URI

Uniform Resource Identifier

付録E.4　KB（キロバイト）などの単位表記について

1KB（キロバイト）、1MB（メガバイト）、1GB（ギガバイト）、1TB（テラバイト）はそれぞれ1,024バイト、1,024²バイト、1,024³バイト、1,024⁴バイトです。

付録F　HMP-PCTOで使用する用語

ここでは、HMP-PCTOで使用する用語について説明します。

表F‒1　用語解説

用語

説明

3/4合意

ThreeQuarters合意のこと

「よんぶんのさんごうい」と呼ぶ

Alternate-Service

呼び出し元に応じて、Orchestrator-ServiceかEntity-Serviceに役割が変わるKubernetesアプリケーションおよびコンテナ

Alternate-Service(SQL)

Alternate-Service上でJDBC Proxy Driverを使用してDBにアクセスするKubernetesアプリケーションおよびコンテナ

BranchQualifier

トランザクション内のブランチを一意に識別するための識別子

X/Openトランザクション識別子XID構造のJavaマッピングのBranchQualifier

Consensus Acceptor

リソース更新可否の決着結果の永続化機能のこと

Termination Judgeから通知された投票結果を永続化したあと、投票結果を、Consensus Learnerに通知する機能を持つ

Consensus Learner

分散合意習得（機能）のこと

複数のMediatorの合意を習得し（受信し）、一貫した合意結果を得る機能

Participant内の機能の一つ

ConsensusId

分散合意処理のレイヤでトランザクションを一意にするための識別子

RootXIDを文字列化して生成する

ConsensusLog

Mediatorで保持しているリソース更新可否の決着結果

DB Adaptor

データベースアダプタのこと

アプリケーションの要求に従ってリソースへのSQL実行やX/Openで規定するXA仕様に則ったXAインタフェース実行を行う機能を持つ

EADS

Hitachi Elastic Application Data Storeのこと

分散KVS

paxos commitでは補助合意に使用する

Entity-Module

Orchestrator、Participantと連携してトランザクションの伝搬をするHMP-PCTOの機能

Entity-Service

データベースなどのリソースの参照、更新業務を行うKubernetesアプリケーションおよびコンテナ

Entity-Service(SQL)

Entity-Service上でJDBC Proxy Driverを使用してDBにアクセスするKubernetesアプリケーションおよびコンテナ

Entity-Service(TCC)

Entity-Service上でTCCパターンを使用してリソースにアクセスするKubernetesアプリケーションおよびコンテナ

Ext Cons

補助合意のこと

External Consensusの略

External Consensus

補助合意のこと

HMP-PCTO

Hitachi Microservices Platform - Paxos Commit Transaction Orchestratorの略称

ミッションクリティカルシステムにおける分散トランザクション制御を、マイクロサービスアーキテクチャを用いたシステムで容易に実現するフレームワーク

Javaアプリケーション

HMP-PCTOのライブラリを使用しjava言語で作成するユーザアプリケーション

ユーザが作成したアプリケーションで、ユーザ任意の方法でJARファイルにビルドしたもの

JDBC Proxy Driver

アプリケーションやフレームワークからのJDBC Driverのメソッドの呼び出しを、Participantと連携して透過的にベンダネイティブなJDBC Driverに伝えるHMP-PCTOの機能

Kubernetesアプリケーション

Kubernetesクラスタにデプロイして実行するコンテナ化されたアプリケーション

Pod、Deployment、StatefulSetなどのワークロードリソースとして作成したもの

Learner

Consensus Learnerのこと

Mediator

Orchestrator、Participantと連携してPaxos Commitを実現するHMP-PCTOの機能。またはその機能を使ったKubernetesアプリケーションおよびコンテナ

Paxos Commitで、トランザクション制御を行うための構成要素の一つであり、Consensus AcceptorおよびTermination Judgeの機能を持つ

Consensus AcceptorおよびTermination Judgeは、ParticipantのTermination ProposerおよびConsensus Learnerと連動してクウォーラム型分散合意を実現する

Orchestrator

Mediator、Entity-Moduleと連携してトランザクションの制御をするHMP-PCTOの機能

Orchestrator-Service

Clientシステムからの要求を受け付けて、各サービスを呼び出して利用することで業務を実行するKubernetesアプリケーションおよびコンテナ

Orchestrator-Service(SQL)

Orchestrator-Service上でJDBC Proxy Driverを使用してDBにアクセスするKubernetesアプリケーションおよびコンテナ

Participant

Mediator、Entity-Moduleと連携してPaxos Commitを実現するHMP-PCTOの機能

Paxos Commitで、トランザクション制御を行うための構成要素の一つであり、Resource Adapter、Termination ProposerおよびConsensus Learnerの機能を持つ

Termination ProposerおよびConsensus Learnerは、MediatorのConsensus AcceptorおよびTermination Judgeと連動してクウォーラム型分散合意を実現する

SQL-Participant、TCC-Participant、およびTP1-Bridgeのことを指す

PrivilegedValue合意

分散合意習得方式の一つ

PrivilegedValueパラメタ指定値になるように合意する分散合意習得方式

PV合意

PrivilegedValue合意のこと

RAS

RASIS（Reliability Availability Serviceability Integrity Security）の省略形。RASISとは、コンピュータシステムの信頼性を評価するときチェックする項目であるReliability（信頼性）、Availability（可用性）、Serviceability（保守性）、Integrity（保全性）、Security（機密性）の頭文字で構成された用語

HMP-PCTOのシステム運用に必要となる機能のこと。障害対策のための情報やHMP-PCTOの性能を評価するための情報を取得する

Relay-Service

HMP-PCTOの機能を用いたリソースの更新は行わない、トランザクションの伝搬を中継するアプリケーション

SQL-Adapter

JDBC Driverを介してSQLを実行する

XAインタフェース（xa_start、xa_end、xa_prepare、xa_commit、xa_rollback、およびxa_recover）を使用してRDBMSに接続し、リソースを管理する

SQL-Participant

Participantの特性を持ちX/OpenのXA仕様に準拠したトランザクション制御を実現するHMP-PCTOの機能

SQL-AdapterおよびTx+Paxos-Managerによって構成される

TCC

REST APIサービスに対する分散トランザクションの設計パターンの一つ

Try、Confirm、Cancelの機能を持つ。これらの頭文字からTCCと呼ばれる

TCC-Participant

Participantの特性を持ちTCCパターンを実現するHMP-PCTOの機能

Try、Confirm、Cancel、Recoverに対応したインタフェースを提供。ユーザがインタフェースを実装することで、TCC-Participantはリソースを管理する

Termination Judge

ターミネーションジャッジ（トランザクション終了審査者）のこと

グローバルトランザクションに含まれるParticipantから通知された投票内容を記録し、すべてのParticipantがCommit投票（リソースを更新できる）であればCommitに、1つでもRollback投票（リソースを更新できない）のParticipantがあればRollbackに、投票結果を集約する機能を持つ

集約した投票結果は、Consensus Acceptorに通知する

Termination Proposer

ターミネーションプロポーザ（トランザクション終了提案者）のこと

リソースに対するSQL実行の更新可否を確認するため、X/Openが規定するXA仕様に則ってPrepareを実行し、その結果に応じた投票（Commit投票/Rollback投票）をMediatorに通知する機能を持つ

ThreeQuarters合意

分散合意習得方式の一つ

1/4のMediatorの故障を許容する分散合意習得方式

TP1-Acceptor

HMP-PCTO上のAPから、OpenTP1のSPPに対するリクエストを受け付けるサービス

TP1-Adapter

TP1/Client/Jを介してOpenTP1のサービスを呼び出す機能

XAインタフェース（xa_start、xa_end、xa_prepare、xa_commit、xa_rollback、およびxa_recover）を使用してOpenTP1に接続し、トランザクションを制御する

TP1-Bridge

HMP-PCTO上のAPからOpenTP1のサービスの呼び出しを橋渡しする機能。またはその機能を使ったKubernetesアプリケーションおよびコンテナ

Entity-Module、TP1-Acceptor、TP1-Converter、TP1-Adapter、およびTx+Paxos-Managerによって構成される

TP1-Converter

HMP-PCTO上のAPが扱うJSON形式のデータと、OpenTP1のAPが扱うバイナリ形式のデータの相互変換をする

uCosminexus Service Platform上で動作するサーブレット

Tx+Paxos-Manager

次の機能を持つSQL-ParticipantおよびTP1-Bridgeの構成要素

X/OpenのXA仕様に準拠したトランザクションマネージャの機能

Participantの機能

XID

トランザクションを一意に識別するための識別子

HMP-PCTOでのデータ構造は、X/Openトランザクション識別子XID構造のJavaマッピングで表現する

高速合意

補助合意不要で一貫した合意結果を獲得すること

コンテナ化されたアプリケーション

JavaアプリケーションやHMP-PCTOおよび関連するソフトウェアのファイルなどを、コンテナイメージとしてビルドしたもの

スパンイベント

Span内の構造化ログメッセージのこと

Spanに付加されるイベント名、タイムスタンプ、およびスパンタグで構成されるメタデータ

Jaegerの「Logs」

Azure Monitor Application Insightsの「Traceプロパティ」

Google Cloud PlatformのCloud Traceの「Time Events」

New Relicの「Span event」

スパンコンテキスト

Spanに関するコンテキストのこと

Spanを生成したサービスやアプリケーションのプロセスに関するKey-Valueのメタデータ

Jaegerの「Process」

Azure Monitor Application Insightsの「Internalプロパティ」

Google Cloud PlatformのCloud Traceの「トレースラベル」

New Relicの「Attribute」

スパンタグ

Spanの属性（アトリビュート）のこと

Spanに付加されるKey-Valueのメタデータ

Jaegerの「Tags」

Azure Monitor Application Insightsの「Custom Properties」

Google Cloud PlatformのCloud Traceの「トレースラベル」

New Relicの「Attribute」

分散合意（機能）

paxos commitでは複数のMediatorと複数のParticipant（Consensus Learner）で実現する

トランザクションの状態を複数のMediatorに分散冗長化し、一部のMediatorの故障を許容した上で（可用性向上）、複数のMediatorから得られるトランザクションの状態を、1以上のParticipant（Consensus Learner）で、一貫した合意結果として獲得し共有する機能

分散合意習得（機能）

Consensus Learnerのこと

分散合意習得方式

Consensus Learnerで一意となる合意結果を得るための方式

paxos commitではThreeQuarters合意とPrivilegedValue合意がある

補助合意

Consensus Learnerで、複数のMediatorの合意に不一致がある場合にConsensus Learner間で合意結果が一貫するように合意調整する機能

Consensus Learnerで、次の条件をすべて満たした場合に、合意結果が一貫するように合意調整する機能

・一部のMediatorの合意が受信できない

・受信できた合意だけでは合意結果の一貫性が担保できない

補助合意試行間隔タイマ

Consensus Learnerの補助合意の試行（補助合意可否の判定および補助合意リトライ）間隔タイマ

ルートXID（RootXID）

XIDのうち、グローバルトランザクションの基底となる識別子

X/Openトランザクション識別子XID構造のJavaマッピングのGlobalTransactionIdに相当する

索引

A

absolute(int row)メソッド〔PctoResultSetクラス〕[1]

add.class.pathパラメタ〔uCosminexus Application Serverのusrconf.cfg〕[1]

addBatch()メソッド〔PctoPreparedStatementクラス〕[1]

addBatch(java.lang.String sql)メソッド〔PctoStatementクラス〕[1]

affinityパラメタ〔Elasticsearch〕[1]

affinityパラメタ〔Mediator〕[1]

atomic_updateオペランド〔OpenTP1システムサービス定義のHMP-PCTOのトランザクションに参加するSPPのユーザサービス定義〕[1]

B

branch.qualifier.listパラメタ〔Entity-Module〕[1]

branch.qualifier.listパラメタ〔Orchestrator〕[1]

branch.qualifier.propagation-orderパラメタ〔Entity-Module〕[1]

C

caches.nameパラメタ〔EADS〕[1]

caches.pvc.accessModesパラメタ〔EADS〕[1]

caches.pvc.storageClassNameパラメタ〔EADS〕[1]

client.proposer.typeパラメタ〔Entity-Module〕[1]

close()メソッド〔PctoConnectionクラス〕[1]

close()メソッド〔PctoResultSetクラス〕[1]

close()メソッド〔PctoStatementクラス〕[1]

closeOnCompletion()メソッド〔PctoStatementクラス〕[1]

collector.numShardsパラメタ〔Jaeger-collector〕[1]

collector.numWorkersパラメタ〔Jaeger-collector〕[1]

collector.queueSizeパラメタ〔Jaeger-collector〕[1]

consensusLog.io.blockSizeパラメタ〔Mediator〕[1]

consensusLog.io.queueSizeパラメタ〔Mediator〕[1]

consensusLog.io.threadPoolSizeパラメタ〔Mediator〕[1]

consensusLog.io.watchInSecondsパラメタ〔Mediator〕[1]

consensusLog.sizeパラメタ〔Mediator〕[1]

consensusLog.storageClassNameパラメタ〔Mediator〕[1]

converter.connectTimeInSecondsパラメタ〔TP1-Bridge〕[1]

converter.hostパラメタ〔TP1-Bridge〕[1]

converter.portパラメタ〔TP1-Bridge〕[1]

converter.watchTimeInSecondsパラメタ〔TP1-Bridge〕[1]

createArrayOf(java.lang.String typeName, java.lang.Object[] elements)メソッド〔PctoConnectionクラス〕[1]

createSQLXML()メソッド〔PctoConnectionクラス〕[1]

createStatement()メソッド〔PctoConnectionクラス〕[1]

createStatement(int resultSetType, int resultSetConcurrency)メソッド〔PctoConnectionクラス〕[1]

D

data.storageClassNameパラメタ〔Elasticsearch〕[1]

data.storageSizeパラメタ〔Elasticsearch〕[1]

dependencyCheck.connectTimeoutSecondsパラメタ〔Ext-Cons〕[1]

dependencyCheck.connectTimeoutSecondsパラメタ〔Filebeat〕[1]

dependencyCheck.connectTimeoutSecondsパラメタ〔Jaeger-collector〕[1]

dependencyCheck.connectTimeoutSecondsパラメタ〔Jaeger-query〕[1]

dependencyCheck.connectTimeoutSecondsパラメタ〔Logstash〕[1]

dependencyCheck.connectTimeoutSecondsパラメタ〔Mediator〕[1]

dependencyCheck.connectTimeoutSecondsパラメタ〔Metricbeat〕[1]

dependencyCheck.connectTimeoutSecondsパラメタ〔TP1-Bridge〕[1]

dependencyCheck.enabledパラメタ〔Filebeat〕[1]

dependencyCheck.enabledパラメタ〔Jaeger-collector〕[1]

dependencyCheck.enabledパラメタ〔Jaeger-query〕[1]

dependencyCheck.enabledパラメタ〔Logstash〕[1]

dependencyCheck.enabledパラメタ〔Mediator〕[1]

dependencyCheck.enabledパラメタ〔Metricbeat〕[1]

dependencyCheck.imagePullPolicyパラメタ〔Ext-Cons〕[1]

dependencyCheck.imagePullPolicyパラメタ〔Filebeat〕[1]

dependencyCheck.imagePullPolicyパラメタ〔Jaeger-collector〕[1]

dependencyCheck.imagePullPolicyパラメタ〔Jaeger-query〕[1]

dependencyCheck.imagePullPolicyパラメタ〔Logstash〕[1]

dependencyCheck.imagePullPolicyパラメタ〔Mediator〕[1]

dependencyCheck.imagePullPolicyパラメタ〔Metricbeat〕[1]

dependencyCheck.imagePullPolicyパラメタ〔TP1-Bridge〕[1]

dependencyCheck.imageパラメタ〔Ext-Cons〕[1]

dependencyCheck.imageパラメタ〔Filebeat〕[1]

dependencyCheck.imageパラメタ〔Jaeger-collector〕[1]

dependencyCheck.imageパラメタ〔Jaeger-query〕[1]

dependencyCheck.imageパラメタ〔Logstash〕[1]

dependencyCheck.imageパラメタ〔Mediator〕[1]

dependencyCheck.imageパラメタ〔Metricbeat〕[1]

dependencyCheck.imageパラメタ〔TP1-Bridge〕[1]

dependencyCheck.readTimeoutSecondsパラメタ〔Ext-Cons〕[1]

dependencyCheck.readTimeoutSecondsパラメタ〔Filebeat〕[1]

dependencyCheck.readTimeoutSecondsパラメタ〔Jaeger-collector〕[1]

dependencyCheck.readTimeoutSecondsパラメタ〔Jaeger-query〕[1]

dependencyCheck.readTimeoutSecondsパラメタ〔Logstash〕[1]

dependencyCheck.readTimeoutSecondsパラメタ〔Mediator〕[1]

dependencyCheck.readTimeoutSecondsパラメタ〔Metricbeat〕[1]

dependencyCheck.readTimeoutSecondsパラメタ〔TP1-Bridge〕[1]

dependencyCheck.retryCountパラメタ〔Ext-Cons〕[1]

dependencyCheck.retryCountパラメタ〔Filebeat〕[1]

dependencyCheck.retryCountパラメタ〔Jaeger-collector〕[1]

dependencyCheck.retryCountパラメタ〔Jaeger-query〕[1]

dependencyCheck.retryCountパラメタ〔Logstash〕[1]

dependencyCheck.retryCountパラメタ〔Mediator〕[1]

dependencyCheck.retryCountパラメタ〔Metricbeat〕[1]

dependencyCheck.retryCountパラメタ〔TP1-Bridge〕[1]

dependencyCheck.retryIntervalSecondsパラメタ〔Ext-Cons〕[1]

dependencyCheck.retryIntervalSecondsパラメタ〔Filebeat〕[1]

dependencyCheck.retryIntervalSecondsパラメタ〔Jaeger-collector〕[1]

dependencyCheck.retryIntervalSecondsパラメタ〔Jaeger-query〕[1]

dependencyCheck.retryIntervalSecondsパラメタ〔Logstash〕[1]

dependencyCheck.retryIntervalSecondsパラメタ〔Mediator〕[1]

dependencyCheck.retryIntervalSecondsパラメタ〔Metricbeat〕[1]

dependencyCheck.retryIntervalSecondsパラメタ〔TP1-Bridge〕[1]

dependencyCheck.targetsパラメタ〔Ext-Cons〕[1]

dependencyCheck.targetsパラメタ〔Mediator〕[1]

dependencyCheck.targetsパラメタ〔TP1-Bridge〕[1]

driver-class-nameパラメタ〔JDBC Proxy Driver〕[1]

E

eads.cache.disk.filenumパラメタ〔EADS〕[1]

eads.cache.disk.filesizeパラメタ〔EADS〕[1]

eads.cache.disk.multipleWritePrevention.enableパラメタ〔EADS〕[1]

eads.cache.eviction.keyCountパラメタ〔EADS〕[1]

eads.cache.eviction.policyパラメタ〔EADS〕[1]

eads.cache.key.maxsizeパラメタ〔EADS〕[1]

eads.cache.keyCountパラメタ〔EADS〕[1]

eads.cache.typeパラメタ〔EADS〕[1]

eads.client.＜接続先EADSサーバ＞.addressパラメタ〔EADS〕[1]

eads.client.＜接続先EADSサーバ＞.portパラメタ〔EADS〕[1]

eads.client.connect.serversパラメタ〔EADS〕[1]

eads.client.connectionPool.poolsizeパラメタ〔EADS〕[1]

eads.client.logger.dirパラメタ〔EADS〕[1]

eads.client.propertiesパラメタ〔TP1-Bridge〕[1]

eads.failureDetector.connection.timeoutパラメタ〔EADS〕[1]

eads.failureDetector.heartbeat.timeoutパラメタ〔EADS〕[1]

eads.failureDetector.read.timeoutパラメタ〔EADS〕[1]

eads.java.external.heapsizeパラメタ〔EADS〕[1]

eads.java.heapsizeパラメタ〔EADS〕[1]

eads.java.nio.maxCachedBufferSizeパラメタ〔EADS〕[1]

eads.logger.message.console.enableパラメタ〔EADS〕[1]

eads.logger.multipleWritePrevention.enableパラメタ〔EADS〕[1]

eads.node.＜EADSサーバID＞.addressパラメタ〔EADS〕[1]

eads.replication.external.heapsizeパラメタ〔EADS〕[1]

eads.replication.factorパラメタ〔EADS〕[1]

eads.server.cache.maxExecuteThreadsパラメタ〔EADS〕[1]

eads.server.connection.keepAlive.timeoutパラメタ〔EADS〕[1]

eads.server.maxConnectionsパラメタ〔EADS〕[1]

ejbserver.application.userlog.CJLogHandler.conf1.levelパラメタ〔uCosminexus Application Serverのusrconf.properties〕[1]

ejbserver.application.userlog.Logger.jp.co.Hitachi.soft.hmppcto.converter.handlersパラメタ〔uCosminexus Application Serverのusrconf.properties〕[1]

ejbserver.application.userlog.Logger.jp.co.Hitachi.soft.hmppcto.converter.levelパラメタ〔uCosminexus Application Serverのusrconf.properties〕[1]

ejbserver.application.userlog.loggersパラメタ〔uCosminexus Application Serverのusrconf.properties〕[1]

elasticUserSecretNameパラメタ〔Elasticsearch〕[1]

elasticUserSecretNameパラメタ〔Jaeger-collector〕[1]

elasticUserSecretNameパラメタ〔Jaeger-query〕[1]

elasticUserSecretNameパラメタ〔Logstash〕[1]

elasticUserSecretNameパラメタ〔Metricbeat〕[1]

execute()メソッド〔PctoPreparedStatementクラス〕[1]

execute(java.lang.String sql, int autoGeneratedKeys)メソッド〔PctoStatementクラス〕[1]

execute(java.lang.String sql)メソッド〔PctoStatementクラス〕[1]

executeBatch()メソッド〔PctoStatementクラス〕[1]

executeCancel(TccResponse<O> response)メソッド〔TccService<I, O extends java.io.Serializable>インタフェース〕[1]

executeConfirm(TccResponse<O> response)メソッド〔TccService<I, O extends java.io.Serializable>インタフェース〕[1]

executeQuery()メソッド〔PctoPreparedStatementクラス〕[1]

executeQuery(java.lang.String sql)メソッド〔PctoStatementクラス〕[1]

executeRecover()メソッド〔TccService<I, O extends java.io.Serializable>インタフェース〕[1]

executeTry(I input)メソッド〔TccService<I, O extends java.io.Serializable>インタフェース〕[1]

executeUpdate()メソッド〔PctoPreparedStatementクラス〕[1]

executeUpdate(java.lang.String sql)メソッド〔PctoStatementクラス〕[1]

externalConsensus.eads.cacheパラメタ〔TP1-Bridge〕[1]

externalConsensus.intervalInMillisパラメタ〔TP1-Bridge〕[1]

external-consensus.eads.cacheパラメタ〔SQL-Participant〕[1]

external-consensus.eads.cacheパラメタ〔TCC-Participant〕[1]

external-consensus.eads.propertiesパラメタ〔SQL-Participant〕[1]

external-consensus.eads.propertiesパラメタ〔TCC-Participant〕[1]

external-consensus.interval-in-millisパラメタ〔SQL-Participant〕[1]

external-consensus.interval-in-millisパラメタ〔TCC-Participant〕[1]

external-consensus.typeパラメタ〔SQL-Participant〕[1]

external-consensus.typeパラメタ〔TCC-Participant〕[1]

F

filebeat.enabledパラメタ〔TP1-Bridge〕[1]

filebeat.imagePullPolicyパラメタ〔TP1-Bridge〕[1]

filebeat.imageパラメタ〔TP1-Bridge〕[1]

filebeat.livenessProbe.failureThresholdパラメタ〔TP1-Bridge〕[1]

filebeat.livenessProbe.initialDelaySecondsパラメタ〔TP1-Bridge〕[1]

filebeat.livenessProbe.periodSecondsパラメタ〔TP1-Bridge〕[1]

filebeat.livenessProbe.timeoutSecondsパラメタ〔TP1-Bridge〕[1]

filebeat.output.logstash.namespaceパラメタ〔TP1-Bridge〕[1]

filebeat.output.maxRetriesパラメタ〔Filebeat〕[1]

filebeat.queue.maxSizeパラメタ〔Filebeat〕[1]

filebeat.queue.readAheadパラメタ〔Filebeat〕[1]

filebeat.readinessProbe.failureThresholdパラメタ〔TP1-Bridge〕[1]

filebeat.readinessProbe.initialDelaySecondsパラメタ〔TP1-Bridge〕[1]

filebeat.readinessProbe.periodSecondsパラメタ〔TP1-Bridge〕[1]

filebeat.readinessProbe.timeoutSecondsパラメタ〔TP1-Bridge〕[1]

free()メソッド〔PctoArrayクラス〕[1]

free()メソッド〔PctoSQLXMLクラス〕[1]

G

getArray()メソッド〔PctoArrayクラス〕[1]

getArray(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getArray(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getArray(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getBigDecimal(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getBigDecimal(int parameterIndex, int scale)メソッド〔PctoCallableStatementクラス〕[1]

getBigDecimal(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getBinaryStream()メソッド〔PctoBlobクラス〕[1]

getBlob(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getBlob(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getBlob(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getBoolean(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getBoolean(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getByte(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getByte(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getBytes(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getBytes(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getBytes(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getBytes(long pos, int length)メソッド〔PctoBlobクラス〕[1]

getCharacterStream()メソッド〔PctoClobクラス〕[1]

getClientInterceptor()メソッド〔GrpcTraceInterceptorFactoryクラス〕[1]

getClob(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getClob(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getClob(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getColumnClassName(int column)メソッド〔PctoResultSetMetaDataクラス〕[1]

getColumnCount()メソッド〔PctoResultSetMetaDataクラス〕[1]

getColumnLabel(int column)メソッド〔PctoResultSetMetaDataクラス〕[1]

getColumnName(int column)メソッド〔PctoResultSetMetaDataクラス〕[1]

getColumnType(int column)メソッド〔PctoResultSetMetaDataクラス〕[1]

getConnection()メソッド〔PctoDataSourceクラス〕[1]

getConnection()メソッド〔PctoStatementクラス〕[1]

getData()メソッド〔TccResponse<T extends java.io.Serializable>クラス〕[1]

getDatabaseProductName()メソッド〔PctoDatabaseMetaDataクラス〕[1]

getDate(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getDate(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getDate(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getDouble(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getDouble(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getDouble(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getFloat(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getFloat(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getFloat(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getGeneratedKeys()メソッド〔PctoStatementクラス〕[1]

getInt(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getInt(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getInt(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getLong(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getLong(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getLong(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getMetaData()メソッド〔PctoConnectionクラス〕[1]

getMetaData()メソッド〔PctoResultSetクラス〕[1]

getMoreResults()メソッド〔PctoStatementクラス〕[1]

getNString(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getNString(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getNString(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getObject(int columnIndex, Class<T> type)メソッド〔PctoResultSetクラス〕[1]

getObject(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getObject(int parameterIndex, Class<T> type)メソッド〔PctoCallableStatementクラス〕[1]

getObject(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getObject(java.lang.String columnLabel, Class<T> type)メソッド〔PctoResultSetクラス〕[1]

getObject(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getOperationId()メソッド〔TccService<I, O extends java.io.Serializable>インタフェース〕[1]

getQueryTimeout()メソッド〔PctoStatementクラス〕[1]

getResultSet()メソッド〔PctoStatementクラス〕[1]

getServerInterceptor()メソッド〔GrpcTraceInterceptorFactoryクラス〕[1]

getShort(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getShort(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getShort(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getSQLXML(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getSQLXML(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getSQLXML(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getString()メソッド〔PctoSQLXMLクラス〕[1]

getString(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getString(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getString(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getSubString(long pos, int length)メソッド〔PctoClobクラス〕[1]

getTime(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getTime(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getTime(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getTimestamp(int columnIndex)メソッド〔PctoResultSetクラス〕[1]

getTimestamp(int parameterIndex)メソッド〔PctoCallableStatementクラス〕[1]

getTimestamp(java.lang.String columnLabel)メソッド〔PctoResultSetクラス〕[1]

getTransactionKey()メソッド〔TccResponse<T extends java.io.Serializable>クラス〕[1]

getType()メソッド〔PctoResultSetクラス〕[1]

getUpdateCount()メソッド〔PctoStatementクラス〕[1]

getWarnings()メソッド〔PctoStatementクラス〕[1]

grpc.keepalive.intervalInSecondsパラメタ〔Mediator〕[1]

grpc.keepalive.intervalInSecondsパラメタ〔TP1-Bridge〕[1]

grpc.keepalive.interval-in-secondsパラメタ〔SQL-Participant〕[1]

grpc.keepalive.interval-in-secondsパラメタ〔TCC-Participant〕[1]

grpc.keepalive.timeoutInSecondsパラメタ〔Mediator〕[1]

grpc.keepalive.timeoutInSecondsパラメタ〔TP1-Bridge〕[1]

grpc.keepalive.timeout-in-secondsパラメタ〔SQL-Participant〕[1]

grpc.keepalive.timeout-in-secondsパラメタ〔TCC-Participant〕[1]

grpc.portパラメタ〔Mediator〕[1]

grpc.server.queueSizeパラメタ〔Mediator〕[1]

grpc.server.threadPoolSizeパラメタ〔Mediator〕[1]

grpc.tls.client.client-auth.certificateパラメタ〔SQL-Participant〕[1]

grpc.tls.client.client-auth.certificateパラメタ〔TCC-Participant〕[1]

grpc.tls.client.client-auth.keyパラメタ〔SQL-Participant〕[1]

grpc.tls.client.client-auth.keyパラメタ〔TCC-Participant〕[1]

grpc.tls.client.server-auth.certificateパラメタ〔SQL-Participant〕[1]

grpc.tls.client.server-auth.certificateパラメタ〔TCC-Participant〕[1]

grpc.tls.clientAuth.enabledパラメタ〔Mediator〕[1]

grpc.tls.clientAuth.enabledパラメタ〔TP1-Bridge〕[1]

grpc.tls.secretNameパラメタ〔Mediator〕[1]

grpc.tls.secretNameパラメタ〔TP1-Bridge〕[1]

grpc.tls.session.cacheSizeパラメタ〔TP1-Bridge〕[1]

grpc.tls.session.cache-sizeパラメタ〔SQL-Participant〕[1]

grpc.tls.session.cache-sizeパラメタ〔TCC-Participant〕[1]

grpc.tls.session.timeoutInSecondsパラメタ〔TP1-Bridge〕[1]

grpc.tls.session.timeout-in-secondsパラメタ〔SQL-Participant〕[1]

grpc.tls.session.timeout-in-secondsパラメタ〔TCC-Participant〕[1]

grpc.useTlsパラメタ〔Mediator〕[1]

grpc.useTlsパラメタ〔TP1-Bridge〕[1]

grpc.use-tlsパラメタ〔SQL-Participant〕[1]

grpc.use-tlsパラメタ〔TCC-Participant〕[1]

H

hmpPcto.namespacesパラメタ〔Filebeat〕[1]

http.portパラメタ〔Elasticsearch〕[1]

http.portパラメタ〔Ext-Cons〕[1]

http.portパラメタ〔Jaeger-query〕[1]

http.portパラメタ〔Mediator〕[1]

http.portパラメタ〔TP1-Bridge〕[1]

I

idle_in_transaction_session_timeoutパラメタ〔PostgreSQL〕[1]

imagePullPolicyパラメタ〔Elasticsearch〕[1]

imagePullPolicyパラメタ〔Ext-Cons〕[1]

imagePullPolicyパラメタ〔Filebeat〕[1]

imagePullPolicyパラメタ〔Jaeger-collector〕[1]

imagePullPolicyパラメタ〔Jaeger-query〕[1]

imagePullPolicyパラメタ〔Logstash〕[1]

imagePullPolicyパラメタ〔Mediator〕[1]

imagePullPolicyパラメタ〔Metricbeat〕[1]

imagePullPolicyパラメタ〔TP1-Bridge〕[1]

imagePullSecretsパラメタ〔Elasticsearch〕[1]

imagePullSecretsパラメタ〔Ext-Cons〕[1]

imagePullSecretsパラメタ〔Filebeat〕[1]

imagePullSecretsパラメタ〔Jaeger-collector〕[1]

imagePullSecretsパラメタ〔Jaeger-query〕[1]

imagePullSecretsパラメタ〔Logstash〕[1]

imagePullSecretsパラメタ〔Mediator〕[1]

imagePullSecretsパラメタ〔Metricbeat〕[1]

imagePullSecretsパラメタ〔TP1-Bridge〕[1]

imageパラメタ〔Elasticsearch〕[1]

imageパラメタ〔Ext-Cons〕[1]

imageパラメタ〔Filebeat〕[1]

imageパラメタ〔Jaeger-collector〕[1]

imageパラメタ〔Jaeger-query〕[1]

imageパラメタ〔Logstash〕[1]

imageパラメタ〔Mediator〕[1]

imageパラメタ〔Metricbeat〕[1]

imageパラメタ〔Metrics Server〕[1]

imageパラメタ〔Prometheus〕[1]

imageパラメタ〔TP1-Bridge〕[1]

init.modeパラメタ〔JDBC Proxy Driver〕[1]

instance-idパラメタ〔Orchestrator〕[1]

intercept(org.springframework.http.HttpRequest request, byte[] body, org.springframework.http.client.ClientHttpRequestExecution execution)メソッド〔TxPropagationRestTemplateInterceptorクラス〕[1]

interceptCall(io.grpc.ServerCall<ReqT,RespT> call, io.grpc.Metadata headers, io.grpc.ServerCallHandler<ReqT,RespT> next)メソッド〔TxPropagationGrpcServerInterceptorクラス〕[1]

interceptCall io.grpc.ClientCall<ReqT,RespT> interceptCall(io.grpc.MethodDescriptor<ReqT,RespT> method,io.grpc.CallOptions callOptions, io.grpc.Channel next)メソッド〔TxPropagationGrpcClientInterceptorクラス〕[1]

isClosed()メソッド〔PctoResultSetクラス〕[1]

isPrePrepared()メソッド〔TxPropagationOptionalSettingsクラス〕[1]

isWrapperFor(Class<?> iface)メソッド〔PctoDataSourceクラス〕[1]

J

jaegerQuery.maxSpanAgeパラメタ〔Jaeger-query〕[1]

java.optionsパラメタ〔Ext-Cons〕[1]

java.optionsパラメタ〔Mediator〕[1]

java.optionsパラメタ〔TP1-Bridge〕[1]

L

labels.appKubernetesIoNameパラメタ〔TP1-Bridge〕[1]

lb.list-timeout-in-secondsパラメタ〔Entity-Module〕[1]

lb.list-timeout-in-secondsパラメタ〔Orchestrator〕[1]

learner.consensus-typeパラメタ〔Orchestrator〕[1]

length()メソッド〔PctoBlobクラス〕[1]

limits.cpuパラメタ〔Elasticsearch〕[1]

limits.cpuパラメタ〔Filebeat〕[1]

limits.cpuパラメタ〔Jaeger-collector〕[1]

limits.cpuパラメタ〔Jaeger-query〕[1]

limits.cpuパラメタ〔Logstash〕[1]

limits.cpuパラメタ〔Metricbeat〕[1]

limits.memoryパラメタ〔Elasticsearch〕[1]

limits.memoryパラメタ〔Filebeat〕[1]

limits.memoryパラメタ〔Jaeger-collector〕[1]

limits.memoryパラメタ〔Jaeger-query〕[1]

limits.memoryパラメタ〔Logstash〕[1]

limits.memoryパラメタ〔Metricbeat〕[1]

livenessProbe.failureThresholdパラメタ〔Elasticsearch〕[1]

livenessProbe.failureThresholdパラメタ〔Filebeat〕[1]

livenessProbe.failureThresholdパラメタ〔Jaeger-collector〕[1]

livenessProbe.failureThresholdパラメタ〔Jaeger-query〕[1]

livenessProbe.failureThresholdパラメタ〔Logstash〕[1]

livenessProbe.failureThresholdパラメタ〔Mediator〕[1]

livenessProbe.failureThresholdパラメタ〔Metricbeat〕[1]

livenessProbe.failureThresholdパラメタ〔TP1-Bridge〕[1]

livenessProbe.healthCheck.connectTimeoutSecondsパラメタ〔Mediator〕[1]

livenessProbe.healthCheck.connectTimeoutSecondsパラメタ〔TP1-Bridge〕[1]

livenessProbe.healthCheck.readTimeoutSecondsパラメタ〔Mediator〕[1]

livenessProbe.healthCheck.readTimeoutSecondsパラメタ〔TP1-Bridge〕[1]

livenessProbe.healthCheck.retryCountパラメタ〔Mediator〕[1]

livenessProbe.healthCheck.retryIntervalSecondsパラメタ〔Mediator〕[1]

livenessProbe.initialDelaySecondsパラメタ〔Filebeat〕[1]

livenessProbe.initialDelaySecondsパラメタ〔Elasticsearch〕[1]

livenessProbe.initialDelaySecondsパラメタ〔Jaeger-collector〕[1]

livenessProbe.initialDelaySecondsパラメタ〔Jaeger-query〕[1]

livenessProbe.initialDelaySecondsパラメタ〔Logstash〕[1]

livenessProbe.initialDelaySecondsパラメタ〔Mediator〕[1]

livenessProbe.initialDelaySecondsパラメタ〔Metricbeat〕[1]

livenessProbe.initialDelaySecondsパラメタ〔TP1-Bridge〕[1]

livenessProbe.periodSecondsパラメタ〔Elasticsearch〕[1]

livenessProbe.periodSecondsパラメタ〔Filebeat〕[1]

livenessProbe.periodSecondsパラメタ〔Jaeger-collector〕[1]

livenessProbe.periodSecondsパラメタ〔Jaeger-query〕[1]

livenessProbe.periodSecondsパラメタ〔Logstash〕[1]

livenessProbe.periodSecondsパラメタ〔Mediator〕[1]

livenessProbe.periodSecondsパラメタ〔Metricbeat〕[1]

livenessProbe.periodSecondsパラメタ〔TP1-Bridge〕[1]

livenessProbe.successThresholdパラメタ〔Elasticsearch〕[1]

livenessProbe.successThresholdパラメタ〔Filebeat〕[1]

livenessProbe.successThresholdパラメタ〔Jaeger-collector〕[1]

livenessProbe.successThresholdパラメタ〔Jaeger-query〕[1]

livenessProbe.successThresholdパラメタ〔Logstash〕[1]

livenessProbe.successThresholdパラメタ〔Metricbeat〕[1]

livenessProbe.timeoutSecondsパラメタ〔Elasticsearch〕[1]

livenessProbe.timeoutSecondsパラメタ〔Filebeat〕[1]

livenessProbe.timeoutSecondsパラメタ〔Jaeger-collector〕[1]

livenessProbe.timeoutSecondsパラメタ〔Jaeger-query〕[1]

livenessProbe.timeoutSecondsパラメタ〔Logstash〕[1]

livenessProbe.timeoutSecondsパラメタ〔Mediator〕[1]

livenessProbe.timeoutSecondsパラメタ〔Metricbeat〕[1]

livenessProbe.timeoutSecondsパラメタ〔TP1-Bridge〕[1]

logs.accessModesパラメタ〔EADS〕[1]

logs.dirTypeパラメタ〔EADS〕[1]

logs.storageClassNameパラメタ〔EADS〕[1]

logstash.pipeline.batchSizeパラメタ〔Logstash〕[1]

logstash.queue.byte.enabledパラメタ〔Logstash〕[1]

logstash.queue.byte.maxBytesパラメタ〔Logstash〕[1]

logstash.queue.event.enabledパラメタ〔Logstash〕[1]

logstash.queue.event.maxEventsパラメタ〔Logstash〕[1]

M

max_connectionsパラメタ〔PostgreSQL〕[1]

max_prepared_transactionsパラメタ〔PostgreSQL〕[1]

mediator.discovery-interval-in-millisパラメタ〔Orchestrator〕[1]

mediator.discovery-retry-countパラメタ〔Orchestrator〕[1]

mediator.judge.proposalLogLimitNumパラメタ〔Mediator〕[1]

mediator.judge.queueSizeパラメタ〔Mediator〕[1]

mediator.judge.threadPoolSizeパラメタ〔Mediator〕[1]

mediator.minimum-start-sizeパラメタ〔Orchestrator〕[1]

mediator.nameSuffixパラメタ〔TP1-Bridge〕[1]

mediator.nameパラメタ〔Orchestrator〕[1]

mediator.nameパラメタ〔SQL-Participant〕[1]

mediator.nameパラメタ〔TCC-Participant〕[1]

mediator.nameパラメタ〔TP1-Bridge〕[1]

mediator.name-suffixパラメタ〔Orchestrator〕[1]

mediator.name-suffixパラメタ〔SQL-Participant〕[1]

mediator.name-suffixパラメタ〔TCC-Participant〕[1]

mediator.portパラメタ〔Orchestrator〕[1]

mediator.portパラメタ〔SQL-Participant〕[1]

mediator.portパラメタ〔TCC-Participant〕[1]

mediator.portパラメタ〔TP1-Bridge〕[1]

mediator.sizeパラメタ〔Orchestrator〕[1]

mediator.termination-thread-pool-sizeパラメタ〔Orchestrator〕[1]

mediatorCommunication.queueSizeパラメタ〔TP1-Bridge〕[1]

mediatorCommunication.threadPoolSizeパラメタ〔TP1-Bridge〕[1]

mediatorProcessManagement.threadPoolSizeパラメタ〔TP1-Bridge〕[1]

mediator-communication.queue-sizeパラメタ〔SQL-Participant〕[1]

mediator-communication.queue-sizeパラメタ〔TCC-Participant〕[1]

mediator-communication.thread-pool-sizeパラメタ〔SQL-Participant〕[1]

mediator-communication.thread-pool-sizeパラメタ〔TCC-Participant〕[1]

mediator-process-management.thread-pool-sizeパラメタ〔SQL-Participant〕[1]

mediator-process-management.thread-pool-sizeパラメタ〔TCC-Participant〕[1]

metricbeat.output.maxRetriesパラメタ〔Metricbeat〕[1]

metricbeat.queue.maxSizeパラメタ〔Metricbeat〕[1]

metricbeat.queue.readAheadパラメタ〔Metricbeat〕[1]

metrics.collection.tomcatパラメタ〔共通〕[1]

N

namespaceパラメタ〔EADS〕[1]

namespaceパラメタ〔Elasticsearch〕[1]

namespaceパラメタ〔Ext-Cons〕[1]

namespaceパラメタ〔Filebeat〕[1]

namespaceパラメタ〔Jaeger-collector〕[1]

namespaceパラメタ〔Jaeger-query〕[1]

namespaceパラメタ〔Logstash〕[1]

namespaceパラメタ〔Mediator〕[1]

namespaceパラメタ〔Metricbeat〕[1]

namespaceパラメタ〔TP1-Bridge〕[1]

next()メソッド〔PctoResultSetクラス〕[1]

nodes.hostnamesパラメタ〔Filebeat〕[1]

O

orchestrator.grpc.keepalive.interval-in-secondsパラメタ〔Orchestrator〕[1]

orchestrator.grpc.keepalive.timeout-in-secondsパラメタ〔Orchestrator〕[1]

orchestrator.grpc.tls.client.client-auth.certificateパラメタ〔Orchestrator〕[1]

orchestrator.grpc.tls.client.client-auth.keyパラメタ〔Orchestrator〕[1]

orchestrator.grpc.tls.client.server-auth.certificateパラメタ〔Orchestrator〕[1]

orchestrator.grpc.tls.session.cache-sizeパラメタ〔Orchestrator〕[1]

orchestrator.grpc.tls.session.timeout-in-secondsパラメタ〔Orchestrator〕[1]

orchestrator.grpc.use-tlsパラメタ〔Orchestrator〕[1]

orchestrator.grpc.watchtime-in-secondsパラメタ〔Orchestrator〕[1]

P

participant.sender.queueSizeパラメタ〔Mediator〕[1]

participant.sender.threadPoolSizeパラメタ〔Mediator〕[1]

passwordパラメタ〔JDBC Proxy Driver〕[1]

pd_max_usersオペランド〔HiRDB〕[1]

portパラメタ〔SQL-Participant〕[1]

portパラメタ〔TCC-Participant〕[1]

postStart.healthCheck.connectTimeoutSecondsパラメタ〔Mediator〕[1]

postStart.healthCheck.connectTimeoutSecondsパラメタ〔TP1-Bridge〕[1]

postStart.healthCheck.readTimeoutSecondsパラメタ〔Mediator〕[1]

postStart.healthCheck.readTimeoutSecondsパラメタ〔TP1-Bridge〕[1]

postStart.healthCheck.retryCountパラメタ〔Mediator〕[1]

postStart.healthCheck.retryCountパラメタ〔TP1-Bridge〕[1]

postStart.healthCheck.retryIntervalSecondsパラメタ〔Mediator〕[1]

postStart.healthCheck.retryIntervalSecondsパラメタ〔TP1-Bridge〕[1]

prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)メソッド〔PctoConnectionクラス〕[1]

prepareCall(java.lang.String sql)メソッド〔PctoConnectionクラス〕[1]

prepareStatement(java.lang.String sql, int autoGeneratedKeys)メソッド〔PctoConnectionクラス〕[1]

prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)メソッド〔PctoConnectionクラス〕[1]

prepareStatement(java.lang.String sql, java.lang.String[] columnNames)メソッド〔PctoConnectionクラス〕[1]

prepareStatement(java.lang.String sql)メソッド〔PctoConnectionクラス〕[1]

preStop.waitTransactions.connectTimeoutSecondsパラメタ〔Mediator〕[1]

preStop.waitTransactions.connectTimeoutSecondsパラメタ〔TP1-Bridge〕[1]

preStop.waitTransactions.readTimeoutSecondsパラメタ〔Mediator〕[1]

preStop.waitTransactions.readTimeoutSecondsパラメタ〔TP1-Bridge〕[1]

preStop.waitTransactions.retryCountパラメタ〔Mediator〕[1]

preStop.waitTransactions.retryCountパラメタ〔TP1-Bridge〕[1]

preStop.waitTransactions.retryIntervalSecondsパラメタ〔Mediator〕[1]

preStop.waitTransactions.retryIntervalSecondsパラメタ〔TP1-Bridge〕[1]

R

rap_connection_assign_typeオペランド〔OpenTP1システムサービス定義のrapリスナーサービス定義〕[1]

rap_listen_portオペランド〔OpenTP1システムサービス定義のrapリスナーサービス定義〕[1]

rap_parallel_serverオペランド〔OpenTP1システムサービス定義のrapリスナーサービス定義〕[1]

rap_recovery_serveオペランド〔OpenTP1システムサービス定義のrapリスナーサービス定義〕[1]

readinessProbe.failureThresholdパラメタ〔Elasticsearch〕[1]

readinessProbe.failureThresholdパラメタ〔Filebeat〕[1]

readinessProbe.failureThresholdパラメタ〔Jaeger-collector〕[1]

readinessProbe.failureThresholdパラメタ〔Jaeger-query〕[1]

readinessProbe.failureThresholdパラメタ〔Logstash〕[1]

readinessProbe.failureThresholdパラメタ〔Metricbeat〕[1]

readinessProbe.initialDelaySecondsパラメタ〔Elasticsearch〕[1]

readinessProbe.initialDelaySecondsパラメタ〔Filebeat〕[1]

readinessProbe.initialDelaySecondsパラメタ〔Jaeger-collector〕[1]

readinessProbe.initialDelaySecondsパラメタ〔Jaeger-query〕[1]

readinessProbe.initialDelaySecondsパラメタ〔Logstash〕[1]

readinessProbe.initialDelaySecondsパラメタ〔Metricbeat〕[1]

readinessProbe.periodSecondsパラメタ〔Elasticsearch〕[1]

readinessProbe.periodSecondsパラメタ〔Filebeat〕[1]

readinessProbe.periodSecondsパラメタ〔Jaeger-collector〕[1]

readinessProbe.periodSecondsパラメタ〔Jaeger-query〕[1]

readinessProbe.periodSecondsパラメタ〔Logstash〕[1]

readinessProbe.periodSecondsパラメタ〔Metricbeat〕[1]

readinessProbe.successThresholdパラメタ〔Elasticsearch〕[1]

readinessProbe.successThresholdパラメタ〔Filebeat〕[1]

readinessProbe.successThresholdパラメタ〔Jaeger-collector〕[1]

readinessProbe.successThresholdパラメタ〔Jaeger-query〕[1]

readinessProbe.successThresholdパラメタ〔Logstash〕[1]

readinessProbe.successThresholdパラメタ〔Metricbeat〕[1]

readinessProbe.timeoutSecondsパラメタ〔Elasticsearch〕[1]

readinessProbe.timeoutSecondsパラメタ〔Filebeat〕[1]

readinessProbe.timeoutSecondsパラメタ〔Jaeger-collector〕[1]

readinessProbe.timeoutSecondsパラメタ〔Jaeger-query〕[1]

readinessProbe.timeoutSecondsパラメタ〔Logstash〕[1]

readinessProbe.timeoutSecondsパラメタ〔Metricbeat〕[1]

recover.interval-in-millisパラメタ〔SQL-Participant〕[1]

registerOutParameter(int parameterIndex, int sqlType, int scale)メソッド〔PctoCallableStatementクラス〕[1]

registerOutParameter(int parameterIndex, int sqlType, java.lang.String typeName)メソッド〔PctoCallableStatementクラス〕[1]

registerOutParameter(int parameterIndex, int sqlType)メソッド〔PctoCallableStatementクラス〕[1]

release.serverパラメタ〔EADS〕[1]

release.serviceパラメタ〔EADS〕[1]

replicasパラメタ〔Elasticsearch〕[1]

replicasパラメタ〔Jaeger-collector〕[1]

replicasパラメタ〔Logstash〕[1]

replicasパラメタ〔Mediator〕[1]

replicasパラメタ〔Metricbeat〕[1]

repo.storageClassNameパラメタ〔Elasticsearch〕[1]

repo.storageSizeパラメタ〔Elasticsearch〕[1]

requests.cpuパラメタ〔Elasticsearch〕[1]

requests.cpuパラメタ〔Filebeat〕[1]

requests.cpuパラメタ〔Jaeger-collector〕[1]

requests.cpuパラメタ〔Jaeger-query〕[1]

requests.cpuパラメタ〔Logstash〕[1]

requests.cpuパラメタ〔Metricbeat〕[1]

requests.memoryパラメタ〔Elasticsearch〕[1]

requests.memoryパラメタ〔Filebeat〕[1]

requests.memoryパラメタ〔Jaeger-collector〕[1]

requests.memoryパラメタ〔Jaeger-query〕[1]

requests.memoryパラメタ〔Logstash〕[1]

requests.memoryパラメタ〔Metricbeat〕[1]

resourcesパラメタ〔Mediator〕[1]

resourcesパラメタ〔TP1-Bridge〕[1]

roleパラメタ〔Elasticsearch〕[1]

rpc_max_message_sizeオペランド〔OpenTP1システムサービス定義のシステム共通定義〕[1]

S

securityContextパラメタ〔Mediator〕[1]

securityContextパラメタ〔TP1-Bridge〕[1]

server.tomcat.maxSwallowSizeパラメタ〔TP1-Bridge〕[1]

server.tomcat.threads.maxパラメタ〔TP1-Bridge〕[1]

service.portパラメタ〔Metrics Server〕[1]

service.portパラメタ〔Prometheus〕[1]

SESSIONSパラメタ〔Oracle Database〕[1]

setArray(int parameterIndex,java.sql.Array x)メソッド〔PctoPreparedStatementクラス〕[1]

setBigDecimal(int parameterIndex, java.math.BigDecimal x)メソッド〔PctoPreparedStatementクラス〕[1]

setBinaryStream(int parameterIndex, java.io.InputStream x, int length)メソッド〔PctoPreparedStatementクラス〕[1]

setBlob(int parameterIndex, java.io.InputStream inputStream)メソッド〔PctoPreparedStatementクラス〕[1]

setBoolean(int parameterIndex, boolean x)メソッド〔PctoPreparedStatementクラス〕[1]

setByte(int parameterIndex, byte x)メソッド〔PctoPreparedStatementクラス〕[1]

setBytes(int parameterIndex, byte[] x)メソッド〔PctoPreparedStatementクラス〕[1]

setCharacterStream(int parameterIndex, java.io.Reader reader, int length)メソッド〔PctoPreparedStatementクラス〕[1]

setClob(int parameterIndex, java.io.Reader reader)メソッド〔PctoPreparedStatementクラス〕[1]

setDate(int parameterIndex, java.sql.Date x)メソッド〔PctoPreparedStatementクラス〕[1]

setDouble(int parameterIndex, double x)メソッド〔PctoPreparedStatementクラス〕[1]

setEscapeProcessing(boolean enable)メソッド〔PctoStatementクラス〕[1]

setFetchSize(int rows)メソッド〔PctoStatementクラス〕[1]

setFloat(int parameterIndex, float x)メソッド〔PctoPreparedStatementクラス〕[1]

setInt(int parameterIndex, int x)メソッド〔PctoPreparedStatementクラス〕[1]

setLong(int parameterIndex, long x)メソッド〔PctoPreparedStatementクラス〕[1]

setNString(int parameterIndex, java.lang.String value)メソッド〔PctoPreparedStatementクラス〕[1]

setNull(int parameterIndex, int sqlType)メソッド〔PctoPreparedStatementクラス〕[1]

setObject(int parameterIndex, java.lang.Object x, int targetSqlType)メソッド〔PctoPreparedStatementクラス〕[1]

setObject(int parameterIndex, java.lang.Object x)メソッド〔PctoPreparedStatementクラス〕[1]

setPrePrepared(boolean prePreparedState)メソッド〔TxPropagationOptionalSettingsクラス〕[1]

setQueryTimeout(int seconds)メソッド〔PctoStatementクラス〕[1]

setShort(int parameterIndex, short x)メソッド〔PctoPreparedStatementクラス〕[1]

setString(int parameterIndex, java.lang.String x)メソッド〔PctoPreparedStatementクラス〕[1]

setString(java.lang.String value)メソッド〔PctoSQLXMLクラス〕[1]

setTime(int parameterIndex, java.sql.Time x)メソッド〔PctoPreparedStatementクラス〕[1]

setTimestamp(int parameterIndex, java.sql.Timestamp x)メソッド〔PctoPreparedStatementクラス〕[1]

setTransactionIsolation(int level)メソッド〔PctoConnectionクラス〕[1]

set-routingパラメタ〔Entity-Module〕[1]

set-routingパラメタ〔Orchestrator〕[1]

set-routingパラメタ〔SQL-Participant〕[1]

sql.datasource.class-nameパラメタ〔SQL-Participant〕[1]

sql.datasource.property.delimiterパラメタ〔SQL-Participant〕[1]

sql.datasource.property.valuesパラメタ〔SQL-Participant〕[1]

sql.db-typeパラメタ〔SQL-Participant〕[1]

sql.jdbc.driver.additional-library-pathsパラメタ〔SQL-Participant〕[1]

sql.jdbc.driver.pathパラメタ〔SQL-Participant〕[1]

sql.participant-processing.queue-sizeパラメタ〔SQL-Participant〕[1]

sql.participant-processing.thread-pool-sizeパラメタ〔SQL-Participant〕[1]

sql.pod.service-nameパラメタ〔SQL-Participant〕[1]

sql.pool.allocation-wait-time-in-millisパラメタ〔SQL-Participant〕[1]

sql.pool.connection-retry-interval-in-secondsパラメタ〔SQL-Participant〕[1]

sql.pool.connection-retry-limitパラメタ〔SQL-Participant〕[1]

sql.pool.max-pool-sizeパラメタ〔SQL-Participant〕[1]

sql.pool.transaction-timeout-in-secondsパラメタ〔SQL-Participant〕[1]

sql.transaction-termination.consensus.replay-interval-in-millisパラメタ〔SQL-Participant〕[1]

sql.transaction-termination.timeout-in-millisパラメタ〔SQL-Participant〕[1]

store.storageClassNameパラメタ〔EADS〕[1]

supportsMultipleResultSets()メソッド〔PctoDatabaseMetaDataクラス〕[1]

sysctlVmMaxMapCountパラメタ〔Elasticsearch〕[1]

T

tcc.consensus.interval-in-millisパラメタ〔TCC-Participant〕[1]

tcc.participant-processing.queue-sizeパラメタ〔TCC-Participant〕[1]

tcc.participant-processing.thread-pool-sizeパラメタ〔TCC-Participant〕[1]

tcc.pod.service-nameパラメタ〔TCC-Participant〕[1]

tcc.recover.enabledパラメタ〔TCC-Participant〕[1]

tcc.recover.orderパラメタ〔TCC-Participant〕[1]

tcc.transaction-termination.timeout-in-millisパラメタ〔TCC-Participant〕[1]

TccResponse(final T data)メソッド〔TccResponse<T extends java.io.Serializable>クラス〕[1]

terminationGracePeriodSecondsパラメタ〔Elasticsearch〕[1]

terminationGracePeriodSecondsパラメタ〔Filebeat〕[1]

terminationGracePeriodSecondsパラメタ〔Jaeger-collector〕[1]

terminationGracePeriodSecondsパラメタ〔Jaeger-query〕[1]

terminationGracePeriodSecondsパラメタ〔Logstash〕[1]

terminationGracePeriodSecondsパラメタ〔Mediator〕[1]

terminationGracePeriodSecondsパラメタ〔Metricbeat〕[1]

terminationGracePeriodSecondsパラメタ〔TP1-Bridge〕[1]

timezoneパラメタ〔Ext-Cons〕[1]

timezoneパラメタ〔Mediator〕[1]

timezoneパラメタ〔TP1-Bridge〕[1]

tls.enabledパラメタ〔Elasticsearch〕[1]

tls.enabledパラメタ〔Jaeger-collector〕[1]

tls.enabledパラメタ〔Jaeger-query〕[1]

tls.enabledパラメタ〔Logstash〕[1]

tls.enabledパラメタ〔Metricbeat〕[1]

tls.secretNameパラメタ〔Elasticsearch〕[1]

tls.secretNameパラメタ〔Jaeger-collector〕[1]

tls.secretNameパラメタ〔Jaeger-query〕[1]

tls.secretNameパラメタ〔Logstash〕[1]

tls.secretNameパラメタ〔Metricbeat〕[1]

tp1.cltj.dccltdelayパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dccltrecvbuffsizeパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dccltrpcmaxmsgsizeパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dccltsendbuffsizeパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcdatatracemaxsizeパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcdatatracesizeパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcdatatraceパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcerrtracesizeパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcerrtraceパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dchostパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcmethodtracesizeパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcmethodtraceパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcrapportパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcuaptracesizeパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcuaptraceパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcwatchtiminheritパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcwatchtimrpcinheritパラメタ〔TP1-Bridge〕[1]

tp1.cltj.dcwatchtimパラメタ〔TP1-Bridge〕[1]

tp1.data-conversion.definition-file.directoryパラメタ〔uCosminexus Application Serverのusrconf.properties〕[1]

tp1.participantProcessing.queueSizeパラメタ〔TP1-Bridge〕[1]

tp1.participantProcessing.threadPoolSizeパラメタ〔TP1-Bridge〕[1]

tp1.pod.serviceNameパラメタ〔TP1-Bridge〕[1]

tp1.pool.allocationWaitTimeInMillisパラメタ〔TP1-Bridge〕[1]

tp1.pool.maxPoolSizeパラメタ〔TP1-Bridge〕[1]

tp1.transactionTermination.consensus.replayIntervalInMillisパラメタ〔TP1-Bridge〕[1]

tp1.transactionTermination.timeoutInMillisパラメタ〔TP1-Bridge〕[1]

tracing.batchSizeパラメタ〔Mediator〕[1]

tracing.batchSizeパラメタ〔TP1-Bridge〕[1]

tracing.batch-sizeパラメタ〔共通〕[1]

tracing.debugパラメタ〔Mediator〕[1]

tracing.debugパラメタ〔TP1-Bridge〕[1]

tracing.debugパラメタ〔共通〕[1]

tracing.delayTimeInMillisパラメタ〔Mediator〕[1]

tracing.delayTimeInMillisパラメタ〔TP1-Bridge〕[1]

tracing.delay-time-in-millisパラメタ〔共通〕[1]

tracing.grpc.debugパラメタ〔Mediator〕[1]

tracing.grpc.debugパラメタ〔TP1-Bridge〕[1]

tracing.grpc.debugパラメタ〔共通〕[1]

tracing.instanceIdパラメタ〔Mediator〕[1]

tracing.instanceIdパラメタ〔TP1-Bridge〕[1]

tracing.instance-idパラメタ〔共通〕[1]

tracing.jdbc.debugパラメタ〔共通〕[1]

tracing.queueSizeパラメタ〔Mediator〕[1]

tracing.queueSizeパラメタ〔TP1-Bridge〕[1]

tracing.queue-sizeパラメタ〔共通〕[1]

tracing.urlパラメタ〔Mediator〕[1]

tracing.urlパラメタ〔TP1-Bridge〕[1]

tracing.urlパラメタ〔共通〕[1]

tracing.useTraceパラメタ〔Mediator〕[1]

tracing.useTraceパラメタ〔TP1-Bridge〕[1]

tracing.use-traceパラメタ〔共通〕[1]

trn_xar_useオペランド〔OpenTP1システムサービス定義のトランザクションサービス定義〕[1]

typeパラメタ〔JDBC Proxy Driver〕[1]

U

ucars.enabledパラメタ〔Mediator〕[1]

ucars.snapshots.claimNameパラメタ〔Mediator〕[1]

ucars.snapshots.claimNameパラメタ〔TP1-Bridge〕[1]

urlパラメタ〔JDBC Proxy Driver〕[1]

user connectionsオプション〔SQL Server〕[1]

usernameパラメタ〔JDBC Proxy Driver〕[1]

use-scalingパラメタ〔Entity-Module〕[1]

use-scalingパラメタ〔Mediator〕[1]

use-scalingパラメタ〔Orchestrator〕[1]

use-scalingパラメタ〔SQL-Participant〕[1]

use-scalingパラメタ〔TCC-Participant〕[1]

use-scalingパラメタ〔TP1-Bridge〕[1]

W

wasNull()メソッド〔PctoCallableStatementクラス〕[1]

wasNull()メソッド〔PctoResultSetクラス〕[1]

webserver.connector.nio_http.limit.max_request_bodyパラメタ〔uCosminexus Application Serverのusrconf.properties〕[1]

webserver.connector.nio_http.max_servlet_execute_threadsパラメタ〔ucosminexusapplicationserverのusrconf.properties〕[1]

webserver.connector.nio_http.max_threadsパラメタ〔uCosminexus Application Serverのusrconf.properties〕[1]

webserver.connector.nio_http.portパラメタ〔uCosminexus Application Serverのusrconf.properties〕[1]