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

4010-1J-500-10

前書き

対象製品

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

輸出時の注意

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

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

商標類

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

発行

2024年10月4010-1J-500-10

著作権

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

奥付

マニュアル発行元

株式会社 日立製作所

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

変更内容

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

追加・変更内容

変更個所

マイクロサービス化したアプリケーションからOpenTP1のサービスを呼び出して使用するためのTP1連携機能をサポートしました。

1.1、1.2.4、1.3、1.3.3、1.4.1、1.4.2、1.5、2.2.1、2.2.7、2.2.13、2.6.2、2.6.3、2.6.6、3.1、3.2.3(2)、3.3、3.4.1、3.4.4、3.6.3、3.6.6、3.7、3.7.1、3.7.4、3.7.10、3.8.3(1)、3.8.3(3)、3.8.3(15)、3.8.3(20)、3.9.1(1)、3.9.1(6)、3.9.1(7)、3.9.1(8)、3.10.1(1)(c)、3.10.1(6)、3.10.1(7)、3.10.2、3.10.3、3.10.3(2)(c)、4.、5.1、5.3.8、6.2、6.4.1、6.4.2、6.4.6、8.1、8.2.1、8.2.3(1)、8.3.2、8.3.8(1)、8.5、8.6、9.1.1、10.1.1、10.3.4(1)(b)、10.4.1、10.5.3(3)、10.5.3(4)(b)、10.6.1、10.6.2(3)、10.6.3(1)、10.6.3(4)(b)、付録A.1、付録D

HMP-PCTOの前提プログラムおよび関連プログラムを追加・変更しました。

1.4.1、1.4.2、2.2.8(1)

SQL-Participantの接続先として、HiRDBおよびSQL-Serverをサポートしました。

1.4.1、1.4.2、2.4.7(1)、3.9.1(3)、3.9.1(4)、8.1、8.2.4(2)、8.4、10.1.1、10.6.1、10.6.3(4)(b)

@PctoBranchRollbackForアノテーションのロールバックしない場合の説明を変更しました。

2.2.8(3)、7.2.7

Kubernetesマニフェスト作成時の注意事項を追加しました。

2.6、2.6.4、2.6.5

次のKubernetesマニフェストの記述例を変更しました。

Orchestrator

Entity-Service（Participantコンテナを含まないPodとする場合）

SQL-Participant

TCC-Participant

MediatorのConsensusLogの永続ボリュームおよびストレージクラス

2.6.2、2.6.3、2.6.4、2.6.5、3.6.2

MediatorのConsensusLogの永続ボリュームマウント用ディレクトリを、NFSストレージ上に作成できるようにしました。

3.5.2、3.6.2、3.8.1、6.4.5、8.3.1(1)

HMP-PCTOが提供するHelmチャートに、OSSパラメタを追加する手順の説明を追加しました。

3.7.1、3.7.2

MediatorのHelmチャートのパラメタに、次のパラメタを追加しました。

resources

ucars.enabled

tracing.queueSize

tracing.delayTime

tracing.batchSize

3.7.3、8.3.1(1)

Prometheusのバージョンアップに伴い、次のパラメタのデフォルト値を変更しました。

prometheus.remoteWrite.queue.capacity

prometheus.remoteWrite.queue.maxShards

prometheus.remoteWrite.queue.maxSamplesPerSend

3.7.10、8.3.8(1)

バージョンアップ時の注意事項を追加しました。

3.8.3(17)(b)、3.8.3(17)(c)

チューニング対象のパラメタとメトリクス名の関連づけについての説明を追加しました。

3.10.1(3)(c)、3.10.1(4)(c)

トランザクション制御の中で使用するタイマの、次のパラメタの説明を変更しました。

sql.transaction-termination.consensus.replay-interval-in-millis

tp1.transactionTermination.consensus.replayIntervalInMillis

3.10.2、8.2.4(2)、8.3.2(1)

次のコンテナイメージの前提プログラムを追加しました。

SQL-Participant

Entity-Module/TCC-Participant

5.3.5、5.3.6

次の各コンテナの要件のコマンド要件を変更しました。

Filebeatコンテナの要件

Jaeger-queryコンテナの要件

Jaeger-collectorコンテナの要件

Prometheusコンテナの要件

Metricbeatコンテナの要件

6.4.1、6.4.2、6.4.3、6.4.4、6.4.9、6.4.10、6.4.11、6.4.12、6.4.13

EADSサーバチャート用values.yamlファイルに次のパラメタを追加しました。

eads.failureDetector.heartbeat.timeout

eads.failureDetector.connection.timeout

eads.failureDetector.read.timeout

8.3.3(1)(a)、8.3.3.(1)(b)

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

KFSG60000-E (Y)M、KFSG60001-E (Y)M、KFSG60002-E (Y)M、KFSG60003-W (Y)M、KFSG60010-W (Y)M+J、KFSG60011-E (Y)M+J、KFSG60013-W (Y)M+J、KFSG60014-E (Y)M、KFSG60015-W (Y)M、KFSG60016-E (Y)M、KFSG60017-E (Y)M、KFSG60018-W (Y)M+J、KFSG60019-E (Y)M、KFSG60023-E (Y)M、KFSG60025-W (Y)M、KFSG60026-W (Y)M、KFSG60030-W (Y)M+J、KFSG61004-W (Y)M、KFSG61008-E (Y)M、KFSG61103-E (Y)M、KFSG62014-W (Y)M、KFSG62015-W (Y)M、KFSG64002-E (Y)M、KFSG64602-E (Y)M、KFSG74002-E (Y)M、KFSG74404-I (Y)M、KFSG74405-I (Y)M、KFSG74406-I (Y)M、KFSG74407-E (Y)M、KFSG74408-W (Y)M、KFSG80001-I (Y)M、KFSG80002-I (Y)M、KFSG80004-I (Y)M、KFSG82006-I (Y)M、KFSG82007-I (Y)M

9.2.1、9.2.2、9.2.3

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

KFSG60033-W (Y)M、KFSG63200-E (Y)M、KFSG63201-E (Y)M、KFSG63204-E (Y)M、KFSG63205-W (Y)M、KFSG63207-E (Y)M、KFSG63208-E (Y)M、KFSG63209-E (Y)M、KFSG63300-E (Y)C、KFSG63301-E (Y)C、KFSG63302-E (Y)C、KFSG63303-E (Y)C、KFSG63304-E (Y)C、KFSG63305-E (Y)C、KFSG63306-W (Y)C、KFSG63307-E (Y)C、KFSG63308-E (Y)C、KFSG63309-E (Y)C、KFSG63310-E (Y)C、KFSG63311-W (Y)C、KFSG63312-E (Y)C、KFSG83103-I (Y)C

9.2.1、9.2.3

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

KFSG74208-I (Y)M

9.2.2

分散トレースでProcess情報を出力できるようにしました。

10.3.1、10.3.3(3)、10.3.4(1)(b)、10.5.2(3)(b)

分散トレースの取得に関するパラメタを追加しました。

10.3.4(4)

uCosminexus Application Runtime for Spring Boot のスナップショットログ収集機能での収集方法の説明を追加しました。

10.6.2(2)

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

はじめに

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

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

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

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アプリケーション

Orchestrator

○

−

−

Entity-Service（Participantコンテナを含まないPodとする場合）※

○

−

−

SQL-Participant

○

−

−

TCC-Participant

○

−

−

Mediator

−

○

−

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

−

〇

−

EADS（通常版の場合）

−

○

−

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

−

○

−

Filebeat

−

−

○

Jaeger-query

−

−

○

Jaeger-collector

−

−

○

Prometheus

−

−

○

Metricbeat

−

−

○

Elasticsearch

−

−

○

Logstash

−

−

○

（凡例）

○：該当します。

−：該当しません。

注※

ここで対象としているEntity-Serviceは、サービス間を中継するサービスとしてのEntity-Serviceを指します。詳細については、取扱説明書「HMP-PCTO テクニカルガイド」のトランザクションのモデルに関する説明を参照してください。

1.2　構成要素

HMP-PCTOのKubernetesクラスタの構成要素、SQL-Participantを使用する場合およびTCC-Participantを使用する場合の構成要素（Podおよび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およびContainer）を次の表に示します。

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

Kubernetes cluster

Pod

Container

persistent volume

HMP-PCTO

Orchestrator

Orchestrator

−

Participant

Entity-Service

−

SQL-Participant

−

Mediator

Mediator

○

通常版の場合

EADS

トライアル版の場合

Mockサーバ

通常版の場合

EADS

トライアル版の場合

Mockサーバ

○

Filebeat

Filebeat

−

Jaeger-query

Jaeger-query

−

Jaeger-collector

Jaeger-collector

−

Prometheus

Prometheus

−

Metricbeat

Metricbeat

−

Elasticsearch

Elasticsearch

○

Logstash

Logstash

−

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

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

TCC-Participantを使用する場合の構成要素（PodおよびContainer）を次の表に示します。

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

Kubernetes cluster

Pod

Container

persistent volume

HMP-PCTO

Orchestrator

Orchestrator

−

Participant

Entity-Module/TCC-Participant

−

Mediator

Mediator

○

通常版の場合

EADS

トライアル版の場合

Mockサーバ

通常版の場合

EADS

トライアル版の場合

Mockサーバ

○

Filebeat

Filebeat

−

Jaeger-query

Jaeger-query

−

Jaeger-collector

Jaeger-collector

−

Prometheus

Prometheus

−

Metricbeat

Metricbeat

−

Elasticsearch

Elasticsearch

○

Logstash

Logstash

−

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

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

TP1-Bridgeを使用する場合の構成要素（PodおよびContainer）を次の表に示します。

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

Kubernetes cluster

Pod

Container

persistent volume

HMP-PCTO

Orchestrator

Orchestrator

−

TP1-Bridge

TP1-Bridge

−

Mediator

Mediator

○

EADS

EADS

○

Filebeat

Filebeat

−

Jaeger-query

Jaeger-query

−

Jaeger-collector

Jaeger-collector

−

Prometheus

Prometheus

−

Metricbeat

Metricbeat

−

Elasticsearch

Elasticsearch

○

Logstash

Logstash

−

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

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の名称および数は任意とします。

(1)　通常版の場合

補助合意用の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合意方式（通常版））

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

トライアル版では、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の名称および数は任意とします。

(1)　通常版の場合

補助合意用の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合意方式（通常版））

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

トライアル版では、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ワーカーノードに配置し、物理的にも別のマシンとする必要があります。

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

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

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

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

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

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

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‒5　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

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

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

トライアル版の場合

Almalinux 8 Minimal 8.8

5

Javaフレームワーク

（APサーバを含む）

Spring Boot 2.7.18

6

Javaランタイム

通常版の場合

uCosminexus Application Runtime with Java for Spring Boot導入ありのとき※2

Java SE 8のuCosminexus Application Runtime with Java for Spring Boot 01-00以降

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

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

・HMP-PCTOのコントロールプレーンのコンテナイメージのとき：java-1.8.0-openjdk-headless-1.8.0.372.b07

トライアル版の場合

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

Java SE 8準拠のJDK

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

java-1.8.0-openjdk-headless-1.8.0.392.b08

7

Javaライブラリ※3

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

Hitachi Elastic Application Data Store Client for Java 06-20以降（通常版の場合だけ同梱）

com.google.protobuf:protobuf-java-util 3.24.0

io.grpc:grpc-api 1.59.1

io.grpc:grpc-netty 1.59.1

io.grpc:grpc-netty-shaded 1.59.1

io.grpc:grpc-protobuf 1.59.1

io.grpc:grpc-services 1.59.1

io.grpc:grpc-stub 1.59.1

io.kubernetes:client-java 14.0.0

io.micrometer:micrometer-core 1.9.17

io.micrometer:micrometer-registry-prometheus 1.9.17

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

io.opentelemetry:opentelemetry-api 1.38.0

io.opentelemetry:opentelemetry-sdk 1.38.0

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

javax.annotation:javax.annotation-api 1.3.2

javax.json.bind:javax.json.bind-api 1.0

javax.ws.rs:javax.ws.rs-api 2.1.1

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

net.devh:grpc-server-spring-boot-autoconfigure 2.13.1.RELEASE

org.eclipse.microprofile.config:microprofile-config-api 1.4

org.eclipse:yasson 1.0.11

org.globallogic.microservice:msa-imperative-modules-isc-rest 1.6.5

org.osgi:org.osgi.annotation.bundle 2.0.0

org.projectlombok:lombok 1.18.30

org.quartz-scheduler:quartz 2.3.2

org.springframework.boot:spring-boot-starter-actuator 2.7.18

org.springframework.boot:spring-boot-starter-web 2.7.18

org.springframework:spring-aspects 5.3.31

org.springframework:spring-web 5.3.31

8

RPMパッケージ

curl 7.61.1

glibc 2.28

jq 1.6

ncompress

ncurses

tar

cpio

gzip

9

JDBC Driver

PostgreSQL 13に接続する場合

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以降）

10

TP1/Client/J

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

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

11

uCosminexus Service Platform

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

P-9W43-7SY1 uCosminexu Service Platform11-30以降

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

12

uCosminexus Service Architect

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

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

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

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

注※1

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

注※2

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

注※3

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

1.4.2　関連プログラム

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

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

項番

種別

関連プログラム

1

関連プログラム

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

Hitachi Elastic Application Data Store 06-20（通常版の場合だけ）

Hitachi Microservices Platform-Application Distributed Integration Framework 02-04（オプション）

Jaeger-collector 1.56.0以降※¹

Jaeger-query 1.56.0以降※¹

Prometheus 2.53.1以降※1※2

Elasticsearch 8.13.0以降※¹

Filebeat 8.13.0以降※¹

Logstash 8.13.0以降※¹

Metricbeat 8.13.0以降※¹

PostgreSQLに接続する場合

PostgreSQL 13

SQL Serverに接続する場合

SQL Server 2022

2

関連プログラム

（Kubernetesクラスタ外に起動）

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

HiRDBに接続する場合

HiRDB 10

注※1

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

注※2

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

重要

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

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

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

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

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

項番

項目

前提条件

1

Kubernetesクラスタ数

1クラスタだけ

2

リージョン数

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

1リージョンだけ

3

ゾーン数

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

1ゾーンだけ

4

Kubernetesワーカーノード数

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

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

ThreeQuarters合意方式の場合

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

PrivilegedValue合意方式の場合

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

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

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

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

項番

項目

前提条件

1

NFS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

表2‒1　ユーザ責務のKubernetesアプリケーションの開発の流れ

項番

項目

説明

参照先

1

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

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

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

2

SQL-Participantのビルド

HMP-PCTOの提供物を使用してSQL-Participantをビルドします。SQL-Participantを使用する場合だけ実施します。

2.3　SQL-Participantのビルド（SQL-Participant限定）

3

コンテナイメージ作成

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

2.4　コンテナイメージ作成

4

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

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

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

5

Kubernetesマニフェスト作成

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

2.6　Kubernetesマニフェスト作成

6

デプロイ

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

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

重要

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

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

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

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

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

2.2.1　作業項目の一覧

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

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

分類

作業項目

コンポーネント

備考

参照先

共通

事前準備

全コンポーネント共通

必ず実施します。

2.2.2　事前準備

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

全コンポーネント共通

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

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

Javaアプリケーション開発

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

Orchestrator

Entity-Service

TCC-Participant

必ず実施します。

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

トランザクション境界の設定

Orchestrator

必ず実施します。

2.2.6　トランザクション境界の設定

トランザクションの伝搬

Orchestrator

Entity-Service

必ず実施します。

2.2.7　トランザクションの伝搬

トランザクションブランチの属性の設定

Entity-Service

TCC-Participant

必ず実施します。

2.2.8　トランザクションブランチの属性の設定

先行プリペア機能の使用（SQL-Participant限定）

Entity-Service

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

2.2.9　先行プリペア機能の使用（SQL-Participant限定）

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

Entity-Service

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

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

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

TCC-Participant

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

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

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

TCC-Participant

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

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

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

Orchestrator

Entity-Service

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

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

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

Orchestrator

Entity-Service

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

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

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

SQL-Participan

TCC-Participant

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

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

2.2.2　事前準備

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

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

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

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

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

アプリケーションが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のアプリケーションで実装してください。

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

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

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

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-orchestrator:<version>'
}

(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‒3　トランザクションの結果と例外の関係

項番

トランザクションの結果

例外

備考

1

トランザクション未実行

TransactionSystemException

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

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

2

コミット決着

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

−

3

ロールバック決着

RollbackTerminationException

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

4

結果不明

TerminationFailureException

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

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

2.2.7　トランザクションの伝搬

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

トランザクションの伝搬は、Orchestrator、Entity-Serviceのアプリケーションで実装してください。

トランザクションの伝搬は、Entity-serviceまたはTP1-Bridgeの呼び出しに使用するクライアントによって設定方法が異なります。使用するクライアントに対応する参照先を参照してください。

表2‒4　トランザクションの伝搬に使用するクライアント

項番

トランザクションの伝搬に使用するクライアント

参照先

1

Spring FrameworkのRestTemplate

(1)　Spring FrameworkのRestTemplateを使用する場合

2

HMP-ADIFのISCコマンド（ImperativeかつREST通信）

(2)　HMP-ADIFのISCコマンド（ImperativeかつREST通信）を使用する場合

(1)　Spring FrameworkのRestTemplateを使用する場合

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

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

TxPropagationRestTemplateInterceptorクラスを登録するには、hmppcto-propagation-rest-templateライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-propagation-rest-template:<version>'
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-common:<version>'
}

(b)　コーディング例

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にインタセプタを登録

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

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

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

(2)　HMP-ADIFのISCコマンド（ImperativeかつREST通信）を使用する場合

TxPropagationIscImperativePluginクラスをアプリケーションに組み込んで使用します。TxPropagationIscImperativePluginクラスは、HMP-ADIFのorg.globallogic.microservice.modules.isc.imperative.IscImperativeCommandExecutionPluginインタフェースを実装しています。アプリケーションに組み込むとアプリケーション起動時にHMP-ADIFが自動的に登録します。

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

TxPropagationIscImperativePluginクラスを登録するには、hmppcto-propagation-isc-imperativeライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-propagation-isc-imperative:<version>'
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-common:<version>'
}

(b)　コーディング例

アプリケーション起動時にHMP-ADIFが自動的に登録するため、コーディングは不要です。

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

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

2.2.8　トランザクションブランチの属性の設定

トランザクションブランチとして動作するアプリケーションの開発方法について説明します。

トランザクションブランチとして動作するアプリケーションは、Entity-Service、TCC-Participantのアプリケーションで実装してください。

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

@PctoBranchRollbackForアノテーションを使用しない場合でも、ライブラリの組み込みは必要です。

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

トランザクションブランチとして動作するアプリケーションには、hmppcto-entity-serviceライブラリとjavax.ws.rs-apiライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-entity-service:<version>'
    implementation 'javax.ws.rs:javax.ws.rs-api:<rs-apiのversion>※'
}

注※

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

(2)　コーディング例

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

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

    // 業務処理

}

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

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

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

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

Entity-Serviceのルートとなるメソッドが例外を送出した場合

HTTPステータス404の場合

HTTPステータス405の場合

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

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

2.2.9　先行プリペア機能の使用（SQL-Participant限定）

先行プリペア機能を使用するアプリケーションの開発方法について説明します。

先行プリペア機能を使用するアプリケーションは、Orchestrator、Entity-Serviceで実装してください。

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

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

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

(2)　コーディング例

先行プリペア機能を使用する際に追加するHTTPヘッダ名と値は、XidHeadersインタフェースで提供します。ヘッダ名はXidHeaders.IS_LAST_CALL、値はXidHeaders.TRUEです。これをEntity-Service呼び出し時に追加してください。トランザクションの伝搬に使用するクライアントごとに追加する例を次に示します。

(a)　Spring FrameworkのRestTemplateを使用する場合

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

(b)　HMP-ADIFのISCコマンド（ImperativeかつREST通信）を使用する場合

IscImperativeCreateCommandBuilder<?,?> request = Isc.create()  // ISCコマンド作成
      .on("sample")
      .using("samplePath")
      .header(XidHeaders.IS_LAST_CALL, XidHeaders.TRUE)        // 先行プリペアヘッダ追加
      .data(payload);

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

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

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

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

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

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

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

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

dependencies {
    implementation 'jp.co.Hitachi.soft.hmppcto: hmppcto-jdbc-proxy-driver:<version>'
}

(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からEntity-Serviceに応答し、そのままアプリケーションに送出します。

Entity-ServiceとParticipantの間の通信障害など、JDBC Proxy Driver固有の例外は、java.sql.SQLExceptionのサブクラスとして実装しているため、各ベンダのJDBC Driverが送出する例外と同様にエラーハンドリングできます。JDBC Proxy Driver固有の例外の詳細については、「7.　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.11　TccServiceインタフェースの実装クラスの作成（TCC-Participant限定）

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

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

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

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

イベント

データの状態

データなし

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:<version>'
}

また、通常版の場合、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.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クラスの詳細については、「7.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.12　業務ロジックからのexecuteTryメソッドの呼び出し（TCC-Participant限定）

業務ロジックからのexecuteTryメソッドの呼び出しの実装は、TCC-Participantのアプリケーションで実装してください。

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.13　TP1-Bridgeの使用（通常版かつTP1-Bridge限定）

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

TP1-Bridgeの機能を使用する処理は、OrchestratorおよびEntity-Serviceのアプリケーションで実装してください。

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<?> 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.14　ロギングライブラリの設定ファイルのカスタマイズ

アプリケーションでロギングライブラリLogbackを使用する場合、その設定はlogback-spring.xmlに定義します。このファイルを記載する場合、HMP-PCTOのメッセージログ機能に関するカスタマイズが必要です。また、HMP-ADIFと連携し、HMP-ADIFのロギングパターンでログを出力する場合も、このファイルのカスタマイズが必要です。詳細については、「(3)　メッセージログ機能が参照するファイル」を参照してください。

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

アプリケーションでジョブスケジューリングライブラリQuartzを使用する場合、スケジューラはデフォルトスケジューラを使用するか、または専用のスケジューラを作成して使用してください。

また、HMP-PCTOで定義しているQuartzスケジューラ用の設定ファイル「hmppcto_quartz.properties」と同名のファイルは作成、または使用しないでください。

2.3　SQL-Participantのビルド（SQL-Participant限定）

HMP-PCTOライブラリを使用したSQL-Participantのビルドについて説明します。

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

2.3.1　作業項目の一覧（SQL-Participant限定）

SQL-Participantのビルドの作業項目の一覧を次の表に示します。

表2‒6　SQL-Participantのビルドの作業項目の一覧

分類

作業項目

備考

参照先

共通

事前準備（通常版かつSQL-Participant限定）

通常版の場合で、SQL-Participantを使用するときだけ実施します。

2.3.2　事前準備（通常版かつSQL-Participant限定）

ライブラリのセットアップ（通常版かつSQL-Participant限定）

通常版の場合で、SQL-Participantを使用するときだけ実施します。

2.3.3　ライブラリのセットアップ（通常版かつSQL-Participant限定）

SQL-Participantのビルド

JARファイルのビルド（SQL-Participant限定）

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

2.3.4　JARファイルのビルド（SQL-Participant限定）

2.3.2　事前準備（通常版かつSQL-Participant限定）

HMP-PCTOライブラリを使用したアプリケーションの開発は、Gradle（バージョン7.3.3以上）の利用を前提としています。これらのソフトウェアを開発環境にインストールしてください。

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

2.3.3　ライブラリのセットアップ（通常版かつSQL-Participant限定）

HMP-PCTOのライブラリ、およびHMP-PCTOが依存するライブラリのセットアップについては、「3.2.3　ライブラリのセットアップ（通常版限定）」を参照してください。

2.3.4　JARファイルのビルド（SQL-Participant限定）

「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル（sql-participant-V.R.S※.jar）」は、HMP-PCTOの提供物を使用してビルドします。

HMP-PCTOが提供する「SQL-Participant用Javaプロジェクトディレクトリ」（java-projects/sql-participant）で、次に示すGradleのコマンドを実行してJARファイルをビルドしてください。

cd java-projects/sql-participant
gradle build

ビルドに成功すると、次に示すパスに「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル（sql-participant-V.R.S※.jar）」が生成されます。

java-projects/sql-participant/build/lib/sql-participant-V.R.S※.jar

注※

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

2.4　コンテナイメージ作成

ここでは、ユーザ責務のコンテナイメージ作成方法について説明します。

コンテナイメージビルド環境のコンテナエンジンはユーザ任意のものを使用してください。説明中のコンテナエンジンのコマンド例は、Dockerを使用した場合を例に記述しています。コンテナエンジンの各コマンドの詳細については、使用するコンテナエンジンのマニュアルなどを参照してください。

2.4.1　作業項目の一覧

コンテナイメージ作成の作業項目の一覧を次の表に示します。

表2‒7　コンテナイメージ作成の作業項目の一覧

作業項目

備考

参照先

事前準備

必ず実施します。

2.4.2　事前準備

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成（通常版限定）

通常版の場合で、uCosminexus Application Runtime with Java for Spring Bootを導入するときだけ作成します。

2.4.3　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成（通常版限定）

JDKコンテナベースイメージの作成

uCosminexus Application Runtime with Java for Spring Bootを導入しない場合だけ作成します。

2.4.4　JDKコンテナベースイメージの作成

Orchestratorコンテナイメージの作成

必ず作成します。

2.4.5　Orchestratorコンテナイメージの作成

Entity-Serviceコンテナイメージの作成

サービス間を中継するサービスとしてのEntity-Serviceがある場合だけ作成します。

詳細については、取扱説明書「HMP-PCTO テクニカルガイド」のトランザクションのモデル（その2）に関する説明を参照してください。

2.4.6　Entity-Serviceコンテナイメージの作成

SQL-Participantコンテナイメージの作成（SQL-Participant限定）

SQL-Participantを使用する場合だけ作成します。

2.4.7　SQL-Participantコンテナイメージの作成（SQL-Participant限定）

Entity-Module/TCC-Participantコンテナイメージの作成（TCC-Participant限定）

TCC-Participantを使用する場合だけ作成します。

2.4.8　Entity-Module/TCC-Participantコンテナイメージの作成（TCC-Participant限定）

2.4.2　事前準備

コンテナイメージを登録するためのコンテナレジストリ、およびコンテナイメージをビルドするためのDockerなどのコンテナエンジンをインストールしたコンテナイメージビルド環境を用意してください。

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

2.4.3　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成（通常版限定）

このコンテナベースイメージは、通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime with Java for Spring Bootを導入する場合だけ作成します。

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージは、uCosminexus Application Runtime with Java for Spring Bootを導入するユーザ責務のコンテナイメージのベースイメージとして使用します。uCosminexus Application Runtime with Java for Spring Bootのインストール部分を共通のベースイメージとして作成することで、各種コンテナイメージのContainerfileの記述量の軽減、およびビルドした各種コンテナイメージのサイズを低減できるメリットがあります。

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成方法について説明します。

(1)　Containerfileの作成

「5.3.1　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（通常版限定）」に記載されている要件を満たすように、uCosminexus Application Runtime with Java for Spring BootコンテナベースイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860 AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncompress ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN     …3
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HL0T ./
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/ubi8/ubi-minimal:8.8-860     …5
COPY --from=builder /opt /opt     …6
COPY --from=builder /etc/.java /etc/.java     …7
RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        dnf ¥
    && dnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        --allowerasing ¥
        curl-7.61.1 ¥
        jq-1.6 ¥
        <uCosminexus Application Runtime with Java for Spring Bootの前提RPMパッケージ>     …8
        ：
    && dnf clean all ¥
    && rm -rf /var/cache/dnf/*
ENV PATH=/opt/Cosminexus/jdk/bin:$PATH     …9
USER 1001:0     …10
WORKDIR /deployments     …11

記述例の番号は、説明の番号と対応しています。

マルチステージビルド用のコンテナベースイメージとしてUBI 8の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 8 Minimal 8.8」を使用しています。

uCosminexus Application Runtime with Java for Spring Bootのインストーラの前提RPMパッケージをインストールします。

uCosminexus Application Runtime with Java for Spring Bootのインストーラをコンテナ上に展開してインストールを実行します（「-c」オプションに「HL0T」（uCosminexus Application Runtime with Java for Spring Boot）を指定して実行してください）。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Bootの修正パッチを適用する場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootの修正パッチをコンテナ上に展開してUPDATEプログラムを実行します（「-f」オプションを指定して実行してください）。

コンテナベースイメージとしてUBI 8の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 8 Minimal 8.8」を使用しています。

マルチステージビルド用のコンテナイメージからuCosminexus Application Runtime with Java for Spring Bootのインストール先ディレクトリ「/opt」をコピーします。これによって、このコンテナイメージにuCosminexus Application Runtime with Java for Spring Bootをインストールした状態となります。

HMP-PCTOの前提RPMパッケージをインストールします。

uCosminexus Application Runtime with Java for Spring Bootの前提RPMパッケージをインストールします。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Bootのリリースノートを参照し、uCosminexus Application Runtime with Java for Spring Bootに必要な前提RPMパッケージを記述してください。

環境変数PATHの先頭に、日立JDKのコマンド群がインストールされているディレクトリを追加します。

任意のコンテナ実行ユーザ・グループを指定します。

アプリケーション配置用ディレクトリを作成します。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、PodのKubernetesマニフェストでrunAsUserフィールドによるコンテナ起動ユーザが未設定の場合、コンテナイメージビルド時に設定したユーザ・グループを使用しないで、一定範囲内のランダムなUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒8　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

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の修正パッチを適用する場合だけ格納してください。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]ucars:<uCosminexus Application Runtime with Java for Spring Bootバージョン(V.R.S※)>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/ucars:V.R.S※ .

この例では、uCosminexus Application Runtime with Java for Spring Bootバージョンを「V.R.S※」としています。

注※

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

(4)　コンテナイメージの登録

ビルドしたuCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.4.4　JDKコンテナベースイメージの作成

このコンテナベースイメージは、トライアル版の場合、または通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime with Java for Spring Bootを導入しない場合だけ作成します。

JDKコンテナベースイメージは、uCosminexus Application Runtime with Java for Spring Bootを導入しないユーザ責務のコンテナイメージのベースイメージとして使用します。JDKのインストール部分を共通のベースイメージとして作成することで、各種コンテナイメージのContainerfileの記述量の軽減、およびビルドした各種コンテナイメージのサイズを低減できるメリットがあります。

JDKコンテナベースイメージの作成方法について説明します。

(1)　Containerfileの作成

「5.3.2　JDKコンテナベースイメージ」に記載されている要件を満たすように、JDKコンテナベースイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版の場合

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        java-1.8.0-openjdk-headless ¥
        curl-7.61.1 ¥
        jq-1.6 ¥
    && microdnf clean all ¥
    && rm -rf /var/cache/dnf/*     …3
USER 1001:0     …4
WORKDIR /deployments

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとしてUBI 8の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 8 Minimal 8.8」を使用しています。

前提RPMパッケージをインストールします。この例では、Java SE 8準拠のJDKとして「OpenJDK 8」を使用しています。

アプリケーション配置用ディレクトリを作成します。

任意のコンテナ実行ユーザ・グループを指定します。

■トライアル版の場合

FROM quay.io/almalinuxorg/8-minimal:8.8     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        java-1.8.0-openjdk-headless ¥
        curl-7.61.1 ¥
        jq-1.6 ¥
    && microdnf clean all ¥     …3
    && rm -rf /var/cache/dnf/*     …4
USER 1001:0
WORKDIR /deployments

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとしてAlmalinux 8 Minimal 8.8を指定します。

前提RPMパッケージをインストールします。この例では、Java SE 8準拠のJDKとして「OpenJDK 8」を使用しています。

アプリケーション配置用ディレクトリを作成します。

任意のコンテナ実行ユーザ・グループを指定します。

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、PodのKubernetesマニフェストでrunAsUserフィールドによるコンテナ起動ユーザが未設定の場合、コンテナイメージビルド時に設定したユーザ・グループを使用しないで、一定範囲内のランダムなUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒9　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:V.R.S※ .

この例では、JDKコンテナベースイメージのイメージ名・タグ名を「jdk:V.R.S※」としています。

注※

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

(4)　コンテナイメージの登録

ビルドしたJDKコンテナベースイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.4.5　Orchestratorコンテナイメージの作成

Orchestratorコンテナイメージの作成方法について説明します。

(1)　Containerfileの作成

「5.3.3　Orchestratorコンテナイメージ」に記載されている要件を満たすように、OrchestratorコンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版・uCosminexus Application Runtime with Java for Spring Boot導入ありの場合

FROM myregistry.example.com/myproject/ucars:V.R.S※     …1
COPY --chown=1001:0 --chmod=0440 ./orchestrator-V.R.S※.jar /deployments/     …2
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-V.R.S※.jar     …3

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.4.3　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:V.R.S※」を指定しています。

「ユーザのOrchestratorアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestratorアプリケーションのJARファイル」の名前を「orchestrator-V.R.S※.jar」としています。

コマンドを「uCosminexus Application Runtime with Java for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestratorアプリケーションのJARファイル」を指定します。

注※

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

■通常版・uCosminexus Application Runtime with Java for Spring Boot導入なし、トライアル版の場合

FROM myregistry.example.com/myproject/jdk:V.R.S※     …1
COPY --chown=1001:0 --chmod=0440 ./orchestrator-V.R.S※.jar /deployments/     …2
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/orchestrator-V.R.S※.jar     …3

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.4.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:V.R.S※」を指定しています。

「ユーザのOrchestratorアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのOrchestratorアプリケーションのJARファイル」の名前を「orchestrator-V.R.S※.jar」としています。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestratorアプリケーションのJARファイル」を指定します。

注※

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

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、PodのKubernetesマニフェストでrunAsUserフィールドによるコンテナ起動ユーザが未設定の場合、コンテナイメージビルド時に設定したユーザ・グループを使用しないで、一定範囲内のランダムなUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒10　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

<ユーザのOrchestratorアプリケーションのJARファイル>

ユーザ

−

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Orchestratorコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Orchestratorコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/orchestrator:V.R.S※ .

この例では、Orchestratorコンテナイメージのイメージ名・タグ名を「orchestrator:V.R.S※」としています。

注※

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

(4)　コンテナイメージの登録

ビルドしたOrchestratorコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.4.6　Entity-Serviceコンテナイメージの作成

Entity-Serviceコンテナイメージの作成方法について説明します。

サービス間を中継するサービスとしてのEntity-Serviceがある場合だけ作成します。

詳細については、取扱説明書「HMP-PCTO テクニカルガイド」のトランザクションのモデル（その2）に関する説明を参照してください。

ユーザ責務のKubernetesアプリケーションのEntity-Serviceコンテナの数だけ、このコンテナイメージのContainerfileを作成しビルドしてください。

(1)　Containerfileの作成

「5.3.4　Entity-Serviceコンテナイメージ」に記載されている要件を満たすように、Entity-ServiceコンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版・uCosminexus Application Runtime with Java for Spring Boot導入ありの場合

FROM myregistry.example.com/myproject/ucars:V.R.S※     …1
COPY --chown=1001:0 --chmod=0440 ./entity-service-V.R.S※.jar /deployments/     …2
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/entity-service-V.R.S※.jar     …3

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.4.3　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:V.R.S※」を指定しています。

「ユーザのEntity-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-ServiceアプリケーションのJARファイル」の名前を「entity-service-V.R.S※.jar」としています。

コマンドを「uCosminexus Application Runtime with Java for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-ServiceアプリケーションのJARファイル」を指定します。

注※

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

■通常版・uCosminexus Application Runtime with Java for Spring Boot導入なし、トライアル版の場合

FROM myregistry.example.com/myproject/jdk:V.R.S※     …1
COPY --chown=1001:0 --chmod=0440 ./entity-service-V.R.S※.jar /deployments/     …2
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/entity-service-V.R.S※.jar     …3

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.4.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:V.R.S※」を指定しています。

「ユーザのEntity-ServiceアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-ServiceアプリケーションのJARファイル」の名前を「entity-service-V.R.S※.jar」としています。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-ServiceアプリケーションのJARファイル」を指定します。

注※

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

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、PodのKubernetesマニフェストでrunAsUserフィールドによるコンテナ起動ユーザが未設定の場合、コンテナイメージビルド時に設定したユーザ・グループを使用しないで、一定範囲内のランダムなUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおりContainerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒11　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

<ユーザのEntity-ServiceアプリケーションのJARファイル>

ユーザ

−

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

Entity-Serviceコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Entity-Serviceコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/entity-service:V.R.S※ .

この例では、Entity-Serviceコンテナイメージのイメージ名・タグ名を「entity-service:V.R.S※」としています。

注※

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

(4)　コンテナイメージの登録

ビルドしたEntity-Serviceコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.4.7　SQL-Participantコンテナイメージの作成（SQL-Participant限定）

SQL-Participantコンテナイメージの作成方法について説明します。

(1)　Containerfileの作成

「5.3.5　SQL-Participantコンテナイメージ」に記載されている要件を満たすように、SQL-ParticipantコンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版・uCosminexus Application Runtime with Java for Spring Boot導入ありの場合

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncompress ¥
        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:V.R.S※     …5
RUN mkdir /deployments/eads-lib ¥
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log     …6
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-V.R.S※.jar /deployments/     …11
COPY --chown=1001:0 --chmod=0440 ./pdjdbc4.jar /deployments/     …12
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …13
CMD /opt/hitachi/ucars/bin/starter.sh java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/sql-participant-V.R.S※.jar     …14

記述例の番号は、説明の番号と対応しています。

マルチステージビルド用のコンテナベースイメージとしてUBI 8の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 8 Minimal 8.8」を使用しています。

Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。

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.4.3　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:V.R.S※」を指定しています。

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）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル（sql-participant-V.R.S.jar）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル（sql-participant-V.R.S.jar）」の名前を「sql-participant-V.R.S※.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パラメタに設定する値が「HiRDB」の場合だけ記述します。HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナを実行するユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「uCosminexus Application Runtime with Java for Spring Bootのプロセスモニタ起動スクリプト（starter.sh）」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル（sql-participant-V.R.S※.jar）」を指定します。

注※

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

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:V.R.S※     …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-V.R.S※.jar /deployments/     …4
COPY --chown=1001:0 --chmod=0440 ./postgresql-42.2.22.jar /deployments/     …5
COPY --chown=1001:0 --chmod=0440 ./HiRDB.ini /deployments/     …6
CMD java ${HMPPCTO_JAVA_OPTIONS} -jar /deployments/sql-participant-V.R.S※.jar     …7

記述例の番号は、説明の番号と対応しています。

＜説明＞

コンテナベースイメージとして「2.4.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:V.R.S※」を指定しています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル（sql-participant-V.R.S※.jar）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル（sql-participant-V.R.S※.jar）」の名前を「sql-participant-V.R.S※.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パラメタに設定する値が「HiRDB」の場合、HiRDBへの接続に必要なHiRDBのクライアント環境定義ファイル（HiRDB.ini）を配置し、パーミッションにコンテナ実行ユーザおよびグループそれぞれの読み取り権限を付与します。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル(sql-participant-V.R.S※.jar)」を指定します。

注※

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

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、PodのKubernetesマニフェストでrunAsUserフィールドによるコンテナ起動ユーザが未設定の場合、コンテナイメージビルド時に設定したユーザ・グループを使用しないで、一定範囲内のランダムなUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒12　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

sql-participant-V.R.S.jar

(HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル)

ユーザ

「2.3　SQL-Participantのビルド（SQL-Participant限定）」で作成したもの

<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を使用して、コンテナイメージをビルドします。

SQL-Participantコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<SQL-Participantコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/sql-participant:V.R.S※ .

この例では、SQL-Participantコンテナイメージのイメージ名・タグ名を「sql-participant:V.R.S※」としています。

注※

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

(4)　コンテナイメージの登録

ビルドしたSQL-Participantコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

2.4.8　Entity-Module/TCC-Participantコンテナイメージの作成（TCC-Participant限定）

Entity-Module/TCC-Participantコンテナイメージの作成方法について説明します。

また、ユーザ責務のKubernetesアプリケーションのEntity-Module/TCC-Participantコンテナの数だけ、このコンテナイメージのContainerfileを作成しビルドしてください。

(1)　Containerfileの作成

「5.3.6　Entity-Module/TCC-Participantコンテナイメージ」に記載されている要件を満たすように、Entity-Module/TCC-ParticipantコンテナイメージをビルドするためのContainerfileを作成してください。

Containerfileの記述例を次に示します。

■通常版・uCosminexus Application Runtime with Java for Spring Boot導入ありの場合

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncompress ¥
        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:V.R.S※     …5
RUN mkdir /deployments/eads-lib ¥
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log     …6
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の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 8 Minimal 8.8」を使用しています。

Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。

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.4.3　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの作成（通常版限定）」で作成した「uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/ucars:V.R.S※」を指定しています。

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-Module/TCC-ParticipantアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル」の名前を「entity-module-tcc-participant-V.R.S※.jar」としています。

コマンドを「uCosminexus Application Runtime with Java for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル」を指定します。

注※

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

■通常版・uCosminexus Application Runtime with Java for Spring Boot導入なしの場合

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860  AS builder     …1
RUN microdnf install ¥     …2
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncompress ¥
        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:V.R.S※     …5
RUN mkdir /deployments/eads-lib ¥
    && mkdir /deployments/eads-log ¥
    && chown 1001:0 /deployments/eads-log ¥
    && chmod 770 /deployments/eads-log     …6
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の任意のベースイメージを指定します。この例では、「Red Hat Universal Base Image 8 Minimal 8.8」を使用しています。

Hitachi Elastic Application Data Store Client for Javaのインストーラの前提RPMパッケージをインストールします。

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.4.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:V.R.S※」を指定しています。

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-Module/TCC-ParticipantアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル」の名前を「entity-module-tcc-participant-V.R.S※.jar」としています。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル」を指定します。

注※

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

■トライアル版の場合

FROM myregistry.example.com/myproject/jdk:V.R.S※     …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.4.4　JDKコンテナベースイメージの作成」で作成した「JDKコンテナベースイメージ」を指定します。この例では、「myregistry.example.com/myproject/jdk:V.R.S※」を指定しています。

「HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの実行権限を付与します。

「ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル」を配置し、パーミッションにコンテナ実行ユーザとグループそれぞれの読み取り権限を付与します。この例では、「ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル」の名前を「entity-module-tcc-participant-V.R.S※.jar」としています。

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル」を指定します。

注※

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

ヒント

Red Hat OpenShift Container Platformで実行する場合のファイルのパーミッション設定

Red Hat OpenShift Container Platformには、SCC（Security Context Constraints）と呼ばれる、Podのパーミッションを制御する機能があります。このSCCのデフォルトの設定である「restricted」では、PodのKubernetesマニフェストでrunAsUserフィールドによるコンテナ起動ユーザが未設定の場合、コンテナイメージビルド時に設定したユーザ・グループを使用しないで、一定範囲内のランダムなUID（非root）とGID「0」（root）でコンテナを実行します。

このため、Red Hat OpenShift Container PlatformのSCCのrestricted設定で動作可能なコンテナイメージを作成する際は、配置するファイルのグループに「0」（root）を設定し、パーミッションにはオーナーの権限に加えてグループの権限も付与することを推奨します。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表2‒13　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

−

<ユーザのEntity-Module/TCC-Participantアプリケーションの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-Module/TCC-Participantコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<Entity-Module/TCC-Participantコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/entity-module-tcc-participant:V.R.S※ .

この例では、Entity-Module/TCC-Participantコンテナイメージのイメージ名・タグ名を「entity-module-tcc-participant:V.R.S※」としています。

注※

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

(4)　コンテナイメージの登録

ビルドしたEntity-Module/TCC-Participantコンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

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

HMP-PCTOが前提とする共有ファイルシステムでの作業について説明します。

共有ファイルシステムでの作業の詳細については、OS、各製品のマニュアルなどを参照してください。

2.5.1　作業項目の一覧（通常版限定）

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

表2‒14　HMP-PCTOが前提とする共有ファイルシステムでの作業項目の一覧

作業項目

備考

参照先

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

次のどちらかのKubernetesアプリケーションをデプロイするための作業時に作成します。

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

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

2.5.2　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

2.5.2　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリを、次の要領で全ワーカーノードで共有可能なNFSに作成してください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。

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

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

詳細については、「3.5.4　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）」を参照してください。

2.6　Kubernetesマニフェスト作成

ユーザ責務のKubernetesアプリケーションの、Kubernetesマニフェストの作成方法について説明します。

Kubernetesマニフェストの記述仕様の詳細は、Kubernetesのマニュアルなどを参照してください。

SQL-Participantを構成するPodを定義したKubernetesのServiceのService名とネームスペース名の長さの合計は、40バイト以下としてください。

TCC-Participantを構成するPodを定義したKubernetesのServiceのService名とネームスペース名の長さの合計は、40バイト以下としてください。

Kubernetesマニフェスト作成時のログおよびトラブルシュート情報の取得の設定については、「3.9.1　ログおよびトラブルシュート情報の取得の設定」を参照してください。

2.6.1　作業項目の一覧

Kubernetesマニフェスト作成の作業項目の一覧を次の表に示します。

表2‒15　Kubernetesマニフェスト作成の作業項目の一覧

作業項目

備考

参照先

OrchestratorのKubernetesマニフェストの作成

必ず作成します。

2.6.2　OrchestratorのKubernetesマニフェストの作成

Entity-Service（Participantコンテナを含まないPodとする場合）のKubernetesマニフェストの作成

サービス間を中継するサービスとしてのEntity-Serviceがある場合だけ作成します。

詳細については、取扱説明書「HMP-PCTO テクニカルガイド」のトランザクションのモデル（その2）に関する説明を参照してください。

2.6.3　Entity-Service（Participantコンテナを含まないPodとする場合）のKubernetesマニフェストの作成

SQL-ParticipantのKubernetesマニフェストの作成（SQL-Participant限定）

SQL-Participantを使用する場合だけ作成します。

2.6.4　SQL-ParticipantのKubernetesマニフェストの作成（SQL-Participant限定）

TCC-ParticipantのKubernetesマニフェストの作成（TCC-Participant限定）

TCC-Participantを使用する場合だけ作成します。

2.6.5　TCC-ParticipantのKubernetesマニフェストの作成（TCC-Participant限定）

Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

必ず作成します。

2.6.6　Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

次のどちらかのKubernetesアプリケーションのKubernetesマニフェスト作成時に作成します。

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

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

2.6.7　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

通常版の場合だけ作成します。次のどちらかのKubernetesアプリケーションのKubernetesマニフェスト作成時に作成します。

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

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

2.6.8　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

2.6.2　OrchestratorのKubernetesマニフェストの作成

「6.4.1　Orchestratorの要件」に記載されている要件を満たすように、OrchestratorをデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1     …1
kind: Deployment
metadata:
  name: orchestrator
  namespace: my-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: orchestrator
  template:
    metadata:
      labels:
        app.kubernetes.io/name: orchestrator
    spec:
      serviceAccount: orchestrator-service-account     …6
      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     …4
          containerPort: 8080
          protocol: TCP
        - name: ucars
          containerPort: 28081     …13
          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
      - name: filebeat-sidecar     …9
        image: myregistry.example.com/myproject/filebeat:V.R.S※2
        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
           mountPath: /deployments/tomcat
      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
---
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
    protocol: TCP
    port: 28081    …13
    targetPort: ucars
---
apiVersion: v1
kind: ConfigMap　　…5
metadata:
  name: orchestrator-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    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.url=http://jaeger-collector:14268/api/traces
---
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
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: orchestrator-filebeat-sidecar-config
  namespace: my-namespace
data:     …9
  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」としています。

初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

コンテナ構成にOrchestratorコンテナを定義します。「2.4.6　Entity-Serviceコンテナイメージの作成」で作成したコンテナイメージを指定します。

ユーザ責務のKubernetesアプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

Orchestratorコンテナのパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、設定するパラメタは最小限の例としています。

Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

Orchestratorコンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントし、 /deployments/tomcat にTomcatのログディレクトリをマウントします。この設定によってTomcatからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

OrchestratorのJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootの設定ファイル(config.properties)をOrchestratorコンテナ内にマウントします。この例では、次のパラメタを設定しています

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「10.6.2　情報の収集方法」を参照して設定してください。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームをOrchestratorコンテナ内にマウントします。

.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.8　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime with Java for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

Orchestratorコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

2.6.3　Entity-Service（Participantコンテナを含まないPodとする場合）のKubernetesマニフェストの作成

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

「6.4.2　Entity-Service（Participantコンテナを含まないPodとする場合）の要件」に記載されている要件を満たすように、Entity-ServiceをデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1     …1
kind: Deployment
metadata:
  name: entity-service
  namespace: my-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: entity-service
  template:
    metadata:
      labels:
        app.kubernetes.io/name: entity-service
    spec:
      serviceAccount: entity-service-service-account     …6
      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: entity-service     …3
        image: myregistry.example.com/myproject/entity-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
          containerPort: 28081     …13
          protocol: TCP
        env:
        - name: TZ     …7
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS　…10
          value: -XX:+UseG1GC
        volumeMounts:
        - name: entity-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
      - name: filebeat-sidecar
        image: myregistry.example.com/myproject/filebeat:V.R.S※2
        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     …9
        securityContext:
          runAsUser: 0
        volumeMounts:
         - name: beatconfig
           mountPath: /usr/share/filebeat/filebeat.yml
           readOnly: true
           subPath: filebeat.yml
         - name: tomcat
           mountPath: /deployments/tomcat
      volumes:
      - name: entity-service-config     …5
        configMap:
          name: entity-service-config
          items:
          - key: application.properties
            path: application.properties
      - name: ucars-config     …11
        configMap:
          name: entity-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
---
apiVersion: v1
kind: Service
metadata:
  name: entity-service
  namespace: my-namespace
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: entity-service
  ports:
  - name: http     …4
    protocol: TCP
    port: 8080
    targetPort: http
  - name: grpc     …7
    protocol: TCP
    port: 20552
    targetPort: grpc
  - name: ucars
    protocol: TCP
    port: 28081     …13
    targetPort: ucars
---
apiVersion: v1     …5
kind: ConfigMap
metadata:
  name: entity-service-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    jp.co.Hitachi.soft.hmppcto.client.proposer.type=SQL
    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
---
apiVersion: v1  …11
kind: ConfigMap
metadata:
  name: entity-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
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: es-filebeat-sidecar-config
  namespace: my-namespace  …9
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: entity-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」としています。

初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

コンテナ構成にEntity-Serviceコンテナを定義します。「2.4.6　Entity-Serviceコンテナイメージの作成」で作成したコンテナイメージを指定します。

ユーザ責務のKubernetesアプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

Entity-Serviceコンテナのパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。

Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

Entity-Serviceコンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントし、 /deployments/tomcat にTomcatのログディレクトリをマウントします。この設定によってTomcatからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

Entity-ServiceのJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootの設定ファイル(config.properties)をEntity-Serviceコンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「10.6.2　情報の収集方法」を参照して設定してください。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームをEntity-Serviceコンテナ内にマウントします。

.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.8　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime with Java for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

Entity-Serviceコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

2.6.4　SQL-ParticipantのKubernetesマニフェストの作成（SQL-Participant限定）

「6.4.3　SQL-Participantの要件」に記載されている要件を満たすように、ParticipantをデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1     …1
kind: Deployment
metadata:
  name: sql-participant
  namespace: my-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: sql-participant
  template:
    metadata:
      labels:
        app.kubernetes.io/name: sql-participant
    spec:
      serviceAccount: sql-participant-service-account     …13
      initContainers:
      - name: dependency-checker     …2
        image: myregistry.example.com/myproject/dependency-checker:V.R.S※
        args:
        - "30"
        - "10"
        - "10"
        - "10"
        - my-namespace/statefulsets/mediator
        - my-namespace/statefulsets/eads-server     …21
        - my-namespace/statefulsets/postgresql
      containers:
      - name: entity-service     …3
        image: myregistry.example.com/myproject/entity-service:V.R.S※
        resources:     …29
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: http     …4
          containerPort: 8080
          protocol: TCP
        - name: ucars-entity
          containerPort: 28082 …28
          protocol: TCP
        env:
        - name: TZ     …15
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS
          value: -XX:+UseG1GC
        volumeMounts:
        - name: entity-service-config     …5
          mountPath: /deployments/config
        - name: entity-service-ucars-config　…22
          mountPath: /opt/hitachi/ucars/conf
        - name: snapshot-volume　…23
          mountPath: /ucars-snapshots
        - name: tomcat　…19
          mountPath: /deployments/tomcat
      - name: sql-participant     …6
        image: myregistry.example.com/myproject/sql-participant:V.R.S※
        resources:     …30
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: grpc     …7
          containerPort: 20552
          protocol: TCP
        - name: http     …17
          containerPort: 8080
          protocol: TCP
        - name: ucars-sql
          containerPort: 28081　…28
          protocol: TCP
        env:
        - name: TZ     …16
          value: Asia/Tokyo
        - name: HMPPCTO_JAVA_OPTIONS
          value: -XX:+UseG1GC
        volumeMounts:
        - name: sql-participant-config     …7
          mountPath: /deployments/config
        - name: sql-participant-ucars-config  …24
          mountPath: /opt/hitachi/ucars/conf
        - name: snapshot-volume  …25
          mountPath: /ucars-snapshots
        - name: eads-config     …14
          mountPath: /eads-properties
        - name: tomcat     …19
          mountPath: /deployments/tomcat
        - name: eads
          mountPath: /deployments/eads-log   …20
        livenessProbe:     …9
          exec:
            command:
            - /deployments/health_check.sh
            - "0"
            - "0"
            - "10"
            - "10"
            - "20555"
          initialDelaySeconds: 180
          periodSeconds: 30
          failureThreshold: 3
          timeoutSeconds: 10
        lifecycle:
          postStart:     …10
            exec:
              command:
              - /deployments/health_check.sh
              - "30"
              - "10"
              - "10"
              - "10"
              - "20555"
          preStop:     …11
            exec:
              command:
              - /deployments/wait_transactions.sh
              - "30"
              - "10"
              - "10"
              - "10"
              - "20555"
      - name: filebeat-sidecar     …18
        image: myregistry.example.com/myproject/filebeat:V.R.S※
        args:
        - "-e"
        - "-E"
        - "http.enabled=true"
        env:     …31
        - 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     …18
        securityContext:
          runAsUser: 0
        volumeMounts:
          - name: beatconfig
            mountPath: /usr/share/filebeat/filebeat.yml
            readOnly: true
            subPath: filebeat.yml
          - name: tomcat
            mountPath: /deployments/tomcat
          - name: eads
            mountPath: /deployments/eads-log
      terminationGracePeriodSeconds: 330     …12
      volumes:
      - name: entity-service-config     …5
        configMap:
          name: entity-service-config
          items:
          - key: application.properties
            path: application.properties
      - name: entity-service-ucars-config　…22
        configMap:
          name: entity-service-ucars-config
          items:
            - key: config.properties
              path: config.properties
      - name: snapshot-volume　…23,25
        persistentVolumeClaim:
          claimName: snapshot-volume
      - name: sql-participant-config
        configMap:
          name: sql-participant-config     …8
          items:
          - key: application.properties
            path: application.properties
      - name: sql-participant-ucars-config …24
        configMap:
          name: sql-participant-ucars-config
          items:
            - key: config.properties
              path: config.properties
      - name: eads-config     …14
        configMap:
          name: eads-config
          items:
          - key: hmp-pcto.eads-client.properties
            path: hmp-pcto.eads-client.properties
      - name: beatconfig     …18
        configMap:
          name: sql-p-filebeat-sidecar-config
      - name: tomcat
      - name: eads
---
apiVersion: v1
kind: Service
metadata:
  name: sp
  namespace: my-namespace
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: sql-participant
  ports:
  - name: http     …4
    protocol: TCP
    port: 8080
    targetPort: http
  - name: grpc     …7
    protocol: TCP
    port: 20552
    targetPort: grpc
  - name: ucars-sql
    protocol: TCP
    port: 28081 …28
    targetPort: ucars-sql
  - name: ucars-entity
    protocol: TCP
    port: 28082 …28
    targetPort: ucars-entity
---
apiVersion: v1     …5
kind: ConfigMap
metadata:
  name: entity-service-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=8080
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    jp.co.Hitachi.soft.hmppcto.client.proposer.type=SQL
    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
    spring.sql.init.mode=never
---
apiVersion: v1　…22
kind: ConfigMap
metadata:
  name: entity-service-ucars-config
  namespace: my-namespace
data:
  config.properties: |
    monitor.rest.bindaddress=0.0.0.0
    monitor.rest.port=28082　…28
    snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot
---
apiVersion: v1     …8
kind: ConfigMap
metadata:
  name: sql-participant-config
  namespace: my-namespace
data:
  application.properties: |
    server.port=20555
    server.tomcat.accesslog.enabled=true
    server.tomcat.basedir=tomcat
    jp.co.Hitachi.soft.hmppcto.sql.pod.service-name=sp.my-namespace
    jp.co.Hitachi.soft.hmppcto.sql.xa-server-name=sql-participant
    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     …32
    jp.co.Hitachi.soft.hmppcto.tracing.url=http://jaeger-collector:14268/api/traces
---
apiVersion: v1 …24
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 …28
    snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot
---
apiVersion: v1     …14
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     …13
kind: ServiceAccount
metadata:
  name: sql-participant-service-account
  namespace: my-namespace
---
apiVersion: v1     …18
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:     …31
      - 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"]
---

注※

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

記述例の番号は、説明の番号と対応しています。

＜説明＞

この例では、各KubernetesオブジェクトのNamespace名（.metadata.namespaceフィールド）は、「my-namespace」としています。

ワークロードリソースを定義します。この例では、ワークロードリソースを「Deployment」としています。

初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

コンテナ構成にEntity-Serviceコンテナを定義します。「2.4.6　Entity-Serviceコンテナイメージの作成」で作成したコンテナイメージを指定します。

ユーザ責務のKubernetesアプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

Entity-Serviceコンテナのパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。

コンテナ構成にSQL-Participantコンテナを定義します。「2.4.7　SQL-Participantコンテナイメージの作成（SQL-Participant限定）」で作成したコンテナイメージを指定します。

SQL-ParticipantのgRPCポート番号（Mediator向け）をKubernetesクラスタ内で公開するように定義します。SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.mediator.portパラメタの設定値と同じポート番号を指定します。

SQL-Participantのパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。

コンテナライフサイクル設定のLiveness Probeを定義します。

コンテナライフサイクル設定のpostStartフックを定義します。

コンテナライフサイクル設定のpreStopフックを定義します。

Podライフサイクル設定のterminationGracePeriodSecondsを定義します。

Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

EADSクライアント定義のパラメタを、EADSクライアント定義ファイルのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。EADSクライアント定義ファイルのディレクトリおよび名称は「8.2.4　SQL-Participant」のパラメタjp.co.Hitachi.soft.hmppcto.external-consensus.eads.propertiesに指定した値と合わせる必要があります。

トライアル版の場合、この定義は必要ありません。

Entity-Serviceコンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

SQL-Participantコンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

Prometheus向けで使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントします。この設定によってEADSからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

EADSのログ出力ディレクトリとして/deployments/eads-logをマウントします。

通常版の場合はmy-namespace/statefulsets/eads-serverを記載してください。トライアル版の場合はmy-namespace/deployments/ext-consを記載してください。

Entity-ServiceのJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

SQL-ParticipantのJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootの設定ファイル(config.properties)をEntity-Serviceコンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28082

プロセスモニタのHTTP機能の受付ポート番号を定義します。設定値はデフォルト値(28081)とは異なるポート番号に変更します。これは、同一Pod内に起動するEntity-ServiceコンテナとSQL-Participantコンテナでポート番号の重複を避けるためです。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「10.6.2　情報の収集方法」を参照して設定してください。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームをEntity-Serviceコンテナ内にマウントします。

.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.8　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime with Java for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootの設定ファイル(config.properties)をSQL-Participantコンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「10.6.2　情報の収集方法」を参照して設定してください。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームをSQL-Participantコンテナ内にマウントします。.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.8　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime with Java for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

Entity-Serviceコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

SQL-Participantコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

SQL-Participantが接続するRDBMSを指定します。PostgreSQLを指定する場合、「8.4.1　PostgreSQL（SQL-Participant限定）」のパラメタも確認してください。

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

SQL-Participantを構成するPodを定義したKubernetesのServiceのService名とネームスペース名の長さの合計は、40バイト以下としてください。

2.6.5　TCC-ParticipantのKubernetesマニフェストの作成（TCC-Participant限定）

「6.4.4　TCC-Participantの要件」に記載されている要件を満たすように、ParticipantをデプロイするためのKubernetesマニフェストを作成してください。

Kubernetesマニフェストの記述例を次に示します。

apiVersion: apps/v1     …1
kind: Deployment
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
    spec:
      serviceAccount: tcc-participant-service-account     …11
      initContainers:
      - name: dependency-checker     …2
        image: myregistry.example.com/myproject/dependency-checker:V.R.S※
        args:
        - "30"
        - "10"
        - "10"
        - "10"
        - my-namespace/statefulsets/mediator
        - my-namespace/statefulsets/eads-server …21
      containers:
      - name: entity-module-tcc-participant     …3
        image: myregistry.example.com/myproject/entity-module-tcc-participant:V.R.S※
        resources:     …22
          limits:
            cpu: 2
            memory: 1Gi
          requests:
            cpu: 1
            memory: 512Mi
        ports:
        - name: http     …4
          containerPort: 8080
          protocol: TCP
        - name: grpc     …5
          containerPort: 20552
          protocol: TCP
        - name: ucars
          containerPort: 28081     …20
          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
              - "30"
              - "10"
              - "10"
              - "10"
              - "8080"
      - name: filebeat-sidecar
        image: myregistry.example.com/myproject/filebeat:V.R.S※
        args:
        - "-e"
        - "-E"
        - "http.enabled=true"
        env:     …23
        - 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     …14
        securityContext:
          runAsUser: 0
        volumeMounts:
          - name: beatconfig
            mountPath: /usr/share/filebeat/filebeat.yml
            readOnly: true
            subPath: filebeat.yml
          - name: tomcat
            mountPath: /deployments/tomcat
          - name: eads
            mountPath: /deployments/eads-log
      terminationGracePeriodSeconds: 330     …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
        configMap:
          name: tcc-p-filebeat-sidecar-config
      - name: tomcat
      - name: eads
---
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: grpc     …5
    protocol: TCP
    port: 20552
    targetPort: grpc
  - name: ucars
    protocol: TCP
    port: 28081    …20
    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
    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.url=http://jaeger-collector:14268/api/traces
---
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
---
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:     …23
      - 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"]

注※

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

記述例の番号は、説明の番号と対応しています。

＜説明＞

この例では、各KubernetesオブジェクトのNamespace名（.metadata.namespaceフィールド）は、「my-namespace」としています。

ワークロードリソースを定義します。この例では、ワークロードリソースを「Deployment」としています。

初期化コンテナ構成にDependency-Checkerコンテナを定義します。「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したコンテナイメージを指定します。

コンテナ構成にEntity-Module/TCC-Participantコンテナを定義します。「2.4.8　Entity-Module/TCC-Participantコンテナイメージの作成（TCC-Participant限定）」で作成したコンテナイメージを指定します。

ユーザ責務のKubernetesアプリケーション（およびPrometheus向け）で使用する各種ポート番号をKubernetesクラスタ内で公開するように定義します。この例では、アプリケーションが使用するポートをTCPプロトコルの8080ポートとしています。

TCC-ParticipantのgRPCポート番号（Mediator向け）をKubernetesクラスタ内で公開するように定義します。TCC-Participantのjp.co.Hitachi.soft.hmppcto.tcc.mediator.portパラメタの設定値と同じポート番号を指定します。

Entity-Module/TCC-Participantコンテナのパラメタを、Spring Bootのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。

コンテナライフサイクル設定のLiveness Probeを定義します。

コンテナライフサイクル設定のpostStartフックを定義します。

コンテナライフサイクル設定のpreStopフックを定義します。

Podライフサイクル設定のterminationGracePeriodSecondsを定義します。

Podに対するロールベースアクセス制御（RBAC）に使用するServiceAccountを定義します。

EADSクライアント定義のパラメタを、EADSクライアント定義ファイルのコンフィグソースに設定するように定義します。この例では、必須パラメタだけ指定しています。EADSクライアント定義ファイルのディレクトリおよび名称は「8.2.5　TCC-Participant」のパラメタjp.co.Hitachi.soft.hmppcto.external-consensus.eads.propertiesに指定した値と合わせる必要があります。

トライアル版の場合、この定義は必要ありません。

Entity-Module/TCC-Participantコンテナのタイムゾーンを設定します。設定するタイムゾーンはユーザ任意です。この例では、タイムゾーンを日本標準時（Asia/Tokyo、UTC+09:00）としています。

FilebeatのSidecarコンテナを定義します。 /usr/share/filebeat/filebeat.yml にFilebeatの設定ファイルをマウントします。この設定によってEADSからのログをFilebeatが取得します。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

Tomcatのベースディレクトリとして /deployments/tomcat をマウントします。

EADSのログ出力ディレクトリとして/deployments/eads-logをマウントします。

Entity-Module/TCC-ParticipantのJavaプロセス起動時にJava VMに渡すオプションを設定します。設定するオプションはユーザ任意です（ただし、「-XX:+UseG1GC」オプションは必ず含めてください）。この例では、オプションを「-XX:+UseG1GC」だけとしています。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootの設定ファイル(config.properties)をEntity-Module/TCC-Participantコンテナ内にマウントします。この例では、次のパラメタを設定しています。

monitor.rest.bindaddress=0.0.0.0

プロセスモニタのHTTP機能に割り当てるIPアドレスを定義します。コンテナ外部から通信を受け付けることができるようにするために、設定を行います。

monitor.rest.port=28081

プロセスモニタのHTTP機能の受付ポート番号を定義します。

snapshot.log.filepath=/ucars-snapshots/${HOSTNAME}/snapshot

異常検知時のスナップショットログ出力先を、永続ボリュームにマウントするパスに変更します。親ディレクトリ名に「${HOSTNAME}」を採用してコンテナごとに異なるディレクトリに出力されるようにすることで、同時刻に複数のコンテナから同じファイル名で出力することを防止できます。

スナップショットログの収集対象を追加したい場合は、「10.6.2　情報の収集方法」を参照して設定してください。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームをEntity-Module/TCC-Participantコンテナ内にマウントします。.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールドには、「2.6.8　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime with Java for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。この例では、PersistentVolumeClaimリソースの名称を「snapshot-volume」としています。

オレンジ色の背景で示す行は、uCosminexus Application Runtime with Java for Spring Boot導入ありの場合だけ記述します。

uCosminexus Application Runtime with Java for Spring Bootのスナップショットログの手動取得のため、HTTP機能として公開する受付ポート番号を定義します。

通常版の場合はmy-namespace/statefulsets/eads-serverを記載してください。トライアル版の場合はmy-namespace/deployments/ext-consを記載してください。

Entity-Module/TCC-Participantコンテナのリソースを設定します。実稼働を通して、環境に合わせた設定を実施してください。

Kibanaなどの可視化ツールで検索する際、条件として使用するフィールドを付与するために環境変数を設定します。また、環境変数を使用してフィールドを付与する設定をConfigMapに記載します。

重要

Kubernetesマニフェスト作成時の注意事項

Kubernetesマニフェストは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

TCC-Participantを構成するPodを定義したKubernetesのServiceのService名とネームスペース名の長さの合計は、40バイト以下としてください。

2.6.6　Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

次に示す要件を満たすように、Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェストを作成してください。

このロールおよびロールバインディングを使用することで、対象コンテナがMediator選択機能に必要なKubernetesオブジェクトにアクセスできるようにします。

Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェストの作成要領を次に示します。

＜ロールの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleリソースを指定してください。

ロールの名称（.metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

ロールのルール（.rulesフィールド）に、次のとおり指定してください。

APIグループ（apiGroups）

空（コアグループ）

リソース（resources）

services、endpoints

アクセス許可（verbs）

get、list、watch

＜ロールバインディングの作成要領＞

リソースの種類(.kindフィールド)は、ClusterRoleBindingリソースを指定してください。

ロールバインディングの名称（.metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

バインドするロール（.roleRefフィールド）は、次のとおり指定してください。

.roleRef.apiGroupフィールドに、「rbac.authorization.k8s.io」を指定してください。

.roleRef.kindフィールドに、「ClusterRole」を指定してください。

.roleRef.nameフィールドに、ロールで指定したロールの名称を指定してください。

バインドする対象物（.subjectsフィールド）は、次のとおり指定してください。

リストの要素数はOrchestrator、Entity-Service、Participantと同じ数にします。

.subjects[].kindフィールドに、「ServiceAccount」を指定してください。

.subjects[].nameフィールドに、Orchestrator、Entity-Service、ParticipantのServiceAccountリソースの.metadata.nameフィールドに指定した名称を指定してください。

.subjects[].namespaceフィールドに、Orchestrator、Entity-Service、ParticipantのServiceAccountリソースの.metadata.namespaceフィールドに指定したNamespaceを指定してください。

Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェストの記述例を次に示します。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: lb-role
rules:
- apiGroups:
  - ""
  resources:
  - 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: entity-service-service-account
  namespace: my-namespace
- kind: ServiceAccount
  name: sql-participant-service-account※
  namespace: my-namespace

注※

SQL-Participantを使用する場合の例を記述しています。

TCC-Participantを使用する場合は、「name: tcc-participant-service-account」に置き換えてください。

TP1-Bridgeを使用する場合は、「name: <リリース名>-service-account」に置き換えてください。

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

例：リリース名がtp1-bridge1の場合

name: tp1-bridge1-service-account

2.6.7　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストは、次のどちらかのKubernetesアプリケーションのKubernetesマニフェスト作成時に作成します。

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

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

詳細については、「3.6.6　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成」を参照してください。

2.6.8　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストは、次のどちらかのKubernetesアプリケーションのKubernetesマニフェスト作成時に作成します。

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

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

詳細については、「3.6.10　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」を参照してください。

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

ユーザ責務のKubernetesアプリケーションのデプロイ、アンデプロイ方法を説明します。

2.7.1　作業項目の一覧

ユーザ責務のKubernetesアプリケーションをデプロイするための作業項目の一覧を次に示します。作業対象はKubernetesコントロールプレーンです。表の上から順に作業を実行してください。

表2‒16　ユーザ責務のKubernetesアプリケーションをデプロイするための作業項目の一覧

作業項目

備考

参照先

各種資材の配置

必ず実施します。

(1)　各種資材の配置

Namespaceの作成

次のどちらかのKubernetesアプリケーションをデプロイするための作業時に作成します。

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

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

(2)　Namespaceの作成

Orchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットの作成

gRPC通信機能で暗号化通信をする場合だけ作成します。

(3)　Orchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットの作成

Mediator選択機能用ロールおよびロールバインディングのデプロイ

必ず実施します。

(4)　Mediator選択機能用ロールおよびロールバインディングのデプロイ

デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。

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

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

(5)　デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

通常版の場合だけ作成します。次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。

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

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

(6)　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

Kubernetesアプリケーションのデプロイ

必ず実施します。

(7)　ユーザ責務のKubernetesアプリケーションのデプロイ

Kubernetesアプリケーションのアンデプロイ

必ず実施します。

(8)　ユーザ責務のKubernetesアプリケーションのアンデプロイ

2.7.2　Kubernetesコントロールプレーンでの作業

(1)　各種資材の配置

Kubernetesコントロールプレーンの任意のパスへ、次の各種資材を配置してください。

表2‒17　Kubernetesコントロールプレーンに配置する資材の一覧

資材

備考

OrchestratorのKubernetesマニフェスト

「2.6.2　OrchestratorのKubernetesマニフェストの作成」で作成したもの

Entity-ServiceのKubernetesマニフェスト

「2.6.3　Entity-Service（Participantコンテナを含まないPodとする場合）のKubernetesマニフェストの作成」で作成したもの

ParticipantのKubernetesマニフェスト

「2.6.4　SQL-ParticipantのKubernetesマニフェストの作成（SQL-Participant限定）」、「2.6.5　TCC-ParticipantのKubernetesマニフェストの作成（TCC-Participant限定）」で作成したもの

Participantが使用するDB/外部サービスのKubernetesマニフェスト（Participantを使用する場合）

ユーザが適宜作成したもの

Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェスト

「2.6.6　Mediator選択機能用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェスト

「2.6.7　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

次のどちらかのKubernetesアプリケーションをデプロイするための作業時に配置します。

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

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

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェスト（通常版限定）

「2.6.8　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成したもの

通常版の場合だけ実施します。次のどちらかのKubernetesアプリケーションをデプロイするための作業時に配置します。

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

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

(2)　Namespaceの作成

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespaceを作成してください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。

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

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

詳細については、「(2)　Namespaceの作成」を参照してください。

(3)　Orchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットの作成

HMP-PCTOのgRPC通信機能で暗号化通信をする場合だけ実施します。

Kubernetesコントロールプレーンの任意のパスへ、次のとおりHMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備してください。

表2‒18　HMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルの一覧

対象Kubernetesアプリケーション

ファイル

備考

Orchestrator

接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

必ず準備します。

自クライアント証明書ファイル（PEM形式）

クライアント認証を行う場合だけ準備します。

自クライアント証明書を作成した秘密鍵ファイル

クライアント認証を行う場合だけ準備します。

Participant（SQL-Participant、TCC-Participant）※

接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

必ず準備します。

自サーバ証明書（PEM形式）ファイル

必ず準備します。

自サーバ証明書を作成した秘密鍵ファイル

必ず準備します。

自クライアント証明書ファイル（PEM形式）

クライアント認証を行う場合だけ準備します。

自クライアント証明書を作成した秘密鍵ファイル

クライアント認証を行う場合だけ準備します。

接続元クライアント（Orchestrator、Participant）の秘密鍵が格納されているキーストア（pkcs12、またはJKS）ファイル

クライアント認証を行う場合だけ準備します。

注※

Participantアプリケーションの数だけ準備してください。

HMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備したディレクトリ/ファイル構成の例を次に示します。

クライアント認証を行わない場合

<任意のパス>/
    ca.crt              # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
    participant/
        server.crt      # Participantの自サーバ証明書(PEM形式)ファイル
        server.key      # Participantの自サーバ証明書を作成した秘密鍵ファイル

クライアント認証を行う場合

<任意のパス>/
    ca.crt              # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
    orchestrator/
        client.crt      # Orchestratorの自クライアント証明書ファイル(PEM形式)
        client.key      # Orchestratorの自クライアント証明書を作成した秘密鍵ファイル
    participant/
        server.crt      # Participantの自サーバ証明書(PEM形式)ファイル
        server.key      # Participantの自サーバ証明書を作成した秘密鍵ファイル
        client.crt      # Participantの自クライアント証明書ファイル(PEM形式)
        client.key      # Participantの自クライアント証明書を作成した秘密鍵ファイル
        keystore.jks    # Participantの接続元クライアント(Orchestrator,Participant)の秘密鍵が格納されている
                        # キーストア(pkcs12またはJKS)ファイル

準備したファイルを使用してOrchestrator、ParticipantのgRPC通信機能の暗号化通信用シークレットを作成します。

ユーザ責務のKubernetesアプリケーションであるOrchestrator、SQL-Participant、TCC-ParticipantのgRPC通信機能の暗号化通信用シークレットは、ユーザ要件に合わせて作成してください。

Orchestrator、SQL-Participant、TCC-ParticipantのgRPC通信機能の暗号化通信用シークレットを作成するコマンド例を次に示します。

ユーザ責務のKubernetesアプリケーションである、Orchestrator、SQL-Participant、TCC-Participantの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 ¥
  --from-file=server.crt=./participant/server.crt ¥
  --from-file=server.key=./participant/server.key ¥
  -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=server.crt=./participant/server.crt ¥
  --from-file=server.key=./participant/server.key ¥
  --from-file=client.crt=./participant/client.crt ¥
  --from-file=client.key=./participant/client.key ¥
  --from-file=keystore=./participant/keystore.jks ¥
  --from-literal=keystore_password=changeit ¥
  -n my-namespace

＜コマンドの実行結果の例＞

secret/orchestrator-secret created

secret/participant-secret created

このように、各Kubernetesオブジェクトの作成に成功したメッセージが出力されていることを確認してください。

(4)　Mediator選択機能用ロールおよびロールバインディングのデプロイ

「(1)　各種資材の配置」で配置したMediator選択機能用ロールおよびロールバインディングの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アプリケーションをデプロイするための作業時に実施します。

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

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

詳細については、「(10)　デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ」を参照してください。

(6)　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

「(1)　各種資材の配置」で配置したuCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストをデプロイしてください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。

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

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

詳細については、「(14)　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）」を参照してください。

(7)　ユーザ責務のKubernetesアプリケーションのデプロイ

「(1)　各種資材の配置」で配置した各KubernetesアプリケーションのKubernetesマニフェストをデプロイしてください。

なお、HMP-PCTOの各Kubernetesアプリケーションは次の順序でデプロイする必要があります。

Elasticsearch

Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat

Mediator、EADS（通常版だけ）、Ext-Cons（トライアル版だけ）、Participantが使用するDB/外部サービス

Participant

Orchestrator

上記以外の順序でデプロイした場合

各Kubernetesアプリケーションの初期化コンテナとして構成しているDependency-Checkerコンテナで、上記のとおり依存するKubernetesアプリケーションが先にデプロイされるまで待機します。待機処理がリトライオーバーし、初期化コンテナが異常終了した場合、Podの状態はCrashLoopBackOffになります。その場合は、Dependency-Checkerコンテナが実行しているデプロイ依存関係チェックスクリプトのエラーメッセージに従い対処してください。

ユーザ責務の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

Participant

Mediator、EADS（通常版だけ）、Ext-Cons（トライアル版だけ）、Participantが使用するDB/外部サービス

Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat

Elasticsearch

重要

上記以外の順序でアンデプロイした場合に発生する問題

上記以外の順序でアンデプロイした場合、トラブルシュートに必要な情報が収集できなかったり、処理中のトランザクションが適切に終了しなかったりなどの問題が発生するおそれがあります。

ユーザ責務の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のコントロールプレーンおよびRASのKubernetesアプリケーションのデプロイ

3　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションのデプロイ

3.1　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションのデプロイの流れ

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションは次の流れでデプロイします。

表3‒1　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションのデプロイの流れ

項番

項目

説明

参照先

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

Kubernetesマニフェスト作成

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

3.6　Kubernetesマニフェスト作成

6

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

HMP-PCTOが提供するHelmチャートのカスタマイズ例を基にHelmチャートをカスタマイズします。

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

7

デプロイ

KubernetesマニフェストまたはHelmを使用してKubernetesクラスタにデプロイします。

3.8　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用

重要

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

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

3.2　Mediatorのビルド（通常版限定）

HMP-PCTOライブラリを使用したMediatorのビルドについて説明します。

Mediatorのビルドは、通常版の場合だけ実施します。

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

3.2.1　作業項目の一覧（通常版限定）

Mediatorのビルドの作業項目の一覧を次の表に示します。

表3‒2　Mediatorのビルドの作業項目の一覧

分類

作業項目

備考

参照先

共通

事前準備（通常版限定）

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

3.2.2　事前準備（通常版限定）

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

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

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

Mediatorのビルド

JARファイルのビルド（通常版限定）

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

3.2.4　JARファイルのビルド（通常版限定）

3.2.2　事前準備（通常版限定）

HMP-PCTOライブラリを使用したアプリケーションの開発は、Gradle（バージョン7.3.3以上）の利用を前提としています。これらのソフトウェアを開発環境にインストールしてください。

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が依存するライブラリのうちHMP-ADIFおよびTP1/Client/Jのライブラリ以外は、HMP-PCTOライブラリを組み込むとGradleがダウンロードします。ダウンロードはインターネット接続環境で行う必要があります。もし、インターネット接続のない閉塞環境で開発を行う場合は、一度インターネット接続環境でそれらのダウンロードを実行したあと、ダウンロード先であるローカルMavenリポジトリおよびGradleキャッシュを、フォルダごと閉塞環境の同じ場所にコピーしてください。

HMP-ADIFと連携する場合は、HMP-ADIFのライブラリのセットアップが必要です。HMP-ADIFのライブラリのセットアップ方法は、HMP-ADIFの取扱説明書を参照してください。

また、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）で、次に示す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の構文例は、Gradle7.3.3を使用した場合を例に記述しています。

3.3.1　作業項目の一覧（通常版かつTP1-Bridge限定）

TP1-Bridgeのビルドの作業項目の一覧を次の表に示します。

表3‒3　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（バージョン7.3.3以上）の利用を前提としています。これらのソフトウェアを開発環境にインストールしてください。

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）」は、HMP-PCTOの提供物を使用してビルドします。

HMP-PCTOが提供する「TP1-Bridge用外部ライブラリ格納ディレクトリ」（java-projects/tp1-bridge/libs）に、TP1/Client/Jをインストールした環境からTP1Client.jarをコピーしてください。そのあと、「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-brdige-V.R.S※.jar）」が生成されます。

java-projects/tp1-bridge/build/lib/tp1-bridge-V.R.S※.jar

注※

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

3.4　コンテナイメージ作成（通常版限定）

ここでは、HMP-PCTOのコントロールプレーンのコンテナイメージ作成方法について説明します。HMP-PCTOのコントロールプレーンのコンテナイメージは、通常版の場合だけ作成します。

コンテナイメージビルド環境のコンテナエンジンはユーザ任意のものを使用してください。説明中のコンテナエンジンのコマンド例は、Dockerを使用した場合を例に記述しています。コンテナエンジンの各コマンドの詳細については、使用するコンテナエンジンのマニュアルなどを参照してください。

3.4.1　作業項目の一覧（通常版限定）

コンテナイメージ作成の作業項目の一覧を次の表に示します。

表3‒4　コンテナイメージ作成の作業項目の一覧

作業項目

備考

参照先

事前準備（通常版限定）

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

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のリリースノートを参照し、uCosminexus Application Runtime with Java for Spring Bootに必要な前提RPMパッケージを記述してください。※1

uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合のContainerfileのテンプレートの内容を次に記載しています。Containerfileのテンプレートに対する修正内容は、uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合と修正パッチがある場合のどちらも同じです。

# All Rights Reserved. Copyright (C) 2023, Hitachi, Ltd.
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860 AS builder
RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncompress ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN
COPY X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HL0T ./

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860
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-7.61.1 ¥
        jq-1.6 ¥
        glibc-2.28 ¥
        <uCosminexus Application Runtime with Java for Spring Bootの前提RPMパッケージ>※1
        :
    && dnf clean all ¥
    && rm -rf /var/cache/dnf/*
ENV PATH=/opt/Cosminexus/jdk/bin:$PATH
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‒5　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

Containerfile

ユーザ

■uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合

HMP-PCTOの提供ファイル「templates/container-files/mediator/normal/Containerfile」を使用してください。

■uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合

HMP-PCTOの提供ファイル「templates/container-files/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の修正パッチを適用する場合だけ格納してください。

（凡例）−：該当しません。

(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の修正パッチがあるかどうかを確認して、使用するHMP-PCTOが提供するTP1-Bridge用Containerfileのテンプレートを選択してください。選択したテンプレートに、次の修正をしてください。

「3.4.2　事前準備（通常版限定）」に示すとおり、ユーザの開発環境に合わせてdnfコマンドなどによるオンラインインストールの設定を組み込むなどの方法で修正してください。

uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合のContainerfileのテンプレートの例を、次に示します。

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860 AS builder
RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncompress ¥
        ncurses ¥
        tar ¥
        cpio ¥
        gzip
WORKDIR /tmp
RUN mkdir ./X64LIN
COPY ucars/X64LIN ./X64LIN
RUN chmod +x ./X64LIN/setup
RUN ./X64LIN/setup -f -c HL0T ./
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/ubi8/ubi-minimal:8.8-860 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-7.61.1 ¥
        jq-1.6 ¥
        glibc-2.28 ¥
    && dnf clean all ¥
    && rm -rf /var/cache/dnf/*
ENV PATH=/opt/Cosminexus/jdk/bin:$PATH
USER 1001:0

FROM registry.access.redhat.com/ubi8/ubi-minimal:8.8-860 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-7.61.1 ¥
        jq-1.6 ¥
        glibc-2.28 ¥
    && dnf clean all ¥
    && rm -rf /var/cache/dnf/*

RUN microdnf install ¥
        -y ¥
        --setopt=install_weak_deps=0 ¥
        --nodocs ¥
        ncompress ¥
        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/ubi8/ubi-minimal:8.8-860
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/jdk/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-7.61.1 ¥
        jq-1.6 ¥
        glibc-2.28 ¥
    && 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‒6　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/

ユーザ

−

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の修正パッチが同梱されている場合だけ格納してください。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

TP1-Bridgeコンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]<TP1-Bridgeコンテナイメージのユーザ任意のイメージ名>:<ユーザ任意のタグ名>△.

（凡例）△：半角スペース1文字

＜実行例＞

この例では、「TP1-Bridgeコンテナイメージのユーザ任意のイメージ名:ユーザ任意のタグ名」を「tp1-bridge:V.R.S※」としています。

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/tp1-bridge:V.R.S※ .

注※

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

(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‒7　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サーバ用コンテナイメージの作成方法について説明します。

このコンテナイメージは通常版の場合だけ作成します。

(1)　Containerfileのテンプレートの修正

Containerfileのテンプレートについて、「3.4.2　事前準備（通常版限定）」に示すとおり、ユーザの開発環境に合わせてdnfコマンドなどによるオンラインインストールの設定を組み込むなどの方法で修正してください。また、後述する<コンテナイメージビルド作業ディレクトリ>/main-imageディレクトリに配置したContainerfileのテンプレート内のFROM句に記載された内容をコンテナビルド時に指定する文字列へ変更してください。

変更前：FROM localhost/eads-server-base-image:latest

変更後：FROM <コンテナレジストリ>/[<namespace>/]eads-server-base-image:< EADSバージョン(VV-RR(-SS)※)>

注※

VV-RR(-SS)は使用するEADSのバージョンに合わせて読み替えてください。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表3‒8　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>/base-image

ユーザ

−

Containerfile

ユーザ

EADSサーバをインストールした環境から下記ディレクトリをコピーして、base-imageにリネームします。

EADSサーバの修正パッチが発行されていない場合：

/opt/hitachi/xeads/container/normal

EADSサーバの修正パッチが発行されている場合：

/opt/hitachi/xeads/container/patch

X64LIN

(Hitachi Elastic Application Data Storeのインストーラ)

日立

Hitachi Elastic Application Data Storeをインストールした環境からインストールCD-ROMに格納されているX64LINディレクトリをコピーしてください。

PACK_TAR.Z

(Hitachi Elastic Application Data Storeの修正パッチ)

日立

Hitachi Elastic Application Data Storeの修正パッチを適用する場合だけ格納してください。

<コンテナイメージビルド作業ディレクトリ>/main-image

ユーザ

−

Containerfile

ユーザ

EADSサーバをインストールした環境から次のディレクトリをコピーして、main-imageにリネームします。

/opt/hitachi/xeads/orchestration/container/server

payload.tgz

日立

EADSサーバをインストールした環境から次のディレクトリをコピーして、main-imageにリネームします。

/opt/hitachi/xeads/orchestration/container/server

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

EADSサーバ用コンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/base-image
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]eads-server-base-image:<EADSバージョン(VV-RR(-SS)※)>△.

cd <コンテナイメージビルド作業ディレクトリ>/main-image
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]eads-server-image:<EADSバージョン(VV-RR(-SS)※)>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/base-image
docker build -f ./Containerfile -t myregistry.example.com/myproject/eads-server-base-image:VV-RR(-SS)※ .

cd build/main-image
docker build -f ./Containerfile -t myregistry.example.com/myproject/eads-server-image:VV-RR(-SS)※ .

この例では、EADSバージョンを「VV-RR(-SS)※」としています。

注※

VV-RR(-SS)は使用するEADSのバージョンに合わせて読み替えてください。

(4)　コンテナイメージの登録

ビルドしたEADSサーバ用コンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

3.4.7　EADSコマンド実行用コンテナイメージの作成（通常版限定）

EADSコマンド実行用コンテナイメージの作成方法について説明します。

このコンテナイメージは通常版の場合だけ作成します。

(1)　Containerfileのテンプレートの修正

Containerfileのテンプレートについて、「3.4.2　事前準備（通常版限定）」に示すとおり、ユーザの開発環境に合わせてdnfコマンドなどによるオンラインインストールの設定を組み込むなどの方法で修正してください。

(2)　Containerfileと資材の配置

次の表に示すとおり、Containerfileと資材をコンテナイメージビルド環境に配置してください。

表3‒9　Containerfileと資材の配置構成

ファイル／ディレクトリ構成

作成・提供元

備考

<コンテナイメージビルド作業ディレクトリ>

ユーザ

−

Containerfile

ユーザ

EADSサーバをインストールした環境から次のディレクトリをコピーします。

/opt/hitachi/xeads/orchestration/container/command

payload.tgz

日立

EADSサーバをインストールした環境から次のディレクトリをコピーします。

/opt/hitachi/xeads/orchestration/container/command

ocコマンドおよびkubectlコマンド

ユーザ

OpenShiftダウンロードページから"OpenShift command-line interface(oc)"でダウンロードできるocコマンドおよびkubectlコマンドを配置してください。

（凡例）−：該当しません。

(3)　コンテナイメージのビルド

Containerfileを使用して、コンテナイメージをビルドします。

EADSコマンド実行用コンテナイメージのビルドのコマンドを次に示します。

cd <コンテナイメージビルド作業ディレクトリ>/
docker△build△-f△./Containerfile△-t△<コンテナレジストリ>/[<namespace>/]eads-command-image: <EADSバージョン(VV-RR(-SS)※)>△.

（凡例）△：半角スペース1文字

＜実行例＞

cd build/
docker build -f ./Containerfile -t myregistry.example.com/myproject/eads-command-image:VV-RR(-SS)※ .

この例では、EADSバージョンを「VV-RR(-SS)※」としています。

注※

VV-RR(-SS)は使用するEADSのバージョンに合わせて読み替えてください。

(4)　コンテナイメージの登録

ビルドしたEADSコマンド実行用コンテナイメージを、Kubernetesクラスタで使用するコンテナレジストリにdocker pushコマンドなどで登録してください。

インターネット接続のない閉塞環境の場合は、ローカルのリポジトリ・レジストリなどを使用したり、コンテナイメージビルド環境でエクスポートしたコンテナイメージをKubernetesクラスタの各ワーカーノードにインポートしたりするなどの方法で対応してください。

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

HMP-PCTOが前提とする共有ファイルシステムでの作業について説明します。

共有ファイルシステムでの作業の詳細については、OS、各製品のマニュアルなどを参照してください。

3.5.1　作業項目の一覧

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

表3‒10　HMP-PCTOが前提とする共有ファイルシステムでの作業項目の一覧

作業項目

備考

参照先

MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）

MediatorのConsensusLogのマウント用ディレクトリをNFSストレージとする場合は、必ず作成します。

3.5.2　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）

Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリの作成

必ず作成します。

3.5.3　Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリの作成

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

通常版の場合だけ作成します。

3.5.4　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

3.5.2　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（NFSストレージとする場合）

MediatorのConsensusLogのマウント用ディレクトリをNFSストレージとする場合は、次の作業を実施してください。

Mediatorが存在する各ワーカーノードでアクセスできるNFSに、MediatorのConsensusLogの永続ボリュームマウント用ディレクトリを次の要領で作成してください。

MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成要領

ディレクトリのグループにGID「0」（root）を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

ディレクトリ名に制限はありません。

なお、「3.6.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」の例では、ディレクトリ名を「/mediator-consensus-log-volume」としています。

GID「0」（root）で書き込みできる状態で、NFSでディレクトリを公開してください。

ボリュームマウント用ディレクトリ内に、すべてのMediatorのConsensusLogファイルが格納されます。

1つのNFSサーバ上に、すべてのMediatorのConsensusLogファイルを配置する場合、NFSサーバが単一障害点となるため、必要な稼働率を確保する必要があります。

パブリッククラウドのサービス（Azure Blob Storage、Amazon EFSなど）を利用した冗長化を推奨します。パブリッククラウドのサービスを利用しない場合は、システムごとに独自にNFSサーバを冗長化することを検討してください。

3.5.3　Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリの作成

Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリを、次の要領でNFSやクラウドストレージなどの全ワーカーノードで共有可能な場所に作成してください。

Elasticsearchリポジトリディレクトリの永続ボリュームマウント用ディレクトリの作成要領

ディレクトリのグループにGID「0」（root）を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

GID「0」（root）で書き込みできる状態で、NFSでディレクトリを公開してください。

3.5.4　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリを、次の要領で全ワーカーノードで共有可能なNFSに作成してください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。

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

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

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリの作成要領

ディレクトリのグループにGID「0」（root）を設定してください。

ディレクトリのパーミッションにグループの書き込み権限を付与してください。

GID「0」（root）で書き込みできる状態で、NFSでディレクトリを公開してください。

3.6　Kubernetesマニフェスト作成

HMP-PCTOのKubernetesマニフェスト作成方法について説明します。

Kubernetesマニフェストの記述仕様の詳細は、Kubernetesのマニュアルなどを参照してください。

Kubernetesマニフェスト作成時のログおよびトラブルシュート情報の取得の設定については、「3.9.1　ログおよびトラブルシュート情報の取得の設定」を参照してください。

3.6.1　作業項目の一覧

Kubernetesマニフェスト作成の作業項目の一覧を次の表に示します。

表3‒11　Kubernetesマニフェスト作成の作業項目の一覧

作業項目

備考

参照先

MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

必ず作成します。

3.6.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

必ず作成します。

3.6.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

必ず作成します。

3.6.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）

通常版の場合だけ作成します。

3.6.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

次のどちらかのKubernetesアプリケーションのKubernetesマニフェスト作成時に作成します。

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

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

3.6.6　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

必ず作成します。

3.6.7　コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

必ず作成します。

3.6.8　メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの作成

必ず作成します。

3.6.9　メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの作成

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

通常版の場合だけ作成します。次のどちらかのKubernetesアプリケーションのKubernetesマニフェスト作成時に作成します。

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

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

3.6.10　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

3.6.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

「6.4.5　Mediatorの要件」に記載されているMediatorのConsensusLogの永続ボリュームの要件を満たすように、MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストを作成してください。

永続ボリュームの種類を選択する判断基準の例を示します。

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マニフェストを作成してください。

各永続ボリュームの名称（metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

永続ボリュームの種類によって、次のどちらかの作業を実施してください。

永続ボリュームの種類がローカル永続ボリューム（local）の場合

各永続ボリュームの.spec.localフィールドに、「(1)　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）」で作成するワーカーノード上のボリュームマウント用ディレクトリパスを指定してください。

永続ボリュームの種類がNFSストレージの場合

各永続ボリュームの.spec.nfsフィールドに、「3.5.2　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.6.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

「6.4.14　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)) + ((d) × (e)) + ((f) × (g))) × (h)
(a) SQL-Participant、TCC-ParticipantおよびTP1-Bridge以外が出力する分散トレースのサイズ：500MB
(b) SQL-Participantが出力する分散トレースのサイズ：400MB
(c) SQL-ParticipantのPod数
(d) TCC-Participantが出力する分散トレースのサイズ：300MB
(e) TCC-ParticipantのPod合計数
(f) TP1-Bridgeが出力する分散トレースのサイズ：300MB
(g) TP1-BridgeのPod数
(h) 想定する1秒間のトランザクション数

(B)メッセージログで使用する1時間当たりのindexサイズ
indexサイズ = (a)
(a) 1時間当たりの使用量:100MB(エラーなどによってメッセージログが継続して出力される場合を想定した推奨値)

(C)メトリクスで使用する1時間当たりのindexサイズ
indexサイズ = ((a) + ((b) × (c)) + ((d) × (e)) + ((f) × (g))) × 15 / (h)
(a) SQL-Participant、TCC-ParticipantおよびTP1-Bridge以外が出力するメトリクスのサイズ：1000MB
(b) SQL-Participantが出力するメトリクスのサイズ：100MB
(c) SQL-ParticipantのPod数
(b) TCC-Participantが出力するメトリクスのサイズ：100MB
(e) TCC-ParticipantのPod数
(f) TP1-Bridgeが出力するメトリクスのサイズ：100MB
(g) TP1-BridgeのPod数
(h) メトリクスの取得間隔。Prometheusのパラメタglobal.scrape_intervalの指定値の単位を秒に変換した値。

シングル構成の場合: 「必要なデータ量」の式から計算した値を記載してください。

クラスタ構成の場合

・マスターノードについては3GBを指定してください。

・データノードについては、「必要なデータ量」で計算した値を各ノードに配置されるプライマリシャード、レプリカシャードの合計数倍してください。

各永続ボリュームの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.6.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成

「6.4.14　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.5.3　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.6.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）

「6.4.7　EADSの要件（通常版限定）」に記載されているEADSの永続ボリュームの要件を満たすように、EADSの永続ボリュームのKubernetesマニフェストを作成してください。

EADSで使用する永続ボリュームの種類を「ローカル永続ボリューム（local）」とし、KubernetesのnodeAffinityで永続ボリュームの割り当てノードを固定することで、その永続ボリュームを使用するEADSのPodはKubernetesスケジューラによって必ず永続ボリュームと同一ノードに割り当てられます。これによって、EADSのPodが必ずノードにアタッチされたローカルストレージデバイスを使用できるようにします。

また、永続ボリュームにどの永続ボリュームクレームにバインドさせるかを指定することで、EADSの永続ボリュームとEADSの永続ボリュームクレームのバインドを必ず一対一になるようにします。

EADSの永続ボリュームのKubernetesマニフェストの作成要領を次に示します。

＜見積もり要領＞

デプロイするEADSの構成（EADSサーバ台数、多重度、キャッシュなど）を決め、マニュアル「Elastic Application Data Store ユーザーズガイド」を参考にしてEADSサーバの各種見積もり量（使用メモリ量・ログファイル用ディスク容量・キャッシュデータファイル、およびキャッシュインデックスファイル用ディスク容量・ストアデータファイル用ディスク容量）を見積もってください。

＜PVCの種類と個数について＞

EADSサーバが定義するPVC（永続ボリュームクレーム）を満たすボリュームを決めて、対応するリソースのマニフェストファイルを作成してデプロイします。

表3‒12　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.7.5　EADSのHelmチャートのカスタマイズ（通常版限定）」で説明するEADSサーバチャート用values.yamlのcachesフィールド下に登録したキャッシュ定義配列のインデックス（0から始まる）です。キャッシュ定義数分のPVCが追加されます。ただし、nameが重複した要素はインデックスから除外されます。

注※2

「3.7.5　EADSのHelmチャートのカスタマイズ（通常版限定）」で説明するEADSサーバチャート用values.yamlのvolumesフィールド下に登録した追加ボリューム定義配列のインデックス（0から始まる）です。ただし、nameが重複した要素はインデックスから除外されます。

注※3

「3.7.5　EADSのHelmチャートのカスタマイズ（通常版限定）」で説明するEADSサーバチャート用values.yamlのvolumesフィールド下に登録した追加ボリューム定義配列の総数です。ただし、nameが重複した要素は総数から除外されます。

＜永続ボリュームの作成要領＞

Kubernetesクラスタに起動するEADSの数×3（ログファイル用ボリューム1個、ストアデータファイル用ボリューム1個、キャッシュデータファイルおよびキャッシュインデックスファイル用ボリューム1個、追加ボリューム用ボリューム0個の計3個）と同じ数だけ、永続ボリュームのKubernetesマニフェストを作成してください。

各永続ボリュームの名称（metadata.nameフィールド）に、ユーザ任意の名称を指定してください。

各永続ボリュームは、ボリュームの種類を「ローカル永続ボリューム（local）」とし、「(3)　EADSの永続ボリュームマウント用ディレクトリの作成（通常版限定）」で作成するノード上のボリュームマウント用ディレクトリパスを指定してください。

各永続ボリュームの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パラメタに指定した値

各永続ボリュームのaccessModesフィールドに、「ReadWriteOnce」を指定してください。

各永続ボリュームのpersistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。

各永続ボリュームのclaimRefフィールドに、EADSを配置する個々のノードを決めてEADSのPVC（「表3‒12　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を指定する

EADSの永続ボリュームのKubernetesマニフェストの記述例を次に示します。

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

3.6.6　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成

次に示す要件を満たすように、デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストを作成してください。この作業は、次のどちらかのKubernetesアプリケーションのKubernetesマニフェスト作成時に実施します。

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

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

このロールおよびロールバインディングを使用することで、各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オブジェクト群については、「6.4　各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オブジェクト群については、「6.4　各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アプリケーションおよびユーザとHMP-PCTO責務のKubernetesアプリケーションのServiceAccountの名称は次のとおりです。

Kubernetesアプリケーション

ServiceAccountの名称

TP1-Bridge

<リリース名>-service-account※

Mediator

mediator-service-account

Ext-Cons

ext-cons-service-account

Filebeat

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: entity-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: 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オブジェクト群については、「6.4　各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

■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: entity-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: 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オブジェクト群については、「6.4　各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.6.7　コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

次に示す要件を満たすように、コンテナログ収集用ロールおよびロールバインディングの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.6.8　メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの作成

次に示す要件を満たすように、メトリクス収集用ロールおよびロールバインディングの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.6.9　メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの作成

次に示す要件を満たすように、メトリクス向け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.6.10　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）

以降に示す要件を満たすように、uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストを作成してください。この作業は、次のどちらかのKubernetesアプリケーションのKubernetesマニフェスト作成時に実施します。

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

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

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームの種類を「NFS」とし、アクセスモード(accessModes)を「ReadWriteMany」とすることで、uCosminexus Application Runtime with Java for Spring Bootをインストールした各Podがどのノードからでも永続ボリュームにスナップショットログを出力できるようにします。

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成要領を次に示します。

＜永続ボリュームの作成要領＞

uCosminexus Application Runtime with Java for Spring BootをインストールしたPodで使用しているNamespace名の数と同じ数だけ、永続ボリュームのKubernetesマニフェストを作成してください。

例1）

Mediator/Orchestrator/Entity-Service/ParticipantのNamespace名が「my-namespace」の場合、Namespace名の数は1つであるため、Kubernetesマニフェストを1つ作成します。

例2）

MediatorのNamespace名が「my-namespace-0」、Orchestrator/Entity-Service/ParticipantのNamespace名が「my-namespace-1」の場合、Namespace名の数は2つであるため、Kubernetesマニフェストを2つ作成します。

各永続ボリュームの名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。なお、名称はKubernetesマニフェストごとに一意にする必要があります。ここで指定した名称は、後述の各永続ボリューム要求の.spec.volumeNameフィールドの値に指定します。

各永続ボリュームの.spec.capacity.storageフィールドに、スナップショットログの出力先となる永続ボリュームのサイズを指定してください。

各永続ボリュームの.spec.accessModesフィールドに、「ReadWriteMany」を指定してください。

各永続ボリュームの.persistentVolumeReclaimPolicyフィールドに、「Retain」を指定してください。

各永続ボリュームは、ボリュームの種類を「NFS」とし、「3.5.4　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームマウント用ディレクトリ作成（通常版限定）」で作成するNFS上のボリュームマウント用ディレクトリパスを指定してください。

以降に示す記述例では、ディレクトリ名を「/ucars-snapshots」としています。

＜永続ボリューム要求の作成要領＞

＜永続ボリュームの作成要領＞と同様に、永続ボリューム要求についても、uCosminexus Application Runtime with Java for Spring BootをインストールしたPodで使用しているNamespace名の数と同じ数だけ、永続ボリューム要求のKubernetesマニフェストを作成してください。

各永続ボリューム要求の名称(.metadata.nameフィールド)に、ユーザ任意の名称を指定してください。なお、名称はKubernetesマニフェストごとに一意にする必要はありません（KubernetesマニフェストごとにNamespaceが異なり同一Namespace内で名称が重複しないため）。ここで指定した名称は、uCosminexus Application Runtime with Java for Spring Bootをインストールしたユーザ責務のKubernetesアプリケーションのKubernetesマニフェストの.spec.template.spec.volumes[].persistentVolumeClaim.claimNameフィールド、および、MediatorのHelmチャートの.ucars.snapshots.claimNameパラメタの値に指定します。

各永続ボリューム要求のNamespace(.metadata.namespaceフィールド)に、uCosminexus Application Runtime with Java for Spring BootをインストールしたPodで使用しているNamespace名を指定します。

各永続ボリューム要求の.spec.accessModesフィールドに、「ReadWriteMany」を指定してください。

各永続ボリューム要求の.spec.volumeNameフィールドに、前述の永続ボリュームで指定した名称を指定してください。

各永続ボリューム要求の.spec.resources.requests.storageフィールドに、スナップショットログの出力に必要なサイズを指定してください。

MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの記述例を次に示します。

■uCosminexus Application Runtime with Java 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 with Java 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　Helmチャートのカスタマイズ

「6.1　Kubernetesアプリケーションのデプロイ方法」に示すとおり、HMP-PCTOのKubernetesアプリケーションのうち、HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションについては、HMP-PCTOがHelmチャートを提供し、ユーザがHelmチャートをカスタマイズします。

ここでは、Helmチャートのカスタマイズ方法について説明します。

なお、TP1-Bridgeを構成するPodを定義したKubernetesのServiceのService名とネームスペース名の長さの合計は、40バイト以下としてください。TP1-BridgeのService名は、「(15)　Kubernetesアプリケーションのデプロイ」の「表3‒20　helmコマンドに指定するコマンド引数」のリリース名を参照してください。

3.7.1　作業項目の一覧

Helmチャートのカスタマイズの作業項目の一覧を次の表に示します。

表3‒13　Helmチャートのカスタマイズの作業項目の一覧

作業項目

参照先

Helmチャートへのパラメタ追加

3.7.2　Helmチャートへのパラメタ追加

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

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

TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）

3.7.4　TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）

EADSのHelmチャートのカスタマイズ（通常版限定）

3.7.5　EADSのHelmチャートのカスタマイズ（通常版限定）

Ext-ConsのHelmチャートのカスタマイズ（トライアル版限定）

3.7.6　Ext-ConsのHelmチャートのカスタマイズ（トライアル版限定）

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

3.7.7　FilebeatのHelmチャートのカスタマイズ

Jaeger-queryのHelmチャートのカスタマイズ

3.7.8　Jaeger-queryのHelmチャートのカスタマイズ

Jaeger-collectorのHelmチャートのカスタマイズ

3.7.9　Jaeger-collectorのHelmチャートのカスタマイズ

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

3.7.10　PrometheusのHelmチャートのカスタマイズ

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

3.7.11　MetricbeatのHelmチャートのカスタマイズ

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

3.7.12　ElasticsearchのHelmチャートのカスタマイズ

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

3.7.13　LogstashのHelmチャートのカスタマイズ

3.7.2　Helmチャートへのパラメタ追加

HMP-PCTOが提供するHelmチャートには、HMP-PCTOのトラブルシュート機能で使用する次のOSSを動作させるために必要な最低限のパラメタだけが記載されています。

Jaeger-collector

Jaeger-query

Prometheus

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.7.9　Jaeger-collectorのHelmチャートのカスタマイズ」※を参照して、values.yamlの抽出およびカスタマイズを実施してください。なお、デプロイ手順については「(15)　Kubernetesアプリケーションのデプロイ」を参照してください。

注※

ほかのOSSのHelmチャートにOSSパラメタを追加した場合は、そのOSSのHelmチャートのカスタマイズを実施してください。

3.7.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のバージョンに合わせて読み替えてください。

「8.3.1　Mediator」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace
replicas: 5
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/prometheus
  - 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
postStart:
  healthCheck:
    retryCount: 30
    retryIntervalSeconds: 10
    connectTimeoutSeconds: 10
    readTimeoutSeconds: 10
preStop:
  waitTransactions:
    retryCount: 30
    retryIntervalSeconds: 10
    connectTimeoutSeconds: 10
    readTimeoutSeconds: 10
terminationGracePeriodSeconds: 330
affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    - labelSelector:
        matchExpressions:
        - key: app.kubernetes.io/name
          operator: In
          values:
          - mediator
      topologyKey: kubernetes.io/hostname
resources:
  limits:
    cpu: 2
    memory: 1Gi
  requests:
    cpu: 1
    memory: 512Mi
participant:
  sender:
    threadPoolSize: 30
    queueSize: 25
consensusLog:
  size: 256
  io:
    threadPoolSize: 12
    queueSize: 25
    watchInSeconds: 240
    blockSize: 4096
  storageClassName: mediator-consensus-log
http:
  port: 20554
grpc:
  port: 20551
  server:
    threadPoolSize: 30
    queueSize: 25
  useTls: false
  authSkip: false
  tls:
    secretName: ""
    clientAuth:
      enabled: false
    session:
      cacheSize: 0
      timeout: 0
  keepalive:
    interval: 0
    timeout: 60
  watchtime: 5
  dedup: true
  reuse: true
mediator:
  judge:
    threadPoolSize: 30
    queueSize: 25
    proposalLogLimitNum: 512
    tranTerminatedLimitNum: 512
    tranTerminatedConfirmNotifyInterval: 60000
tracing:
  instanceId: ""
  url: http://jaeger-collector:14268/api/traces
  traceUse: true
  queueSize: 20000
  delayTime: 1000
  batchSize: 2000
  grpc:
    traceSize: 256
metrics:
  collection:
    intervalInMillis: 1000
timezone: Asia/Tokyo
java:
  options: -XX:+UseG1GC
logging:
  level:
    pctoStd: INFO
ucars:
  enabled: true
  snapshots:
    claimName: snapshot-volume

注※

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

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

特定の条件でだけ指定するパラメタについては、省略しています（（例）暗号化通信を有効にした場合だけ指定するgrpc.tls接頭辞のパラメタなど）。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

3.7.4　TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）

TP1-Bridgeを使用する場合、TP1-BridgeのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、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のバージョンに合わせて読み替えてください。

「8.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
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:
  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: {}
resources:
  limits:
    cpu: 2
    memory: 1Gi
  requests:
    cpu: 1
    memory: 512Mi
server:
  tomcat:
    threads:
      max: 200
    maxSwallowSize: "2097152"
converter:
  host: converter
  port: 8008
  connectTime: 10
  watchTime: 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
  xaServerName: sample
  pool:
    allocationWaitTimeInMillis: 61000
    maxPoolSize: 10
  mediator:
    port: 20551
  pod:
    serviceName: tp1-bridge1.my-namespace
  transactionTermination:
    timeoutInMillis: 60000
    consensus:
      replayIntervalInMillis: 1000
  participantProcessing:
    threadPoolSize: 12
    queueSize: 25
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: 25
http:
  port: 20554
grpc:
  port: 20552
  useTls: false
  authSkip: false
  tls:
    secretName: ""
    clientAuth:
      enabled: false
    session:
      cacheSize: 0
      timeout: 0
  keepalive:
    interval: 0
    timeout: 60
  watchtime: 5
tracing:
  instanceId: ""
  url: http://jaeger-collector:14268/api/traces
  traceUse: true
  queueSize: 20000
  delayTime: 1000
  batchSize: 2000
  grpc:
    traceSize: 256
metrics:
  collection:
    intervalInMillis: 1000
timezone: Asia/Tokyo
java:
  options: -XX:+UseG1GC
logging:
  level:
    pctoStd: 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

注※

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

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

特定の条件でだけ指定するパラメタについては、省略しています（（例）暗号化通信を有効にした場合だけ指定するgrpc.tls接頭辞のパラメタなど）。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

TP1-Bridgeを構成するPodを定義したKubernetesのServiceのService名とネームスペース名の長さの合計は、40バイト以下としてください。TP1-BridgeのService名は、「(15)　Kubernetesアプリケーションのデプロイ」の「表3‒20　helmコマンドに指定するコマンド引数」のリリース名を参照してください。

3.7.5　EADSのHelmチャートのカスタマイズ（通常版限定）

EADSのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、EADSのHelmチャートパッケージファイル（eads-server-chart.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./eads-server-chart.tgz > ./eads-values.yaml

注　EADSサーバをインストールした環境から次のディレクトリをコピーします。

　/opt/hitachi/xeads/orchestration/chart

「8.3.3　EADS（通常版限定）」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例については、「8.3.3　EADS（通常版限定）」を参照してください。

EADS サーバのログ監視のための設定については、「(1)　EADSサーバのログ監視のための設定」を参照してください。

3.7.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のバージョンに合わせて読み替えてください。

「8.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/prometheus
  - my-namespace/deployments/metricbeat
  - my-namespace/daemonsets/filebeat
affinity: {}
http:
  port: 20556
timezone: Asia/Tokyo
java:
  options: -XX:+UseG1GC
logging:
  level:
    pctoStd: INFO

注※

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

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

3.7.7　FilebeatのHelmチャートのカスタマイズ

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のバージョンに合わせて読み替えてください。

「8.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.7.8　Jaeger-queryのHelmチャートのカスタマイズ

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のバージョンに合わせて読み替えてください。

「8.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.7.9　Jaeger-collectorのHelmチャートのカスタマイズ

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のバージョンに合わせて読み替えてください。

「8.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.7.10　PrometheusのHelmチャートのカスタマイズ

PrometheusのHelmチャートをカスタマイズするために、helm show valuesコマンドを実行して、PrometheusのHelmチャートパッケージファイル（prometheus-V.R.S.tgz）からデフォルト設定のvalues.yamlを抽出してください。コマンド例を次に示します。

helm show values ./prometheus-V.R.S.tgz > ./prometheus-values.yaml

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

「8.3.8　Prometheus」に記載されているHelmチャートのvalues.yamlの各パラメタについて、必須パラメタの定義、および任意パラメタを必要に応じてデフォルト値から変更してください。

Helmチャートのカスタマイズ例を次に示します。

namespace: my-namespace

image: myregistry.example.com/myproject/prometheus:V.R.S※3
imagePullSecrets:
- name: regcred
imagePullPolicy: IfNotPresent

requests:
  cpu: "500m"
  memory: "500Mi"

limits:
  cpu: "500m"
  memory: "500Mi"

http:
  port: 30014

scrapeNamespace:
  mediator: my-namespace
  sqlparticipant: my-namespace※1
  entity: my-namespace
  orchestrator: my-namespace
  jaegercollector: my-namespace

scrapePort:
  mediator: 20554
  sqlparticipant: 20555※2
  entity: 8080
  orchestrator: 8080

terminationGracePeriodSeconds: 300

livenessProbe:
  initialDelaySeconds: 30
  periodSeconds: 15
  failureThreshold: 3
  timeoutSeconds: 10
  successThreshold: 1
readinessProbe:
  initialDelaySeconds: 30
  periodSeconds: 5
  failureThreshold: 3
  timeoutSeconds: 4
  successThreshold: 1

prometheus:
  scrape:
    interval: 15s
  storage:
    retentionTime: 7d
  remoteWrite:
    queue:
      capacity: "10000"
      maxShards: "50"
      maxSamplesPerSend: "2000"

dependencyCheck:
  image: myregistry.example.com/myproject/dependency-checker:V.R.S※3
  imagePullPolicy: IfNotPresent
  enabled: true
  retryCount: 30
  retryIntervalSeconds: 10
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 10

注※1

SQL-Participantを使用する場合の例を記述しています。

TCC-Participantを使用する場合は、「tccparticipant: my-namespace」に置き換えてください。

TP1-Bridgeを使用する場合は、「tp1bridge: my-namespace」に置き換えてください。

注※2

SQL-Participantを使用する場合の例を記述しています。

TCC-Participantを使用する場合は、「tccparticipant: 8080」に置き換えてください。

TP1-Bridgeを使用する場合は、「tp1bridge: 20554」に置き換えてください。

注※3

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

この例は、次のとおりパラメタの値を指定しています。

必須パラメタについては、サンプルの値を指定しています。

任意パラメタについては、デフォルト値を指定しています。

重要

Helmチャートのカスタマイズ時の注意事項

Helmチャートは、行頭のインデント（文字の開始位置）が厳密に評価されます。注意して編集してください。

3.7.11　MetricbeatのHelmチャートのカスタマイズ

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のバージョンに合わせて読み替えてください。

「8.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.7.12　ElasticsearchのHelmチャートのカスタマイズ

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のバージョンに合わせて読み替えてください。

「8.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.7.13　LogstashのHelmチャートのカスタマイズ

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のバージョンに合わせて読み替えてください。

「8.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.8　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用

KubernetesやHelmチャートのコマンドを使用して、HMP-PCTOのKubernetesアプリケーションを運用するための作業項目について説明します。HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションは、HMP-PCTO主体で運用設計します。

説明中のKubernetesのコマンド例は、kubectlコマンドを使用した場合を例に記述しています。Red Hat OpenShift Container Platformを使用している場合は、ocコマンドに読み替えてください。

kubectlコマンドやocコマンドの使い方については、それぞれのマニュアルを参照してください。

3.8.1　作業項目の一覧

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションを運用するための作業項目の一覧を次に示します。表の上から順に作業を実行してください。

表3‒14　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションを運用するための作業項目の一覧

作業対象

作業項目

備考

参照先

Kubernetes各ワーカーノード

MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）

MediatorのConsensusLogのマウント用ディレクトリをローカル永続ボリューム（local）とする場合は、必ず作成します。

(1)　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）

Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリの作成

必ず作成します。

(2)　Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリの作成

EADSの永続ボリュームマウント用ディレクトリの作成（通常版限定）

通常版の場合だけ作成します。

(3)　EADSの永続ボリュームマウント用ディレクトリの作成（通常版限定）

Elasticsearchを使用するために必要な追加手順

必ず実施します。

(4)　Elasticsearchを使用するために必要な追加手順

Kubernetesコントロールプレーン

各種資材の配置

必ず実施します。

(1)　各種資材の配置

Namespaceの作成

次のどちらかのKubernetesアプリケーションをデプロイするための作業時に作成します。

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

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

(2)　Namespaceの作成

TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成

gRPC通信機能で暗号化通信をする場合だけ実施します。

(3)　TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成

MediatorのConsensusLogの永続ボリュームおよびストレージクラスのデプロイ

必ず実施します。

(4)　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのデプロイ

EADSの永続ボリュームのデプロイ（通常版限定）

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

(5)　EADSの永続ボリュームのデプロイ（通常版限定）

Elasticsearchのelasticユーザパスワード用シークレットの作成

ElasticsearchのTLS通信を行う場合だけ作成します。

(6)　Elasticsearchのelasticユーザパスワード用シークレットの作成

ElasticsearchのTLS通信用シークレットの作成

ElasticsearchのTLS通信を行う場合だけ作成します。

(7)　ElasticsearchのTLS通信用シークレットの作成

Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのデプロイ

必ず実施します。

(8)　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのデプロイ

Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのデプロイ

必ず実施します。

(9)　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのデプロイ

デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

次のどちらかのKubernetesアプリケーションをデプロイするための作業時に作成します。

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

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

(10)　デプロイ依存関係チェック機能用ロールおよびロールバインディングのデプロイ

コンテナログ収集用ロールおよびロールバインディングのデプロイ

必ず実施します。

(11)　コンテナログ収集用ロールおよびロールバインディングのデプロイ

メトリクス収集用ロールおよびロールバインディングのデプロイ

必ず実施します。

(12)　メトリクス収集用ロールおよびロールバインディングのデプロイ

メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのデプロイ

必ず実施します。

(13)　メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのデプロイ

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

通常版の場合だけ実施します。次のどちらかのKubernetesアプリケーションをデプロイするための作業時に作成します。

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

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

(14)　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

Kubernetesアプリケーションのデプロイ

必ず実施します。

(15)　Kubernetesアプリケーションのデプロイ

Elasticsearchのスナップショットリポジトリの作成およびスナップショットライフサイクルポリシーの作成

必ず実施します。

(16)　Elasticsearchのスナップショットリポジトリの作成およびスナップショットライフサイクルポリシーの作成

Elasticsearchのindex設定変更および削除

必ず実施します。

(17)　Elasticsearchのindex設定変更および削除

EADSのセットアップ（通常版限定）

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

(18)　EADSのセットアップ（通常版限定）

EADSのアンセットアップ（通常版限定）

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

(19)　EADSのアンセットアップ（通常版限定）

Kubernetesアプリケーションのアンデプロイ

必ず実施します。

(20)　Kubernetesアプリケーションのアンデプロイ

3.8.2　Kubernetes各ワーカーノードでの作業

(1)　MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成（ローカル永続ボリューム（local）とする場合）

MediatorのConsensusLogのマウント用ディレクトリをローカル永続ボリューム（local）とする場合は、次の作業を実施してください。

「3.6.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」でMediatorを配置する対象として決定した各ワーカーノードについて、MediatorのConsensusLogの永続ボリュームマウント用ディレクトリを次の要領で作成してください。

MediatorのConsensusLogの永続ボリュームマウント用ディレクトリの作成要領

ディレクトリパスは、「3.6.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データディレクトリの永続ボリュームマウント用ディレクトリの作成

「3.6.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」でElasticsearchを配置する対象として決定した各ワーカーノードについて、Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリを次の要領で作成してください。

Elasticsearchデータディレクトリの永続ボリュームマウント用ディレクトリの作成要領

Elasticsearchの永続ボリューム専用パーティションを作成してください。

ディレクトリに、Elasticsearchの永続ボリューム専用パーティションの割り当てを実施してください。ディレクトリパスは、「3.6.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の永続ボリュームマウント用ディレクトリの作成（通常版限定）

「3.6.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）」でEADSを配置する対象として決定した各ノードについて、EADSの永続ボリュームマウント用ディレクトリを次の要領で作成してください。

EADSの永続ボリュームマウント用ディレクトリの作成要領

ディレクトリパスは、「3.6.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を使用するために必要な追加手順

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.8.3　Kubernetesコントロールプレーンでの作業

(1)　各種資材の配置

Kubernetesコントロールプレーンの任意のパスへ、次の各種資材を配置してください。

表3‒15　Kubernetesコントロールプレーンに配置する資材の一覧

資材

備考

MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェスト

「3.6.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成したもの

MediatorのHelmチャートパッケージファイル(mediator-V.R.S.tgz)

HMP-PCTO提供物

MediatorのHelmチャートのvalues.yaml

「3.7.3　MediatorのHelmチャートのカスタマイズ」でカスタマイズしたもの

TP1-BridgeのHelmチャートパッケージファイル（tp1-bridge-V.R.S.tgz）

HMP-PCTO提供物

通常版の場合で、TP1-Bridgeを使用するときだけ配置します。

TP1-BridgeのHelmチャートのvalues.yaml

「3.7.4　TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）」でカスタマイズしたもの

通常版の場合で、TP1-Bridgeを使用するときだけ配置します。

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

「3.6.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）」で作成したもの

通常版の場合だけ配置します。

EADSのHelmチャートパッケージファイル(eads-service-chart.tgz、eads-server-chart.tgz、eads-command-job-chart.tgz、eads-command-cronjob-chart.tgz)

EADS提供物

EADSのHelmチャートのvalues.yaml

「3.7.5　EADSのHelmチャートのカスタマイズ（通常版限定）」でカスタマイズしたもの

Ext-ConsのHelmチャートパッケージファイル(ext-cons-V.R.S.tgz)

HMP-PCTO提供物

Ext-ConsのHelmチャートのvalues.yaml

「3.7.6　Ext-ConsのHelmチャートのカスタマイズ（トライアル版限定）」でカスタマイズしたもの

FilebeatのHelmチャートのパッケージファイル(filebeat-V.R.S.tgz)

HMP-PCTO提供物

FilebeatのHelmチャートのvalues.yaml

「3.7.7　FilebeatのHelmチャートのカスタマイズ」でカスタマイズしたもの

Jaeger-queryのHelmチャートのパッケージファイル(jaeger-query-V.R.S.tgz)

HMP-PCTO提供物

Jaeger-queryのHelmチャートのvalues.yaml

「3.7.8　Jaeger-queryのHelmチャートのカスタマイズ」でカスタマイズしたもの

Jaeger-collectorのHelmチャートのパッケージファイル(jaeger-collector-V.R.S.tgz)

HMP-PCTO提供物

Jaeger-collectorのHelmチャートのvalues.yaml

「3.7.9　Jaeger-collectorのHelmチャートのカスタマイズ」でカスタマイズしたもの

PrometheusのHelmチャートのパッケージファイル(prometheus-V.R.S.tgz)

HMP-PCTO提供物

PrometheusのHelmチャートのvalues.yaml

「3.7.10　PrometheusのHelmチャートのカスタマイズ」でカスタマイズしたもの

MetricbeatのHelmチャートのパッケージファイル(metricbeat-V.R.S.tgz)

HMP-PCTO提供物

MetricbeatのHelmチャートのvalues.yaml

「3.7.11　MetricbeatのHelmチャートのカスタマイズ」でカスタマイズしたもの

Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェスト

「3.6.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成したもの

Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェスト

「3.6.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成したもの

ElasticsearchのHelmチャートのパッケージファイル(elasticsearch-V.R.S.tgz)

HMP-PCTO提供物

ElasticsearchのHelmチャートのvalues.yaml

「3.7.12　ElasticsearchのHelmチャートのカスタマイズ」でカスタマイズしたもの

LogstashのHelmチャートのパッケージファイル(logstash-V.R.S.tgz)

HMP-PCTO提供物

LogstashのHelmチャートのvalues.yaml

「3.7.13　LogstashのHelmチャートのカスタマイズ」でカスタマイズしたもの

デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェスト

「3.6.6　デプロイ依存関係チェック機能用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

次のどちらかのKubernetesアプリケーションをデプロイするための作業時に配置します。

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

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

コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェスト

「3.6.7　コンテナログ収集用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェスト

「3.6.8　メトリクス収集用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェスト

「3.6.9　メトリクス向けKubernetesメタデータ付与用ロールおよびロールバインディングのKubernetesマニフェストの作成」で作成したもの

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェスト

「3.6.10　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成したもの

次のどちらかのKubernetesアプリケーションをデプロイするための作業時に配置します。

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

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

(2)　Namespaceの作成

HMP-PCTOのKubernetesアプリケーションをデプロイするNamespaceを作成してください。この作業は、次のどちらかのKubernetesアプリケーションをデプロイするための作業時に実施します。

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

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

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オブジェクトの作成に成功したメッセージが出力されていることを確認してください。

(3)　TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成

HMP-PCTOのgRPC通信機能で暗号化通信をする場合だけ実施します。

Kubernetesコントロールプレーンの任意のパスへ、次のとおりHMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備してください。なお、Participant（TP1-Bridge）の場合、TP1-Bridgeのアプリケーションの数だけ準備してください。

表3‒16　HMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルの一覧

ファイル

備考

接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル

必ず準備します。

自サーバ証明書（PEM形式）ファイル

必ず準備します。

自サーバ証明書を作成した秘密鍵ファイル

必ず準備します。

自クライアント証明書ファイル（PEM形式）

クライアント認証を行う場合だけ準備します。

自クライアント証明書を作成した秘密鍵ファイル

クライアント認証を行う場合だけ準備します。

接続元クライアント（Orchestrator、Participant）の秘密鍵が格納されているキーストア（pkcs12、またはJKS）ファイル

クライアント認証を行う場合だけ準備します。

HMP-PCTOのgRPC通信機能の暗号化通信に必要なファイルを準備したディレクトリ/ファイル構成の例を次に示します。

クライアント認証を行わない場合

<任意のパス>/
    ca.crt              # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
    participant/
        server.crt      # Participantの自サーバ証明書(PEM形式)ファイル
        server.key      # Participantの自サーバ証明書を作成した秘密鍵ファイル
    mediator/
        server.crt      # Mediatorの自サーバ証明書(PEM形式)ファイル
        server.key      # Mediatorの自サーバ証明書を作成した秘密鍵ファイル

クライアント認証を行う場合

<任意のパス>/
    ca.crt              # 接続先サーバのサーバ証明書を発行したCAの証明書(PEM形式)ファイル
    participant/
        server.crt      # Participantの自サーバ証明書(PEM形式)ファイル
        server.key      # Participantの自サーバ証明書を作成した秘密鍵ファイル
        client.crt      # Participantの自クライアント証明書ファイル(PEM形式)
        client.key      # Participantの自クライアント証明書を作成した秘密鍵ファイル
        keystore.jks    # Participantの接続元クライアント(orchestrator,participant)の秘密鍵が格納されている
                        # キーストア(pkcs12またはJKS)ファイル
    mediator/
        server.crt      # Mediatorの自サーバ証明書(PEM形式)ファイル
        server.key      # Mediatorの自サーバ証明書を作成した秘密鍵ファイル
        client.crt      # Mediatorの自クライアント証明書ファイル(PEM形式)
        client.key      # Mediatorの自クライアント証明書を作成した秘密鍵ファイル
        keystore.jks    # Mediatorの接続元クライアント(Orchestrator,Participant)の秘密鍵が格納されている
                        # キーストア(pkcs12またはJKS)ファイル

準備したファイルを使用してTP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットを作成します。

TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成要領を次に示します。

表3‒17　TP1-Bridge、MediatorのgRPC通信機能の暗号化通信用シークレットの作成要領

キー名

ファイル

ca.crt

接続先サーバのサーバ証明書を発行したCAの証明書（PEM形式）ファイル

server.crt

自サーバ証明書（PEM形式）ファイル

server.key

自サーバ証明書を作成した秘密鍵ファイル

client.crt

自クライアント証明書ファイル（PEM形式）

client.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 ¥
  --from-file=server.crt=./participant/server.crt ¥
  --from-file=server.key=./participant/server.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 ¥
  -n my-namespace

クライアント認証を行う場合

kubectl create secret generic --save-config participant-secret ¥
  --from-file=ca.crt=./ca.crt ¥
  --from-file=server.crt=./participant/server.crt ¥
  --from-file=server.key=./participant/server.key ¥
  --from-file=client.crt=./participant/client.crt ¥
  --from-file=client.key=./participant/client.key ¥
  --from-file=keystore=./participant/keystore.jks ¥
  --from-literal=keystore_password=changeit ¥
  -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=client.crt=./mediator/client.crt ¥
  --from-file=client.key=./mediator/client.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ユーザパスワード用シークレットの作成

Elasticsearchのelasticユーザのパスワードを設定するためのシークレットを作成してください。この作業は、ElasticsearchのTLS通信を行う場合だけ実施します。

次の例で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通信用シークレットの作成

Kubernetesコントロールプレーンの任意のパスへ、次のとおりElasticsearchのTLS通信に必要なファイルを準備してください。この作業は、ElasticsearchのTLS通信を行う場合だけ実施します。

表3‒18　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‒19　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データディレクトリの永続ボリュームおよびストレージクラスのデプロイ

「(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リポジトリディレクトリの永続ボリュームおよびストレージクラスのデプロイ

「(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のコントロールプレーンおよびRASのKubernetesアプリケーションのどちらかをデプロイするための作業時に実施します。

コマンド例を次に示します。

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)　コンテナログ収集用ロールおよびロールバインディングのデプロイ

「(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)　メトリクス収集用ロールおよびロールバインディングのデプロイ

「(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メタデータ付与用ロールおよびロールバインディングのデプロイ

「(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 with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のデプロイ（通常版限定）

「(1)　各種資材の配置」で配置したuCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストをデプロイしてください。この作業は、ユーザ責務のKubernetesアプリケーション、またはHMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションのどちらかをデプロイするための作業時に実施します。

次にコマンド例を示します。

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 with Java for Spring Bootスナップショットログの永続ボリュームをデプロイしたあと、次のコマンド例のように、uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームのデプロイが期待どおり成功していること（STATUS列が"Available"になっていること）を確認してください。

kubectl get pv

＜コマンドの実行結果の例＞

上記の例では、uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームだけを記載しています。実行環境によっては、そのほかに存在する永続ボリュームも一覧に表示されます。

なお、各列に表示される値は実行環境によって異なります。また、kubectlのdescribeサブコマンドを使用すると、各Kubernetesオブジェクトのさらに詳細な情報を参照できます。

(15)　Kubernetesアプリケーションのデプロイ

「(1)　各種資材の配置」で配置した各KubernetesアプリケーションのKubernetesマニフェストおよびHelmチャートをデプロイしてください。

なお、HMP-PCTOの各Kubernetesアプリケーションは次の順序でデプロイする必要があります。

Elasticsearch

Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat

Mediator、EADS、Ext-Cons（トライアル版だけ）、Participantが使用するDB/外部サービス

Participant※

Orchestrator

注※

TP1連携機能を使用する場合、TP1-Bridgeをデプロイする前に、OpenTP1のrapリスナーとrapサーバを起動してください。

上記以外の順序でデプロイした場合

各Kubernetesアプリケーションの初期化コンテナとして構成しているDependency-Checkerコンテナで、上記のとおり依存するKubernetesアプリケーションが先にデプロイされるまで待機します。待機処理がリトライオーバーし、初期化コンテナが異常終了した場合、Podの状態はCrashLoopBackOffになります。その場合は、Dependency-Checkerコンテナが実行しているデプロイ依存関係チェックスクリプトのエラーメッセージに従い対処してください。

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‒20　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

Prometheus

prometheus

prometheus-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のバージョンに合わせて読み替えてください。

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と接続できることを確認してください。

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のスナップショットリポジトリの作成およびスナップショットライフサイクルポリシーの作成

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設定変更および削除

HMP-PCTOがElasticsearchに出力する情報はindexとして格納されます。これらのindexには、次のライフサイクルが設定されています。

表3‒21　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は自動的に削除されない。

(a)　情報の確認方法

indexの一覧とボリューム使用量を確認する方法を次に示します。

Kubernetesコントロールプレーン上で、REST APIのGETメソッドを使用して、「IPアドレス:ポート番号/」のあとに「_cat/indices」を指定することでindexの一覧とボリューム使用量が表示されます。

次にコマンド例を示します（Elasticsearchのhttp.portが30202の場合）。

# curl -XGET 'localhost:30202/_cat/indices?v&s=index'

＜コマンドの実行結果の例＞

(b)　情報のロールオーバー設定の変更方法

標準出力の情報およびメトリクスの情報は、それぞれ「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}

(c)　情報の削除方法

デフォルトのポリシーでは、Elasticsearchのボリューム使用量が増加し続けるため、不要なindexは削除してください。

indexを削除する方法を次に示します。

■indexを自動的に削除する方法

標準出力の情報およびメトリクスの情報は、それぞれ「logstash-policy」「metricbeat」という名前のElasticsearch ILMポリシーが設定されています。これらのILMポリシーに対して、削除のポリシーを追加します。

分散トレースの情報はElasticsearch ILMポリシーが設定されていないため、削除を実施するILMポリシーの設定と、ILMポリシーを適用するための設定を行います。

Logstash、Metricbeatのindexを自動的に削除する方法

まず、現在のILMポリシーの内容を確認します（確認の方法は「(2)情報のロールオーバー設定の変更方法」をご覧ください）。

自動的に削除するためには、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)　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

このように、各コマンドが成功したメッセージが出力されていることを確認してください。

(19)　EADSのアンセットアップ（通常版限定）

「(20)　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

このように、各コマンドが成功したメッセージが出力されていることを確認してください。

(20)　Kubernetesアプリケーションのアンデプロイ

デプロイしたHMP-PCTOの各Kubernetesアプリケーションをアンデプロイする方法について説明します。

なお、HMP-PCTOの各Kubernetesアプリケーションは、次の順序でアンデプロイする必要があります。

Orchestrator

Participant※

Mediator、EADS、Ext-Cons（トライアル版だけ）、Participantが使用するDB/外部サービス

Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat

Elasticsearch

注※

TP1連携機能を使用している場合、TP1-Bridgeをアンデプロイしたあとに、OpenTP1のrapリスナーとrapサーバを停止してください。

重要

上記以外の順序でアンデプロイした場合に発生する問題

上記以外の順序でアンデプロイした場合、トラブルシュートに必要な情報が収集できなかったり、処理中のトランザクションが適切に終了しなかったりなどの問題が発生するおそれがあります。

HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションは、次のとおりhelmコマンドでアンデプロイしてください。

helm△uninstall△<リリース名>

（凡例）△：半角スペース1文字

<リリース名>は、デプロイ時と同様に指定してください。

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.9　ログの取得および監視の設定

ログの取得、および監視の設定について説明します。

3.9.1　ログおよびトラブルシュート情報の取得の設定

連携製品のトラブルシュート情報を取得するため、HMP-PCTOの構築時に次の設定をします。

(1)　Tomcatのアクセスログの取得方法

ログ取得を有効にする方法

Orchestrator、Entity-Service、SQL-Participant、およびTCC-ParticipantのSpring Bootのコンフィグソースにserver.tomcat.accesslog.enable=trueを設定するように定義してください。なお、TP1-Bridgeでは、ログを取得する設定がされています。

「2.6.2　OrchestratorのKubernetesマニフェストの作成」、「2.6.3　Entity-Service（Participantコンテナを含まないPodとする場合）のKubernetesマニフェストの作成」、「2.6.4　SQL-ParticipantのKubernetesマニフェストの作成（SQL-Participant限定）」、「2.6.5　TCC-ParticipantのKubernetesマニフェストの作成（TCC-Participant限定）」時にFilebeatコンテナのfilebeat.ymlに次を設定してください。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

filebeat.inputs:
- type: filestream
  id: "tomcat"
  paths:
    - '<Tomcatのアクセスログのパス>'

output.logstash:
  hosts: ["logstash.my-namespace.svc.cluster.local:5044"]

ヘッダ情報を取得する方法

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のKubernetesマニフェスト作成時にFilebeatをサイドカーコンテナとして立ち上げるようにしてください。

PostgreSQLのログ出力を有効にする設定をしてください。

Filebeatコンテナのfilebeat.ymlに次を設定してください。なお、output.logstashフィールドのNamespace名にはLogstashアプリケーションをデプロイするNamespaceを指定します。

注　ログが1回の出力で複数行を出力する場合、Filebeatのマニュアルを参考にMultiline messagesの設定をfilebeat.ymlに対して行い、1つの行として処理される設定にしてください。

filebeat.inputs:
- type: filestream
  id: "postgre"
  paths:
    - '<PostgreSQLログのパス>'

output.logstash:
  hosts: ["logstash.my-namespace.svc.cluster.local:5044"]

(3)　HiRDBのトラブルシュート情報の取得方法

トラブルシュートをするためには、次の情報が必要です。

ログ情報

メッセージログファイル、システムログファイルを取得してください。

HiRDBサーバのトランザクションの状態表示の結果

障害発生時などの場合に、トランザクションの状態表示の結果を取得してください。

SQLトレース

SQLトレースの出力は性能に影響があるため、デフォルトでは有効化されていません。SQLトレースの出力を有効化することで、SQLトレースによる詳細な調査ができます。

これらのトラブルシュート情報の取得方法については、マニュアル「HiRDB システム運用ガイド」、マニュアル「HiRDB コマンドリファレンス」、およびマニュアル「HiRDB UAP開発ガイド」を参照してください。

(4)　SQL Serverのトラブルシュート情報の取得方法

トラブルシュートをするためには、次の情報が必要です。

クエリトレース

ログ情報

システムログ、およびエラーログを取得してください。

これらのトラブルシュート情報の出力方法および取得情報については、SQL Serverのドキュメントを参照してください。

(5)　EADSのトラブルシュート情報の取得方法

EADSのトラブルシュート情報を取得するための設定、および取得方法については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照してください。

なお、トライアル版では取得できません。

(6)　uCosminexus Service Platformのトレース・ログ情報の取得方法

トラブルシュートをするためには、次の情報が必要です。

J2EEアプリケーションのユーザログ

NIO HTTPサーバのアクセスログ

Webサーブレットログ

JavaVMスタックトレース情報

JavaVMのGCログ

JavaVMログ（JavaVMログファイル）

これらのトレース・ログ情報を取得するための設定、および取得方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド」を参照してください。

(7)　OpenTP1のトレース・ログ情報の取得方法

トラブルシュートをするためには、次の情報が必要です。

リアルタイム出力機能

このトレース・ログ情報を取得するための設定、および取得方法については、マニュアル「OpenTP1 運用と操作」を参照してください。

(8)　TP1/Client/Jのトラブルシュート情報の取得方法

TP1-Bridgeのトラブルシュート情報は、情報ごとに出力方法が異なります。情報ごとの取得方法を次の表に示します。

表3‒22　TP1/Client/Jのトラブルシュート情報の取得方法

項番

トラブルシュート情報

取得方法

1

デバッグトレース

TP1-Bridgeの標準出力として出力されるため、Filebeatで収集します。

収集されたデータはElasticsearchに送信されるため、Elasticsearchのスナップショット機能で取得します。

2

エラートレース

TP1-BridgeのHelmチャートのvalues.yamlで、トラブルシュート情報の出力を有効化できます。出力を有効化するパラメタについては、「(1)　Helmチャートのパラメタ」を参照してください。

出力を有効化したトラブルシュート情報は、uCosminexus Application Runtime with Java for Spring Bootのスナップショットログ機能で取得します。

3

メソッドトレース

4

UAPトレース

5

データトレース

3.9.2　監視の設定

EADSサーバのログ監視、Elasticsearchに格納された標準出力の監視、およびメトリクスの監視の設定について説明します。

(1)　EADSサーバのログ監視のための設定

EADSサーバのログ監視を行う場合、そのログをElasticsearchに格納するためにEADSサーバのログを標準出力に出力するよう設定する必要があります。そのためEADSのセットアップ時に使用するHelmチャートのvalues.yamlのproperties.serverにeads.logger.message.console.enable=trueを追加してください。

properties:
  server:
  - eads.logger.message.console.enable=true

その後、後述する「Elasticsearchに格納された標準出力を監視するための設定」を実施してください。

この手順でElasticsearchに格納されるEADSサーバのログは監視目的のため、サポート部署に調査を依頼する際にはEADSのトラブルシュートファイルを送付してください。

(2)　Elasticsearchに格納された標準出力を監視するための設定

Elasticsearchに格納された標準出力の情報を監視する場合、次の方法があります。

KibanaのAlert機能を使用する

ElasticStackのKibanaにあるAlert機能で、標準出力の監視を行います。

Watcherを使用する

ElasticStackの有償の監視機能である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.10　パラメタの設計とチューニング

HMP-PCTOのパラメタの設計指針とチューニング方法について説明します。

3.10.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)　チューニング対象のパラメタ一覧

表3‒23　Orchestratorのチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

mediator.termination-thread-pool-size

OrchestratorからMediatorへの送信に使用するスレッド数を指定します。

パラメタの詳細については、「8.2.2　Orchestrator」を参照してください。

(c)　チューニング方法

mediator.termination-thread-pool-size

このパラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「10.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで「executor_active_threads{job="orchestrator-scraper"}」のクエリを入力し、Executeボタンを押すことでGraphタブに下図のような状態で表示されます。

図3‒3　PrometheusのWeb UI

なお、1つのPrometheusで複数のOrchestratorのメトリクスを収集している場合は、クエリに「instance="TP1-BridgeのIPアドレス:TP1-Bridgeのhttpポート番号"」を追加してください。

入力例：

executor_active_threads{job="orchestrator-scraper", instance="192.168.125.166:20554"}

長い期間このパラメタで指定した値で推移している場合、スレッド不足によって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」

分散トレースの確認方法の詳細については、「10.5.2　分散トレース」を参照してください。

スレッドが空き待ちになっている状態の参考データを下図に示します。

図3‒5　スレッドが空き待ち状態

(2)　Entity-Service

HMP-PCTOが制御するスレッドは存在しないため、HMP-PCTOのスレッドに関するパラメタのチューニングは必要ありません。

(3)　SQL-Participant

SQL-Participantでは次に示す3つのスレッドプールがあります。

SQL-Participantのトランザクション処理に使用するスレッドプール

Mediatorへ送信を行うスレッドの管理に使用するスレッドプール

gRPC通信制御に使用するスレッドプール

図3‒6　SQL-Participantの同時実行スレッド数制御

それぞれのスレッドプールについて以降に説明します。

SQL-Participantのトランザクション処理に使用するスレッドプールでは、Entity-ServiceからのPrepare指示／トランザクションのキャンセル指示・投票処理・分散合意処理・トランザクション完了通知処理の同時実行スレッド数を制御します。同時実行スレッド数はSQL-Participantのパラメタ「sql.participant-processing.thread-pool-size」で指定します。キュー数はSQL-Participantのパラメタ「sql.participant-processing.queue-size」で指定します。

このスレッドプールで使用するスレッドとその占有期間は次のとおりです。

Entity-Serviceと通信を行う際、SQL実行／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)　チューニング対象のパラメタ一覧

表3‒24　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との送受信に使用するスレッドの割り当て待ちをするキューのサイズを指定します。

各パラメタの詳細については、「8.2.4　SQL-Participant」を参照してください。

(c)　チューニング方法

各パラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「10.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで次に示す表のクエリを入力し、Executeボタンを押すことでGraphタブに下図のような状態で表示されます。

チューニング対象のパラメタと、下図に表示されたメトリクス名の関連づけは、「表3‒26　チューニング対象のパラメタとメトリクス名の関連づけ」を参照してください。メトリクス名は、クエリを実行した結果によって「name="メトリクス名"」と表示されるため、該当する表示個所からメトリクス名を確認してください。

表3‒25　Prometheusで利用するクエリ

チューニング対象のパラメタ

クエリ

sql.participant-processing.thread-pool-size

executor_active_threads{job=" sql-participant-scraper"}

mediator-process-management.thread-pool-size

mediator-communication.thread-pool-size

sql.participant-processing.queue-size

executor_queued_tasks{job=" sql-participant-scraper"}

mediator-communication.queue-size

表3‒26　チューニング対象のパラメタとメトリクス名の関連づけ

チューニング対象のパラメタ

メトリクス名

sql.participant-processing.thread-pool-size

jp.co.Hitachi.soft.hmppcto.db.osc.GrpcTransactionBranchRequestService:prepareRequest

jp.co.Hitachi.soft.hmppcto.db.osc.GrpcTransactionBranchRequestService:cancelRequest

jp.co.Hitachi.soft.hmppcto.txpaxosmanager.osc.OscProposalController#terminate:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.ConsensusJudgeObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionNotify:sendTransactionNotify

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminationProposalObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionVerifyNotifyObserverImpl:observe

sql.participant-processing.queue-size

jp.co.Hitachi.soft.hmppcto.db.osc.GrpcTransactionBranchRequestService:prepareRequest

jp.co.Hitachi.soft.hmppcto.db.osc.GrpcTransactionBranchRequestService:cancelRequest

jp.co.Hitachi.soft.hmppcto.txpaxosmanager.osc.OscProposalController#terminate:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.ConsensusJudgeObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionNotify:sendTransactionNotify

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminationProposalObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionVerifyNotifyObserverImpl:observe

図3‒8　PrometheusのWeb UI

executor_active_threads{job="sql-participant-scraper"}の結果が、長い期間sql.participant-processing.thread-pool-size、mediator-process-management.thread-pool-size、mediator-communication.thread-pool-sizeで指定した値で推移している場合、スレッド不足によって、処理の遅延が発生しているおそれがあります。これらのパラメタの値を増やすことで、次の図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒9　PrometheusのWeb UI

また、executor_queued_tasks{job="sql-participant-scraper"}の結果が、sql.participant-processing.queue-size やmediator-communication.queue-sizeで指定した値で推移している場合、キューサイズ不足が発生しているおそれがあります。これらのパラメタの値を増やすことでキューサイズ不足を防ぐことができます。

また、分散トレースデータでもスレッドの空き待ち状態になっているかどうか確認できます。JaegerのWeb UIで確認したいトレース情報のTrace Pageを表示し、次のオペレーション名のspanを表示します。

sql.participant-processing.thread-pool-size

オペレーション名「j.c.H.s.h.p.s.GrpcTerminationJudgeRequestSender」

(Tagsが「internal.span.format」と「status.code」だけのspan)

オペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」

(Tagsが「internal.span.format」と「status.code」だけのspan)

オペレーション名「j.c.H.s.h.p.c.o.TerminatedTransactionNotify:sendTransactionNotify」

(Tagsが「internal.span.format」と「status.code」だけのspan)

mediator-process-management.thread-pool-size

オペレーション名「j.c.H.s.h.p.s.GrpcTerminationJudgeRequestSender」

(Tagsに「branch-xid」などが含まれるspan)

オペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」

(Tagsに「consensus-value」などが含まれるspan)

オペレーション名「j.c.H.s.h.p.c.o.TerminatedTransactionNotify:sendTransactionNotify」

(Tagsに「host-name」などが含まれるspan)

mediator-communication.thread-pool-size

オペレーション名「hmppcto.mediator.TerminationReceiverService/propose」

オペレーション名「hmppcto.mediator.TerminationReceiverService/notifyTerminationResult」

オペレーション名「hmppcto.mediator.TerminationReceiverService/notifyTerminatedTransaction」

上記spanのDurationが大きい場合、SQL-Participantのパラメタで指定するスレッドが不足してスレッドの空き待ち状態になっているおそれがあります。

分散トレースの確認方法の詳細については、「10.5.2　分散トレース」を参照してください。

(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)　チューニング対象のパラメタ一覧

表3‒27　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との送受信に使用するスレッドの割り当てを待つキューのサイズを指定します。

各パラメタの詳細については、「8.2.5　TCC-Participant」を参照してください。

(c)　チューニング方法

各パラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「10.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで次に示す表のクエリを入力し、Executeボタンを押すことでGraphタブに下図のような状態で表示されます。

チューニング対象のパラメタと、下図に表示されたメトリクス名の関連づけは、「表3‒29　チューニング対象のパラメタとメトリクス名の関連づけ」を参照してください。メトリクス名は、クエリを実行した結果によって「name="メトリクス名"」と表示されるため、該当する表示個所からメトリクス名を確認してください。

表3‒28　Prometheusで利用するクエリ

チューニング対象のパラメタ

クエリ

tcc.participant-processing.thread-pool-size

executor_active_threads{job=" tcc-participant-scraper"}

mediator-process-management.thread-pool-size

mediator-communication.thread-pool-size

tcc.participant-processing.queue-size

executor_queued_tasks{job=" tcc-participant-scraper"}

mediator-communication.queue-size

表3‒29　チューニング対象のパラメタとメトリクス名の関連づけ

チューニング対象のパラメタ

メトリクス名

tcc.participant-processing.thread-pool-size

jp.co.Hitachi.soft.hmppcto.participant.tcc.interceptor.TccOscController:terminate

jp.co.Hitachi.soft.hmppcto.participant.common.osc.ConsensusJudgeObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionNotify:sendTransactionNotify

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminationProposalObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionVerifyNotifyObserverImpl:observe

tcc.participant-processing.queue-size

jp.co.Hitachi.soft.hmppcto.participant.tcc.interceptor.TccOscController:terminate

jp.co.Hitachi.soft.hmppcto.participant.common.osc.ConsensusJudgeObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionNotify:sendTransactionNotify

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminationProposalObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionVerifyNotifyObserverImpl:observe

図3‒12　PrometheusのWeb UI

executor_active_threads{job=" tcc-participant-scraper"}の結果が、長い期間tcc.participant-processing.thread-pool-size、mediator-process-management.thread-pool-size、mediator-communication.thread-pool-sizeで指定した値で推移している場合、スレッド不足によって、処理の遅延が発生しているおそれがあります。これらのパラメタの値を増やすことで、次の図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒13　PrometheusのWeb UI

また、executor_queued_tasks{job=" tcc-participant-scraper"}の結果が、tcc.participant-processing.queue-size やmediator-communication.queue-sizeで指定した値で推移している場合、キューサイズ不足が発生しているおそれがあります。これらのパラメタの値を増やすことでキューサイズ不足を防ぐことができます。

また、分散トレースデータでもスレッドの空き待ち状態になっているかどうか確認できます。JaegerのWeb UIで確認したいトレース情報のTrace Pageを表示し、次のオペレーション名のspanを表示します。

tcc.participant-processing.thread-pool-size

オペレーション名「j.c.H.s.h.p.s.GrpcTerminationJudgeRequestSender」

（Tagsが「internal.span.format」と「status.code」だけのspan）

オペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」

（Tagsが「internal.span.format」と「status.code」だけのspan）

オペレーション名「j.c.H.s.h.p.c.o.TerminatedTransactionNotify:sendTransactionNotify」

（Tagsが「internal.span.format」と「status.code」だけのspan）

mediator-process-management.thread-pool-size

オペレーション名「j.c.H.s.h.p.s.GrpcTerminationJudgeRequestSender」

（Tagsに「branch-xid」などが含まれるspan）

オペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」

（Tagsに「consensus-value」などが含まれるspan）

オペレーション名「j.c.H.s.h.p.c.o.TerminatedTransactionNotify:sendTransactionNotify」

（Tagsに「host-name」などが含まれるspan）

mediator-communication.thread-pool-size

オペレーション名「hmppcto.mediator.TerminationReceiverService/propose」

オペレーション名「hmppcto.mediator.TerminationReceiverService/notifyTerminationResult」

オペレーション名「hmppcto.mediator.TerminationReceiverService/notifyTerminatedTransaction」

上記spanのDurationが大きい場合、TCC-Participantのパラメタで指定するスレッドが不足してスレッドの空き待ち状態になっているおそれがあります。

分散トレースの確認方法の詳細については、「10.5.2　分散トレース」を参照してください

(5)　Mediator

Mediatorでは次に示す4つのスレッドプールがあります。

表3‒30　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)　チューニング対象のパラメタ一覧

表3‒31　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への送信に使用するスレッドの割り当てを待つキューのサイズを指定します。

各パラメタの詳細については、「8.3.1　Mediator」を参照してください。

(c)　チューニング方法

consensusLog.io.threadPoolSize

このパラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「10.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで「executor_active_threads{job="mediator-scraper"}」のクエリを入力し、Executeボタンを押すことでGraphタブに下図のような状態で表示されます。

図3‒15　PrometheusのWeb UI

長い期間このパラメタで指定した値で推移している場合、スレッド不足によってConsensusLogの書き込み待ちが発生しているおそれがあります。このパラメタの値を増やすことで、下図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒16　PrometheusのWeb UI

また、分散トレースデータでもスレッドの空き待ち状態になっているかどうか確認できます。JaegerのWeb UIで確認したいトレース情報のTrace Pageを表示し、次のオペレーション名のspanの例を表示します。

grpc.server.threadPoolSize

オペレーション名「hmppcto.mediator.TerminationReceiverService/commit」

mediator.judge.threadPoolSize

オペレーション名「j.c.H.s.h.m.j.TerminationJudgeImpl$AsyncTerminationRequestTask:runImpl」

consensusLog.io.threadPoolSize

オペレーション名「j.c.H.s.h.m.a.i.d.DirectAccessConsensusLogReaderWriter:writeDirectIOConsensusLog」

participant.sender.threadPoolSize

オペレーション名「hmppcto.learner.ConsensusJudgeReceiverService/receive」

上記spanのDurationが大きい場合、Mediatorのパラメタで指定するスレッドが不足してスレッドの空き待ち状態になっているおそれがあります。

分散トレースの確認方法の詳細については、「10.5.2　分散トレース」を参照してください。

(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を使用するOrchestrator/Entity-Serviceが複数ある場合は、それぞれのトランザクションの同時実行数の合計数分のスレッドが必要です。

スレッドの占有期間に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‒32　Spring Bootが制御するスレッドのチューニング対象のパラメタ一覧

項番

パラメタ

説明

1

server.tomcat.threads.max

TP1-BridgeがAPから受け付けたリクエストの処理を実行するワーカースレッドの最大数を設定します。

■チューニング方法

server.tomcat.threads.max

このパラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法の詳細については、「10.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで「tomcat_threads_current_threads{job="tp1-bridge-scraper"}」のクエリを入力し、Executeボタンを押すことでGraphタブに次の図のような状態で表示されます。

図3‒17　PrometheusのWeb UI

なお、1つのPrometheusで複数のTP1-Bridegのメトリクスを収集している場合は、クエリに「instance="TP1-BridgeのIPアドレス:TP1-Bridgeのhttpポート番号"」を追加してください。

入力例：

tomcat_threads_current_threads{job="tp1-bridge-scraper", 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」を参照してください。

■チューニング対象のパラメタ一覧

表3‒33　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との送受信に使用するスレッドの割り当て待ちをするキューのサイズを指定します。

各パラメタの詳細については、「8.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）」を参照してください。

■チューニング方法

各パラメタに関する情報はメトリクスデータによって確認できます。メトリクスデータの確認方法については、「10.5.3　メトリクス」を参照してください。

PrometheusのWeb UIで次に示す表のクエリを入力し、Executeボタンを押すことでGraphタブに下図のような状態で表示されます。

チューニング対象のパラメタと、下図に表示されたメトリクス名の関連づけは、「表3‒35　チューニング対象のパラメタとメトリクス名の関連づけ」を参照してください。メトリクス名は、クエリを実行した結果によって「name="メトリクス名"」と表示されるため、該当する表示個所からメトリクス名を確認してください。

表3‒34　Prometheusで利用するクエリ

チューニング対象のパラメタ

クエリ

tp1.participant-processing.thread-pool-size

executor_active_threads{job="tp1-bridge-scraper"}

mediator-process-management.thread-pool-size

mediator-communication.thread-pool-size

tp1.participant-processing.queue-size

executor_queued_tasks{job=" tp1-bridge-scraper"}

mediator-communication.queue-size

表3‒35　チューニング対象のパラメタとメトリクス名の関連づけ

チューニング対象のパラメタ

メトリクス名

tp1.participant-processing.thread-pool-size

jp.co.Hitachi.soft.hmppcto.adapter.TP1BridgeProposalEventObserver:observe

jp.co.Hitachi.soft.hmppcto.txpaxosmanager.osc.OscProposalController#terminate:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.ConsensusJudgeObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionNotify:sendTransactionNotify

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminationProposalObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionVerifyNotifyObserverImpl:observe

tp1.participant-processing.queue-size

jp.co.Hitachi.soft.hmppcto.adapter.TP1BridgeProposalEventObserver:observe

jp.co.Hitachi.soft.hmppcto.txpaxosmanager.osc.OscProposalController#terminate:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.ConsensusJudgeObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionNotify:sendTransactionNotify

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminationProposalObserverImpl:observe

jp.co.Hitachi.soft.hmppcto.participant.common.osc.TerminatedTransactionVerifyNotifyObserverImpl:observe

図3‒19　PrometheusのWeb UI

executor_active_threads{job="tp1-bridge-scraper"}の結果が、長い期間tp1.participant-processing.thread-pool-size、mediator-process-management.thread-pool-size、またはmediator-communication.thread-pool-sizeで指定した値で推移している場合、スレッド不足によって処理の遅延が発生しているおそれがあります。これらのパラメタの値を増やすことで、次の図のように処理時間を改善できる場合があります。図中のＸは改善前の処理時間、図中のＹは改善後の処理時間です。

図3‒20　PrometheusのWeb UI

また、executor_queued_tasks{job="tp1-bridge-scraper"}の結果が、tp1.participant-processing.queue-sizeやmediator-communication.queue-sizeで指定した値で推移している場合、キューサイズ不足が発生しているおそれがあります。これらのパラメタの値を増やすことでキューサイズ不足を防ぐことができます。

なお、分散トレースデータでも、スレッドの空き待ち状態になっているかどうかを確認できます。JaegerのWeb UIで確認したいトレース情報のTrace Pageを表示し、次のオペレーション名のspanを表示します。

tp1.participant-processing.thread-pool-size

オペレーション名「j.c.H.s.h.p.s.GrpcTerminationJudgeRequestSender」

（Tagsが「internal.span.format」と「status.code」だけのspan）

オペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」

（Tagsが「internal.span.format」と「status.code」だけのspan）

オペレーション名「j.c.H.s.h.p.c.o.TerminatedTransactionNotify:sendTransactionNotify」

（Tagsが「internal.span.format」と「status.code」だけのspan）

mediator-process-management.thread-pool-size

オペレーション名「j.c.H.s.h.p.s.GrpcTerminationJudgeRequestSender」

（Tagsに「branch-xid」などが含まれるspan）

オペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」

（Tagsに「consensus-value」などが含まれるspan）

オペレーション名「j.c.H.s.h.p.c.o.TerminatedTransactionNotify:sendTransactionNotify」

（Tagsに「host-name」などが含まれるspan）

mediator-communication.thread-pool-size

オペレーション名「hmppcto.mediator.TerminationReceiverService/propose」

オペレーション名「hmppcto.mediator.TerminationReceiverService/notifyTerminationResult」

オペレーション名「hmppcto.mediator.TerminationReceiverService/notifyTerminatedTransaction」

上記spanのDurationが大きい場合、TP1-Bridgeのパラメタで指定したスレッドの不足によるスレッドの空き待ち状態になっているおそれがあります。

分散トレースの確認方法の詳細については、「10.5.2　分散トレース」を参照してください。

(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‒36　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.10.2　タイマ

トランザクション制御の中で使用するタイマのチューニングパラメタについては次の表の記載のとおりです。

メモ

TP1-Bridgeの場合は、次の表中のSQL-ParticipantをTP1-Bridgeに、jp.co.Hitachi.soft.hmppcto.sqlをjp.co.Hitachi.soft.hmppcto.tp1に読み替えてください。

表3‒37　チューニング対象のパラメタ一覧

項番

パラメタ設定の主体

パラメタ名

説明

1

Orchestrator

jp.co.Hitachi.soft.hmppcto.grpc.watchtime

＜パラメタの説明＞

Mediatorへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

このタイマはOrchestratorからMediatorへトランザクション決着指示の要求電文を送信してから、トランザクション合意結果を受け付けるまでの間を監視します。

このタイマがタイムアウトした時点でMediatorから1つも応答がない場合は、トランザクションの決着結果は不明としてAPに応答し通信エラーとなります。

パラメタの詳細については、「8.2.2　Orchestrator」を参照してください。

＜設定方法＞

トランザクション決着結果が確定する前に、このタイマがタイムアウトするのを防ぐためトランザクション決着監視タイマより大きな値を設定してください。その上でユーザAPの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと障害でMediatorがダウンしていた場合に、監視時間分待ち合わせてしまいスレッドを占有してしまいます。

タイマの値が短いと障害によって分散合意ができない場合の遅延を許容できる時間が短くなります。

このタイマは、次のタイマより大きい値を設定してください。

SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.trn-termination.timeout-in-millis

2

Entity-Service

jp.co.Hitachi.soft.hmppcto.grpc.watchtime

＜パラメタの説明＞

Participantへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

このタイマはEntity-ServiceからParticipantへの要求電文を送信してから、実行結果を受け付けるまでの間を監視します。対象となるのは次のとおりです。

Entity-ServiceからParticipantへSQL実行を行う場合

Entity-ServiceからParticipantへ先行Prepare要求を行う場合

このタイマがタイムアウトした場合はSQL-Participantの障害と判断し、トランザクションブランチをロールバックします。

パラメタの詳細については、「8.2.3　Entity-Service/Entity-Module」を参照してください。

＜設定方法＞

このタイマはユーザAPの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いとSQL-ParticipantがSQL実行を行い応答するまでの遅延を許容できますが、障害が発生した場合にトランザクションブランチをロールバックするまでに時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにトランザクションブランチをロールバックできますが、遅延を障害と判断しロールバックします。

このタイマは、次のタイマより大きい値を設定してください。

SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.pool.allocation-wait-time-in-millis

3

SQL-Participant

jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

＜パラメタの説明＞

補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で指定します。

このタイマはMediatorから1つ目の合意を受信してから分散合意可能な数のMediatorから合意を受信するまでを監視します。

このタイマがタイムアウトした場合は次の動作を行います。

Mediatorから高速合意できるだけの合意を受信していれば、高速合意を実行します。

Mediatorから高速合意できるだけの合意を受信しておらず、補助合意できるだけの合意を受信していれば、補助合意を実行します。

なお、このタイマは合意できるまで無限にリトライします。

パラメタの詳細については、「8.2.4　SQL-Participant」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、補助合意が頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとタイムアウト時に補助合意できる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

4

jp.co.Hitachi.soft.hmppcto.grpc.watchtime

＜パラメタの説明＞

Mediatorへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

このタイマはParticipantからMediatorに要求電文を送信してから、Mediatorから要求を受け付けた旨の応答電文を受信するまでの間を監視します。対象となるのは次のとおりです。

ParticipantからMediatorへ投票を行う場合

ParticipantからMediatorへトランザクション合意結果を通知する場合

ParticipantからMediatorへトランザクション完了を通知する場合

このタイマがタイムアウトした場合は通信エラーとなります。投票が通信エラーとなった場合は、トランザクションの決着が行えずにRollbackとなるおそれがあります。トランザクション合意結果通知および、トランザクション完了通知が通信エラーとなった場合はOrchestratorへの合意結果の通知やログの削除が行えないおそれがあります。

パラメタの詳細については、「8.2.4　SQL-Participant」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、Mediatorとの通信環境によってgRPC通信エラーが頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとMediatorがダウンしたときにスレッドが占有されて他Mediatorへの送信が遅れるおそれがあります。

タイマの値が短いとMediatorなどに障害が発生した場合のトランザクションの遅延を小さくできますが、通信遅延を障害と誤認します。

このタイマは、次のタイマより小さい値を設定してください。

SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

5

jp.co.Hitachi.soft.hmppcto.sql.pool.allocation-wait-time-in-millis

＜パラメタの説明＞

SQL-ParticipantがDBアクセスのためのコネクションをコネクションプールから取得する際に、コネクションプールに空きがなかった場合の空き待ち時間をミリ秒単位で指定します。

このタイマはSQL-ParticipantからDBへのコネクション接続要求を送信し、接続確立の応答が帰るまでの間を監視します。

このタイマがタイムアウトした場合はエラーとなり、トランザクションブランチをロールバックします。

パラメタの詳細については、「8.2.4　SQL-Participant」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、エラーが頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとDBとのコネクションが確保できない場合に許容できる時間が増えますが、遅延が大きくなります。

タイマの値が短いと遅延は短縮されますが、許容できる時間が短くなり、エラーリターンします。

このタイマは、次のタイマより小さい値を設定してください。

Entity-Serviceのパラメタjp.co.Hitachi.soft.hmppcto.grpc.watchtime

6

jp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

＜パラメタの説明＞

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で指定します。DBの排他ロックが解けない状態となることを許容できる時間をタイマ監視し、設定した時間を超えてもトランザクションが決着しなかった場合に、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

このタイマは、ParticipantからDBへxa_startを行ってからxa_commitまたはxa_rollbackを行うまでの間を監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「8.2.4　SQL-Participant」を参照してください。

＜設定方法＞

このタイマはユーザAPの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合、Rollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、遅延を障害と判断しRollback決着します。

このタイマは、次のタイマより大きい値を設定してください。

SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.grpc.watchtime

7

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投票を行います。

パラメタの詳細については、「8.2.4　SQL-Participant」を参照してください。

＜設定方法＞

このタイマはユーザAPの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合、Rollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、障害が長引いた場合に何度もリトライを行うため通信負荷が掛かります。

このタイマは、次のタイマより大きい値を設定してください。

SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

SQL-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.grpc.watchtime

8

TCC- Participant

jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

＜パラメタの説明＞

補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で指定します。

このタイマはMediatorから1つ目の合意を受信してから分散合意可能な数のMediatorから合意を受信するまでを監視します。

このタイマがタイムアウトした場合は次の動作を行います。

Mediatorから高速合意できるだけの合意を受信していれば、高速合意を実行します。

Mediatorから高速合意できるだけの合意を受信しておらず、補助合意できるだけの合意を受信していれば、補助合意を実行します。

なお、このタイマは合意できるまで無限にリトライします。

パラメタの詳細については、「8.2.5　TCC-Participant」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、補助合意が頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとタイムアウト時に補助合意できるMediatorがそろう可能性が高まりますが、補助合意実行までの間隔が伸び遅延が大きくなります。

タイマの値が短いとMediatorなどに障害が発生した場合のトランザクションの遅延を小さくできますが、通信遅延を障害と誤認し、不要な補助合意が発生します。

このタイマは、次のタイマより小さい値を設定してください。

TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.trn-termination.timeout-in-millis

TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.consensus.interval-in-millis

9

jp.co.Hitachi.soft.hmppcto.grpc.watchtime

＜パラメタの説明＞

Mediatorへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

このタイマはParticipantからMediatorに要求電文を送信してから、Mediatorから要求を受け付けた旨の応答電文を受信するまでの間を監視します。対象となるのは次のとおりです。

ParticipantからMediatorへ投票を行う場合

ParticipantからMediatorへトランザクション合意結果を通知する場合

ParticipantからMediatorへトランザクション完了を通知する場合

このタイマがタイムアウトした場合は通信エラーとなります。

投票が通信エラーとなった場合は、トランザクションの決着が行えずにRollbackとなるおそれがあります。

トランザクション合意結果通知および、トランザクション完了通知が通信エラーとなった場合はOrchestratorへの合意結果の通知やログの削除が行えない可能性があります。

パラメタの詳細については、「8.2.5　TCC-Participant」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、Mediatorとの通信環境によってgRPC通信エラーが頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとMediatorがダウンしたときにスレッドが占有されて他Mediatorへの送信が遅れるおそれがあります。

タイマの値が短いとMediatorなどに障害が発生した場合のトランザクションの遅延を小さくできますが、通信遅延を障害と誤認します。

このタイマは、次のタイマより小さい値を設定してください。

TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.trn-termination.timeout-in-millis

10

jp.co.Hitachi.soft.hmppcto.tcc.trn-termination.timeout-in-millis

＜パラメタの説明＞

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で指定します。障害によってトランザクション決着に至らない状態となることを許容できる時間をタイマ監視し、設定時間を超えてもトランザクションが決着しなかった場合に、ユーザが許容できる時間（業務要件）を超過したと判断しトランザクションを決着に向かわせるタイマです。

このタイマは、APIアダプタ機能から業務ロジックへTryを実行する直前から分散合意結果に従ってTry実行に対するConfirm/Cancelの実行が完了するまでの区間をタイマ監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「8.2.5　TCC-Participant」を参照してください。

＜設定方法＞

このタイマはユーザAPの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合にRollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、遅延を障害と判断しRollback決着します。

このタイマは、次のタイマより大きい値を設定してください。

TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.grpc.watchtime

11

jp.co.Hitachi.soft.hmppcto.tcc.consensus.interval-in-millis

＜パラメタの説明＞

トランザクション分散合意処理をリトライする間隔をミリ秒単位で指定します。障害などによってトランザクションの分散合意ができないとき、この間隔によってトランザクションの分散合意が決着するまで分散合意処理をリトライし、分散合意によるトランザクションの決着が必ず行われるようにするためのリトライ間隔です。

このタイマは、ParticipantからMediatorへ投票を行ってから分散合意が決着するまでの区間をタイマ監視します。

このタイマがタイムアウトした場合はParticipantからMediatorに対してRollback投票を行います。

パラメタの詳細については、「8.2.5　TCC-Participant」を参照してください。

＜設定方法＞

このタイマはユーザAPの業務要件に従い1つのトランザクションで許容できる時間を設定してください。

タイマの値が長いと通信遅延などによって合意が滞っている場合でもCommit決着できる可能性が高まります。しかし、障害が発生した場合にRollbackするまで、タイマの指定値分の時間が掛かります。

タイマの値が短いと障害が起きた際に速やかにRollback決着を行うことができますが、障害が長引いた場合に何度もリトライを行うため通信負荷が掛かります。

このタイマは、次のタイマより大きい値を設定してください。

TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.external-consensus.interval-in-millis

TCC-Participantのパラメタ jp.co.Hitachi.soft.hmppcto.grpc.watchtime

12

Mediator

consensusLog.io.watchInSeconds

＜パラメタの説明＞

ConsensusLogファイルへの書き込みおよび読み出し時のIO監視時間を秒で指定します。

このタイマは、トランザクション決着指示を受けたMediatorがConsensusLogへ永続化結果を書き込んでから完了するまでの間を監視します。

このタイマがタイムアウトした場合は、障害メッセージを出力し、該当するMediatorは故障と判断し分散合意の対象外となります。

パラメタの詳細については、「8.3.1　Mediator」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、エラーが頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとハードウェアやドライバが障害検知した場合でも、タイマの指定値分まで監視を続けてしまいます。

タイマの値が短いとIOハングアップした場合に早期に検知できますが、監視時間中に容量が空き、復旧できる見込みがあった場合でもエラーとなります。

13

grpc.watchtime

＜パラメタの説明＞

Participantへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

このタイマはMediatorからParticipantに要求電文を送信してから、Participantから要求を受け付けた旨の応答電文を受信するまでの間を監視します。対象となるのは次のとおりです。

MediatorからParticipantへの投票要求を行う場合

MediatorからParticipantへトランザクション決着結果通知を行う場合

MediatorからParticipantへトランザクション完了確認通知を行う場合　

このタイマがタイムアウトすると、通信エラーとなります。投票要求および、トランザクション決着結果通知が通信エラーとなった場合は、トランザクションが決着できずにRollbackとなるおそれがあります。トランザクション完了確認通知が通信エラーとなった場合は、ログの削除が行えないおそれがあります。

パラメタの詳細については、「8.3.1　Mediator」を参照してください。

＜設定方法＞

基本はデフォルト値を設定した上で、Mediatorとの通信環境によってgRPC通信エラーが頻繁に発生するようであれば、長めに調整してください。

タイマの値が長いとMediatorがダウンした時にスレッドが占有されて他Mediatorへの送信が遅れるおそれがあります。

タイマの値が短いとMediatorなどに障害が発生した場合のトランザクションの遅延を小さくできますが、通信遅延を障害と誤認します。

このタイマは、次のタイマより小さい値を設定してください。

SQL-Participantのパラメタjp.co.Hitachi.soft.hmppcto.sql.transaction-termination.timeout-in-millis

TCC-Participantのパラメタjp.co.Hitachi.soft.hmppcto.tcc.trn-termination.timeout-in-millis

3.10.3　G1GC

SQL-Participant、Mediator、およびTP1-Bridgeでは、Javaのメモリ管理の方式にG1GCを選択します。メモリ領域に対してYoungGC、MixedGC、およびFullGCの3種類のGCが発生します。このうち、YoungGCとMixedGCについては、GC発生時にアプリケーションが停止する時間を制御できます。G1GCを選択するために、-XX:+UseG1GCオプションのほか、GC発生時の目標の停止時間、メモリに関するオプションや処理性能のチューニングに関するオプションを指定します。

(1)　チューニング対象のパラメタ一覧

表3‒38　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)　SQL-Participant

SQL-ParticipantのKubernetesマニフェストで、次のとおり指定します。

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

環境変数HMPPCTO_JAVA_OPTIONSでSQL-ParticipantのJavaプロセス起動時にJava VMに渡すオプションを指定します。

SQL-ParticipantのKubernetesマニフェストの記述例は「2.6.4　SQL-ParticipantのKubernetesマニフェストの作成（SQL-Participant限定）」を参照してください。

(b)　Mediator

MediatorのHelmチャートのjava.optionsパラメタでMediatorのJavaプロセス起動時にJava VMに渡すオプションを指定します。

java.optionsパラメタの詳細は、「(1)　Helmチャートのパラメタ」を参照してください。

MediatorのHelmチャートのカスタマイズ例は、「3.7.3　MediatorのHelmチャートのカスタマイズ」を参照してください。

(c)　TP1-Bridge

TP1-BridgeのHelmチャートのjava.optionsパラメタで、TP1-BridgeのJavaプロセス起動時にJava VMに渡すオプションを指定します。

java.optionsパラメタの詳細は、「(1)　Helmチャートのパラメタ」を参照してください。

TP1-BridgeのHelmチャートのカスタマイズ例は、「3.7.4　TP1-BridgeのHelmチャートのカスタマイズ（通常版かつTP1-Bridge限定）」を参照してください。

3.10.4　ディスク

(1)　Mediator

「3.6.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」を参照してください。

(2)　EADS（通常版限定）

「3.6.5　EADSの永続ボリュームのKubernetesマニフェストの作成（通常版限定）」を参照してください。

3.10.5　システム運用に必要となる機能

この項では、冗長化や各コンポーネントで注意する必要がある項目について記載します。

システム運用に必要となる機能で使用する各コンポーネントのCPU、メモリに関してはElasticsearchを除き、リソースの制限を実施していません。

そのため、実際にRASコンポーネントを使用したとき消費されるリソース量を確認し、チューニングを実施してください。

(1)　Elasticsearch

(a)　冗長化・レプリケーション

クラスタ構成を実施することで冗長化できます。クラスタ構成を採ることで、Elasticsearchに格納したデータの分散管理、冗長性の確保を実現できます。

Elasticsearchをクラスタ構成にする場合、ノード障害からの保護や、ストレージの圧迫を抑制するためKubernetesノード間で分散してElasticsearchを起動させることを推奨します。

(b)　CPU、メモリのチューニング

Elasticsearchは多量のリソースを使用するため、クラスタ構成を採らない場合での、起動と最低限の利用に必要と思われるリソース値による制限を実施しています。

Elasticsearchのパフォーマンスに応じてチューニングを実施してください。

表3‒39　Elasticsearchのリソース設定

項番

パラメタ

説明

1

requests.cpu

詳細は「8.3.10　Elasticsearch」を参照してください。

2

requests.memory

3

limits.cpu

4

limits.memory

(c)　Elasticsearchデータディレクトリ・Elasticsearchリポジトリディレクトリとして使用する永続ボリュームの見積もり

ElasticsearchデータディレクトリおよびElasticsearchリポジトリディレクトリとして使用する永続ボリュームの見積もりの詳細については、「3.6.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」を参照してください。

(2)　Jaeger-collector

(a)　冗長化・レプリケーション

HMP-PCTOの各コンポーネントから出力されるSpanを分散させるため、またPod停止によって分散トレースとして収集する情報に欠落が生じないようにレプリケーションで冗長化を実施できます。

(b)　パラメタ

Jaeger-collectorは、HMP-PCTOの各コンポーネントから送信されたSpanを受信し、Elasticsearchへと送信する動作を行います。受信したSpanを格納する内部キューの長さと、キュー内のデータの送信処理を行うワーカに対して、チューニングを行う必要があります。

そのほかのパラメタについては、Jaegerの公式ドキュメントを参照してください。

チューニング対象のパラメタ一覧

表3‒40　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

collector.queueSize

Jaeger-collector は収集したSpanをElasticsearchに送付するため、受信したデータを内部のキューへと保管します。※

このキューのサイズを指定します。

2

collector.numWorkers

Jaeger-collector内で動作するワーカの数を指定します。

3

collector.numShards

Elasticsearchに作成するインデックスのシャード数を指定します。

このパラメタはElasticsearchの性能に影響します。

注※

Jaeger-collectorは、内部キューがいっぱいになると古いSpanを上書きします。

チューニング方法

表3‒41　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

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‒42　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‒43　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

jaegerQuery.maxSpanAge

Jaeger-queryがElasticsearchから分散トレースを取得する際、検索の範囲とする時間の指定を行います。

チューニング方法

表3‒44　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

1

jaegerQuery.maxSpanAge

Elasticsearch ILMポリシーと合わせた値を設定します。

ILMポリシーで設定した削除期間内が検索可能となる範囲で設定をしてください。

「8.3.6　Jaeger-query」を参照してください。

(b)　CPU、メモリのチューニング

Jaeger-queryに対するアクセスが集中するときなど、必要となるリソースが増加する場合があります。Jaeger-queryのパフォーマンスに応じてチューニングを実施してください。

表3‒45　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‒46　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

logstash.pipeline.batchSize

個々のworkerがinput処理によって収集するイベントの最大数を定義します。

2

logstash.queue.event.maxEvents

内部キュー内の未読イベントの最大数を定義します。

3

logstash.queue.byte.maxBytes

内部キューの最大容量（Byte）を定義します。

チューニング方法

表3‒47　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

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‒48　Logstashのリソース設定

項番

パラメタ

説明

1

requests.cpu

詳細は「(1)　Helmチャートのパラメタ」を参照してください。

2

requests.memory

3

limits.cpu

4

limits.memory

(5)　Filebeat

(a)　パラメタ

Filebeatではコンテナの標準出力として出力されたログ、各Pod内のログファイル上に出力されたログをLogstashに転送する動作を行います。メッセージログを送信するためにチューニングを行う必要があります。

チューニング対象のパラメタ一覧

Filebeatのチューニング対象のパラメタ一覧を次に示します。

表3‒49　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

filebeat.queue.maxSize

内部キューとして使用する容量の最大値を定義します。

2

filebeat.queue.readAhead

内部キューに登録され、ディスク上に出力されたデータから、Logstashへの出力のためにメモリに読み取る必要のあるイベントの数を定義します。

3

filebeat.output.maxRetries

Logstashへの送信に失敗した際に実施する再送の試行回数を定義します。

チューニング方法

表3‒50　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

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‒51　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‒52　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

metricbeat.output.maxRetries

Elasticsearchへの送信に失敗した際に実施する再送の試行回数を定義します。

2

metricbeat.queue.maxSize

内部キューとして使用する容量の最大値を定義します。

3

metricbeat.queue.readAhead

内部キューに登録され、ディスク上に出力されたデータから、Elasticsearchへの出力のためにメモリに読み取る必要のあるイベントの数を定義します。

チューニング方法

表3‒53　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

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‒54　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‒55　チューニング対象のパラメタ一覧

項番

パラメタ

説明

1

prometheus.scrape.interval

Prometheusがメトリクスの取得対象から情報を取得する間隔を定義します。

2

prometheus.remoteWrite.queue.capacity

PrometheusがMetricbeatにデータの送信処理をシャードという単位で並列実行してメトリクスを送信します。

データを送信するため、シャードごとにメモリ内でキューを作成します。

このキューのサイズを指定します。

3

prometheus.remoteWrite.queue.maxShards

Metricbeatにデータを送信するシャードのサイズ、または並列処理の最大数を指定します。通常では最大数まで使用しないよう動作するが、送信が遅延した場合などに定義した最大数による送信処理を実施します。

4

prometheus.remoteWrite.queue.maxSamplesPerSend

一度にまとめて送信するデータのサイズを定義します。

5

prometheus.storage.retentionTime

データを保持し続ける期間を定義します。

チューニング方法

表3‒56　チューニング方法

項番

パラメタ

チューニングの考え方

デフォルト値

1

prometheus.scrape.interval

間隔を短くするほど、Prometheusが使用するディスク容量が上昇します。メトリクス取得に関する要件と、Prometheusが使用量を基に、設定値を検討してください。

「(1)　Helmチャートのパラメタ」を参照してください。

2

prometheus.remoteWrite.queue.capacity

Metricbeatに送信する処理のメモリ使用量は、「シャード数 ×（prometheus.remoteWrite.queue.capacity + prometheus.remoteWrite.queue.maxSamplesPerSend）」に比例します。

大きい値に設定するほど、多くのメモリを消費します。Prometheusとしては、prometheus.remoteWrite.queue.maxSamplesPerSendの3〜10倍程度の値に設定することを推奨しています。

3

prometheus.remoteWrite.queue.maxShards

Prometheusでは、Metricbeatへの送信に異常に時間が掛かる場合ではないかぎりデフォルト値を超えた値を設定する必要はありません。

4

prometheus.remoteWrite.queue.maxSamplesPerSend

Prometheusでは、ほとんどの利用にかぎり問題ない値としてデフォルト値が定義されています。

Prometheusのメモリ使用量が高い場合にかぎり、prometheus.remoteWrite.queue.capacityの項目に記載したメモリ使用量の見積もり式を基に、チューニングを実施してください。

5

prometheus.storage.retentionTime

Prometheusで参照可能なデータの保持期間を定義します。期間が長期になるほど、Prometheusが保持するメトリクスデータは増大します。

Prometheusの利用用途とディスクサイズに合わせて設定してください。

(c)　CPU、メモリのチューニング

Prometheusでは、メトリクス収集、およびMetricbeatへの送信処理に関するチューニングに応じて、必要となるリソースが増加します。

表3‒57　Prometheusのリソース設定

項番

パラメタ

説明

1

requests.cpu

詳細は「(1)　Helmチャートのパラメタ」を参照してください。

2

requests.memory

3

limits.cpu

4

limits.memory

第4編　Kubernetesクラスタ外のHMP-PCTOの運用

4　TP1-Converterの運用（通常版かつTP1-Bridge限定）

4.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を使用するための作業の流れを、次の図に示します。

図4‒1　TP1-Converterを使用するための作業の流れ

4.2　データ変換定義ファイルの作成（通常版かつTP1-Bridge限定）

TP1-Converterのデータ変換で使用するデータ変換定義ファイルは、uCosminexus Service Architectの機能を使用して作成します。

ここでは、OpenTP1のSPPがCOBOLで作成されている場合を例に説明します。

4.2.1　データ変換で使用するファイル作成の流れ（通常版かつTP1-Bridge限定）

データ変換で使用するファイルを作成する流れを次に示します。

図4‒2　データ変換で使用するファイルを作成する流れ

＜説明＞

バイナリフォーマット定義ファイルの作成

COBOL2FDXコンバータを使用して、COBOL登録原文集ファイルからバイナリフォーマット定義ファイルを作成します。

XMLスキーマの作成

cscjson2xsdコマンドを実行して、JSON形式のファイルからXMLスキーマを作成します。

マッピング定義ファイルの作成

マッピング定義エディタを使用して、1.で作成したバイナリフォーマット定義ファイル、および2.で作成したXMLスキーマからマッピング定義ファイルを作成します。

データ変換定義ファイルの作成

マッピング定義エディタを使用して、3.で作成したマッピング定義ファイルをからデータ変換定義ファイルを作成します。

TP1-Converterのデータ変換

TP1-Converterは、1.で作成したバイナリフォーマット定義ファイル、および4.で作成したデータ変換定義ファイルを使用してデータ変換をします。

表4‒1　データ変換で使用するために作成するファイル

ファイル名

拡張子

作成元になるファイル

作成方法

ファイルの用途

参照先

バイナリフォーマット定義ファイル

fdx

COBOL登録原文集ファイル※

COBOL2FDXコンバータ※

マッピング定義ファイルの作成

データ変換

4.2.2　バイナリフォーマット定義ファイル（通常版かつTP1-Bridge限定）

XMLスキーマ

xsd

JSON形式のファイル

cscjson2xsdコマンド

マッピング定義ファイルの作成

4.2.3　XMLスキーマ（通常版かつTP1-Bridge限定）

マッピング定義ファイル

mdo

バイナリフォーマット定義ファイル

XMLスキーマ

マッピング定義エディタ

データ変換定義ファイルの作成

4.2.4　マッピング定義ファイル（通常版かつTP1-Bridge限定）

データ変換定義ファイル

xsl

マッピング定義ファイル

マッピング定義エディタ

データ変換

4.2.5　データ変換定義ファイル（通常版かつTP1-Bridge限定）

注※

C言語から作成する場合は使用しません。

4.2.2　バイナリフォーマット定義ファイル（通常版かつTP1-Bridge限定）

バイナリフォーマット定義ファイルは、マッピング定義ファイルの作成時およびデータ変換時に使用します。

バイナリフォーマット定義ファイルは、OpenTP1への要求電文または応答電文のCOBOL登録原文集ファイルから作成します。なお、要求電文と応答電文それぞれで作成する必要があります。要求電文から作成する場合は、「<サービス名>_jtob.fdx」のファイル名で作成してください。また、応答電文から作成する場合は、「<サービス名>_btoj.fdx」のファイル名で作成してください。

バイナリフォーマット定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、COBOL登録集原文ファイルからのバイナリフォーマット定義ファイルの生成に関する説明を参照してください。

メモ

OpenTP1のSPPがC言語で作成されている場合は、バイナリフォーマット定義ファイルを作成する方法が異なります。C言語の場合のバイナリフォーマット定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、バイナリフォーマット定義ファイルの新規作成に関する説明を参照してください。

4.2.3　XMLスキーマ（通常版かつTP1-Bridge限定）

XMLスキーマは、マッピング定義ファイルの作成時に使用します。

XMLスキーマは、Orchestrator/Entity-ServiceからTP1-Bridgeへの要求電文または応答電文のJSON形式データから作成します。なお、要求電文と応答電文それぞれで作成する必要があります。

XMLスキーマの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、JSON形式データに対応するXMLスキーマの生成に関する説明を参照してください。

4.2.4　マッピング定義ファイル（通常版かつTP1-Bridge限定）

マッピング定義ファイルは、データ変換定義ファイルの作成時に使用します。

マッピング定義ファイルは、バイナリフォーマット定義ファイルおよびXMLスキーマから作成します。なお、要求電文と応答電文それぞれで作成する必要があります。

マッピング定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、データ変換の定義手順に関する説明を参照してください。

4.2.5　データ変換定義ファイル（通常版かつTP1-Bridge限定）

データ変換定義ファイルは、データ変換時に使用します。

データ変換定義ファイルは、マッピング定義ファイルから作成します。なお、要求電文と応答電文それぞれで作成する必要があります。要求電文から作成する場合は、「<サービス名>_jtob.xsl」のファイル名で作成してください。また、応答電文から作成する場合は、「<サービス名>_btoj.xsl」のファイル名で作成してください。

データ変換定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、データ変換の定義手順に関する説明を参照してください。

4.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サーバのセットアップが正常に終了しなかった原因を取り除いてください。

4.4　TP1-Converterの資材の配置（通常版かつTP1-Bridge限定）

uCosminexus Service Platformの環境にTP1-Converterが使用する資材を配置します。

TP1-Converterが使用する資材の配置元と配置先の場所を次に示します。

表4‒2　TP1-Converterが使用する資材の配置元と配置先の場所

項番

ファイル名

配置元の場所

配置先の場所

1

TP1-Converter用アプリケーションライブラリ（tp1converter.war）

<HMP-PCTO提供媒体のルートフォルダ>/TP1-Converter/lib/

uCosminexus Service Platform実行環境の任意のディレクトリ

2

J2EEサーバ用オプション定義ファイル（usrconf.cfg）

<HMP-PCTO提供媒体のルートフォルダ>/TP1-Converter/usrconf/

/opt/Cosminexus/CC/server/usrconf/ejb/TP1Converter/

3

J2EEサーバ用ユーザプロパティファイル（usrconf.properties）

<HMP-PCTO提供媒体のルートフォルダ>/TP1-Converter/usrconf/

/opt/Cosminexus/CC/server/usrconf/ejb/TP1Converter/

4

データ変換定義ファイル

「4.2　データ変換定義ファイルの作成（通常版かつTP1-Bridge限定）」で作成したファイルの出力先

/opt/Cosminexus/CC/server/usrconf/ejb/TP1Converter/※

サービスグループに対応したディレクトリを追加して配置します。

注※

データ変換定義ファイルの配置先の場所は、usrconf.propertiesのjp.co.Hitachi.soft.hmppcto.tp1.data-conversion.definition-file.dirの設定で変更できます。

4.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サーバが正常に開始しなかった原因を取り除いてください。

4.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 アプリケーションサーバ リファレンス コマンド編」を参照してインポートが正常に終了しなかった原因を取り除いてください。

4.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は、どちらを先に開始してもかまいません。

4.8　データ変換定義の再作成（通常版かつTP1-Bridge限定）

TP1-Converterの起動中にOpenTP1のSPPを修正し、データ変換定義ファイルの更新が必要になった場合は、データ変換定義ファイルを再作成してください。

再作成したデータ変換定義ファイルは、「4.4　TP1-Converterの資材の配置（通常版かつTP1-Bridge限定）」のデータ変換定義ファイルの配置先に配置してください。

データ変換定義ファイルは、SPPの修正内容に応じて更新してください。SSPの修正内容とデータ変換定義ファイルの更新方法を次に示します。

表4‒3　SSPの修正内容とデータ変換定義ファイルの更新方法

項番

SSPの修正内容

データ変換定義ファイルの更新方法

1

サービスの要求データ、または応答データの変更

サービスに対応したデータ変換定義ファイルを更新する。

2

サービスの追加

サービスに対応したデータ変換定義ファイルを追加する。

3

サービスグループの追加

サービスグループに対応したディレクトリを追加する。

4

サービスの削除

サービスに対応したデータ変換定義ファイルを削除する。

5

サービスグループの削除

サービスグループに対応したディレクトリを削除する。

データ変換定義ファイルの作成方法については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、データ変換の定義手順に関する説明を参照してください。

4.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を再起動してください。

キャッシュのリフレッシュ中はキャッシュに対して排他制御をするため、データ変換処理が待たされることがあります。そのため、キャッシュのリフレッシュは、動作しているトランザクションが少ない時間帯に実行することを推奨します。

4.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は、どちらを先に終了してもかまいません。

4.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サーバが正常に終了しなかった原因を取り除いてください。

4.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が出力するログを参照して、失敗の原因を取り除いてください。

4.13　TP1-Converterの削除とJ2EEサーバのアンセットアップ（通常版かつTP1-Bridge限定）

TP1-Converterが不要になった場合は、次の作業を実施してください。

TP1-Converterの削除

J2EEサーバのアンセットアップ

4.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が正常に削除されなかった原因を取り除いてください。

4.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サーバのアンセットアップが正常に終了しなかった原因を取り除いてください。

第5編　リファレンス

5　コンテナイメージの作成要件

5.1　コンテナイメージの一覧

HMP-PCTOは、ユーザアプリケーションに取り込んで使用する製品です。HMP-PCTOでは、アプリケーションをコンテナオーケストレーションツール上にデプロイして実行します。このため、アプリケーションはコンポーネントごとにコンテナイメージ形式で作成します。

HMP-PCTOの運用として、コンテナイメージは、ユーザが用意する資材で作成するものと、HMP-PCTOが提供する資材を使用してユーザが作成するものがあります。コンテナイメージの分類を次に示します。

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

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

また、HMP-PCTOのコントロールプレーンのコンテナイメージには、次のバリエーションがあります。

通常版

Javaアプリケーションを実行するコンテナイメージの場合、ユーザはどちらかを選択できます。

uCosminexus Application Runtime with Java for Spring Boot導入あり

uCosminexus Application Runtime with Java for Spring Boot導入なし

ただし、次に示すコンテナイメージは例外とします。

ユーザのビジネスロジックを含まないコンテナイメージは、「uCosminexus Application Runtime with Java for Spring Boot導入あり」だけとします（HMP-PCTOとしてトラブルシュートができるようにするため）。

HMP-PCTO以外の日立製品のコンテナイメージ（例：EADS）では、uCosminexus Application Runtime with Java for Spring Boot導入有無はHMP-PCTOの仕様に従います。

トライアル版

HMP-PCTOのコンテナイメージの一覧を次の表に示します。

表5‒1　HMP-PCTOのコンテナイメージの一覧

コンテナイメージ

コンテナイメージの分類

バリエーション

備考

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

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

通常版

uCosminexus Application Runtime with Java for Spring Boot

トライアル版

導入あり

導入なし

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ

○

−

○

−

−

通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime with Java for Spring Bootを導入する場合だけ作成します。

JDKコンテナベースイメージ

○

−

−

○

○

トライアル版の場合、または通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime with Java for Spring Bootを導入しない場合だけ作成します。

Orchestratorコンテナイメージ

○

−

○

○

○

−

Entity-Serviceコンテナイメージ

○

−

○

○

○

サービス間を中継するサービスとしてのEntity-Serviceがある場合だけ作成します。

詳細については、取扱説明書「HMP-PCTO テクニカルガイド」のトランザクションのモデル（その2）に関する説明を参照してください。

SQL-Participantコンテナイメージ

○

(JDBC Driverを組み込むだけ)

−

○

−

○

SQL-Participantを使用する場合だけ作成します。

Entity-Module/TCC-Participantコンテナイメージ

○

−

○

○

○

TCC-Participantを使用する場合だけ作成します。

Mediatorコンテナイメージ

−

○

○

−

○

−

TP1-Bridgeコンテナイメージ

−

〇

〇

−

−

TP1-Bridgeを使用する場合だけ作成します。

Dependency-Checkerコンテナイメージ

−

○

−

○

○

−

Ext-Consコンテナイメージ

−

○

−

−

○

トライアル版の場合だけ作成します。

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

−

○

−

○

−

通常版の場合だけ作成します。

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

−

○

−

○

−

通常版の場合だけ作成します。

（凡例）

○：該当します。

−：該当しません。

5.2　コンテナイメージの提供方式

HMP-PCTOのコンテナイメージの提供方式の一覧を次の表に示します。

表5‒2　HMP-PCTOのコンテナイメージの提供方式の一覧

コンテナイメージの分類

通常版/トライアル版

提供方式

ユーザへの提供物

ユーザの対応作業

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

通常版およびトライアル版

Containerfile方式

Containerfileの記述例（「2.2　Javaアプリケーションの開発」参照）

コンテナベースイメージおよび前提プログラムの一覧

【SQL-Participantを使用する場合】HMP-PCTOのアプリケーションJARファイルビルド用Javaプロジェクト

HMP-PCTOの各ライブラリJARファイル

HMP-PCTOの各シェルスクリプト

HMP-PCTOの各ライブラリJARファイルを使用した、SQL-Participant以外のユーザ責務のKubernetesアプリケーションのJARファイルをビルドする。ユーザが作成するアプリケーションのため、ユーザ任意の方法でビルドする。

【SQL-Participantを使用する場合】HMP-PCTOのSQL-Participantアプリケーションの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の各コンテナイメージ

なし

5.3　各コンテナイメージの作成要件

各コンテナイメージの詳細について説明します。

以降で説明するコンテナベースイメージおよび前提プログラムのバージョンは、「1.4.1　前提OSおよび前提プログラム」を参照してください。

5.3.1　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（通常版限定）

このコンテナベースイメージは、ユーザ責務のコンテナイメージでuCosminexus Application Runtime with Java for Spring Bootを導入する場合にだけ作成します。

次の表に示すuCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの要件を満たすように作成します。

表5‒3　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージの要件

項目

要件

コンテナベースイメージ

Red Hat Universal Base Image 8※

前提プログラム

Java SE 8のuCosminexus Application Runtime with Java for Spring Boot

curl

jq

配置ファイル

規定しません。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

指定なしとしてください（コマンドについてはこのコンテナベースイメージを使用する各コンテナイメージ側で指定します）。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

注※

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

5.3.2　JDKコンテナベースイメージ

このコンテナベースイメージは、トライアル版の場合、または通常版のユーザ責務のコンテナイメージでuCosminexus Application Runtime with Java for Spring Bootを導入しない場合だけ作成します。

次の表に示すJDKコンテナベースイメージの要件を満たすように作成します。

表5‒4　JDKコンテナベースイメージの要件

項目

要件

コンテナベースイメージ

■通常版の場合

Red Hat Universal Base Image 8※

■トライアル版の場合

Almalinux 8 Minimal 8.8

前提プログラム

■通常版の場合

Java SE 8準拠のJDK

curl

jq

■トライアル版の場合

Java SE 8準拠のJDK

curl

jq

配置ファイル

規定しません。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

指定なしとしてください（コマンドについてはこのコンテナベースイメージを使用する各コンテナイメージ側で指定します）。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

注※

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

5.3.3　Orchestratorコンテナイメージ

次の表に示すOrchestratorコンテナイメージの要件を満たすように作成します。

表5‒5　Orchestratorコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（「5.3.1　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入なし）、トライアル版の場合

JDKコンテナベースイメージ（「5.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのOrchestratorアプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime with Java for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestratorアプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入なし）、トライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのOrchestratorアプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

5.3.4　Entity-Serviceコンテナイメージ

サービス間を中継するサービスとしてのEntity-Serviceがある場合だけ作成します。

詳細については、取扱説明書「HMP-PCTO テクニカルガイド」のトランザクションのモデル（その2）に関する説明を参照してください。

次の表に示すEntity-Serviceコンテナイメージの要件を満たすように作成します。

表5‒6　Entity-Serviceコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（「5.3.1　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入なし）、トライアル版の場合

JDKコンテナベースイメージ（「5.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのEntity-ServiceアプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime with Java for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-ServiceアプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入なし）、トライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-ServiceアプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

5.3.5　SQL-Participantコンテナイメージ

次の表に示すSQL-Participantコンテナイメージの要件を満たすように作成します。

表5‒7　SQL-Participantコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（「5.3.1　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■トライアル版の場合

JDKコンテナベースイメージ（「5.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

■通常版の場合

Hitachi Elastic Application Data Store Client for Java

ncompress

ncurses

tar

cpio

gzip

■トライアル版の場合

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル（sql-participant-V.R.S.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 with Java for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime with Java for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル(sql-participant-V.R.S.jar)」を指定してください。

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入なし）、トライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「HMP-PCTOのSQL-ParticipantアプリケーションのJARファイル(sql-participant-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には、バージョンを設定します。

5.3.6　Entity-Module/TCC-Participantコンテナイメージ

次の表に示すEntity-Module/TCC-Participantコンテナイメージの要件を満たすように作成します。

表5‒8　Entity-Module/TCC-Participantコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（「5.3.1　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入なし）、トライアル版の場合

JDKコンテナベースイメージ（「5.3.2　JDKコンテナベースイメージ」を参照してください）

前提プログラム

■通常版の場合

Hitachi Elastic Application Data Store Client for Java

ncompress

ncurses

tar

cpio

gzip

■トライアル版の場合

規定しません。

配置ファイル

次に示すファイルを配置してください。

ファイル：ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル（ユーザ任意のファイル名称）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：Hitachi Elastic Application Data Store Client for JavaのJARファイル（トライアル版の場合は不要）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの読み取り権限を付与してください。

ファイル：HMP-PCTOのトランザクションヘルスチェックスクリプト（health_check.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

ファイル：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

配置パス：規定しません。

オーナー・グループ：規定しません。

パーミッション：コンテナ実行ユーザの実行権限を付与してください。

コンテナ実行ユーザ・グループ

規定しません。

コンテナ起動時カレントディレクトリ

規定しません。

コンテナ起動コマンドライン

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

コマンドを「uCosminexus Application Runtime with Java for Spring Bootのプロセスモニタ起動スクリプト(starter.sh)」とし、引数に「javaコマンド」、「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル」を指定してください。

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入なし）、トライアル版の場合

コマンドを「javaコマンド」とし、引数に「環境変数HMPPCTO_JAVA_OPTIONSの値」、「ユーザのEntity-Module/TCC-ParticipantアプリケーションのJARファイル」を指定してください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

次に示す環境変数を配置してください。

環境変数名：LOADER_PATH

設定値：Hitachi Elastic Application Data Store Client for JavaのJARファイルを配置したパス

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェックはKubernetesマニフェストで設定します）。

5.3.7　Mediatorコンテナイメージ

このコンテナイメージは、HMP-PCTOとして提供します。通常版の場合は、次の表に示す要件を満たすように作成します。

表5‒9　Mediatorコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

Red Hat Universal Base Image 8 Minimal

■トライアル版の場合

Almalinux 8 Minimal 8.8

前提プログラム

■通常版（uCosminexus Application Runtime with Java for Spring Boot導入あり）の場合

Java SE 8のuCosminexus Application Runtime with Java for Spring Boot

curl

glibc

jq

■トライアル版の場合

java-1.8.0-openjdk-headless

curl

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 with Java 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には、バージョンを設定します。

5.3.8　TP1-Bridgeコンテナイメージ（通常版かつTP1-Bridge限定）

次の表に示すTP1-Bridgeコンテナイメージの要件を満たすように作成します。

表5‒10　TP1-Bridgeコンテナイメージの要件

項目

要件

コンテナベースイメージ

uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（「5.3.1　uCosminexus Application Runtime with Java for Spring Bootコンテナベースイメージ（通常版限定）」を参照してください）

前提プログラム

Hitachi Elastic Application Data Store Client for Java

ncompress

ncurses

tar

cpio

gzip

配置ファイル

次に示すファイルを配置してください。

ファイル：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 with Java 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には、バージョンを設定します。

5.3.9　Dependency-Checkerコンテナイメージ

このコンテナイメージは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表5‒11　Dependency-Checkerコンテナイメージの要件

項目

要件

コンテナベースイメージ

■通常版の場合

Red Hat Universal Base Image 8 Minimal

■トライアル版の場合

Almalinux 8 Minimal 8.8

前提プログラム

■通常版の場合

curl

jq

■トライアル版の場合

curl

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マニフェストで設定します）。

5.3.10　Ext-Consコンテナイメージ（トライアル版限定）

このコンテナイメージは、HMP-PCTOとして提供します。トライアル版の場合は、次の表に示す要件を満たすように作成します。

表5‒12　Ext-Consコンテナイメージの要件

項目

要件

コンテナベースイメージ

Almalinux 8 Minimal 8.8

前提プログラム

java-1.8.0-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には、バージョンを設定します。

5.3.11　EADSサーバ用コンテナイメージ（通常版限定）

このコンテナイメージは、HMP-PCTOとして提供します。通常版の場合は、次の表に示す要件を満たすように作成します。

表5‒13　EADSコンテナイメージの要件

項目

要件

コンテナベースイメージ

Red Hat Universal Base Image 8 Minimal

前提プログラム

Hitachi Elastic Application Data Store

Hitachi Elastic Application Data Storeのリリースノートの前提プログラムに従う

配置ファイル

次に示すファイルを配置してください。

ファイル：/opt/hitachi/xeads/server/servers/template/ディレクトリと配下のファイルをコピーしたnodeディレクトリ※1

配置パス：/opt/hitachi/xeads/server/servers下

オーナー・グループ：「0:0」

パーミッション："chmod -R g=u <nodeディレクトリのパス>"コマンドを実行した状態とすること

ファイル：orchestration_eads_server_start.sh

配置パス：/opt/hitachi/xeads/server/servers/node/bin下

オーナー・グループ：「0:0」

パーミッション：「0554」

ファイル：「node<n※2>」という名称の/opt/hitachi/xeads/server/servers/nodeディレクトリへのシンボリックリンク

配置パス：/opt/hitachi/xeads/server/servers下

オーナー・グループ：「0:0」

パーミッション：「0777」

コンテナ実行ユーザ・グループ

「0:0」

コンテナ起動時カレントディレクトリ

/opt/hitachi/xeads/server/servers/node/

コンテナ起動コマンドライン

コマンドを「orchestration_eads_server_start.sh」としてください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェック機能がある場合はKubernetesマニフェストで設定します）。

注※1

ディレクトリ配下のファイルのパーミッションは、EADSの仕様に従ってください。

注※2

nは1から始まるEADSサーバのIDを指定してください。

5.3.12　EADSコマンド実行用コンテナイメージ（通常版限定）

このコンテナイメージは、HMP-PCTOとして提供します。通常版の場合は、次の表に示す要件を満たすように作成します。

表5‒14　EADSコンテナイメージの要件

項目

要件

コンテナベースイメージ

Red Hat Universal Base Image 8 Minimal

前提プログラム

kubectl

配置ファイル

次に示すファイルを配置してください。

ファイル：orchestration_eads_command_start.sh

配置パス：/opt/hitachi/xeads/orchestration/container/command下

オーナー・グループ：「0:0」

パーミッション：「0777」

コンテナ実行ユーザ・グループ

「0:0」

コンテナ起動時カレントディレクトリ

/opt/hitachi/xeads/orchestration/container/command

コンテナ起動コマンドライン

コマンドを「orchestration_eads_command_start.sh」としてください。

公開ポート

規定しません（HMP-PCTOで必要な公開ポートはKubernetesマニフェストで設定します）。

環境変数

規定しません（HMP-PCTOで必要な環境変数はKubernetesマニフェストで設定します）。

ボリューム

規定しません（HMP-PCTOで必要なボリュームはKubernetesマニフェストで設定します）。

コンテナ終了シグナル

規定しません。

コンテナヘルスチェック

規定しません（HMP-PCTOで必要なヘルスチェック機能がある場合はKubernetesマニフェストで設定します）。

6　Kubernetesクラスタの作成要件

6.1　Kubernetesアプリケーションのデプロイ方法

HMP-PCTOのコンテナイメージは、コンテナオーケストレーションツール上にデプロイして実行します。HMP-PCTOのコンテナイメージについては、「5.　コンテナイメージの作成要件」を参照してください。

前提とするKubernetesディストリビューションおよびバージョンは、「1.4.1　前提OSおよび前提プログラム」を参照してください。

HMP-PCTOのKubernetesアプリケーションのデプロイ方法の一覧を次の表に示します。

表6‒1　HMP-PCTOのKubernetesアプリケーションのデプロイ方法の一覧

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

デプロイ方法

ユーザへの提供物

ユーザの対応作業

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

ユーザ任意の方法によるデプロイ

Kubernetesマニフェストの記述例（「2.6　Kubernetesマニフェスト作成」参照）

Kubernetesマニフェストの記述例を基にKubernetesマニフェストを作成する

Kubernetesマニフェストを使用しKubernetesアプリケーションをデプロイする

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

Helmによるデプロイ

Helmチャート

Helmチャートのカスタマイズ例（「3.7　Helmチャートのカスタマイズ」参照）

Helmチャートのカスタマイズ例を基にHelmチャートをカスタマイズする

Helmチャートを使用しKubernetesアプリケーションをデプロイする

RASのKubernetesアプリケーション

6.2　Kubernetesクラスタ内外の通信暗号化方針

Kubernetesクラスタ内およびKubernetesクラスタ外の通信暗号化方針を次に示します。

通常版ではPod間通信（HTTP、gRPC）をTLS（Transport Layer Security）プロトコルを使用して通信データを暗号化することで、通信データの漏洩や改ざんを防止する

サーバ認証／クライアント認証（mTLS）によって、通信相手の妥当性を検証し、意図しない相手との通信を抑止する

暗号化有無はプロパティで切り替える

次の通信個所は、通信暗号化の対象外とする

Pod内通信

・トランザクションヘルスチェックスクリプト/未決着トランザクション待機スクリプトとSQL-Participant/Mediator、TCC-Participant/Mediator、またはTP1-Bridge/Mediatorの間

・Entity-ServiceとSQL-Participantの間

SQL-ParticipantとDBの間

SQL-Participant、TCC-Participant、またはTP1-BridgeとEADSの間

TP1-BridgeとTP1-Converterの間、およびTP1-BridgeとOpenTP1の間

TP1-ConverterとREST API発行元の間

FilebeatとLogstashの間

PrometheusとMetricbeatの間

Jaeger-collectorとOrchestrator/Entity-service/SQL-Participant/TCC-Participant/TP1-Bridge/Mediatorの間

6.3　Kubernetesアプリケーションのタイムゾーン設定方針

Kubernetesアプリケーションのタイムゾーン設定方針を次に示します。

Kubernetesアプリケーションのタイムゾーンを設定可能とすることで、トラブルシュート時に参照するログの日時を確認しやすくする

次の個所は、タイムゾーン設定の対象とする

ユーザ責務のKubernetesアプリケーション内のJavaアプリケーションのコンテナ

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

次の個所は、タイムゾーン設定の対象外とする

ユーザ責務のKubernetesアプリケーション内のJavaアプリケーション以外のコンテナ

HMP-PCTOのコントロールプレーンのKubernetesアプリケーション内のJavaアプリケーション以外のコンテナ

RASのKubernetesアプリケーション内のコンテナ

EADSのコンテナ

タイムゾーンの設定は任意とする

タイムゾーンの設定方法は、OSで用意されている環境変数TZとする

6.4　各Kubernetesアプリケーションの作成要件

各Kubernetesアプリケーションの作成要件を次に示します。

6.4.1　Orchestratorの要件

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

表6‒2　Orchestratorの要件

項目

要件

ワークロードリソース

規定しません。任意（Deploymentなど）とします。

ネームスペース

規定しません。

ラベル

規定しません。※1

アノテーション

規定しません。

初期化コンテナ構成

Dependency-Checkerコンテナ（「5.3.9　Dependency-Checkerコンテナイメージ」を参照してください）

コンテナ構成

Orchestratorコンテナ（「5.3.3　Orchestratorコンテナイメージ」を参照してください）

Filebeatコンテナ

レプリカ数

「1」

再起動ポリシー

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

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

規定しません。

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

規定しません。

アクセス制御

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

＜Mediator選択機能用ロール＞

APIグループ

空（コアグループ）

リソース

services、endpoints

アクセス許可

get、list、watch

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

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

APIグループ

空（コアグループ）、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

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

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

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

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

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

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

規定しません。

永続化ボリューム

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

Podライフサイクル設定

規定しません。

注※1

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

注※2

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

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

表6‒3　OrchestratorのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Participant

例を次に示します。

（例）

SQL-Participantを使用する場合：my-namespace/deployments/sql-participant

TCC-Participantを使用する場合：my-namespace/deployments/tcc-participant

TP1-Bridgeを使用する場合（TP1連携機能を使用する場合）：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

表6‒4　Orchestratorコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

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

プロトコル：TCP

公開ポート：Orchestratorのserver.portパラメタに設定したポート番号

コンテナポート：Orchestratorのserver.portパラメタに設定したポート番号

コンフィグ設定

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

「8.2.1　共通」のパラメタ

「8.2.2　Orchestrator」のパラメタ

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

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

環境変数HMPPCTO_JAVA_OPTIONSでOrchestratorの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

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

規定しません。

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

規定しません。

CPU/メモリリソース制限

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

表6‒5　OrchestratorのFilebeatコンテナの要件

項目

要件

コマンド

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

第1引数

「-e」

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

第2引数

「-E」

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

第3引数（http.enabled）

「true」

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

ネットワーク設定

規定しません。

コンフィグ設定

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

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

規定しません。

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

CPU/メモリリソース制限

規定しません。

6.4.2　Entity-Service（Participantコンテナを含まないPodとする場合）の要件

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

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

表6‒6　Entity-Service（Participantコンテナを含まないPodとする場合）の要件

項目

要件

ワークロードリソース

規定しません。任意（Deploymentなど）とします。

ネームスペース

規定しません。

ラベル

規定しません。※1

アノテーション

規定しません。

初期化コンテナ構成

Dependency-Checkerコンテナ（「5.3.9　Dependency-Checkerコンテナイメージ」を参照してください）

コンテナ構成

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

Filebeatコンテナ

レプリカ数

規定しません。

再起動ポリシー

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

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

規定しません。

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

規定しません。

アクセス制御

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

＜Mediator選択機能用ロール＞

APIグループ

空（コアグループ）

リソース

services、endpoints

アクセス許可

get、list、watch

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

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

APIグループ

空（コアグループ）、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

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

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

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

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

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

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

規定しません。

永続化ボリューム

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

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「330」

注※1

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

注※2

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

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

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

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Mediator、Participant

例を次に示します。

（例）

SQL-Participantを使用する場合：

my-namespace/statefulsets/mediator

my-namespace/deployments/sql-participant

TCC-Participantを使用する場合：

my-namespace/statefulsets/mediator

my-namespace/deployments/tcc-participant

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

my-namespace/statefulsets/mediator

my-namespace/deployments/tp1-bridge※

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

注※

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

（例）

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

表6‒8　Entity-Service（Participantコンテナを含まないPodとする場合）コンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

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

プロトコル：TCP

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

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

コンフィグ設定

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

「8.2.1　共通」のパラメタ

「8.2.3　Entity-Service/Entity-Module」のパラメタ

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

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

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

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

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

キー名：config.properties

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

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

規定しません。

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

規定しません。

CPU/メモリリソース制限

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

表6‒9　Entity-Service（Participantコンテナを含まないPodとする場合）のFilebeatコンテナの要件

項目

要件

コマンド

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

第1引数

「-e」

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

第2引数

「-E」

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

第3引数（http.enabled）

「true」

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

ネットワーク設定

規定しません。

コンフィグ設定

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

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

規定しません。

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

CPU/メモリリソース制限

規定しません。

6.4.3　SQL-Participantの要件

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

表6‒10　SQL-Participantの要件

項目

要件

ワークロードリソース

規定しません。任意（Deploymentなど）とします。

ネームスペース

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

ラベル

規定しません。※1

アノテーション

規定しません。

初期化コンテナ構成

Dependency-Checkerコンテナ（「5.3.9　Dependency-Checkerコンテナイメージ」を参照してください）

コンテナ構成

Entity-Serviceコンテナ（「5.3.4　Entity-Serviceコンテナイメージ」を参照してください）

SQL-Participantコンテナ（「5.3.5　SQL-Participantコンテナイメージ」を参照してください）

Filebeatコンテナ

レプリカ数

規定しません。

再起動ポリシー

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

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

規定しません。

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

規定しません。

アクセス制御

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

＜Mediator選択機能用ロール＞

APIグループ

空（コアグループ）

リソース

services、endpoints

アクセス許可

get、list、watch

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

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

APIグループ

空（コアグループ）、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

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

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

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

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

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

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

規定しません。

永続化ボリューム

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

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「330」

注※1

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

注※2

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

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

表6‒11　SQL-ParticipantのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Mediator、EADS、Ext-Cons（トライアル版の場合だけ）、Participantが使用する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/メモリリソース制限

設定しません（デフォルト）。

表6‒12　Entity-Serviceコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

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

プロトコル：TCP

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

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

コンフィグ設定

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

「8.2.1　共通」のパラメタ

「8.2.3　Entity-Service/Entity-Module」のパラメタ

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

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

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

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

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

キー名：config.properties

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

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

規定しません。

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

規定しません。

CPU/メモリリソース制限

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

表6‒13　SQL-Participantコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

SQL-ParticipantのgRPCポート番号（Mediator向け）

プロトコル：TCP

公開ポート：SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.mediator.portパラメタに設定したポート番号

コンテナポート：SQL-Participantのjp.co.Hitachi.soft.hmppcto.sql.mediator.portパラメタに設定したポート番号

SQL-Participantのhttpポート番号（ヘルスチェック、未決着トランザクション確認、Prometheusメトリクス収集用）

プロトコル：TCP

公開ポート：SQL-Participantのserver.portパラメタに設定したポート番号

コンテナポート：SQL-Participantのserver.portパラメタに設定したポート番号

コンフィグ設定

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

「8.2.1　共通」のパラメタ

「8.2.4　SQL-Participant」のパラメタ

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

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

環境変数HMPPCTO_JAVA_OPTIONSでSQL-Participantの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ポート番号）：SQL-Participantのserver.portパラメタに設定したポート番号

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「180」

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ポート番号）：SQL-Participantのserver.portパラメタに設定したポート番号

preStopフックを次のとおり設定してください。

コマンド実行

パス：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

第1引数（リトライ回数）：推奨値「30」

第2引数（リトライ間隔秒数）：推奨値「10」

第3引数（接続タイムアウト秒数）：推奨値「10」

第4引数（応答タイムアウト秒数）：推奨値「10」

第5引数（HTTPポート番号）：SQL-Participantのserver.portパラメタに設定したポート番号

CPU/メモリリソース制限

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

表6‒14　SQL-ParticipantのFilebeatコンテナの要件

項目

要件

コマンド

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

第1引数

「-e」

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

第2引数

「-E」

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

第3引数（http.enabled）

「true」

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

ネットワーク設定

規定しません。

コンフィグ設定

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

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

規定しません。

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

CPU/メモリリソース制限

規定しません。

6.4.4　TCC-Participantの要件

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

表6‒15　TCC-Participantの要件

項目

要件

ワークロードリソース

規定しません。任意（Deploymentなど）とします。

ネームスペース

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

ラベル

規定しません。※1

アノテーション

規定しません。

初期化コンテナ構成

Dependency-Checkerコンテナ（「5.3.9　Dependency-Checkerコンテナイメージ」を参照してください）

コンテナ構成

Entity-Module/TCC-Participantコンテナ（「5.3.6　Entity-Module/TCC-Participantコンテナイメージ」を参照してください）

Filebeatコンテナ

レプリカ数

規定しません。

再起動ポリシー

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

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

規定しません。

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

規定しません。

アクセス制御

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

＜Mediator選択機能用ロール＞

APIグループ

空（コアグループ）

リソース

services、endpoints

アクセス許可

get、list、watch

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

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

APIグループ

空（コアグループ）、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

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

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

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

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

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

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

規定しません。

永続化ボリューム

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

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「330」

注※1

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

注※2

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

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

表6‒16　TCC-Participantの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/メモリリソース制限

設定しません（デフォルト）。

表6‒17　Entity-Module/TCC-Participantコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

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

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

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

プロトコル：TCP

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

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

TCC-ParticipantのgRPCポート番号（Mediator向け）

プロトコル：TCP

公開ポート：TCC-Participantのjp.co.Hitachi.soft.hmppcto.tcc.mediator.portパラメタに設定したポート番号

コンテナポート：TCC-Participantのjp.co.Hitachi.soft.hmppcto.tcc.mediator.portパラメタに設定したポート番号

コンフィグ設定

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

「8.2.1　共通」のパラメタ

「8.2.3　Entity-Service/Entity-Module」のパラメタ

「8.2.5　TCC-Participant」のパラメタ

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

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

環境変数HMPPCTO_JAVA_OPTIONSでEntity-Module/TCC-Participantの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ポート番号）：TCC-Participantのserver.portパラメタに設定したポート番号

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「180」

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ポート番号）：TCC-Participantのserver.portパラメタに設定したポート番号

preStopフックを次のとおり設定してください。

コマンド実行

パス：HMP-PCTOの「未決着トランザクション待機スクリプト（wait_transactions.sh）

第1引数（リトライ回数）：推奨値「30」

第2引数（リトライ間隔秒数）：推奨値「10」

第3引数（接続タイムアウト秒数）：推奨値「10」

第4引数（応答タイムアウト秒数）：推奨値「10」

第5引数（HTTPポート番号）：TCC-Participantのserver.portパラメタに設定したポート番号

CPU/メモリリソース制限

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

表6‒18　TCC-ParticipantのFilebeatコンテナの要件

項目

要件

コマンド

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

第1引数

「-e」

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

第2引数

「-E」

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

第3引数（http.enabled）

「true」

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

ネットワーク設定

規定しません。

コンフィグ設定

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

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

規定しません。

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

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

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

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「10」

Probe実行間隔秒数（periodSeconds）

推奨値「10」

Probe最大失敗回数（failureThreshold）

推奨値「3」

Probeタイムアウト秒数（timeoutSeconds）

推奨値「5」

CPU/メモリリソース制限

規定しません。

6.4.5　Mediatorの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒19　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※2

備考：バージョン

キー名：helm.sh/chart

値：mediator-V.R.S※2

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

備考：

キー名：app.kubernetes.io/name

値：mediator

備考：チャート名

アノテーション

設定しません（デフォルト）。

初期化コンテナ構成

Dependency-Checkerコンテナ（「5.3.9　Dependency-Checkerコンテナイメージ」を参照してください）

コンテナ構成

Mediatorコンテナ（「5.3.7　Mediatorコンテナイメージ」を参照してください）

レプリカ数

ThreeQuaters合意方式の場合：5〜64

PrivilegedValue合意方式の場合：2〜64

サービス名

（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オブジェクト群※1のNamespaceがすべて同一の場合：

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

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

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

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

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

1つのノードに割り当てられるPod数は1つまでです（例として、ワーカーノード数「5」に対してレプリカ数「5」のとき、各ノードにPodが1つ起動します）。

停止したPodを次に起動する際は前回起動したノードと必ず同一のノードに割り当ててください。該当するノードが障害から復旧していない場合に割り当て不可のときは、ほかの空いているノードが存在していたとしてもPodを割り当てないでください（フェイルオーバーしないでください）。

永続化ボリューム

MediatorのConsensusLogの永続ボリュームを割り当ててください。コンテナ内の「/volume」に、永続ボリュームをマウントします。

＜割り当て先をローカル永続ボリューム（local）とする場合＞

1つのPodにつき割り当てる永続化ボリュームは1つとしてください（共有しないでください）。

永続ボリュームの種類を「ローカル永続ボリューム（local）」（ノードにアタッチされたローカルストレージデバイス）としてください。

ブロックデバイスとしてください。

＜割り当て先をNFSストレージとする場合とする場合＞

永続ボリュームは、Mediatorが存在するすべてのPodからアクセスできるようにしてください（共有しないでください）。

永続ボリュームは、NFS上に作成してください。

NFSサーバ側の条件として、ダイレクトI/O（O_DIRECT）に対応している必要があります。ダイレクトI/O（O_DIRECT）に対応しているサービスは、Azure Blob Storag、Amazon EFS、Amazon EBSです。

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

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「330」

注※1

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

注※2

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

＜制限事項＞

スケーリングは不可とします（手動/自動、スケールアウト/インに関係なく）。

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

表6‒20　MediatorのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat

例を次に示します。

（例）

my-namespace/deployments/logstash

my-namespace/deployments/jaeger-query

my-namespace/deployments/jaeger-collector

my-namespace/deployments/prometheus

my-namespace/deployments/metricbeat

my-namespace/daemonsets/filebeat

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表6‒21　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

公開ポート：Mediatorのserver.portパラメタに設定したポート番号

コンテナポート：Mediatorのserver.portパラメタに設定したポート番号

コンフィグ設定

次のHMP-PCTOのパラメタを、Spring Bootのコンフィグソースに設定してください。

「8.2.1　共通」のパラメタ

「8.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）は、次のとおりファイルを配置します。

ファイル：自クライアント証明書ファイル（PEM形式）

キー名：client.crt

マウント先：/cert/client.crt

ファイル：自クライアント証明書を作成した秘密鍵ファイル

キー名：client.key

マウント先：/cert/client.key

ファイル：接続元クライアント（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ポート番号）：Mediatorのserver.portパラメタに設定したポート番号

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「180」

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ポート番号）：Mediatorのserver.portパラメタに設定したポート番号

preStopフックを次のとおり設定してください。

コマンド実行

パス：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

第1引数（リトライ回数）：推奨値「30」

第2引数（リトライ間隔秒数）：推奨値「10」

第3引数（接続タイムアウト秒数）：推奨値「10」

第4引数（応答タイムアウト秒数）：推奨値「10」

第5引数（HTTPポート番号）：Mediatorのserver.portパラメタに設定したポート番号

CPU/メモリリソース制限

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

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

表6‒22　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の設定値のバリデーション用ファイル

6.4.6　TP1-Bridgeの要件（通常版かつTP1-Bridge限定）

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒23　TP1-Bridgeの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

規定しません。

ラベル

metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：<リリース名>

キー名：app.kubernetes.io/version

値：V.R.S※¹

備考：バージョン

キー名：helm.sh/chart

値：tp1-bridge-V.R.S※¹

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：<リリース名>

アノテーション

設定しません（デフォルト）。

初期化コンテナ構成

Dependency-Checkerコンテナ（「5.3.9　Dependency-Checkerコンテナイメージ」を参照してください）

コンテナ構成

TP1-Bridgeコンテナ（「5.3.8　TP1-Bridgeコンテナイメージ（通常版かつTP1-Bridge限定）」を参照してください）

Filebeatコンテナ

レプリカ数

「1」としてください。

再起動ポリシー

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

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

規定しません。

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

設定しません。

アクセス制御

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

＜Mediator選択機能用ロール＞

APIグループ

空（コアグループ）

リソース

services、endpoints

アクセス許可

get、list、watch

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

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

APIグループ

空（コアグループ）、apps

リソース

pods、replicasets、deployments、statefulsets、daemonsets

アクセス許可

get、list

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

TP1-BridgeとTP1-BridgeのDependency-Checkerコンテナで指定するターゲットKubernetesオブジェクト群※²のNamespaceがすべて同一の場合：

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

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

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

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

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

規定しません。

永続化ボリューム

uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームを割り当ててください。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「330」

注※1

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

注※2

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

＜制限事項＞

スケーリングは不可とします（手動/自動、スケールアウト/インに関係なく）。

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

表6‒24　TP1-BridgeのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Mediator、EADS

例を次に示します。

（例）

my-namespace/statefulsets/mediator

my-namespace/statefulsets/eads-server

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表6‒25　TP1-Bridgeコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

TP1-BridgeのgRPCポート番号（Mediator向け）

プロトコル：TCP

公開ポート：TP1-Bridgeのjp.co.Hitachi.soft.hmppcto.tp1.mediator.portパラメタに設定したポート番号

コンテナポート：TP1-Bridgeのjp.co.Hitachi.soft.hmppcto.tp1.mediator.portパラメタに設定したポート番号

TP1-Bridgeのhttpポート番号（ヘルスチェック、未決着トランザクション確認、Prometheusメトリクス収集、およびAPからのOpenTP1のサービス呼び出し要求の受信用）

プロトコル：TCP

公開ポート：TP1-Bridgeのserver.portパラメタに設定したポート番号

コンテナポート：TP1-Bridgeのserver.portパラメタに設定したポート番号

コンフィグ設定

次のHMP-PCTOのパラメタを、Spring Bootのコンフィグソースに設定してください。

「8.2.1　共通」のパラメタ

「8.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）」のパラメタ

次のとおりファイルを配置します。

ファイル：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）は、次のとおりファイルを配置します。

ファイル：自クライアント証明書ファイル（PEM形式）

キー名：client.crt

マウント先：/cert/client.crt

ファイル：自クライアント証明書を作成した秘密鍵ファイル

キー名：client.key

マウント先：/cert/client.key

ファイル：接続元クライアント（orchestrator,participant）の秘密鍵が格納されているキーストア（pkcs12またはJKS）ファイル

キー名：keystore

マウント先：/cert/keystore

ファイル：キーストアファイルのパスワード

キー名：keystore_password

マウント先：application.propertiesのjp.co.Hitachi.soft.hmppcto.grpc.tls.server.client-auth.passwordパラメタの値に設定

「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ポート番号）：TP1-Bridgeのserver.portパラメタに設定したポート番号

初回Probe実行待機秒数（initialDelaySeconds）

推奨値「180」

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ポート番号）：TP1-Bridgeのserver.portパラメタに設定したポート番号

preStopフックを次のとおり設定してください。

コマンド実行

パス：HMP-PCTOの未決着トランザクション待機スクリプト（wait_transactions.sh）

第1引数（リトライ回数）：推奨値「30」

第2引数（リトライ間隔秒数）：推奨値「10」

第3引数（接続タイムアウト秒数）：推奨値「10」

第4引数（応答タイムアウト秒数）：推奨値「10」

第5引数（HTTPポート番号）：TP1-Bridgeのserver.portパラメタに設定したポート番号

CPU/メモリリソース制限

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

表6‒26　TP1-BridgeのFilebeatコンテナの要件

項目

要件

コマンド

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

第1引数

「-e」

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

第2引数

「-E」

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

第3引数（http.enabled）

「true」

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

ネットワーク設定

規定しません。

コンフィグ設定

filebeat.ymlを「3.9.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チャートのディレクトリ/ファイル構成を次の表に示します。

表6‒27　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の設定値のバリデーション用ファイル

6.4.7　EADSの要件（通常版限定）

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒28　EADSの要件

項目

要件

ワークロードリソース

StatefulSetリソースとしてください。

ネームスペース

規定しません。

ラベル

StatefulSetリソースのmetadata.labelには次を設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：eads-server

備考：チャート名

キー名：app.kubernetes.io/version

値：VV-RR※1

備考：EADSサーババージョン

キー名：helm.sh/chart

値：eads-server-V.R.S※2

備考：<チャート名>-<バージョン>

StatefulSetリソースのspec.selector.matchLabelsには次を設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/name

値：eads-server

備考：チャート名

アノテーション

設定しません（デフォルト）。

初期化コンテナ構成

設定しません（デフォルト）。

コンテナ構成

EADSサーバ用コンテナ(「5.3.11　EADSサーバ用コンテナイメージ（通常版限定）」を参照してください)

EADSコマンド実行用コンテナ(「5.3.12　EADSコマンド実行用コンテナイメージ（通常版限定）」を参照してください)

レプリカ数

「3」以上の数値としてください。

サービス名

(StatefulSetリソース特有)

「eads-server-eads-cluster」としてください。

Podの管理ポリシー

(StatefulSetリソース特有)

podManagementPolicy: Parallelとしてください。

再起動ポリシー

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

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

type: OnDeleteとしてください。

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

設定しません（デフォルト）。

アクセス制御

EADSサーバ・EADSの運用コマンドの実行に必要なEADSのhelmチャート固有のアクセス制御だけとします。

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

設定しません（デフォルト）。

注　「ローカル永続ボリューム(local)」の永続化ボリュームをマウントすることで割り当てを制御します。

永続化ボリューム

1つのPodにつき割り当てる永続化ボリュームは3つ（ログファイル用、ストアデータファイル用、キャッシュデータファイルおよびキャッシュインデックスファイル用）としてください（共有しないでください）。

永続ボリュームの種類を「ローカル永続ボリューム（local）」（ノードにアタッチされたローカルストレージデバイス）としてください。

ファイルシステム（volumeModes:Filesystem）としてください。

Podライフサイクル設定

設定しません（デフォルト）。

注※1

VV-RRは使用するEADSのバージョンに合わせて読み替えてください。

注※2

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

＜制限事項＞

スケーリングは不可とします（手動/自動、スケールアウト/インに関係なく）。

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

表6‒29　EADSサーバ用コンテナの要件

項目

要件

コマンド

./bin/orchestration_eads_server_start.sh

ネットワーク設定

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

EADSのリクエスト受付用ポート番号（Mediator向け）

プロトコル

TCP

公開ポート

EADSのeads.server.portパラメタに設定したポート番号

コンテナポート

EADSのeads.server.portパラメタに設定したポート番号

コンフィグ設定

次のHMP-PCTOのパラメタを、EADSサーバのhelmチャートが参照するvalues.yamlに設定してください。

「8.3.3　EADS（通常版限定）」のパラメタ

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表6‒30　EADSコマンド実行用コンテナの要件

項目

要件

コマンド

./orchestration_eads_command_start.sh

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

次のHMP-PCTOのパラメタを、EADSサーバのhelmチャートが参照するvalues.yamlに設定してください。

「8.3.3　EADS（通常版限定）」のパラメタ

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

Helmチャートのディレクトリ/ファイル構成を次の表に示します。

eads-server-chart.tgzを解凍し、中にあるファイル（values.yamlなど）を使用できます。

表6‒31　EADSのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

/opt/hitachi/xeads/orchestration/chart/

Helmチャートのtemplate配置用ディレクトリ

eads-service-chart.tgz

EADSサーバ専用Service チャート

eads-server-chart.tgz

EADSサーバチャート

eads-command-job-chart.tgz

EADSコマンド用ファイル

eads-command-cronjob-chart.tgz

EADSコマンド用ファイル

6.4.8　Ext-Consの要件（トライアル版限定）

このKubernetesアプリケーションは、HMP-PCTOとして提供します。トライアル版の場合は、次の表に示す要件を満たすように作成します。

表6‒32　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コンテナ（「5.3.9　Dependency-Checkerコンテナイメージ」を参照してください）

コンテナ構成

Ext-Consコンテナ（「5.3.10　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のバージョンに合わせて読み替えてください。

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

表6‒33　Ext-ConsのDependency-Checkerコンテナの要件

項目

要件

コマンド

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

第1引数（リトライ回数）

推奨値「30」

第2引数（リトライ間隔秒数）

推奨値「10」

第3引数（接続タイムアウト秒数）

推奨値「10」

第4引数（応答タイムアウト秒数）

推奨値「10」

第5引数以降（ターゲットKubernetesオブジェクト群）

＜対象Kubernetesアプリケーション＞

Logstash、Jaeger-query、Jaeger-collector、Prometheus、Metricbeat、Filebeat

例を次に示します。

（例）

my-namespace/deployments/logstash

my-namespace/deployments/jaeger-query

my-namespace/deployments/jaeger-collector

my-namespace/deployments/prometheus

my-namespace/deployments/metricbeat

my-namespace/daemonsets/filebeat

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

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

設定しません（デフォルト）。

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

設定しません（デフォルト）。

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表6‒34　Ext-Consコンテナの要件

項目

要件

コマンド

設定しません（デフォルト）。

ネットワーク設定

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

Ext-ConsのHTTPポート番号

プロトコル

TCP

公開ポート

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

コンテナポート

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

コンフィグ設定

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

「8.2.1　共通」のパラメタ

「8.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チャートのディレクトリ/ファイル構成を次の表に示します。

表6‒35　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の設定値のバリデーション用ファイル

6.4.9　Filebeatの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒36　Filebeatの要件

項目

要件

ワークロードリソース

DaemonSetリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「6.4.9　Filebeatの要件」〜「6.4.15　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コンテナ（「5.3.9　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のバージョンに合わせて読み替えてください。

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

表6‒37　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/メモリリソース制限

設定しません（デフォルト）。

表6‒38　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チャートのディレクトリ/ファイル構成を次の表に示します。

表6‒39　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の設定値のバリデーション用ファイル

6.4.10　Jaeger-queryの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒40　Jaeger-queryの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「6.4.9　Filebeatの要件」〜「6.4.15　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コンテナ（「5.3.9　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のバージョンに合わせて読み替えてください。

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

表6‒41　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/メモリリソース制限

設定しません（デフォルト）。

表6‒42　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チャートのディレクトリ/ファイル構成を次の表に示します。

表6‒43　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の設定値のバリデーション用ファイル

6.4.11　Jaeger-collectorの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒44　Jaeger-collectorの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「6.4.9　Filebeatの要件」〜「6.4.15　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コンテナ（「5.3.9　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のバージョンに合わせて読み替えてください。

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

表6‒45　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/メモリリソース制限

設定しません（デフォルト）。

表6‒46　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チャートのディレクトリ/ファイル構成を次の表に示します。

表6‒47　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の設定値のバリデーション用ファイル

6.4.12　Prometheusの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒48　Prometheusの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「6.4.9　Filebeatの要件」〜「6.4.15　Logstashの要件」では同一のネームスペースを指定してください。

ラベル

.metadata.labelには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

キー名：app.kubernetes.io/managed-by

値：Helm

キー名：app.kubernetes.io/name

値：prometheus

備考：チャート名

キー名：app.kubernetes.io/version

値：V.R.S※1

備考：バージョン

キー名：helm.sh/chart

値：prometheus-V.R.S※2

備考：<チャート名>-<バージョン>

.spec.selector.matchLabels、および.spec.template.metadata.labelsには次に示すキーを設定します。

キー名：app.kubernetes.io/instance

値：<リリース名>

備考：

キー名：app.kubernetes.io/name

値：prometheus

備考：チャート名

アノテーション

規定しません。

初期化コンテナ構成

Dependency-Checkerコンテナ（「5.3.9　Dependency-Checkerコンテナイメージ」を参照してください）

コンテナ構成

Prometheusコンテナ

レプリカ数

「1」

再起動ポリシー

コンテナ障害時は必ず再起動（オートヒーリング）してください（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」

注※1

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

注※2

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

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

表6‒49　Prometheusの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/メモリリソース制限

設定しません（デフォルト）。

表6‒50　Prometheusコンテナの要件

項目

要件

コマンド

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

--config.file

「/etc/prometheus/prometheus.yml」

Prometheusの設定ファイルを配置したパス名を設定します。ConfigMapで定義したprometheus.ymlは、/etc/prometheus/に配置されます。

--storage.tsdb.retention.time

PrometheusのHelmチャートパラメタのprometheus.storage.retentionTimeの設定値

パラメタの詳細については、「(1)　Helmチャートのパラメタ」を参照してください。

ネットワーク設定

デプロイしたノードのIPで、次のポートを公開してください（Serviceリソース）。

PrometheusのWeb UIアクセス用ポート番号

プロトコル

TCP

公開ポート

デプロイしたノード上のほかと被らないポート番号

コンテナポート

9090

コンフィグ設定

規定しません。

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

規定しません。

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

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チャートのディレクトリ/ファイル構成を次の表に示します。

表6‒51　PrometheusのHelmチャートのディレクトリ/ファイル構成

ディレクトリ/ファイル

説明

templates/

Helmチャートのtemplate配置用ディレクトリ

includes/

HelmチャートのConfigMapオブジェクトの設定内容外部化ファイル配置用ディレクトリ

config-map-data.yaml

ConfigMapオブジェクトの設定内容外部化ファイル

prometheus.yml.tpl

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の設定値のバリデーション用ファイル

6.4.13　Metricbeatの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒52　Metricbeatの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「6.4.9　Filebeatの要件」〜「6.4.15　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コンテナ（「5.3.9　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のバージョンに合わせて読み替えてください。

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

表6‒53　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/メモリリソース制限

設定しません（デフォルト）。

表6‒54　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チャートのディレクトリ/ファイル構成を次の表に示します。

表6‒55　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の設定値のバリデーション用ファイル

6.4.14　Elasticsearchの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒56　Elasticsearchの要件

項目

要件

ワークロードリソース

StatefulSetリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「6.4.9　Filebeatの要件」〜「6.4.15　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以上。

サービス名

（StatefulSetリソース特有）

「elasticsearch-master-headless」

Podの管理ポリシー

（StatefulSetリソース特有）

規定しません。

再起動ポリシー

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

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

ローリングアップデートとしてください（Kubernetesのデフォルト設定）。

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

規定しません。

アクセス制御

規定しません。

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

1つのノードに割り当てられるPod数は1つまでです（例として、ワーカーノード数「5」に対してレプリカ数「5」のとき、各ノードにPodが1つ起動します）。

停止したPodを次に起動する際は前回起動したノードと必ず同一のノードに割り当ててください。該当するノードが障害から復旧していない場合に割り当て不可のときは、ほかの空いているノードが存在していたとしてもPodを割り当てないでください（フェイルオーバーしないでください）。

永続化ボリューム

データディレクトリに割り当てる永続化ボリュームは1つのPodにつき1つとしてください（共有しないでください）。

リポジトリディレクトリに割り当てる永続化ボリュームは、全Podからアクセス可能としてください（共有してください）。

データディレクトリに割り当てる永続ボリュームの種類を「ローカル永続ボリューム（local）」（ノードにアタッチされたローカルストレージデバイス）としてください。

リポジトリディレクトリに割り当てる永続化ボリュームは、共有できるNFS上に作成してください。

Podライフサイクル設定

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

安全な停止待機秒数（terminationGracePeriodSeconds）

推奨値「120」

注※1

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

注※2

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

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

表6‒57　Elasticsearchのsysctlコマンド実行用コンテナの要件

項目

要件

コマンド

カーネルパラメタ「vm.max_map_count」を変更するため、次のとおりsysctlコマンドを実行します。

sysctl -w vm.max_map_count=262144（値はパラメタで設定します）

ネットワーク設定

設定しません（デフォルト）。

コンフィグ設定

次のHMP-PCTOのパラメタを、Elasticsearchのhelmチャートが参照するvalues.yamlに設定してください。

「8.3.10　Elasticsearch」のパラメタ「sysctlVmMaxMapCount」

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

次のとおり設定します。

実行ユーザ：root

特権コンテナの許可

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

設定しません（デフォルト）。

CPU/メモリリソース制限

設定しません（デフォルト）。

表6‒58　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チャートのディレクトリ/ファイル構成を次の表に示します。

表6‒59　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の設定値のバリデーション用ファイル

6.4.15　Logstashの要件

このKubernetesアプリケーションは、HMP-PCTOとして提供します。次の表に示す要件を満たすように作成します。

表6‒60　Logstashの要件

項目

要件

ワークロードリソース

Deploymentリソースとしてください。

ネームスペース

任意の名称を指定できます。ただし、「6.4.9　Filebeatの要件」〜「6.4.15　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コンテナ（「5.3.9　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のバージョンに合わせて読み替えてください。

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

表6‒61　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/メモリリソース制限

設定しません（デフォルト）。

表6‒62　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チャートのディレクトリ/ファイル構成を次の表に示します。

表6‒63　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の設定値のバリデーション用ファイル

6.5　Kubernetesアプリケーションで使用するスクリプト

Kubernetesアプリケーションで使用するシェルスクリプトについて説明します。

6.5.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

6.5.2　トランザクションヘルスチェックスクリプト（health_check.sh）

ParticipantやMediatorが新規トランザクションを受け付けられる状態になるまで待機するスクリプトです。ParticipantおよびMediatorのpostStartフックで使用します。

localhostに対してコマンド引数で指定されたHTTPポートの「トランザクションヘルスチェックAPI（/hmppcto/health）」へGETリクエストを実行し、JSONレスポンスに含まれる「Mediator/Participantの起動状態（"status"キー）」の値が「起動状態（"SERVING"）」の場合は、ステータスコード「0」で正常終了します。postStartフックが正常終了した場合、PodのステータスはRunningになります。

一方、値が「停止状態（非"SERVING"）」の場合は、コマンド引数で指定されたリトライ回数・リトライ間隔秒数でリトライします。最大リトライ回数を超えた場合は、ステータスコード「1」で異常終了します。リトライオーバーし、postStartフックが異常終了した場合、Podの状態はPostStartHookErrorになります。

＜コマンド構文＞

health_check.sh△<リトライ回数>△<リトライ間隔秒数>△<接続タイムアウト秒数>△<応答タイムアウト秒数> △<HTTPポート番号>

（凡例）

△：半角スペース1文字

＜実行例＞

health_check.sh 30 10 10 10 20555

＜コマンド引数チェック仕様＞

次の条件をどちらか1つでも満たしていない場合は、KFSG62100-Eのメッセージを出力し、ステータスコード「1」で異常終了します。

コマンド引数の数が「5 以上」である

各コマンド引数の値が「整数値」である

＜バージョン表示オプション＞

次のようにコマンドに「--version」オプションを指定して実行すると、該当するスクリプト名およびバージョン番号を表示して終了します。

health_check.sh△--version

（凡例）

△：半角スペース1文字

＜コマンドの実行結果＞

health_check.sh△V.R.S

（凡例）

△：半角スペース1文字

V.R.S：バージョン

＜コマンドの実行結果の例＞

health_check.sh 1.0.0

6.5.3　未決着トランザクション待機スクリプト（wait_transactions.sh）

ParticipantやMediatorの未決着トランザクションがなくなるまで待機するスクリプトです。ParticipantおよびMediatorのpreStopフックで使用します。

localhostに対してコマンド引数で指定されたHTTPポートの「トランザクションサマリAPI（/hmppcto/transactions/summary）」へGETリクエストを実行し、JSONレスポンスに含まれる「未決着トランザクション数（"active"キー）」の値が「0」の場合は、ステータスコード「0」で正常終了します。

一方、値が「非0」の場合は、コマンド引数で指定されたリトライ回数・リトライ間隔秒数でリトライします。最大リトライ回数を超えた場合は、ステータスコード「1」で異常終了します。

preStopフックが正常終了した場合および異常終了した場合のどちらの場合も、Podは削除されます。

＜コマンド構文＞

wait_transactions.sh△<リトライ回数>△<リトライ間隔秒数>△<接続タイムアウト秒数>△<応答タイムアウト秒数> △<HTTPポート番号>

（凡例）

△：半角スペース1文字

＜実行例＞

wait_transactions.sh 30 10 10 10 20555

＜コマンド引数チェック仕様＞

次の記条件をどちらか1つでも満たしていない場合は、KFSG62101-Eのメッセージを出力し、ステータスコード「1」で異常終了します。

コマンド引数の数が「5 以上」である

各コマンド引数の値が「整数値」である

＜バージョン表示オプション＞

次のようにコマンドに「--version」オプションを指定して実行すると、該当するスクリプト名およびバージョン番号を表示して終了します。

wait_transactions.sh△--version

（凡例）

△：半角スペース1文字

＜コマンドの実行結果＞

wait_transactions.sh△V.R.S

（凡例）

△：半角スペース1文字

V.R.S：バージョン

＜コマンドの実行結果の例＞

wait_transactions.sh 1.0.0

7　API

HMP-PCTOがサポートするクラス・インタフェース、アノテーションおよび例外の仕様について説明します。

7.1　APIの記述形式

HMP-PCTOがサポートするクラス・インタフェース、アノテーションおよび例外の記述形式について説明します。

各項で説明する項目は次のとおりです。

クラス・インタフェース

説明

クラス・インタフェースの機能について説明します。

メソッド

クラス・インタフェースのメソッドの一覧について説明します。

なお、親クラスから継承したメソッドは記載していません。

パッケージ名称

クラス・インタフェースのパッケージ名称について説明します。

アノテーション

説明

アノテーションの機能について説明します。

適用可能要素

アノテーションの適用可能要素について説明します。

属性

アノテーションの属性の一覧について説明します。

パッケージ名称

クラス・インタフェースのパッケージ名称について説明します。

例外

説明

例外の機能について説明します。

メソッド

例外のメソッドの一覧について説明します。

なお、親クラスから継承したメソッドは記載していません。

パッケージ名称

例外のパッケージ名称について説明します。

継承関係

例外の継承関係について説明します。

メソッド

説明

メソッドの機能について説明します。

形式

メソッドの形式について説明します。

引数

メソッドの引数について説明します。

例外

メソッドを利用する際に発生する例外について説明します。

戻り値

メソッドの戻り値について説明します。

7.2　トランザクション制御のAPI仕様

HMP-PCTOのトランザクション制御で使用するAPIの仕様を説明します。

7.2.1　クラス・インタフェースの一覧

HMP-PCTOのトランザクション制御がサポートするクラス・インタフェースの一覧を示します。

表7‒1　クラス・インタフェースの一覧

項番

パッケージ名

クラス・インタフェース名

説明

1

jp.co.Hitachi.soft.hmppcto.common.transaction

XidHeadersインタフェース

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名を定義したインタフェースです。

2

jp.co.Hitachi.soft.hmppcto.filter.propagation

TxPropagationIscImperativePluginクラス

HMP-ADIFの（Imperativeな）ISCコマンドによるREST通信を使用したトランザクションを伝搬するISCコマンドプラグインクラスです。

3

jp.co.Hitachi.soft.hmppcto.filter.propagation

TxPropagationRestTemplateInterceptorクラス

Spring FrameworkのRestTemplateを使用したトランザクションを伝搬するインタセプタクラスです。

7.2.2　アノテーションの一覧

HMP-PCTOのトランザクション制御がサポートするアノテーションの一覧を示します。

項番

パッケージ名

アノテーション名

説明

1

jp.co.Hitachi.soft.hmppcto.branch.api

@PctoBranchRollbackForアノテーション

トランザクションブランチの属性を設定するアノテーションです。

2

jp.co.Hitachi.soft.hmppcto.transaction.api

@PctoTransactionalアノテーション

トランザクション境界（トランザクションの開始/終了）と属性を設定するアノテーションです。

7.2.3　例外の一覧

HMP-PCTOのトランザクション制御がサポートする例外の一覧を示します。

表7‒2　例外の一覧

項番

パッケージ名

例外名

説明

ユーザによる例外送出可否

1

jp.co.Hitachi.soft.hmppcto.interceptor

RollbackTerminationException

トランザクションがロールバック決着したときに送出する例外です。

否

2

jp.co.Hitachi.soft.hmppcto.interceptor

TerminationFailureException

トランザクションの決着結果が不明の場合に送出する例外です。

否

3

jp.co.Hitachi.soft.hmppcto.TransactionSystemException

TransactionSystemException

サービス情報の参照時に障害が発生した場合に送出する例外です。

主にOrchestratorの初期化時、トランザクションの開始時に送出します。

否

7.2.4　XidHeadersインタフェース（SQL-Participant限定）

説明

HMP-PCTOがトランザクション制御に使用するHTTPヘッダ名を定義したインタフェースです。

先行プリペアする場合は、APがXidHeaders.IS_LAST_CALLを使用してHTTPヘッダに追加します。

ほかの定数は、HMP-PCTOが使用するHTTPヘッダです。APで使用する必要はありません。

定数

XidHeadersインタフェースの定数の一覧を次の表に示します。

表7‒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

7.2.5　TxPropagationIscImperativePluginクラス

説明

HMP-ADIFの（Imperativeな）ISCコマンドによるREST通信時に、トランザクションを伝搬するISCコマンドプラグインクラスです。APはHMP-PCTOのライブラリを組み込んで、HMP-ADIFのISCコマンドを使用します。TxPropagationIscImperativePluginクラスの各メソッドは、HMP-ADIFが呼び出します。APがTxPropagationIscImperativePluginクラスを直接使用する必要はありません。

TxPropagationIscImperativePluginのpreExecute()メソッドでは、ISCコマンドのエラー情報を設定しません。そのため、ほかのISCコマンドプラグインや、ISCコマンドの実行には影響しません。

メソッド

TxPropagationIscImperativePluginクラスのメソッドの一覧を次の表に示します。

表7‒4　TxPropagationIscImperativePluginクラスのメソッドの一覧

メソッド

説明

applicable(java.lang.String communicationType)

ISCコマンドプラグインの適用可否を判定するメソッドです。

getOrder()

ISCコマンドプラグインの実行順序を判定するメソッドです。

postExecute(

org.globallogic.microservice.modules.isc.imperative.plugins.

IscImperativeCommandExecutionPluginContext pluginContext,

org.globallogic.microservice.modules.IscImperativeCommand command)

ISCコマンド実行後に任意の処理を実行するメソッドです。

preExecute(

org.globallogic.microservice.modules.isc.imperative.plugins.

IscImperativeCommandExecutionPluginContext pluginContext,

org.globallogic.microservice.modules.IscImperativeCommand command)

ISCコマンド実行前に任意の処理を実行するメソッドです。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.filter.propagation

(1)　applicable(java.lang.String communicationType)

説明

ISCコマンドプラグインの適用可否を返します。

形式

public boolean applicable(java.lang.String communicationType)

引数

java.lang.String communicationType：

次のとおり、通信方式が渡されます。

RESTの場合："REST"

メッセージングの場合："MESSAGING"

戻り値

HMP-PCTOは、RESTにだけ対応します。

引数が"REST"の場合はtrue、"MESSAGING"の場合は、falseを返します。

例外

なし。

(2)　getOrder()

説明

ISCコマンドプラグインの実行順番を返します。

形式

public int getOrder()

引数

なし。

戻り値

パラメタjp.co.Hitachi.soft.hmppcto.branch.qualifier.propagation-orderで設定した値を返します。デフォルト値は1です。

TxPropagationIscImperativePlugin以外のISCコマンドプラグインクラスを使用する場合は、特に理由がないかぎりTxPropagationIscImperativePluginクラスのpreExecute()が最初、postExecute()が最後に呼ばれるようにデフォルト値で使用してください。

例外

なし。

(3)　postExecute(IscImperativeCommandExecutionPluginContext pluginContext, IscImperativeCommand command)

説明

ISCコマンド実行後の処理を実行するメソッドです。レスポンスからHMP-PCTOがトランザクション制御に使用するHTTPヘッダを入力してトランザクション制御を実行します。

形式

public void postExecute(org.globallogic.microservice.modules.isc.imperative.
plugins.IscImperativeCommandExecutionPluginContext pluginContext,
org.globallogic.microservice.modules.IscImperativeCommand command)

引数

org.globallogic.microservice.modules.isc.imperative.plugins.IscImperativeCommandExecutionPluginContext pluginContext：

IscImperativeCommandExecutionPluginContextインスタンスを指定します。

org.globallogic.microservice.modules.IscImperativeCommand.IscImperativeCommand command：

IscImperativeCommandインスタンスを指定します。

戻り値

なし。

例外

なし。

(4)　preExecute(IscImperativeCommandExecutionPluginContext pluginContext, IscImperativeCommand command)

説明

ISCコマンド実行前の処理を実行するメソッドです。HMP-PCTOがトランザクション制御に使用するHTTPヘッダをリクエストに追加してトランザクションを伝搬します。

形式

public void preExecute(IscImperativeCommandExecutionPluginContext pluginContext, IscImperativeCommand command)

引数

org.globallogic.microservice.modules.isc.imperative.plugins.IscImperativeCommandExecutionPluginContext pluginContext：

IscImperativeCommandExecutionPluginContextインスタンスを指定します。

org.globallogic.microservice.modules.IscImperativeCommand.IscImperativeCommand command：

IscImperativeCommandインスタンスを指定します。

戻り値

なし。

例外

なし。

7.2.6　TxPropagationRestTemplateInterceptorクラス

説明

Spring FrameworkのRestTemplateによるREST通信時に、トランザクションを伝搬するインタセプタクラスです。APがRestTemplateのインスタンスに登録して使用します。TxPropagationRestTemplateInterceptorの各メソッドは、Spring Frameworkが呼び出します。APが直接TxPropagationRestTemplateInterceptorの各メソッドを使用する必要はありません。APがほかのインタセプタを登録する場合は、特に理由がないかぎりは、TxPropagationRestTemplateInterceptorクラスが最初に呼び出されるように登録してください。

メソッド

TxPropagationRestTemplateInterceptorクラスのメソッドの一覧を次の表に示します。

表7‒5　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()メソッド実行時）に送出された例外をそのまま送出します。このメソッドで新たな例外の送出はしません。

7.2.7　@PctoBranchRollbackForアノテーション

説明

トランザクションブランチの属性を設定するアノテーションです。Entity-ServiceまたはEntity-Moduleで実行される任意のクラス、メソッドに指定できます。複数のメソッドに指定した場合は、最後に実行されたメソッドで設定した属性が有効になります。クラスレベルで指定することもできますが、メソッドレベルでの指定を推奨します。

rollbackOn属性、rollbackOnFamily属性でこのトランザクションをロールバックにマークするかどうかを決めるHTTPステータス、HTTPステータスファミリーを設定します。

トランザクションブランチのサービス終了後に動作するHMP-PCTOのフィルタが、HTTPステータスを判定してロールバックにマークしたかどうかをOrchestrator、およびParticipantに連絡します。ロールバックにマークしたトランザクションブランチが1つでもあると、グローバルトランザクションはロールバックします。

rollbackOn属性、rollbackOnFamily属性を両方指定した場合は、両方の設定値が有効です。

デフォルトの動作は、4xx、5xxをロールバックにマークします。

ただし、次の場合には、rollbackOn属性、rollbackOnFamily属性の設定に関係なくロールバックにマークしません。

HTTPステータス404の場合

HTTPステータス405の場合

適用可能要素

クラス、メソッド

属性

@PctoBranchRollbackForアノテーションの属性の一覧を次の表に示します。

表7‒6　@PctoBranchRollbackForアノテーションの属性の一覧

属性名

説明

必須/任意

型

デフォルト値

rollbackOn

トランザクションにロールバックのマークを付ける必要があるHTTPステータスを設定します。

任意

javax.ws.rs.core.Response.Status[]

なし

rollbackOnFamily

トランザクションにロールバックのマークを付ける必要があるHTTPステータスファミリーを設定します。

任意

javax.ws.rs.core.Response.Status.Family[]

{javax.ws.rs.core.Response.Status.Family.CLIENT_ERROR, javax.ws.rs.core.Response.Status.Family.SERVER_ERROR}

パッケージ名称

jp.co.Hitachi.soft.hmppcto.interceptor

7.2.8　@PctoTransactionalアノテーション

説明

トランザクション境界を設定し、トランザクションの属性を設定するアノテーションです。このアノテーションを指定したメソッドの呼び出し前にトランザクションを開始し、メソッドの終了後にトランザクションを終了します。このアノテーションを指定したメソッドから呼び出され、同じスレッドで動作するメソッドはトランザクションの範囲内です。トランザクションの範囲内でこのアノテーションを指定したメソッドがネストしている場合は、ネストしている指定を無視します（元のトランザクションの範囲内です）。クラスレベルで指定することもできますが、メソッドレベルでの指定を推奨します。

このアノテーションを設定したメソッドの実行後に動作するHMP-PCTOのインタセプタが、アプリケーションが送出した例外をキャッチして、トランザクションにロールバックのマークを付けるか判定し、Mediatorにトランザクションの決着をリクエストします。

トランザクションがロールバックに決着した場合、および通信障害によってMediatorからトランザクションの決着結果を受け取れなかった場合は、このアノテーションを指定したメソッドの呼び出し元に例外を送出します。サービスのルートとなるメソッドにこのアノテーションを指定した場合、例外がどのようなエラー処理にマッピングされるかは、使用しているフレームワーク、APサーバの仕様に依存します。そのため、このアノテーションはルートとなるメソッド以外に設定してアプリケーションでエラーハンドリングすることを推奨します。

rollbackOn属性を設定して、インタセプタがトランザクションにロールバックのマークを付ける必要がある例外を示すことができます。

逆に、dontRollbackOn属性を設定して、インタセプタがトランザクションにロールバックのマークを付けてはならない例外を示すことができます。設定しなかった例外の場合にロールバックのマークを付けます。

これらの属性に設定した例外クラスのサブクラスにも同じ属性が適用されます。

両方の属性が指定されている場合、dontRollbackOnが優先されます。

両方の属性を省略した場合、java.io.IOExceptionとそのサブクラスをロールバックにマークします。

なお、java.lang.RuntimeExceptionとそのサブクラスは、属性の設定に関係なくロールバックのマークを付けます。

適用可能要素

クラス、メソッド

属性

@PctoTransactionalアノテーションの属性の一覧を次の表に示します。

表7‒7　@PctoTransactionalアノテーションの属性の一覧

属性名

説明

必須/任意

型

デフォルト値

dontRollbackOn

トランザクションにロールバックのマークを付けてはならない例外を指定します。

任意

Class<?>[]

なし

rollbackOn

トランザクションにロールバックのマークを付ける必要がある例外を指定します。

任意

Class<?>[]

{java.io.IOException}

パッケージ名称

jp.co.Hitachi.soft.hmppcto.transaction.api

7.2.9　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

7.2.10　TerminationFailureException例外

説明

トランザクションの決着結果が、Mediatorとの通信障害のために不明の場合に送出する例外です。@PctoTransactionalを設定したメソッドの呼び出し元に送出します。@PctoTransactionalを設定したメソッドが送出した例外は、getSuppressed()メソッドで受け取ることができます。

トランザクションの決着結果は、ログおよびgetMessage()メソッドで受け取るメッセージ中のXIDをキーに、Mediatorのログを確認してください。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.interceptor

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      jp.co.Hitachi.soft.hmppcto.interceptor.TerminationFailureException

7.2.11　TransactionSystemException例外

説明

サービス情報の参照時に障害が発生した場合に送出する例外です。

主にOrchestratorの初期化時、トランザクションの開始時に送出します。トランザクションの開始時に送出する場合は、@PctoTransactionalを設定したメソッドを呼び出さないで、@PctoTransactionalを設定したメソッドの呼び出し元にTransactionSystemExceptionを送出します。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.TransactionSystemException

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      jp.co.Hitachi.soft.hmppcto.TransactionSystemException.TransactionSystemException

7.3　JDBC Proxy DriverのAPI仕様（SQL-Participant限定）

HMP-PCTOのJDBC Proxy Driverで使用するAPIの仕様を説明します。

制限事項

JDBC Driverの仕様で定められているメソッドのうち、HMP-PCTOがサポートしていないメソッドを呼び出した場合はPctoSqlFeatureNotSupportedException例外、またはPctoSQLClientInfoException例外を送出します。

親クラスから継承されたメソッドについては、親クラスから継承されたメソッドの一覧に記載されているメソッドだけをサポートします。親クラスでサポートしているメソッドについては、親クラスから継承されたメソッドの一覧に記載がない場合、使用時に例外を送出しませんが、動作の保証はしません。

JDBC Proxy Driverは、DBの列に配列型が使われている場合、1次元配列にだけ対応しています。2次元以上の配列には対応していません。2次元以上の配列を使用した場合の動作は保証しません 。

7.3.1　クラス・インタフェースの一覧（SQL-Participant限定）

HMP-PCTOのJDBC Proxy Driverがサポートするクラス・インタフェースの一覧を次に示します。

表7‒8　クラス・インタフェースの一覧

項番

パッケージ名

クラス・インタフェース名

説明

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

PctoInputStreamクラス

バイト入力ストリームを表現するクラスです。

13

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoReaderクラス

文字ストリームを読み込むためのクラスです。

14

jp.co.Hitachi.soft.hmppcto.jdbc.client

PctoArrayクラス

SQL型ARRAYのJavaプログラミング言語でのマッピングをするクラスです。

7.3.2　例外の一覧（SQL-Participant限定）

HMP-PCTOのJDBC Proxy Driverがサポートする例外の一覧を次に示します。

表7‒9　例外の一覧

項番

パッケージ名

例外名

説明

ユーザによる例外送出可否

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

PctoCommunicationFailureException例外

Entity-ServiceとParticipant間の通信に失敗した場合に送出する例外です。

否

4

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoInternalContradictionException例外

Participantの内部で障害が発生した場合に送出する例外です。

否

5

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoTransactionStartException例外

Participantのトランザクションブランチを開始できない場合に送出する例外です。

否

6

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoPrePreparedException例外

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出する例外です。

否

7

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoConnectionLackedException例外

パラメタ「db.pool.max-pool-size」の指定値よりもDBコネクション数を多く使用しようとした場合に送出する例外です。

否

8

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoIOException例外

JDBC Proxy Driverのメソッド実行時に入出力エラーが発生した場合に送出する例外です。

否

9

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoIOCommunicationFailureException例外

Entity-ServiceとParticipant間の通信に失敗した場合に送出する例外です。

否

10

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoIOInternalContradictionException例外

Participantの内部で障害が発生した場合に送出する例外です。

否

11

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

PctoIOTransactionStartException例外

Participantのトランザクションブランチを開始できない場合に送出する例外です。

否

7.3.3　PctoDataSourceクラス（SQL-Participant限定）

説明

データベースに接続するためのファクトリクラスです。このDataSourceオブジェクトが表す物理データ・ソースへの接続で使用します。DriverManager機能の代わりに、DataSourceオブジェクトが接続を得るための手段となります。

DataSourceインタフェースを実装するオブジェクトは、Java Naming and Directory (JNDI) APIを基にしたネーム・サービスに登録されます。

DataSourceオブジェクトがルックアップ操作によって取得されて、Connectionオブジェクトを作成するために使用されます。基本実装では、DataSourceオブジェクトによって取得された接続は、DriverManager機能によって取得した接続と同じものになります。

メソッド

PctoDataSourceクラスのメソッドの一覧を次の表に示します。

表7‒10　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

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoCommunicationFailureException：

次の場合に例外を送出します。

設定ファイルで指定された接続先ParticipantのURLの形式が不正の場合

Entity-ServiceとParticipant間の通信に失敗した場合

PctoInternalContradictionException：

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を返します。

7.3.4　PctoConnectionクラス（SQL-Participant限定）

説明

データベースとの接続（セッション）を表現するクラスです。接続のコンテキスト内でSQL文が実行され結果が返されます。Connectionオブジェクト中のデータベースは、表、サポートしているSQL文法、ストアド・プロシージャ、およびこの接続の能力などについての情報を提供します。

メソッド

PctoConnectionクラスのメソッドの一覧を次の表に示します。

表7‒11　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：

返されるオブジェクトを生成する要素を指定します。Objectに指定できるクラスは、プリミティブデータ型に対応する参照型、プリミティブデータ型のラッパークラスのインスタンス、またはHMP-PCTOが提供するクラスのインスタンスです。それ以外が指定された場合は、例外を送出します。

戻り値

指定されたSQL型に、要素がマッピングされるjava.sql.Arrayオブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

JDBC型がtypeNameに適していなくて、かつ変換がサポートされていない場合

引数typeNameがnullの場合

メソッドがクローズされたあとに接続された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのデータ型をサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　createSQLXML()

説明

SQLXMLインタフェースを実装しているオブジェクトを構築します。返されるオブジェクトには、初期状態のときはデータが格納されていません。データをSQLXMLオブジェクトに追加する場合は、SQLXMLインタフェースのsetStringメソッドを使用します。

形式

public java.sql.SQLXML createSQLXML() throws java.sql.SQLException

引数

なし。

戻り値

SQLXMLインタフェースを実装しているオブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

SQLXMLインタフェースを実装するオブジェクトを構築できなかった場合

このメソッドがクローズされた接続に対して呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのデータ型をサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたパラメタが、型および並行処理を示すResultSet定数ではない場合

java.sql.SQLFeatureNotSupportedException：

次の場合に例外を送出します。

ParticipantのJDBC Driverがこのメソッドをサポートしない場合

このメソッドが、指定された結果セットの型と結果セットの並行処理でサポートされない場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(6)　getMetaData()

説明

このConnectionオブジェクトが接続を表すデータベースに関するメタデータを格納するDatabaseMetaDataオブジェクトを取得します。メタデータには、データベースの表、サポートしているSQL文の文法、ストアド・プロシージャ、および接続設定などの情報が含まれています。

形式

public java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException

引数

なし。

戻り値

このConnectionオブジェクトのDatabaseMetaDataオブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたパラメタが型および並行処理を示すResultSet定数ではない場合

java.sql.SQLFeatureNotSupportedException：

次の場合に例外を送出します。

ParticipantのJDBC Driverがこのメソッドをサポートしない場合

このメソッドが指定された結果セットの型と結果セットの並行処理でサポートされない場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたパラメタが、自動生成キーを返すかどうかを示すStatement定数ではない場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverが、定数Statement.RETURN_GENERATED_KEYSを指定したこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたパラメタが、型および並行処理を示すResultSet定数ではない場合

java.sql.SQLFeatureNotSupportedException：

次の場合に例外を送出します。

ParticipantのJDBC Driverがこのメソッドをサポートしない場合

このメソッドが、指定された結果セットの型と結果セットの並行処理でサポートされない場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

引数に指定されたパラメタがConnection定数以外の場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoPrePreparedException：

先行プリペア実行後にJDBC Proxy Driverのメソッドを実行した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.5　PctoStatementクラス（SQL-Participant限定）

説明

静的SQL文を実行し、作成された結果を返すために使用するクラスです。デフォルトでは、Statementオブジェクトごとに、同時に開くことができるResultSetオブジェクトは1つだけです。したがって、1つのResultSetオブジェクトの読み込みが、別の読み込みによって割り込まれると、それぞれが異なったStatementオブジェクトによって生成されたことになります。

メソッド

PctoStatementクラスのメソッドの一覧を次の表に示します。

表7‒12　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文を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

JDBC Driverがバッチ更新をサポートしない場合

メソッドがPreparedStatementまたはCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　close()

説明

自動的にクローズされるときにStatementオブジェクトのデータベースとJDBCリソースが解放されるのを待つのではなく、すぐにそれらを解放します。

形式

public void close()

引数

なし。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に例外を送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　closeOnCompletion()

説明

このStatementオブジェクトに依存するすべての結果セットがクローズされたときに、このStatementオブジェクトをクローズします。Statementオブジェクトの実行によって結果セットが生成されない場合、このメソッドは無効になります。

形式

public void closeOnCompletion() throws java.sql.SQLException

引数

なし。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

メソッドがクローズされたあとに接続された場合に例外を送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

メソッドがPreparedStatementまたはCallableStatementで呼び出された場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外と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の取り消しを試みたときに送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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つの要素が格納されている更新カウントの配列を返します。配列の要素は、コマンドがバッチに追加された順序で並べられます。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

JDBC Driverがバッチ文をサポートしない場合

java.sql.BatchUpdateException：

次の場合に例外を送出します。

データベースに送信されたコマンドの1つが正常に実行されなかった場合

結果セットを返そうとした場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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にはなりません。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたSQL文が、単一のResultSetオブジェクトだけ生成する場合

メソッドがPreparedStatementで呼び出された場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

指定されたSQL文が、単一のResultSetオブジェクトだけ生成する場合

メソッドがPreparedStatementで呼び出された場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(11)　getMoreResults()

説明

Statementオブジェクトの次の結果に移動します。この結果がResultSetオブジェクトの場合はtrueを返し、getResultSetメソッドで得られた現在のResultSetオブジェクトをすべて暗黙にクローズします。

形式

public boolean getMoreResults() throws java.sql.SQLException

引数

なし。

戻り値

次の結果がResultSetオブジェクトの場合はtrueを返します。更新カウントの場合、または結果がない場合はfalseを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(12)　getQueryTimeout()

説明

JDBC DriverがStatementオブジェクトの実行を待つ秒数を取得します。この制限を超えると、SQLExceptionがスローされます。

形式

public int getQueryTimeout() throws java.sql.SQLException

引数

なし。

戻り値

現在のクエリ・タイムアウトの制限値の秒数を返します。0は無制限を意味します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(13)　getResultSet()

説明

ResultSetオブジェクトとして現在の結果を取得します。このメソッドは、1つの結果に対して1回だけ呼び出す必要があります。

形式

public java.sql.ResultSet getResultSet() throws java.sql.SQLException

引数

なし。

戻り値

ResultSetオブジェクトとしての現在の結果を返します。結果が更新カウントの場合、または結果がない場合はnullを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(14)　getUpdateCount()

説明

更新カウントとして現在の結果を取得します。結果がResultSetオブジェクトの場合、または結果がない場合は-1を返します。このメソッドは、1つの結果に対して1回だけ呼び出す必要があります。

形式

public int getUpdateCount() throws java.sql.SQLException

引数

なし。

戻り値

更新カウントとして現在の結果を返します。現在の結果がResultSetオブジェクトの場合、または結果がない場合は-1を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(15)　getWarnings()

説明

このStatementオブジェクトに関する呼び出しによって報告される最初の警告を取得します。後続のStatementオブジェクトの警告は、このSQLWarningオブジェクトにチェーンされます。

警告チェーンは、SQL文が（再）実行されるたびに自動的にクリアされます。このメソッドは、クローズされたStatementオブジェクトの呼び出しには使用しません。使用された場合、SQLExceptionがスローされます。

ResultSetオブジェクトが処理中の場合、ResultSetオブジェクトの読み込みに関連する警告はそのオブジェクトを生成したStatementオブジェクトではなく、すべてResultSetオブジェクトにチェーンされます。

形式

public java.sql.SQLWarning getWarnings() throws java.sql.SQLException

引数

なし。

戻り値

最初のSQLWarningオブジェクトを返します。警告がない場合はnullを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(17)　setFetchSize(int rows)

説明

このStatementオブジェクトで作成されたResultSetオブジェクトでより多くの行が必要なときに、データベースから取り出す必要がある行数についてのヒントをParticipantのJDBC Driverに提供します。指定された値が0の場合、ヒントは無視されます。デフォルト値は0です。

形式

public void setFetchSize(int rows) throws java.sql.SQLException

引数

int rows：

フェッチする行数を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

rows≧0の条件が満たされていない場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(18)　setQueryTimeout(int seconds)

説明

JDBC DriverがStatementオブジェクトの実行を待つ秒数を設定します。デフォルトでは、実行中のSQL文が完了するまでの時間に制限はありません。制限時間を経過した場合、SQLTimeoutExceptionがスローされます。

形式

public void setQueryTimeout(int seconds) throws java.sql.SQLException

引数

int seconds：

新しいクエリ・タイムアウトの制限時間の秒数を指定します。0は無制限を意味します

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドがクローズされたあとに接続された場合

seconds≧0の条件が満たされていない場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.6　PctoPreparedStatementクラス（SQL-Participant限定）

説明

プリコンパイルされたSQL文を表すクラスです。SQL文は、プリコンパイルされ、PreparedStatementオブジェクトに格納されます。その後、このオブジェクトは、この文を複数回効率的に実行するために使用できます。INパラメタ値を設定する設定機能メソッド（setInt、setStringなど）は、入力パラメタの定義されたSQL型と互換のある型を指定する必要があります。例えば、INパラメタがINTEGERというSQL型の場合、setIntメソッドを使用するようにしてください。

メソッド

PctoPreparedStatementクラスのメソッドの一覧を次の表に示します。

表7‒13　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クラスのメソッドの一覧を次の表に示します。

表7‒14　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

引数

なし。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPctoPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPctoPreparedStatementで呼び出された場合

引数がこのメソッドに指定された場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　executeQuery()

説明

PreparedStatementオブジェクトのSQLクエリを実行し、そのクエリによって生成されたResultSetオブジェクトを返します。

形式

public java.sql.ResultSet executeQuery() throws java.sql.SQLException

引数

なし。

戻り値

クエリによって作成されたデータを含むResultSetオブジェクトです。nullにはなりません。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

このメソッドがクローズされたPctoPreparedStatementで呼び出された場合

SQL文がResultSetオブジェクトを返さない場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(4)　executeUpdate()

説明

PreparedStatementオブジェクトのSQL文を実行します。実行するSQL文は、SQLデータ操作言語（DML）文（INSERT文、UPDATE文、DELETE文など）であるか、またはDDL文のような何も返さないSQL文である必要があります。

形式

public int executeUpdate() throws java.sql.SQLException

引数

なし。

戻り値

SQLデータ操作言語（DML）文の場合は行数を返します。何も返さないSQL文の場合は0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

このメソッドがクローズされたPctoPreparedStatementで呼び出された場合

SQL文がResultSetオブジェクトを返した場合

java.sql.SQLTimeoutException：

ParticipantのJDBC Driverが、現在実行中のStatementの取り消しを試みたときに送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを指定します。指定できるオブジェクトは、PctoArrayクラスのオブジェクトです。それ以外が指定された場合は、例外を送出します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドがクローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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：

ストリームのバイト数を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外、PctoInternalContradictionException例外、およびPctoIOException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOException：

引数で指定したJava入力ストリームの読み込みに失敗した場合に送出します。

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：

パラメタ値に設定されるデータを含むオブジェクトを指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOException：

引数で指定したJava入力ストリームの読み込みに失敗した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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配列の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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：

ストリーム内の文字数を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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：

パラメタ値に設定されるデータを含むオブジェクトを指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドがクローズされたPreparedStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOException：

引数で指定したJava入力ストリームの読み込みに失敗した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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：

設定したい文字列の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

JDBC Driverが各国の文字セットをサポートしない場合

JDBC Driverがデータ変換エラーが発生したことを検出できる場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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型コードを指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外と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がこのデータ型をサポートしていない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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：

入力パラメタ値を含むオブジェクトを指定します。Objectに指定できる値は、プリミティブデータ型、プリミティブデータ型のラッパークラスのインスタンス、またはHMP-PCTOが提供するクラスのインスタンスです。それ以外が指定された場合は、例外を送出します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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：

入力パラメタ値を含むオブジェクトを指定します。Objectに指定できる値は、プリミティブデータ型、プリミティブデータ型のラッパークラスのインスタンス、またはHMP-PCTOが提供するクラスのインスタンスです。それ以外が指定された場合は、例外を送出します。

int targetSqlType：

java.sql.Typesで定義されるSQL型コードを指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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：

設定したい文字列の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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の値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数のインデックスがSQL文のパラメタ・マーカーに対応しない場合

データベースアクセスエラーが発生した場合

このメソッドが、クローズされたPreparedStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.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クラスのメソッドの一覧を次の表に示します。

表7‒15　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クラスのメソッドの一覧を次の表に示します。

表7‒16　PctoPreparedStatementクラスから継承されたPctoCallableStatementクラスのメソッドの一覧

メソッド

説明

addBatch()

詳細については、「(1)　addBatch()」を参照してください。

execute()

詳細については、「(2)　execute()」を参照してください。

PctoStatementクラスから継承されたPctoCallableStatementクラスのメソッドの一覧を次の表に示します。

表7‒17　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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(7)　getDouble(int parameterIndex)

説明

指定されたJDBC DOUBLEパラメタの値を、Javaプログラミング言語のdoubleとして取り出します。

形式

public double getDouble(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(8)　getFloat(int parameterIndex)

説明

指定されたJDBC FLOATパラメタの値を、Javaプログラミング言語のfloatとして取り出します。

形式

public float getFloat(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(9)　getInt(int parameterIndex)

説明

指定されたJDBC INTEGERパラメタの値を、Javaプログラミング言語のintとして取り出します。

形式

public int getInt(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(10)　getLong(int parameterIndex)

説明

指定されたJDBC BIGINTパラメタの値を、Javaプログラミング言語のlongとして取り出します。

形式

public long getLong(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(12)　getObject(int parameterIndex)

説明

指定されたパラメタの値を、Javaプログラミング言語のObjectとして取り出します。値がSQL NULLの場合、JDBC DriverはJava nullを返します。

このメソッドは、Javaオブジェクトを返します。そのオブジェクトの型は、registerOutParameterメソッドを使用してこのパラメタに登録されたJDBCの型に対応します。

HMP-PCTOは、ターゲットのJDBCの型をjava.sql.Types.OTHERとして登録するデータベース固有の抽象データ型には対応していません。

形式

public java.lang.Object getObject(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

OUTパラメタ値を保持するjava.lang.Objectオブジェクトを返します。値が存在しない場合は、nullを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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で指定したクラスのインスタンスを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

変換がサポートされていない場合

引数typeがnullの場合

上記以外のエラーが発生した場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(14)　getShort(int parameterIndex)

説明

指定されたJDBC SMALLINTパラメタの値を、Javaプログラミング言語のshortとして取り出します。

形式

public short getShort(int parameterIndex) throws java.sql.SQLException

引数

int parameterIndex：

取得したいパラメタのインデックスを指定します。最初のパラメタは1、2番目のパラメタは2、…となります。

戻り値

パラメタ値を返します。値が存在しない場合は、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(19)　registerOutParameter(int parameterIndex, int sqlType)

説明

引数parameterIndexに指定したOUTパラメタを、JDBC型sqlTypeとして登録します。ストアド・プロシージャが実行される前に、すべてのOUTパラメタを登録しておく必要があります。

OUTパラメタ用に引数sqlTypeで指定したJDBCの型は、そのパラメタの値を読み込むためにgetメソッドで使用するJavaの型を判定します。HMP-PCTOは、データベース固有の型には対応していません。sqlTypeにjava.sql.Types.OTHERを指定した場合は、例外を送出します。

パラメタが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型のコードを指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外と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がこのデータ型をサポートしていない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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以上の数値を指定してください。

戻り値

なし。

例外

PctoCommunicationFailureException例外と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がこのデータ型をサポートしていない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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構造化型の完全指定された名前を指定してください。

戻り値

なし。

例外

PctoCommunicationFailureException例外と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がこのデータ型をサポートしていない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(22)　wasNull()

説明

最後に読み込まれたOUTパラメタの値がSQL NULLかどうかを取得します。読み込み用メソッドの呼び出しのあとに、このメソッドを呼び出してください。そうでないと、nullかどうかを判別するために使用する値がありません。

形式

public boolean wasNull() throws java.sql.SQLException

引数

なし。

戻り値

最後に読み込まれたパラメタがSQL NULLの場合はtrueを、それ以外の場合はfalseを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされたCallableStatementで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.8　PctoResultSetクラス（SQL-Participant限定）

説明

データベースの結果を表すデータの表のクラスです。データベースの結果セットを表すデータの表は、通常、データベースに照会する文を実行すると生成されます。ResultSetオブジェクトは、カーソルがデータの現在の行を指し示すよう維持します。初期状態では、カーソルは最初の行の先頭に配置されます。nextメソッドによって、カーソルは次の行に移動します。ResultSetは、現在の行から列値を取得するgetterメソッド（getBoolean、getLongなど）を提供します。値は、列のインデックス番号か列名のどちらかを使って取得できます。getterメソッドへの入力として使用される列名では、大文字と小文字は区別されません。列名でgetterメソッドが呼び出され、複数の列が同じ名前を持つ場合は、最初に一致する列の値が返されます。ResultSetオブジェクトは、このオブジェクトを生成したStatementオブジェクトが閉じられるとき、再実行されるとき、または一連の複数の結果から次の結果を取り出すために使われるときに、自動的に閉じられます。

メソッド

PctoResultSetクラスのメソッドの一覧を次の表に示します。

表7‒18　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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

結果セットのタイプがTYPE_FORWARD_ONLYの場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　close()

説明

自動的にクローズされるときにResultSetオブジェクトのデータベースとJDBCリソースが解放されるのを待つのではなく、すぐにそれらを解放します。

形式

public void close()

引数

なし。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に例外を送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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です。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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です。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(11)　getByte(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のbyteとして取り出します。

形式

public byte getByte(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(19)　getDouble(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のdoubleとして取り出します。

形式

public double getDouble(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(21)　getFloat(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のfloatとして取り出します。

形式

public float getFloat(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合は、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(23)　getInt(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のintとして取り出します。

形式

public int getInt(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(25)　getLong(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のlongとして取り出します。

形式

public long getLong(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(27)　getMetaData()

説明

このResultSetオブジェクトの列の数、型、およびプロパティを取得します。

形式

public java.sql.ResultSetMetaData getMetaData() throws java.sql.SQLException

引数

なし。

戻り値

このResultSetオブジェクトの列の記述を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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のインスタンスを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

Java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

変換がサポートされていない場合

typeがnullの場合

変換でエラーが発生した場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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のインスタンスを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

変換がサポートされていない場合

typeがnullの場合

変換でエラーが発生した場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(34)　getShort(int columnIndex)

説明

このResultSetオブジェクトの現在行にある指定された列の値を、Javaプログラミング言語のshortとして取り出します。

形式

public short getShort(int columnIndex) throws java.sql.SQLException

引数

int columnIndex：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列値を返します。値が存在しない場合、0を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

引数が無効な場合

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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）を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(45)　isClosed()

説明

このResultSetオブジェクトがクローズされているかどうかを取得します。ResultSetオブジェクトでcloseメソッドが呼び出されるか、または自動的にクローズされる場合に、ResultSetオブジェクトがクローズされます。

形式

public boolean isClosed() throws java.sql.SQLException

引数

なし。

戻り値

このResultSetオブジェクトがクローズされている場合はtrueを、オープン状態の場合はfalseを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(46)　next()

説明

カーソルを現在の位置から順方向に1行移動します。ResultSetのカーソルは、初期状態では最初の行の前に位置づけられています。nextメソッドの最初の呼び出しによって、最初の行が現在行になります。2番目の呼び出しによって2行目が現在行になり、以下同様に続きます。nextメソッドの呼び出しでfalseが返された場合、カーソルは最終行の後ろに位置します。現在行で入力ストリームがオープンしている場合、nextメソッドへの呼び出しは暗黙的にそのストリームをクローズさせます。

形式

public boolean next() throws java.sql.SQLException

引数

なし。

戻り値

新しい現在の行が有効の場合はtrueを、行がそれ以上存在しない場合はfalseを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(47)　wasNull()

説明

最後に読み込まれた列の値がSQL NULLであるかどうかを通知します。最初にgetterメソッドの1つを呼び出して、列の値を読み込みます。次にwasNullメソッドを呼び出して、読み込まれた値がSQL NULLかどうかを判定します。

形式

public boolean wasNull() throws java.sql.SQLException

引数

なし。

戻り値

最後に読み込まれた列の値がSQL NULLの場合はtrueを、それ以外の場合はfalseを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

データベースアクセスエラーが発生した場合

メソッドが、クローズされた結果セットで呼び出された場合

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.9　PctoDatabaseMetaDataクラス（SQL-Participant限定）

説明

データベースに関する包括的な情報を提供するクラスです。

このクラスは、基本となるDBMSの操作方法を見つける必要があるツールで使用します。複数のDBMSと一緒に使用されるアプリケーションで使います。

メソッド

PctoDatabaseMetaDataクラスのメソッドの一覧を次の表に示します。

表7‒19　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

引数

なし。

戻り値

データベース製品の名前を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　supportsMultipleResultSets()

説明

Connectionオブジェクトが接続を表すデータベースで、executeメソッドの単一の呼び出しからの複数のResultSetオブジェクトの取得がサポートされているかどうかを取得します。

形式

public boolean supportsMultipleResultSets() throws java.sql.SQLException

引数

なし。

戻り値

ResultSetオブジェクトの取得がサポートされている場合はtrueを、そうでない場合はfalseを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.10　PctoResultSetMetadataクラス（SQL-Participant限定）

説明

ResultSetオブジェクトの列の型とプロパティに関する情報を取得するのに使用するクラスです。

メソッド

PctoResultSetMetadataクラスのメソッドの一覧を次の表に示します。

表7‒20　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プログラミング言語のクラスの完全指定された名前を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　getColumnCount()

説明

このResultSetオブジェクトの列数を返します。

形式

public int getColumnCount() throws java.sql.SQLException

引数

なし。

戻り値

列数を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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、…となります。

戻り値

列の推奨タイトルを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(4)　getColumnName(int column)

説明

指定された列の名前を取得します。

形式

public java.lang.String getColumnName(int column) throws java.sql.SQLException

引数

int column：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

列名を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(5)　getColumnType(int column)

説明

指定された列のSQL型を取得します。

形式

public int getColumnType(int column) throws java.sql.SQLException

引数

int column：

列インデックスを指定します。最初の列は1、2番目の列は2、…となります。

戻り値

java.sql.TypesからのSQL型を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

データベースアクセスエラーが発生した場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.11　PctoSQLXMLクラス（SQL-Participant限定）

説明

Javaプログラミング言語でSQL XML型を表現するクラスです。XMLは、XML値をデータベース表の行内に列の値として格納する組み込みの型です。デフォルトでは、JDBC DriverはSQLXMLオブジェクトをデータそのものではなく、XMLデータへの論理ポインタとして格納します。SQLXMLオブジェクトは、それが生成されたトランザクションの期間中に有効です。

PctoResultSetまたはPctoCallableStatementの各クラスのメソッド（getSQLXMLなど）を使用すると、XML値にアクセスできます。

メソッド

PctoSQLXMLクラスのメソッドの一覧を次の表に示します。

表7‒21　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

引数

なし。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

XML値を解放するときにエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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値の文字列表現を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

XML値を処理するときにエラーが発生した場合

状態が読み込み不可能である場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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値を指定します。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

XML値を処理するときにエラーが発生した場合

状態が書き込み不可能である場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.12　PctoBlobクラス（SQL-Participant限定）

説明

Javaプログラミング言語でSQL BLOB値を表現するクラスです。SQLのBLOBは、バイナリ・ラージ・オブジェクトをデータベースの表の行内に列の値として格納する組み込みの型です。

ResultSet、CallableStatement、およびPreparedStatementの各インタフェースのメソッド（getBlob、setBlobなど）を使用すると、SQLのBLOB値にアクセスできます。

メソッド

PctoBlobクラスのメソッドの一覧を次の表に示します。

表7‒22　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データを格納するストリームを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

BLOB値にアクセスするときにエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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に指定された連続するバイト数が格納されている配列を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

BLOB値にアクセスするときにエラーが発生した場合

引数posが1より小さいか、または引数lengthが0より小さい場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　length()

説明

このBlobオブジェクトによって指定されるBLOB値内にあるバイトの数を返します。

形式

public long length() throws java.sql.SQLException

引数

なし。

戻り値

BLOBの長さ（バイト単位）を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

BLOBの長さにアクセスするときにエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.13　PctoClobクラス（SQL-Participant限定）

説明

Javaプログラミング言語でSQL CLOB型を表現するクラスです。SQLのCLOBは、キャラクタ・ラージ・オブジェクトをデータベースの表の行内の列値として格納する組み込みの型です。

ResultSet、CallableStatement、およびPreparedStatementの各インタフェースのメソッド（getClob、setClobなど）を使用すると、SQLのCLOB値にアクセスできます。

メソッド

PctoClobクラスのメソッドの一覧を次の表に示します。

表7‒23　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オブジェクトを返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

CLOB値にアクセスするときにエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

次の場合に例外を送出します。

CLOB値にアクセスするときにエラーが発生した場合

引数posが1より小さいか、または引数lengthが0より小さい場合

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.14　PctoInputStreamクラス（SQL-Participant限定）

説明

バイト入力ストリームを表現するクラスです。

メソッド

PctoInputStreamクラスのメソッドの一覧を次の表に示します。

表7‒24　PctoInputStreamクラスのメソッドの一覧

メソッド

説明

available()

この入力ストリームのメソッドの次の呼び出しによって、ブロックをしないでこの入力ストリームから読み込むことができる（またはスキップできる）データの推定バイト数を返します。

close()

この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。

mark(int readlimit)

この入力ストリームの現在位置にマークを設定します。

markSupported()

この入力ストリームが、markおよびresetメソッドをサポートしているかどうかを判定します。

read()

入力ストリームから最初の1バイトのデータを読み込み、0 - 255の範囲のintでバイト値を返します。

read(byte[] b)

入力ストリームから数バイトのデータを読み込み、それを引数bに指定したバッファ配列に読み込みます。また、実際に読み込んだバイト数を整数で返します。

read(byte[] b, int off, int len)

引数lenに指定したバイト数のデータを、入力ストリームからbyte配列に読み込みます。

reset()

このストリームを、この入力ストリームで最後にmarkメソッドが呼び出されたときの位置に再配置します。

skip(long n)

この入力ストリームから、引数nに指定したバイト数のデータをスキップして破棄します。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　available()

説明

この入力ストリームのメソッドの次の呼び出しによって、ブロックをしないでこの入力ストリームから読み込むことができる（またはスキップできる）データの推定バイト数を返します。次の呼び出しは、同じスレッドのときもあれば、別のスレッドのときもあります。大きなデータを1回で読み込んだり、スキップしたりすることでブロックされることはありませんが、読み込むデータまたはスキップするデータのバイト数が少なくなることはあります。

形式

public int available() throws java.io.IOException

引数

なし。

戻り値

ブロックをしないでこの入力ストリームから読み込むことができる（またはスキップできる）データの推定バイト数を返します。入力ストリームの終わりに達した場合は、0を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

入出力エラーが発生した場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　close()

説明

この入力ストリームを閉じて、ストリームに関連するすべてのシステム・リソースを解放します。

形式

public void close() throws java.io.IOException

引数

なし。

戻り値

なし。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

入出力エラーが発生した場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　mark(int readlimit)

説明

この入力ストリームの現在位置にマークを設定します。これに続いてresetメソッドを呼び出すと、最後にマークされた位置にこのストリームが再配置されます。以降の読み込みでは、同じバイト数のデータが再度読み込まれます。

引数readlimitでは、この入力ストリームに対してマーク位置が無効になる前にこの引数が指定するバイト数を読み込むように指示します。

形式

public void mark(int readlimit)

引数

int readlimit：

マーク位置が無効になる前に読み込み可能なバイト数の上限を指定します。

戻り値

なし。

例外

java.lang.RuntimeException：

次の例外をcauseに設定したjava.lang.RuntimeExceptionを送出します。

PctoIOCommunicationFailureException

Entity-ServiceとParticipant間の通信に失敗した場合

PctoIOInternalContradictionException

Participantの内部で障害が発生した場合

PctoIOTransactionStartException

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合

(4)　markSupported()

説明

この入力ストリームが、markメソッドおよびresetメソッドをサポートしているかどうかを判定します。markメソッドおよびresetがサポートされているかどうかは、入力ストリーム・インスタンスごとに異なります。

形式

public boolean markSupported()

引数

なし。

戻り値

このストリーム・インスタンスがmarkメソッドおよびresetメソッドをサポートしている場合はtrueを、それ以外の場合はfalseを返します。

例外

java.lang.RuntimeException：

次の例外をcauseに設定したjava.lang.RuntimeExceptionを送出します。

PctoIOCommunicationFailureException

Entity-ServiceとParticipant間の通信に失敗した場合

PctoIOInternalContradictionException

Participantの内部で障害が発生した場合

PctoIOTransactionStartException

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合

(5)　read()

説明

入力ストリームから最初の1バイトのデータを読み込み、0 - 255の範囲のintでバイト値を返します。入力ストリームの終わりに達したために読み込むデータがない場合は、-1が返されます。

このメソッドは、入力データが読み込めるようになるか、入力ストリームの終わりが検出されるか、または例外がスローされるまでブロックされます。

形式

public int read() throws java.io.IOException

引数

なし。

戻り値

入力ストリームの最初の1バイトのデータを、0 - 255の範囲のintで返します。ストリームの終わりに達した場合は、-1を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

入出力エラーが発生した場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(6)　read(byte[] b)

説明

入力ストリームから数バイトのデータを読み込み、それを引数bに指定したバッファ配列に読み込みます。また、実際に読み込んだバイト数を整数で返します。

このメソッドは、入力データが読み込めるようになるか、入力ストリームの終わりが検出されるか、または例外がスローされるまでブロックされます。

なお、引数bの値が0の場合、データは読み込まれません。このとき、戻り値には0が返されます。

形式

public int read(byte[] b) throws java.io.IOException

引数

byte[] b：

データの読み込み先のバッファを指定します。

戻り値

バッファに格納されたデータのバイト数の合計値を返します。ストリームの終わりに達してデータがない場合は、-1を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

次の場合に例外を送出します。

ファイルの終わりに達していること以外の理由で最初のバイトを読み込めない場合

入力ストリームが閉じられた場合

そのほかの入出力エラーが発生した場合

java.lang.NullPointerException：

引数bがnullである場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(7)　read(byte[] b, int off, int len)

説明

引数lenに指定したバイト数のデータを、入力ストリームからbyte配列に読み込みます。

なお、引数lenに指定したバイト数は、読み込みをする際の最大バイト数のため、実際に読み込まれるバイト数は引数lenの値より少ないこともあります。戻り値には、実際にバッファに読み込まれたデータのバイト数の合計値を整数で返します。

このメソッドは、入力データが読み込めるようになるか、入力ストリームの終わりが検出されるか、または例外がスローされるまでブロックされます。

なお、引数lenの値が0の場合、データは読み込まれません。このとき、戻り値には0が返されます。入力ストリームの終わりに達したために読み込むデータがない場合は、-1が返されます。

形式

public int read(byte[] b, int off, int len) throws java.io.IOException

引数

byte[] b：

データの読み込み先のバッファを指定します。

int off：

データが書き込まれる配列bの開始オフセットを指定します。

int len：

読み込む最大バイト数を指定します。

戻り値

バッファに読み込まれたデータのバイト数の合計値を返します。ストリームの終わりに達してデータがない場合は、-1を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

次の場合に例外を送出します。

ファイルの終わりに達していること以外の理由で最初のバイトを読み込めない場合

入力ストリームが閉じられた場合

そのほかの入出力エラーが発生した場合

java.lang.NullPointerException：

引数bがnullである場合に送出します。

java.lang.IndexOutOfBoundsException：

次の場合に例外を送出します。

引数offが負の値の場合

引数lenが負の値の場合

引数lenがb.length - offより大きい場合

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(8)　reset()

説明

このストリームを、この入力ストリームで最後にmarkメソッドが呼び出されたときの位置に再配置します。

形式

public void reset() throws java.io.IOException

引数

なし。

戻り値

なし。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

次の場合に例外を送出します。

ストリームにマークが設定されていない場合

マークが無効の場合

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(9)　skip(long n)

説明

この入力ストリームから、引数nに指定したバイト数のデータをスキップして破棄します。

なお、引数nに指定したバイト数のデータをスキップする際に入力ストリームの終わりに達した場合、スキップされるデータは引数nに指定したバイト数よりも少なくなります。戻り値には、実際にスキップされたデータのバイト数が返されます。

形式

public long skip(long n) throws java.io.IOException

引数

long n：

スキップするバイト数を指定します。

戻り値

実際にスキップされたデータのバイト数を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

次の場合に例外を送出します。

ストリームがシークをサポートしない場合

そのほかの入出力エラーが発生した場合

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.15　PctoReaderクラス（SQL-Participant限定）

説明

文字ストリームを読み込むためのクラスです。

メソッド

PctoReaderクラスのメソッドの一覧を次の表に示します。

表7‒25　PctoReaderクラスのメソッドの一覧

メソッド

説明

close()

ストリームを閉じて、それに関連するすべてのシステム・リソースを解放します。

mark(int readAheadLimit)

ストリームの現在位置にマークを設定します。

markSupported()

このストリームがmark()オペレーションをサポートするかどうかを判定します。

read()

単一の文字を読み込みます。

read(char[] cbuf)

配列に文字を読み込みます。

read(char[] cbuf, int off, int len)

配列の一部に文字を読み込みます。

read(CharBuffer target)

指定された文字バッファに文字列を読み込みます。

ready()

このストリームが読み込めるかどうかを判定します。

reset()

ストリームをリセットします。

skip(long n)

文字をスキップします。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client

(1)　close()

説明

ストリームを閉じて、それに関連するすべてのシステム・リソースを解放します。ストリームが閉じられたあとにread()、ready()、mark()、reset()、またはskip()を呼び出すと、IOExceptionがスローされます。すでに閉じられているストリームを閉じても、何の影響もありません。

形式

public void close() throws java.io.IOException

引数

なし。

戻り値

なし。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

入出力エラーが発生した場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(2)　mark(int readAheadLimit)

説明

ストリームの現在位置にマークを設定します。以降のreset()の呼び出しでは、この位置へのストリームの再配置が試みられます。

形式

public void mark(int readAheadLimit) throws java.io.IOException

引数

int readAheadLimit：

マークを保持しながら読み込むことができる文字数の上限を指定します。この数の文字を読み込んだあとにストリームをリセットしようとすると失敗することがあります。

戻り値

なし。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

次の場合に例外を送出します。

ストリームがmark()をサポートしない場合

そのほかの入出力エラーが発生した場合

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(3)　markSupported()

説明

このストリームがmark()オペレーションをサポートするかどうかを判定します。

形式

public boolean markSupported()

引数

なし。

戻り値

このストリームがmark()オペレーションをサポートする場合は、trueを返します。

例外

java.lang.RuntimeException：

次の例外をcauseに設定したjava.lang.RuntimeExceptionを送出します。

PctoIOCommunicationFailureException

Entity-ServiceとParticipant間の通信に失敗した場合

PctoIOInternalContradictionException

Participantの内部で障害が発生した場合

PctoIOTransactionStartException

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合

(4)　read()

説明

単一の文字を読み込みます。このメソッドは、1文字が読み込まれるか、入出力エラーが発生するか、またはストリームの終わりに達するまでブロックされます。

形式

public int read() throws java.io.IOException

引数

なし。

戻り値

読み込まれた文字を0 - 65535（0x00 - 0xffff）の範囲の整数で返します。ストリームの終わりに達した場合は、-1を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

入出力エラーが発生した場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(5)　read(char[] cbuf)

説明

配列に文字を読み込みます。このメソッドは、入力の一部が有効になるか、入出力エラーが発生するか、またはストリームの終わりに達するまでブロックされます。

形式

public int read(char[] cbuf) throws java.io.IOException

引数

char[] cbuf：

転送先バッファを指定します。

戻り値

読み込まれた文字数を返します。ストリームの終わりに達した場合は、-1を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

入出力エラーが発生した場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(6)　read(char[] cbuf, int off, int len)

説明

配列の一部に文字を読み込みます。このメソッドは、入力の一部が有効になるか、入出力エラーが発生するか、またはストリームの終わりに達するまでブロックされます。

形式

public int read(char[] cbuf, int off, int len) throws java.io.IOException

引数

char[] cbuf：

転送先バッファを指定します。

int off：

文字の格納開始オフセットを指定します。

int len：

読み込む文字の最大数を指定します。

戻り値

読み込まれた文字数を返します。ストリームの終わりに達した場合は、-1を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

入出力エラーが発生した場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(7)　read(CharBuffer target)

説明

指定された文字バッファに文字列を読み込みます。バッファは、put操作の結果によって変更される以外は、文字列そのままのリポジトリとして使用されます。バッファのフリッピング（反転）やリワインド（巻き戻し）は行われません。

形式

public int read(CharBuffer target) throws java.io.IOException

引数

CharBuffer target：

文字を読み込むバッファを指定します。

戻り値

バッファに追加された文字の数を返します。文字のソースが最後の位置にある場合は-1を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

入出力エラーが発生した場合に送出します。

java.lang.NullPointerException：

引数targetがnullである場合に送出します。

java.nio.ReadOnlyBufferException：

targetが読み取り専用バッファの場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(8)　ready()

説明

このストリームが読み込めるかどうかを判定します。

形式

public boolean ready() throws java.io.IOException

引数

なし。

戻り値

次のread()が入力をブロックしないことが確実な場合はtrue、そうでない場合はfalseを返します。falseが返されても、次の読み込みが確実にブロックするというわけではありません。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

次の場合に例外を送出します。

入出力エラーが発生した場合

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(9)　reset()

説明

ストリームをリセットします。ストリームにマークが設定されている場合は、マークに再配置しようとします。マークが設定されていない場合は、開始位置への再配置など、個々のストリームに適した方法でリセットを試みます。

形式

public void reset() throws java.io.IOException

引数

なし。

戻り値

なし。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

次の場合に例外を送出します。

ストリームにマークが設定されていない場合

マークの設定が無効な場合

ストリームがreset()をサポートしない場合

ほかの入出力エラーが発生した場合

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

(10)　skip(long n)

説明

文字をスキップします。このメソッドは、文字が読み込まれるか、入出力エラーが発生するか、またはストリームの終わりに達するまでブロックされます。

形式

public long skip(long n) throws java.io.IOException

引数

long n：

スキップする文字数を指定します。

戻り値

実際にスキップした文字数を返します。

例外

PctoIOCommunicationFailureException例外とPctoIOInternalContradictionException例外以外は、Participantが送出した例外を送出します。

java.io.IOException：

入出力エラーが発生した場合に送出します。

java.lang.IllegalArgumentException：

引数nが負の値の場合に送出します。

PctoIOCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoIOInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoIOTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.16　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クラスのメソッドの一覧を次の表に示します。

表7‒26　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

引数

なし。

戻り値

なし。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

Arrayのリソースの解放時にエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

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プログラミング言語の配列を返します。

例外

PctoCommunicationFailureException例外とPctoInternalContradictionException例外以外は、ParticipantでJDBC Driverが送出した例外を送出します。

java.sql.SQLException：

配列へのアクセス中にエラーが発生した場合に送出します。

java.sql.SQLFeatureNotSupportedException：

ParticipantのJDBC Driverがこのメソッドをサポートしない場合に送出します。

PctoCommunicationFailureException：

Entity-ServiceとParticipant間の通信に失敗した場合に送出します。

PctoInternalContradictionException：

Participantの内部で障害が発生した場合に送出します。

PctoTransactionStartException：

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗した場合に送出します。

7.3.17　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

7.3.18　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

7.3.19　PctoCommunicationFailureException例外（SQL-Participant限定）

説明

Entity-Serviceと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.PctoCommunicationFailureException

7.3.20　PctoInternalContradictionException例外（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.PctoInternalContradictionException

7.3.21　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

7.3.22　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

7.3.23　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

7.3.24　PctoIOException例外（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.PctoIOException

7.3.25　PctoIOCommunicationFailureException例外（SQL-Participant限定）

説明

Entity-ServiceとParticipant間の通信に失敗した場合に送出する例外です。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.io.IOException
        jp.co.Hitachi.soft.hmppcto.jdbc.client.exception.PctoIOCommunicationFailureException

7.3.26　PctoIOInternalContradictionException例外（SQL-Participant限定）

説明

Participantの内部で障害が発生した場合に送出する例外です。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.io.IOException
        jp.co.Hitachi.soft.hmppcto.jdbc.client.exception.PctoIOInternalContradictionException

7.3.27　PctoIOTransactionStartException例外（SQL-Participant限定）

説明

Participantのトランザクションブランチを開始できない場合に送出する例外です。

メソッド

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.jdbc.client.exception

継承関係

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.io.IOException
        jp.co.Hitachi.soft.hmppcto.jdbc.client.exception.PctoIOTransactionStartException

7.3.28　SQLState・ErrorCode一覧（SQL-Participant限定）

HMP-PCTOのJDBC Proxy Driverの例外が出力するSQLState・ErrorCodeの一覧を次に示します。

表7‒27　SQLState・ErrorCodeの一覧

項番

SQLState

ErrorCode

例外

意味

1

08100

1013

PctoConnectionLackedException例外

コネクションプールのConnectionインスタンスが不足しました。

2

08101

1016

PctoInternalContradictionException例外

Connectionインスタンスが失われていました。

3

08102

5

PctoInternalContradictionException例外

JDBC Driverのインスタンスが失われていました。

4

08103

1030

PctoInternalContradictionException例外

Connectionインスタンスの取得時にDBで障害が発生しました。

5

0A000

0

PctoSqlFeatureNotSupportedException例外

PctoSQLClientInfoException例外

JDBC Proxy Driverがサポートしていないメソッドを呼び出しました。

6

0A001

7

PctoSqlFeatureNotSupportedException例外

HMP-PCTOがサポートしていないObjectクラスのデータが指定されました。

7

0A002

8

PctoSqlFeatureNotSupportedException例外

HMP-PCTOがサポートしていないJavaデータ型を表すクラスが指定されました。

8

0A003

9

PctoSqlFeatureNotSupportedException例外

HMP-PCTOがサポートしていないJDBC型を示す値がsqlTypeに指定されました。

9

A0000

1

PctoCommunicationFailureException例外

設定ファイルに記載しているURLの形式が不正です。

10

A0001

2

PctoCommunicationFailureException例外

Participantとの通信に失敗しました。

11

A0002

1010

PctoInternalContradictionException例外

または

PctoTransactionStartException例外

SQL-Participantが閉塞しています。

12

A0003

1011

PctoTransactionStartException例外

トランザクションブランチの開始に失敗しました。

13

A0004

1012

PctoPrePreparedException例外

プリペア済みのトランザクションブランチでSQL実行を要求されました。

14

A0005

3

PctoTransactionStartException例外

トランザクションの範囲外で実行されたためトランザクションブランチの開始に失敗しました。

15

A0006

6

PctoIOException例外

ストリームからのデータの読み込みに失敗しました。

16

A0007

1029

PctoInternalContradictionException例外

トランザクション決着監視タイマによるrollback処理後にSQL実行を要求されました。

7.4　TCC-ParticipantのAPI仕様（TCC-Participant限定）

HMP-PCTOのTCC-Participantで使用するAPIの仕様を説明します。

7.4.1　クラス・インタフェースの一覧（TCC-Participant限定）

HMP-PCTOのTCC-Participantがサポートするクラス・インタフェースの一覧を次に示します。

表7‒28　クラス・インタフェースの一覧

項番

パッケージ名

クラス・インタフェース名

説明

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の定義を持つインタフェースです。

7.4.2　アノテーションの一覧（TCC-Participant限定）

HMP-PCTOのTCC-Participantがサポートするアノテーション一覧を次に示します。

表7‒29　アノテーションの一覧

項番

パッケージ名

アノテーション名

説明

1

jp.co.Hitachi.soft.hmppcto.participant.tcc.api

@Tccアノテーション

executeTryメソッドとexecuteTryメソッドの前後処理を紐づけるアノテーションです。

7.4.3　例外の一覧（TCC-Participant限定）

なし。

7.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クラスのメソッドの一覧を次の表に示します。

表7‒30　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()

引数

なし。

戻り値

任意の型のデータオブジェクトです。

例外

なし。

7.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インタフェースのメソッドの一覧を次の表に示します。

表7‒31　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アノテーションに関しては「7.2.7　@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 (Y)Mのメッセージおよびスタックトレースを出力し、トランザクションを終了します。

形式

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 (Y)Mのメッセージおよびスタックトレースを出力し、トランザクションを終了します。

形式

public void executeCancel(TccResponse<O> response)

引数

TccResponse<O> response：

executeTryメソッドで戻り値として受け取ったTccResponseクラスの値を指定します。

戻り値

なし。

例外

なし。

(4)　executeRecover()

説明

TCC-Participantが再起動した際に実行されます。

このメソッドが呼び出された時点で未決着かつ自Participantが登録したTccResponseの一覧を返す処理を実装してください。

詳細な実装方法は「2.2　Javaアプリケーションの開発」のexecuteRecover()メソッドの実装の説明を参照してください。

この処理で送出された例外はHMP-PCTOでキャッチし、KFSG62004-E (Y)Mのメッセージおよびスタックトレースを出力し、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 (Y)Mのメッセージおよびスタックトレースを出力し、Podの起動を終了します。

一方、トランザクション開始時の場合はHMP-PCTOでキャッチし、KFSG62012-E (Y)Mのメッセージおよびスタックトレースを出力し、トランザクションの要求を無視します。

形式

public java.lang.String getOperationId()

引数

なし。

戻り値

TccServiceを一意に識別する文字列を返します。

文字列の長さは1〜256バイトの範囲内である必要があります。

例外

なし。

7.4.6　@Tccアノテーション（TCC-Participant限定）

説明

executeTryメソッドと、executeTryメソッドの前後処理を紐づけるアノテーションです。TccServiceインタフェースに付与することでHMP-PCTOが前後処理を行います。

詳細な実装方法は「2.2　Javaアプリケーションの開発」の@Tccアノテーションの付与を参照してください。

適用可能要素

クラス

属性

なし。

パッケージ名称

jp.co.Hitachi.soft.hmppcto.participant.tcc.api

8　パラメタ

8.1　HMP-PCTOの各コンポーネントおよび連携先製品に設定するパラメタ

HMP-PCTOの各コンポーネントおよび連携先製品に設定するパラメタを説明します。

HMP-PCTOのパラメタは、次のとおりに設定してください。

表8‒1　HMP-PCTOのパラメタ設定方法

コンポーネントの分類

パラメタ設定方法

コンポーネント

参照先

ユーザのコンポーネント

Spring Bootのコンフィグソース（application.properties、application.yml、環境変数など）に設定

共通

8.2.1　共通

Orchestrator

8.2.2　Orchestrator

Entity-Service/Entity-Module

8.2.3　Entity-Service/Entity-Module

SQL-Participant

8.2.4　SQL-Participant

TCC-Participant

8.2.5　TCC-Participant

HMP-PCTOのコンポーネント

Helmチャートのvalues.yamlに設定

Mediator

8.3.1　Mediator

TP1-Bridge

8.3.2　TP1-Bridge（通常版かつTP1-Bridge限定）

EADS（通常版限定）

8.3.3　EADS（通常版限定）

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

8.3.4　Ext-Cons（トライアル版限定）

Filebeat

8.3.5　Filebeat

Jaeger-query

8.3.6　Jaeger-query

HMP-PCTOとRASのコンポーネント

Jaeger-collector

8.3.7　Jaeger-collector

Prometheus

8.3.8　Prometheus

Metricbeat

8.3.9　Metricbeat

Elasticsearch

8.3.10　Elasticsearch

Logstash

8.3.11　Logstash

連携先製品のパラメタは、次のとおりに設定してください。

表8‒2　連携先製品のパラメタ設定方法

連携先製品

パラメタ設定方法

参照先

PostgreSQL（SQL-Participant限定）

PostgreSQLのサーバ側のパラメタに設定

8.4.1　PostgreSQL（SQL-Participant限定）

SQL Server（SQL-Participant限定）

SQL Serverのサーバ側のオプションに設定

8.4.2　SQL Server（SQL-Participant限定）

HiRDB（SQL-Participant限定）

HiRDBの次の定義に設定

サーバ定義

クライアント環境定義

8.4.3　HiRDB（SQL-Participant限定）

OpenTP1（通常版かつTP1-Bridge 限定）

連携先のOpenTP1の次の定義に設定

rapリスナーサービス定義

システム共通定義

トランザクションサービス定義

ユーザサービス定義

8.5　TP1連携時の連携先OpenTP1に設定が必要なパラメタ（通常版かつTP1-Bridge限定）

uCosminexus Application Server（通常版かつTP1-Bridge 限定）

uCosminexus Application Serverの次のファイルに設定

usrconf.propertiesファイル

usrconf.cfgファイル

8.6　uCosminexus Application Serverに設定が必要なTP1-Converterのパラメタ（通常版かつTP1-Bridge限定）

重要

パラメタ設定の注意事項

パラメタの型がString（文字列）の場合に設定できる文字はASCII文字です。マルチバイト文字は設定できません。

8.2　ユーザのコンポーネントに設定するパラメタ

ユーザのコンポーネントに設定するパラメタについて説明します。

8.2.1　共通

Orchestrator、Entity-Service、Mediator、SQL-Participant、TCC-ParticipantおよびTP1-Bridgeで共通のパラメタを説明します。

(1)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表8‒3　共通のjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

tracing.instance-id

Orchestrator/Entity-Service/Participant/TP1-Bridge/Mediatorを一意に識別するためのIDです。この指定値は、分散トレースのサービス名として表示します。

32文字以内の任意の文字列を設定してください。

省略した場合、デフォルト値としてユニークなIDが設定されます。

IDがシステムで一意になるように、Orchestrator/Entity-Service/Participant/TP1-Bridge/Mediatorごとに異なる値を設定してください。

一意ではない場合、分散トレース情報がどのプロセスの情報かの判別ができません。

ただし、レプリカ設定を実施する場合は、このパラメタを省略してください。

設定してしまうと、レプリカ設定を実施している場合に複数台で同じIDとなり、分散トレース情報がどのサービスかを判別できません。

String

32文字

Mediator以外の場合

省略した場合および指定しなかった場合は、次の形式でサービス名が設定されます。

<コンポーネント名> -<12桁のランダムな数字>

Mediatorの場合

省略した場合および指定しなかった場合は、次の形式でサービス名が設定されます。

<ホスト名>@Mediator

tracing.url

HMP-PCTOが分散トレースの送信先に使用するURLです。

Jaeger-collectorのURLを設定してください。

パラメタtracing.trace-useの指定値がtrueの場合は省略不可です。

次の形式で指定してください。

Jaeger-collectorが同一namespaceの場合

http://jaeger-collector:<ポート番号>/api/traces

Jaeger-collectorが異なるnamespaceの場合

http://jaeger-collector.<ネームスペース名>.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

String

−

なし

tracing.trace-use

分散トレースの取得有無を指定します。

true

分散トレースを取得します。

false

分散トレースを取得しません。テスト環境などでJaegerを使用できない場合に指定してください。本番環境では指定しないでください。

Boolean

true|false

true

tracing.queue-size

メモリ上のキューに保持できる分散トレース数を指定します。tracing.trace-useパラメタの指定値がtrueの場合は省略できません。

この設定値を上回る数の分散トレースが発生した場合、その分散トレースは破棄されます。

キューに存在する分散トレースは、次のどちらかの条件を満たすごとに分散トレース基盤に送信されます。

キュー内の分散トレース数がjp.co.Hitachi.soft.hmppcto.tracing.batch-sizeパラメタで設定した値を上回った場合

前回の送信からjp.co.Hitachi.soft.hmppcto.tracing.delay-timeパラメタで設定した値以上の時間が経過した場合

Integer

10000-100000

20000

tracing.delay-time

分散トレースを分散トレース基盤に送信する間隔をミリ秒単位で指定します。tracing.trace-useパラメタの指定値がtrueの場合は省略できません。

前回の送信からこのパラメタに設定した値以上の時間が経過すると、キューに存在する分散トレースが分散トレース基盤に送信されます。

Integer

1000-5000

1000

tracing.batch-size

分散トレースを分散トレース基盤に送信する際に、一度に送信する分散トレース数を指定します。tracing.trace-useパラメタの指定値がtrueの場合は省略できません。

キューに存在する分散トレース数が、このパラメタに設定した値を上回ると、キューに存在する分散トレースが分散トレース基盤に送信されます。

Integer

1000-10000

2000

（凡例）−：該当しません。

8.2.2　Orchestrator

Orchestratorのパラメタを説明します。

(1)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表8‒4　Orchestratorのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

instance-id

Orchestratorを一意に識別するためのIDです。

32文字以内の任意の文字列を設定してください。

同じMediatorに複数のOrchestratorから接続する場合は、Orchestratorごとに異なる値を設定してください。

String

32文字

なし

必ず設定してください。

learner.consensus-type

トランザクションの決着に使用する分散合意のアルゴリズムを設定します。

String

Three-Quarters |

Privileged-Value

なし

必ず設定してください。

mediator.name

MediatorのpodのDNS名中のStatefulSet名を設定してください。

MediatorのpodはStatefulSetのため、DNS名は次の形式です。この中のStatefulSet名を設定します。

<StatefulSet名>-<連番>.<Service名>.<ネームスペース名>.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名中のサービス名以降の文字を指定してください。

MediatorのpodはStatefulSetのため、DNS名は次の形式です。この中のService名以降の文字列を設定します。

<StatefulSet名>-<連番>.<Service名>.<ネームスペース名>.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

1024-65535

20551

mediator.size

トランザクションの合意に参加するMediator数を設定してください。

learner.consensus-typeにThree-Quartersを設定した場合は、5以上の値を設定してください。

Integer

2-16

なし

必ず設定してください。

mediator.minimum-start-size

Orchestratorでトランザクション開始時に、mediator.sizeで設定した数のMediatorの起動を確認できなかった場合に、トランザクションを開始する最小限のMediator数を設定してください。

mediator.sizeで設定した数以下の値を設定してください。mediator.sizeで設定した数より大きい値を設定した場合はOrchestratorの初期化時に異常終了します。

トランザクション開始時のMediatorの起動数がこのパラメタに設定した数未満の場合は、トランザクションの開始に失敗します。

learner.consensus-typeにThree-Quartersを設定した場合は、5以上の値を設定してください。

Integer

2-16

mediator.size設定値

mediator.termination-thread-pool-size

OrchestratorからMediatorへの送信に使用するスレッド数を指定してください。

1トランザクションの終了時にmediator.size指定値分のスレッドを使用して送信します。スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから送信します。

スレッドの空き待ちを回避するための理論上の必要なスレッド数は、サービスの同時実行数×mediator.sizeです。

設計指針とチューニング方法については、「3.10.1　スレッドプール」を参照してください。

Integer

1-1000

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-60000

10000

branch.qualifier.list

APがEntity-Serviceを呼び出す際に、HMP-PCTOがトランザクションブランチを識別するために付与する識別子を設定してください。

次の形式で指定します。

<Entity-Serviceのホスト名>:<Entity-Serviceのポート番号><Entity-Serviceのサービスのエンドポイント>@識別子

識別子は、32文字以内で設定してください。

複数のEntity-Serviceを設定する場合は「,」で区切って設定してください。

設定例：

host1:80/service1@qualifier1,host2:80/service2@qualifier2

String

−

なし

省略した場合、および指定しなかったURLの識別子はHMP-PCTOがUUIDを生成して設定します。

branch.qualifier.propagation-order

HMP-PCTOとHMP-ADIFを連携して使用する場合のTxPropagationIscImperativePluginクラスのISCコマンドプラグイン実行順番を設定します。通常はデフォルト値を使用してください。ほかのISCコマンドプラグインクラスとの実行順番を変更したい場合に設定してください。

Integer

1-2147483647

1

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-2147483647

0

grpc.tls.session.timeout

キャッシュしたSSLセッション情報の保持時間（秒）を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-65535

0

grpc.keepalive. interval

PING要求電文の送信間隔を秒単位で指定します。

0を指定した場合は、PING要求電文を送信しません。1〜9を指定した場合は10秒となります。

ネットワーク機器の無通信監視タイマなどによるTCPコネクション切断回避が目的の場合は、無通信監視タイマ値より小さい値を指定してください。

Integer

0-100000

0

grpc.keepalive.timeout

PING応答電文の応答待ち時間を秒単位で指定します。

PING要求電文の送信後、このタイマの指定値以内にPING応答電文を受信できない場合はTCPコネクションを切断します。

Integer

1-65535

60

grpc.watchtime

Mediatorへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

0を指定した場合は、タイマ監視をせずに無限に応答を待ちます。

Orchestratorからトランザクションに参加したMediatorにcommit/rollbackの要求電文を送信して、すべての通信でこのタイマがタイムアウトした場合、Orchestratorは応答の待ち合わせを終了し、全Mediatorが障害と判断してトランザクションの決着結果は不明としてAPに応答します。そのため、応答電文の待ち時間はトランザクション制御には依存せず、APの業務処理として許容できる待ち時間となります。

Integer

0-65535

100

lb.list-timeout-in-seconds

Kubernetesからのサービス一覧取得の待ち時間を秒単位で指定します。タイマ指定値以内に応答を受信できない場合は、Orchestratorの起動処理を異常終了します。

Integer

1-10800

60

（凡例）−：該当しません。

8.2.3　Entity-Service/Entity-Module

Entity-Service/Entity-Moduleのパラメタについて説明します。

(1)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表8‒5　Entity-Service/Entity-Moduleのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

client.proposer.type

SQL-ParticipantまたはTCC-Participantの使用を設定します。

SQL：SQL-Participantを使用する

TCC：TCC-Participantを使用する

注

TP1-Bridgeを使用する場合も、TP1-Bridgeの内部でEntity-Serviceのライブラリを使用しますが、このパラメタの指定は不要です。指定しても無視されます。

Entity-Serviceのライブラリは、JavaアプリケーションにTP1-Bridgeのライブラリが組み込まれていることで、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のパラメタ」を参照してください。

−

grpc.watchtime

SQL-Participantへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

0を指定した場合は、タイマ監視をしないで無限に応答を待ちます。SQL-Participantの場合だけ設定できます。

Entity-ServiceのJDBC Proxy DriverからParticipantにSQL実行のための要求電文を送信して、このタイマがタイムアウトした場合、Entity-ServiceはSQL-Participantが障害（DBアクセスに時間が掛かることなども含む）と判断してトランザクションブランチをロールバックします。

そのため、応答待ち時間はトランザクション制御には依存しないで、APのサービスとして許容できる待ち時間となります。

Integer

0-65535

60

（凡例）−：該当しません。

(2)　spring.datasourceのパラメタ

各パラメタの接頭辞は、spring.datasourceです。

spring.datasourceのパラメタは、SQL-ParticipantでJDBC Proxy Driverを使用する場合に設定してください。SQL-Participant、JDBC Proxy Driverを使用しない場合は設定不要です。spring.datasourceにJDBC Proxy Driverの設定をすることで、APはJDBC Proxy DriverのDataSourceを参照できます。

表8‒6　Entity-Serviceの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です。

ParticipantのHMP-PCTOがgRPCを受信するURLを設定してください。

ポート番号は、SQL-Participantのパラメタsql.app.portに設定したポート番号を設定してください。

String

username

Spring FrameworkがDBに接続するために使用するユーザ名を設定します。

HMP-PCTOはこの設定値を使用しないため任意の文字列を設定してください。

DBに接続するためのユーザ名はSQL-Participantで設定します。

String

password

Spring FrameworkがDBに接続するために使用するパスワードを設定します。

HMP-PCTOはこの設定値を使用しないため、任意の文字列を設定してください。

DBに接続するためのパスワードはSQL-Participantで設定します。

String

なお、設定範囲とデフォルト値は、Spring Frameworkの仕様に依存します。

(3)　spring.sqlのパラメタ

各パラメタの接頭辞は、spring.sqlです。

spring.sqlのパラメタは、SQL-ParticipantでJDBC Proxy Driverを使用する場合に設定してください。SQL-Participant、JDBC Proxy Driverを使用しない場合は設定不要です。

表8‒7　Entity-Serviceのspring.sqlのパラメタ

パラメタ

説明

型

init.mode

Spring FrameworkがSQLデータベースの初期化を行うかどうかを指定するパラメタです。

HMP-PCTOではSQLデータベースの初期化を行う必要がないため、次の値を設定してください。

never

String

なお、設定範囲とデフォルト値は、Spring Frameworkの仕様に依存します。

8.2.4　SQL-Participant

SQL-Participantのパラメタについて説明します。

(1)　serverのパラメタ

各パラメタの接頭辞は、serverです。

表8‒8　SQL-Participantのserverのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

port

SQL-Participant用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないように設定してください。

Integer

1024-65535

なし。

必ず指定してください。

(2)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表8‒9　SQL-Participantのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

external-consensus.interval-in-millis

Mediatorなどに障害が発生し、補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で指定してください。

このタイマが短ければ、Mediatorなどに障害が発生した場合のトランザクションの遅延を小さくできます。

ただし、このタイマが短過ぎると通信遅延を障害と誤認し、不要な補助合意が発生するため、通信遅延を考慮した値を設定してください。

この設定値に1000ミリ秒以上を指定した場合は1000の単位に切り上げたタイマ値とします。

なお、このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1000ミリ秒以上の場合の誤差は最大1000ミリ秒です。

Integer

100-10000

1000

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.xa-server-name

SQL-Participant起動時に未決着トランザクションがDBに残っているか確認する際に、DBから取得した未決着トランザクションがSQL-Participantが実行したトランザクションか判断するために使用する識別子です。

同じDBに接続するSQL-Participantが複数ある場合ユニークな値を指定してください。

String

32バイト以内の文字列

なし。

必ず指定してください。

sql.pool.allocation-wait-time-in-millis

SQL-ParticipantがDBアクセスのためのコネクションをコネクションプールから取得する際に、コネクションプールに空きが無かった場合の空き待ち時間をミリ秒単位で設定します。

0を指定した場合は、コネクションプールの空き待ちを行いません。

空きがなかった場合、このパラメタに指定した時間だけコネクションの空きを待ちます。空き待ちを行わない、または待ち時間内にコネクションの空きができなかった場合はエラーとなり、JDBC Proxy Driverを使用してコネクションの取得を実行したAPに例外を送出します。

Long

0-65535000

61000

sql.pod.service-name

SQL-Participantを構成するPodを定義したKubernetesのServiceのService名とネームスペース名を「.」でつないだ形式で設定します。

Service名とネームスペース名には、英小文字（a〜z）、数字（0〜9）、およびダッシュ（-）を使用できます。ただし、Service名およびネームスペース名の先頭と終端に使用できるのは英小文字（a〜z）、または数字（0〜9）です。

このパラメタには、Mediatorからホスト名として認識できる値を設定する必要があります。

設定例：

name.namespace

String

3バイト〜41バイトの文字列

なし。

必ず指定してください。

sql.app.port

SQL-ParticipantがEntity-ServiceからgRPC通信を受信するためのポート番号を設定します。

Integer

1024-65535

20553

sql.mediator.port

SQL-ParticipantがMediatorからgRPC通信を受信するためのポート番号を設定します。

Integer

1024-65535

20552

sql.jdbc.driver.path

SQL-ParticipantがDBに接続するために使用するJDBC Driverについて、「2.4.7　SQL-Participantコンテナイメージの作成（SQL-Participant限定）」でコンテナ内に配置したパスを設定します。絶対パスで指定してください。

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

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に指定する接続情報については、「8.4.3　HiRDB（SQL-Participant限定）」を参照してください。

String

−

なし。

必ず指定してください。

sql.datasource.property.delimiter

sql.datasource.property.valuesで複数のプロパティを指定した場合の区切りとなる文字を設定します。

String

「=」以外の1バイトの文字

; (半角セミコロン)

sql.pool.max-pool-size

SQL-ParticipantがコネクションプールにプールするDBコネクションの数を設定します。

SQL-Participant起動時にこのパラメタに指定した数のDBコネクションがプールされます。

データベースの同時接続数以下、かつ同時実行するトランザクション数以上の値を指定してください。

データベースの同時接続数が指定されているパラメタを次に示します。

PostgreSQLの場合

max_connections

SQL Serverの場合

user connections

HiRDBの場合

pd_max_users

SQL-Participant起動時に、SQL-Participantが使用するDBコネクションの数がsql.pool.max-pool-sizeに指定した値を超えた場合、コネクションの確立が失敗して、起動に失敗します。

また、SQL-Participantの起動後に、SQL-Participantが使用するDBコネクションの数がsql.pool.max-pool-sizeに指定した値を超えた場合、コネクションプールの空き待ちになります。

Integer

1-100000

なし。

必ず指定してください。

sql.pool.transaction-timeout-in-sec

DB側のトランザクションタイムアウト時間を秒単位で設定します。

0を指定した場合、DB側のトランザクションタイムアウト時間の設定が有効になります。

このトランザクションタイムアウト時間はjavax.transaction.xa.XAResource.setTransactionTimeout()メソッドを使用して設定を行います。

そのため、使用するJDBC DriverがsetTransactionTimeout()メソッドをサポートしているかご確認ください。サポートしていない場合は、DB側のトランザクションタイムアウト時間設定が有効になります。

定義を省略した場合は0を指定した場合と同様に、DB側のトランザクションタイムアウト時間の設定が有効になります。

Integer

0-65535

トランザクションタイムアウト時間に設定できる範囲は使用するJDBC Driverの仕様をご確認ください。

0

sql.transaction-termination.timeout-in-millis

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で設定します。

DBの排他ロックが解けない状態となることを許容できる時間をタイマ監視し、該当する時間を超えてもトランザクションが決着しなかった場合に、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

APがユーザにレスポンスを返すまでの許容時間、またはトランザクションブランチの処理時間の業務要件に応じた値を指定してください。

なお、複数の業務サービスがある場合は、すべてのサービスの業務要件に応じた値の合計時間で監視時間を設定する必要があります。

業務サービスはOrchestratorから呼び出され、DBなどのリソースの更新を行う複数のサービスであるEntity-Serviceを指します。

このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1000ミリ秒以上の場合の誤差は最大1000ミリ秒です。また、この設定値に1000ミリ秒以上を指定した場合は、1000の単位に切り上げたタイマ値とします。

Long

100-6000000

60000

sql.transaction-termination.consensus.replay-interval-in-millis

トランザクション分散合意インターバルタイマのタイマ監視時間をミリ秒単位で設定します。

このパラメタの値は次の処理のために設定します。この値に設定した時間を超えてもトランザクションが決着しなかった場合、トランザクション決着処理を再実行（リプレイ）し、DBの排他ロック解除のためにトランザクションを決着に向かわせます。

トランザクションをコミットまたはロールバックするためにトランザクション決着処理をする

トランザクション決着監視タイマのタイムアウトによるトランザクション決着処理をする

SQL-Participantダウンからの再起動時にトランザクション決着処理をする

このタイマを短く設定することで、SQL-Participant内で合意が滞ったトランザクションを速やかに決着できますが、障害が長引いた場合にリトライの回数が多くなり、トランザクション決着のための通信に負荷が掛かるため、通信負荷を考慮した値を設定してください。

このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1000ミリ秒以上の場合の誤差は最大1000ミリ秒です。また、この設定値に1000ミリ秒以上を指定した場合は、1000の単位に切り上げたタイマ値とします。

Long

100-6000000

1000

sql.participant-processing.thread-pool-size

Entity-ServiceからのトランザクションブランチのPrepare指示／キャンセル指示の実行に使用するスレッド数、およびMediatorからの投票要求／トランザクション決着結果通知の実行に使用するスレッド数を指定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。

スレッドの空き待ちを防ぐ理論上の必要なスレッド数は、サービスの同時実行数×トランザクションに参加するMediator数です。

ただし、Mediatorからの通知が重ならないかぎりは、理論上の必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1000

12

sql.participant-processing.queue-size

SQL-Participantがトランザクション処理(Entity-ServiceからのSQL実行、Prepare指示／トランザクションのキャンセル指示、投票処理、分散合意処理およびトランザクション完了通知処理)に使用するスレッドの割り当てを待つキューのサイズを指定します。

理論上の必要な設定値は次のとおりです。

｛m＋（p−1）×m×m｝×m×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2147483647

25

mediator-process-management.thread-pool-size

Mediatorへ送信を行うスレッドを管理するスレッド数を指定します。

理論上必要なスレッド数は、トランザクションに参加するMediator数×2×同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-32767

30

mediator-communication.thread-pool-size

ParticipantがMediatorと送受信を行うスレッド数を指定します。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、トランザクションに参加するMediator数×2×同時実行するトランザクション数です。

ただし、送受信が重ならないかぎりは、理論上の必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1000

30

mediator-communication.queue-size

ParticipantがMediatorとの送受信に使用するスレッドの割り当てを待つキューのサイズを指定します。

理論上必要な設定値は次のとおりです。

｛m＋（p−1）×m×m｝×m×2×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2147483647

25

sql.db-type

SQL-Participantが接続するRDBMSを指定します。

String

PostgreSQL | SQLServer | HiRDB

なし。

必ず指定してください。

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.server.server-auth.certificate

自プロセスのサーバ証明書(X.509のPEM形式)ファイルの絶対パス名を指定する。

String

−

なし

暗号化通信をする場合は、必ず指定してください。

grpc.tls.server.server-auth.key

自プロセスのサーバ証明書を作成した秘密鍵ファイル(pkcs8のPEM形式)の絶対パス名を指定する。

String

−

なし

暗号化通信をする場合は、必ず指定してください。

grpc.tls.client.client-auth.certificate

クライアント認証をする場合に、自プロセスのクライアント証明書ファイル(X.509のPEM形式)の絶対パス名を指定する。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.client.client-auth.key

クライアント認証をする場合に、自プロセスのクライアント証明書を作成した秘密鍵ファイル(pkcs8のPEM形式)の絶対パス名を指定する。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.server.client-auth.store

クライアント認証をする場合に、接続元クライアントの秘密鍵が格納されているキーストア（pkcs12またはJKS）ファイルの絶対パス名を指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.server.client-auth.password

クライアント認証をする場合に、grpc.tls.server.clientAuth.storeで指定したキーストアファイルのパスワードを指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.session.cache-size

SSLセッション情報のキャッシュ数を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-2147483647

0

grpc.tls.session.timeout

キャッシュしたSSLセッション情報の保持時間（秒）を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-65535

0

grpc.keepalive. interval

PING要求電文の送信間隔を秒単位で指定します。

0を指定した場合は、PING要求電文を送信しません。1〜9を指定した場合は10秒となります。

ネットワーク機器の無通信監視タイマなどによるTCPコネクション切断回避が目的の場合は、無通信監視タイマ値より小さい値を指定してください。

Integer

0-100000

0

grpc.keepalive.timeout

PING応答電文の応答待ち時間を秒単位で指定します。

PING要求電文の送信後、このタイマの指定値以内にPING応答電文を受信できない場合はTCPコネクションを切断します。

Integer

1-65535

60

grpc.watchtime

Mediatorへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

0を指定した場合は、タイマ監視をしないで無限に応答を待ちます。

ParticipantからMediatorに要求電文を送信すると、Mediatorからはすぐに要求を受け付けた旨の応答電文を送信するため、応答電文の待ち時間はgRPC通信の送受信時間として許容できる待ち時間となります。

Integer

0-65535

5

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のパラメタ」を参照してください。

20551

（凡例）−：該当しません。

8.2.5　TCC-Participant

TCC-Participantのパラメタについて説明します。

(1)　serverのパラメタ

各パラメタの接頭辞は、serverです。

表8‒10　TCC-Participantのserverのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

port

TCC-Participant用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないように設定してください。

Integer

1024-65535

なし。

必ず指定してください。

(2)　jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表8‒11　TCC-Participantのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

tcc.pod.service-name

TCC-Participantを構成するPodを定義したKubernetesのServiceのService名とネームスペース名を「.」でつないだ形式で設定します。

Service名とネームスペース名には、英小文字（a〜z）、数字（0〜9）、およびダッシュ（-）を使用できます。ただし、Service名およびネームスペース名の先頭と終端に使用できるのは英小文字（a〜z）、または数字（0〜9）です。

このパラメタには、Mediatorからホスト名として認識できる値を設定する必要があります。

設定例：

name.namespace

String

3バイト〜41バイトの文字列

なし。

必ず指定してください。

tcc.mediator.port

TCC-ParticipantがMediatorからgRPC通信を受信するためのポート番号を設定します。

Integer

1024-65535

20552

tcc.recover.enabled

TCC-Participant起動時に未決着トランザクションのRecovery機能を実施するかどうかを設定します。trueを設定した時Recovery機能が実行され、falseを設定した時は実行されません。

Boolean

true | false

true

tcc.recover.order

未決着トランザクションのRecovery機能について、Spring FrameworkのApplicationListener機能の「ApplicationReadyEvent」イベントハンドラでの実行優先度のオーダー値を指定します。

APでも「ApplicationReadyEvent」イベントハンドラを使用するケースを考慮し、HMP-PCTOのApplicationReadyEventイベントハンドラ（未決着トランザクションのRecovery機能）と、APのApplicationReadyEventイベントハンドラの実行順序を設定できるようにするためのパラメタです。

Spring Frameworkはオーダー値が小さいイベントハンドラから順に実行します。

もしオーダー値が一致しているイベントハンドラが複数存在した場合の実行順序は不定です。

Integer

-2147483648-2147483647

2147483647

tcc.trn-termination.timeout-in-millis

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で設定します。

障害によってトランザクション決着に至らない状態となることを許容できる時間をタイマ監視し、設定時間を超えてもトランザクションが決着しなかった場合に、ユーザが許容できる時間（業務要件）を超過したと判断しトランザクションを決着に向かわせるタイマです。

トランザクションブランチの処理時間の業務要件に応じた値を指定してください。

なお、複数の業務サービスがある場合は、すべてのサービスの業務要件に応じた値の合計時間で監視時間を設定する必要があります。

このタイマ値が短過ぎるとトランザクションがCancel決着します。

このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1000ミリ秒以上の場合の誤差は最大1000ミリ秒です。 また、この設定値に1000ミリ秒以上を指定した場合は1000の単位に切り上げたタイマ値とします。

Long

100-6000000

60000

tcc.consensus.interval-in-millis

トランザクション分散合意処理をリトライする間隔をミリ秒単位で設定します。

障害などによってトランザクションの分散合意ができないとき、設定した間隔でトランザクションの分散合意が決着するまで分散合意処理をリトライし、分散合意によるトランザクションの決着が必ず行われるようにするためのリトライ間隔です。

また、TCC-Participantが再起動したときに未決着となっているトランザクションがある場合にも分散合意によってトランザクションを決着させます。この場合も設定した間隔によってトランザクションの分散合意が決着するまで分散合意処理をリトライします。

この間隔が短過ぎるとトランザクションの分散合意のリトライが無駄に実施され、トランザクションのレイテンシやシステム負荷に影響が出ます。

このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1000ミリ秒以上の場合の誤差は最大1000ミリ秒です。また、この設定値に1000ミリ秒以上を指定した場合は1000の単位に切り上げたタイマ値とします。

Long

100-6000000

60000

tcc.participant-processing.thread-pool-size

TCC-Participantがトランザクション処理で実行するスレッド数(投票処理、分散合意処理およびトランザクション完了通知処理)を指定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、トランザクションに参加するMediator数×同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1000

12

tcc.participant-processing.queue-size

TCC-Participantがトランザクション処理（投票処理、分散合意処理およびトランザクション完了通知処理）に使用するスレッドの割り当てを待つキューのサイズを指定します。

理論上必要な設定値は次のとおりです。

｛m＋（p−1）×m×m｝×m×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2147483647

25

mediator-process-management.thread-pool-size

SQL-Participantのmediator-process-management.thread-pool-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-32767

30

mediator-communication.thread-pool-size

SQL-Participantのmediator-communication.thread-pool-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-1000

30

mediator-communication.queue-size

SQL-Participantのmediator-communication.queue-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-2147483647

25

external-consensus.interval-in-millis

Mediatorなどに障害が発生し、補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で指定してください。

このタイマが短ければ、Mediatorなどに障害が発生した場合のトランザクションの遅延を小さくできます。

ただし、このタイマが短過ぎると通信遅延を障害と誤認し、不要な補助合意が発生するため、通信遅延を考慮した値を設定してください。

この設定値に1000ミリ秒以上を指定した場合は1000の単位に切り上げたタイマ値とします。

なお、このタイマ値は初回だけ、最大で設定値分の正の誤差を持ちます。ただし、この設定値が1000ミリ秒以上の場合の誤差は最大1000ミリ秒です。

Integer

100-10000

1000

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のパラメタ」を参照してください。

20551

grpc.use-tls

暗号化通信をするかどうかを指定します。

true：暗号化通信をします。

false：暗号化通信をしません。

Boolean

true | false

false

grpc.tls.client.server-auth.certificate

接続先サーバのサーバ証明書を発行したCAの証明書(X.509のPEM形式)ファイルの絶対パス名を指定する。

String

−

なし

暗号化通信をする場合は、必ず指定してください。

grpc.tls.server.server-auth.certificate

自プロセスのサーバ証明書(X.509のPEM形式)ファイルの絶対パス名を指定する。

String

−

なし

暗号化通信をする場合は、必ず指定してください。

grpc.tls.server.server-auth.key

自プロセスのサーバ証明書を作成した秘密鍵ファイル(pkcs8のPEM形式)の絶対パス名を指定する。

String

−

なし

暗号化通信をする場合は、必ず指定してください。

grpc.tls.client.client-auth.certificate

クライアント認証をする場合に、自プロセスのクライアント証明書ファイル(X.509のPEM形式)の絶対パス名を指定する。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.client.client-auth.key

クライアント認証をする場合に、自プロセスのクライアント証明書を作成した秘密鍵ファイル(pkcs8のPEM形式)の絶対パス名を指定する。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.server.client-auth.store

クライアント認証をする場合に、接続元クライアントの秘密鍵が格納されているキーストア（pkcs12またはJKS）ファイルの絶対パス名を指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.server.client-auth.password

クライアント認証をする場合に、grpc.tls.server.clientAuth.storeで指定したキーストアファイルのパスワードを指定します。

String

−

なし

暗号化通信でクライアント認証をする場合は、必ず指定してください。

grpc.tls.session.cache-size

SSLセッション情報のキャッシュ数を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-2147483647

0

grpc.tls.session.timeout

キャッシュしたSSLセッション情報の保持時間（秒）を指定します。

0を指定すると、gRPCのデフォルト値が使用されます。

Integer

0-65535

0

grpc.keepalive. interval

PING要求電文の送信間隔を秒単位で指定します。

0を指定した場合はPING要求電文を送信しません。1〜9を指定した場合は10秒となります。

ネットワーク機器の無通信監視タイマなどによるTCPコネクション切断回避が目的の場合は、無通信監視タイマ値より小さい値を指定してください。

Integer

0-100000

0

grpc.keepalive.timeout

PING応答電文の応答待ち時間を秒単位で指定します。

PING要求電文の送信後、このタイマの指定値以内にPING応答電文を受信できない場合はTCPコネクションを切断します。

Integer

1-65535

60

grpc.watchtime

Mediatorへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

0を指定した場合は、タイマ監視をしないで無限に応答を待ちます。

ParticipantからMediatorに要求電文を送信すると、Mediatorからはすぐに要求を受け付けた旨の応答電文を送信するため、応答電文の待ち時間はgRPC通信の送受信時間として許容できる待ち時間となります。

Integer

0-65535

5

（凡例）−：該当しません。

8.3　HMP-PCTOとRASのコンポーネントに設定するパラメタ

HMP-PCTOのコンポーネントとRASのコンポーネントに設定するパラメタについて説明します。

8.3.1　Mediator

Mediatorのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

次の表に記載されていないパラメタは設定を変更しないでください。

表8‒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.image

「3.4.5　Dependency-Checkerコンテナイメージの作成（通常版限定）」で作成したDependency-Checkerのコンテナイメージを設定してください。

String

−

なし

必ず設定してください。

dependencyCheck.imagePullPolicy

Dependency-CheckerのコンテナイメージをPullする際のポリシー設定をしてください。

String

IfNotPresent|Always|Never

IfNotPresent

dependencyCheck.retryCount

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ回数を設定してください。

Integer

0-1080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.targets

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのターゲットKubernetesオブジェクト群を設定してください。

指定方法の詳細は「6.5.1　デプロイ依存関係チェックスクリプト（dependency_check.sh）」を参照してください。

List<String>

−

- my-namespace/deployments/logstash

- my-namespace/deployments/jaeger-query

- my-namespace/deployments/jaeger-collector

- my-namespace/deployments/prometheus

- 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.connectTimeoutSeconds

Liveness Probeで実行するトランザクションヘルスチェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

livenessProbe.healthCheck.readTimeoutSeconds

Liveness Probeで実行するトランザクションヘルスチェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

postStart.healthCheck.retryCount

postStartフックで実行するトランザクションヘルスチェックスクリプトのリトライ回数を設定してください。

Integer

0-1080

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-1080

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-2147483647

330

participant.sender.threadPoolSize

MediatorからParticipantへの送信に使用するスレッド数を設定してください。

1トランザクションの分散合意時に、トランザクションに参加したParticipant数分のスレッドを使用して送信します。スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから送信します。

スレッドの空き待ちを回避するための理論上の必要なスレッド数は、同時実行トランザクション数×Participant数です。

ただし、トランザクションの分散合意処理が重ならないかぎりは、理論上の必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1000

30

participant.sender.queueSize

MediatorからParticipantへの送信に使用するスレッドの割り当て待ちキューのサイズを指定してください。

理論上の必要な設定値は次のとおりです。

｛m＋（p−1）×m×m｝×p×p×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2147483647

25

mediator.judge.threadPoolSize

Mediatorの分散合意処理に使用するスレッド数を設定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、トランザクションに参加するParticipant数×同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1000

30

mediator.judge.queueSize

Mediatorの分散合意処理に使用するスレッドの割り当て待ちキューのサイズを指定してください。

理論上の必要なスレッド数は次のとおりです。

｛m＋（p−1）×m×m｝×p×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2147483647

25

grpc.server.threadPoolSize

Mediatorが受信に使用するスレッド数を設定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、トランザクションに参加するParticipant数×同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1000

30

grpc.server.queueSize

Mediatorが受信に使用するスレッドの割り当て待ちキューのサイズを指定してください。

理論上の必要なスレッド数は次のとおりです。

［｛m＋（p−1）×m×m｝×p＋1］×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipant数

t：同時実行するトランザクション数

Integer

1-2147483647

25

consensusLog.size

ConsensusLogファイルに保持するConsensusLogの数を設定してください。

TPS(1秒当たりのトランザクション処理件数)×8以上を設定してください。

この設定値を超えるConsensusLogの保持が発生した場合、該当するMediatorは分散合意に参加しません。

なお、この設定値に1024（1つのConsensusLogのサイズ）を乗算し、1,048,576（ボリュームの書き込み容量不足にならないための予備サイズ（1MB））を加算したサイズを、MediatorのPodに割り当てるConsensusLogの永続ボリュームクレームのサイズに使用します。

Long

256-100000

256

consensusLog.io.threadPoolSize

ConsensusLogファイルへの書き込みに使用するスレッド数を設定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、同時実行するトランザクション数です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常はデフォルト値を使用してください。

Integer

1-1000

12

consensusLog.io.queueSize

ConsensusLogファイルへの書き込みに使用するスレッドの割り当てを待つキューのサイズを指定してください。

理論上必要な設定値は、同時実行するトランザクション数です。

ただし、トランザクションの分散合意処理が重ならないかぎりは、理論上必要な設定値は必要ありません。通常はデフォルト値を使用してください。

Integer

1-2147483647

25

consensusLog.io.watchInSeconds

ConsensusLogファイルへの書き込みおよび読み出し時のIO監視時間を秒で設定してください。

0を指定した場合、IO監視を行いません。

この設定値を短く設定すると、IOハングアップした場合に早期に検知できます。ただし、ハードウェアやドライバが障害検知するよりも短い時間を設定するとハードウェアやドライバによる障害理由が失われるおそれがあります。

IO監視時間を超過した場合は障害メッセージを出力します。

Integer

0-3600

240

consensusLog.io.blockSize

ConsensusLogファイルのブロックサイズをバイトで設定してください。

1024の倍数を設定してください。

ブロックサイズは1回のファイルIOのサイズです。

ConsensusLogファイルの永続ボリュームをNFSストレージとする場合は、1024を指定してください。

ブロックサイズの単位でNFSサーバと通信します。ブロックサイズを小さくすると、1回のファイルIOのサイズが小さくなるため、NFSサーバとの通信量が減り、性能が向上します。

Integer

1024-16384

4096

consensusLog.storageClassName

「3.6.2　MediatorのConsensusLogの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するMediatorのPodに割り当てるConsensusLogの永続ボリュームのストレージクラス名を設定してください。

String

−

なし

必ず設定してください。

http.port

Mediatorのhttpポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

なお、この設定値はトランザクションヘルスチェックスクリプトおよび未決着トランザクション待機スクリプトのコマンド引数のhttpポート番号にも使用します。

Integer

1024-65535

20554

grpc.port

MediatorのgRPCを受信するポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

Integer

1024-65535

20551

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.tls.session.cacheSize

SSLセッション情報のキャッシュ数を指定します。

0を指定するとgRPCのデフォルト値が使用されます。

Integer

0-2147483647

0

grpc.tls.session.timeout

キャッシュしたSSLセッション情報の保持時間（秒）を指定します。

0を指定するとgRPCのデフォルト値が使用されます。

Integer

0-65535

0

grpc.keepalive.interval

PING要求電文の送信間隔を秒単位で指定します。

0を指定した場合はPING要求電文を送信しません。1〜9を指定した場合は10秒となります。

ネットワーク機器の無通信監視タイマなどによるTCPコネクション切断回避が目的の場合は、無通信監視タイマ値より小さい値を指定してください。

Integer

0-100000

0

grpc.keepalive.timeout

PING応答電文の応答待ち時間を秒単位で指定します。

PING要求電文の送信後、このタイマの指定値以内にPING応答電文を受信できない場合はTCPコネクションを切断します。

Integer

1-65535

60

grpc.watchtime

Participantへの要求電文に対する応答電文の待ち時間を秒単位で指定します。

0を指定した場合は、タイマ監視をせずに無限に応答を待ちます。

MediatorからParticipantに要求電文を送信すると、Participantからはすぐに要求を受け付けた旨の応答電文を送信するため、応答電文の待ち時間はgRPC通信の送受信時間として許容できる待ち時間となります。

Integer

0-65535

5

mediator.judge.proposalLogLimitNum

Mediatorが管理するProposal Logが、Participantからトランザクション完了通知を受信できないで、滞留してしまった場合にProposal Logとして許容できる数（Proposal Logが保存を許容できるグローバルトランザクション数）を指定します。

滞留したProposal Logがこのパラメタの件数を超えた場合、トランザクションの完了を確認するためMediatorからParticipantへトランザクション完了確認通知を送信します。

このパラメタの件数が小さ過ぎる場合、トランザクション完了通知の送信頻度が多くなり、通信量が増加します。

このパラメタの件数が大き過ぎる場合、トランザクション完了通知の送信頻度が少なくなり、メモリを圧迫します。

Proposal Logに使用するメモリ量は、グローバルトランザクションに含まれるParticipantの構成によって可変となります。

Proposal Log 1件当たりのメモリ使用量は次のとおりです。

1400＋(800×トランザクションに参加したParticipant数)

Integer

1-17000

512

tracing.instanceId

共通のtracing.instance-idと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.url

共通のtracing.urlと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.traceUse

共通のtracing.trace-useと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.queueSize

共通のtracing.queue-sizeと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.delayTime

共通のtracing.delay-timeと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.batchSize

共通のtracing.batch-sizeと同じです。

「(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 with Java for Spring Bootを有効にするかどうかを設定します。

true：有効にします（通常版の場合）

false：無効にします（トライアル版の場合）

Boolean

true|false

true

ucars.snapshots.claimName

「3.6.10　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime with Java for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称(.metadata.nameフィールドに指定した値)を設定してください。

String

−

なし

ucars.enabledにtrueを設定した場合は、必ず設定してください。

（凡例）

−：該当しません。

注※

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

8.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チャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

表8‒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

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-1080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.targets

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのターゲットKubernetesオブジェクト群を設定してください。

設定方法の詳細は、「6.5.1　デプロイ依存関係チェックスクリプト（dependency_check.sh）」を参照してください。

List<String>

−

- my-namespace/statefulsets/mediator

- my-namespace/statefulsets/eads-server

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以上※¹

180

livenessProbe.periodSeconds

Liveness Probeの実行間隔秒数を設定してください。

Integer

1以上※¹

30

livenessProbe.failureThreshold

Liveness Probeの最大失敗回数を設定してください。

Integer

1以上※¹

3

livenessProbe.timeoutSeconds

Liveness Probeのタイムアウト秒数を設定してください。

Integer

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-1080

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-1080

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-2147483647

330

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※2

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-65535

8008

converter.connectTime

TP1-Converterが動作するuCosminexus Application ServerのNIO HTTPサーバとのコネクション確立待ち時間を秒単位で設定してください。

Integer

1-60

10

converter.watchTime

TP1-Converterが動作するuCosminexus Application ServerのNIO HTTPサーバからの応答待ちタイムアウト時間を秒単位で設定してください。

0を設定した場合は、タイムアウトしないで無限に応答を待ちます。

Integer

0-65535

10

tp1.cltj.dchost

呼び出し先のOpenTP1のホスト名を設定してください。

String

−

なし

必ず設定してください。

tp1.cltj.dcrapport

呼び出し先のOpenTP1のrapリスナーのポート番号を設定してください。

Integer

5001-65535

なし

必ず設定してください。

tp1.cltj.dcwatchtim

呼び出し先のOpenTP1に対しての要求を開始してから応答を受信するまでの待ち時間の最大値を秒単位で設定してください。

0を設定した場合は、OpenTP1からの応答の受信を無限に待ちます。

Integer

0-65535

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-65535

0

tp1.cltj.dcuaptrace

UAPトレースを取得するかどうかを設定してください。

Y：UAPトレースを取得します。

N：UAPトレースを取得しません。

String

Y|N

N

tp1.cltj.dcuaptracesize

UAPトレースファイルのサイズをバイト単位で設定してください。

Integer

4096-1048576

4096

tp1.cltj.dcdatatrace

データトレースを取得するかどうかを設定してください。

Y：データトレースを取得します。

N：データトレースを取得しません。

String

Y|N

N

tp1.cltj.dcdatatracesize

データトレースファイルのサイズをバイト単位で設定してください。

Integer

4096-1048576

4096

tp1.cltj.dcdatatracemaxsize

データトレース1件のデータ長の最大値をバイト単位で設定してください。

Integer

16-1048576

128

tp1.cltj.dcerrtrace

エラートレースを取得するかどうかを設定してください。

Y：エラートレースを取得します。

N：エラートレースを取得しません。

String

Y|N

N

tp1.cltj.dcerrtracesize

エラートレースファイルのサイズをバイト単位で設定してください。

Integer

4096-1048576

4096

tp1.cltj.dcmethodtrace

メソッドトレースを取得するかどうかを設定してください。

Y：メソッドトレースを取得します。

N：メソッドトレースを取得しません。

String

Y|N

N

tp1.cltj.dcmethodtracesize

メソッドトレースファイルのサイズをバイト単位で設定してください。

Integer

4096-1048576

4096

tp1.cltj.dccltrpcmaxmsgsize

RPCで受け渡しできる電文の最大長をメガバイト単位で設定してください。

Integer

1-8

1

tp1.cltj.dccltsendbuffsize

コネクションごとに確保されるTCP/IP送信バッファのサイズをバイト単位で設定してください。

省略した場合は、JavaVMの送信バッファサイズが適用されます。

Integer

8192-2147483647

省略した場合は、JavaVMの送信バッファサイズを適用します。

tp1.cltj.dccltrecvbuffsize

コネクションごとに確保されるTCP/IP受信バッファのサイズをバイト単位で設定してください。

省略した場合は、JavaVMの受信バッファサイズが適用されます。

Integer

8192-2147483647

省略した場合は、JavaVMの受信バッファサイズを適用します。

externalConsensus.intervalInMillis

Mediatorなどに障害が発生し、補助合意によってトランザクションの分散合意を行う場合の、補助合意を試行する間隔をミリ秒単位で設定してください。

この間隔が短ければ、Mediatorなどに障害が発生した場合のトランザクションの遅延を小さくできます。ただし、この間隔を短くし過ぎると、通信遅延を障害と誤認し不要な補助合意が発生します。そのため、通信遅延を考慮した値を設定してください。

この設定値に1000ミリ秒以上を設定した場合は1000の単位に切り上げた値とします。

なお、この値は初回だけ、最大でこの設定値分の正の誤差を持ちます。ただし、この設定値が1000ミリ秒以上の場合の誤差は、最大1000ミリ秒です。

Integer

100-10000

1000

externalConsensus.eads.cache

補助合意に使用するEADSクラスタに対して、eztool createcacheコマンドで作成したキャッシュ名を設定してください。

String

32バイト以内の半角英数字（0-9，A-Z，およびa-z）

hmppctoCache

tp1.xaServerName

TP1-Bridge起動時に未決着トランザクションがOpenTP1に残っているか確認する際、OpenTP1から取得した未決着トランザクションがTP1-Bridge自身の実行したトランザクションか判断するために使用する識別子です。

同じOpenTP1に接続するTP1-Bridgeが複数ある場合、ユニークな値を設定してください。

String

32バイト以内の文字列

なし

必ず設定してください。

tp1.pool.allocationWaitTimeInMillis

TP1-BridgeがOpenTP1にアクセスするためのコネクションをコネクションプールから取得する際に、コネクションプールに空きがなかった場合の空き待ち時間をミリ秒単位で設定します。

0を設定した場合は、コネクションプールの空き待ちをしません。

コネクションプールの空きがなかった場合、このパラメタに設定した時間だけ、コネクションプールの空き待ちをします。空き待ちをしない場合、または空き待ち時間内にコネクションプールの空きができなかった場合はエラーとなり、TP1-Bridgeは、呼び出し元にhttpステータス502を応答します。

Long

0-65535000

61000

tp1.pod.serviceName

TP1-Bridgeを構成するPodを定義したKubernetesのServiceのService名とネームスペース名を「.」でつないだ形式で設定します。

Service名とネームスペース名には、英小文字（a〜z）、数字（0〜9）、およびダッシュ（-）を使用できます。ただし、Service名およびネームスペース名の先頭と終端に使用できるのは英小文字（a〜z）、または数字（0〜9）です。

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

リリース名がtp1-bridge1の場合のService名の設定例：

tp1-bridge1

このパラメタには、Mediatorからホスト名として認識できる値を設定する必要があります。

設定例：

name.namespace

String

3バイト〜41バイトの文字列

なし

必ず設定してください。

tp1.mediator.port

TP1-BridgeがMediatorからgRPC通信を受信するためのポート番号を設定します。

Integer

1024-65535

20552

tp1.pool.maxPoolSize

TP1-BridgeがコネクションプールにプールするOpenTP1とのコネクションの数を設定します。

TP1-Bridge起動時にこのパラメタに設定した数のコネクションがプールされます。

TP1-Bridgeが使用するコネクションの数がこのパラメタに設定した値を超えた場合、コネクションプールの空き待ちになります。

OpenTP1のrapリスナーの同時接続する最大クライアント数以下、およびrapサーバ数以下で、かつ同時実行するトランザクション数以上の値を設定してください。

Integer

1-1024

なし

必ず設定してください。

tp1.transactionTermination.timeoutInMillis

トランザクション決着監視タイマのタイマ監視時間をミリ秒単位で設定します。

OpenTP1のSPPによるリソースの排他ロックが解除できない状態となることを許容できる時間をタイマ監視します。このパラメタの値に設定した時間を超えてもトランザクションが決着しなかった場合、OpenTP1のSPPによるリソースの排他ロック解除のためにトランザクションを決着に向かわせます。

APがユーザにレスポンスを返すまでの許容時間、またはトランザクションブランチの処理時間の業務要件に応じた値を設定してください。

なお、同一トランザクションのすべてのサービスの業務要件に応じた値の合計時間で監視時間を設定する必要があります。

このタイマ値は初回だけ、最大でこの設定値分の正の誤差を持ちます。ただし、この設定値が1000ミリ秒以上の場合の誤差は、最大1000ミリ秒です。また、この設定値に1000ミリ秒以上を設定した場合は、1000の単位に切り上げたタイマ値とします。

Long

100-6000000

60000

tp1.transactionTermination.consensus.replayIntervalInMillis

トランザクション分散合意リプレイインターバルタイマのタイマ監視時間をミリ秒単位で設定します。

このパラメタの値は次の処理のために設定します。この値に設定した時間を超えてもトランザクションが決着しなかった場合、トランザクション決着処理を再実行（リプレイ）し、OpenTP1のSPPによるリソースの排他ロック解除のためにトランザクションを決着に向かわせます。

トランザクションをコミットまたはロールバックするためにトランザクション決着処理をする

トランザクション決着監視タイマのタイムアウトによるトランザクション決着処理をする

TP1-Bridgeダウンからの再起動時にトランザクション決着処理をする

このタイマを短く設定することで、TP1-Bridge内で合意が滞ったトランザクションを速やかに決着できます。ただし、障害が長引いた場合にリトライの回数が多くなり、トランザクション決着のための通信に負荷が掛かります。そのため、通信負荷を考慮した値を設定してください。

このタイマ値は初回だけ、最大でこの設定値分の正の誤差を持ちます。ただし、この設定値が1000ミリ秒以上の場合の誤差は、最大1000ミリ秒です。また、この設定値に1000ミリ秒以上を設定した場合は1000の単位に切り上げたタイマ値とします。

Long

100-6000000

1000

tp1.participantProcessing.threadPoolSize

TP1-Bridgeがトランザクション処理（投票処理、分散合意処理、およびトランザクション完了通知処理）で使用するスレッド数を設定してください。

スレッドが不足した場合は、キューイングしてスレッドが空くのを待ってから処理を実行します。

スレッドの空き待ちを発生しないようにするための理論上必要なスレッド数は、「トランザクションに参加するMediator数×同時実行するトランザクション数」です。

ただし、処理の実行が重ならないかぎりは、理論上必要なスレッド数は必要ありません。通常は、デフォルト値を使用してください。

Integer

1-1000

12

tp1.participantProcessing.queueSize

TP1-Bridgeがトランザクション処理（投票処理、分散合意処理、およびトランザクション完了通知処理）に使用するスレッドの割り当て待ちをするキューのサイズを設定します。

理論上必要な設定値は、次のとおりです。

｛m＋（p−1）×m×m｝×m×t

m：トランザクションに参加するMediator数

p：トランザクションに参加するParticipantおよびTP1-Bridgeの数

t：同時実行するトランザクション数

Integer

1-2147483647

25

mediatorProcessManagement.threadPoolSize

SQL-Participantのmediator-process-management.thread-pool-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-32767

30

mediatorCommunication.threadPoolSize

SQL-Participantのmediator-communication.thread-pool-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-1000

30

mediatorCommunication.queueSize

SQL-Participantのmediator-communication.queue-sizeと同じです。

「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

Integer

1-2147483647

25

http.port

TP1-Bridgeのhttpポート番号を設定してください。

動的ポートなどのほかのポートと重ならない値を設定してください。

なお、この設定値は、トランザクションヘルスチェックスクリプトおよび未決着トランザクション待機スクリプトのコマンド引数のhttpポート番号、APからのOpenTP1のサービス呼び出し要求の受信にも使用します。

Integer

1024-65535

20554

grpc.port

TP1-BridgeのgRPCを受信するポート番号を設定してください。

tp1.mediator.portと同じ値を設定してください。なお、動的ポートなどのほかのポートと重ならない値を設定してください。

Integer

1024-65535

20552

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-2147483647

0

grpc.tls.session.timeout

キャッシュしたSSLセッション情報の保持時間を、秒単位で設定してください。

0を設定するとgRPCのデフォルト値が使用されます。

Integer

0-65535

0

grpc.keepalive.interval

PING要求電文の送信間隔を、秒単位で設定してください。

0を設定した場合は、PING要求電文を送信しません。また、1〜9を設定した場合は、10秒となります。

なお、ネットワーク機器の無通信監視タイマなどによる、TCPコネクションの切断回避が目的の場合は、無通信監視タイマ値より小さい値を設定してください。

Integer

0-100000

0

grpc.keepalive.timeout

PING応答電文の応答待ち時間を、秒単位で設定してください。

PING要求電文の送信後、このタイマの設定値の時間以内にPING応答電文を受信できなかった場合は、TCPコネクションが切断されます。

Integer

1-65535

60

grpc.watchtime

Mediatorへの要求電文に対する応答電文の待ち時間を、秒単位で設定してください。

0を設定した場合は、タイマ監視をしないで無限に応答を待ちます。

ParticipantからMediatorに要求電文を送信すると、Mediatorは、すぐに要求を受け付けた旨の応答電文を送信します。そのため、応答電文の待ち時間はgRPC通信の送受信時間として許容できる待ち時間となります。

Integer

0-65535

5

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のパラメタ」を参照してください。

20551

tracing.instanceId

共通のtracing.instance-idと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.url

共通のtracing.urlと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.traceUse

共通のtracing.trace-useと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.queueSize

共通のtracing.queue-sizeと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.delayTime

共通のtracing.delay-timeと同じです。

「(1)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

tracing.batchSize

共通のtracing.batch-sizeと同じです。

「(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.6.10　uCosminexus Application Runtime with Java for Spring Bootスナップショットログの永続ボリュームおよび永続ボリューム要求のKubernetesマニフェストの作成（通常版限定）」で作成するuCosminexus Application Runtime with Java for Spring BootスナップショットログのPersistentVolumeClaimリソースの名称（.metadata.nameフィールドに指定した値）を設定してください。

String

−

必ず設定してください。

eads.client.properties

EADSクライアントのプロパティを設定します。パラメタには、EADSクライアントのパラメタを設定してください。※3

詳細については、「(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

（凡例）

−：該当しません。

注※1

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数、および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

注※2

Helmの仕様によって、7桁以上のInteger、Long型の入力は指数形式（例：「1e+06」）に自動で変換されるため、String型の仕様とします。設定する際は設定値をダブルクォーテーションで囲んでください。

注※3

次に示すように「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

8.3.3　EADS（通常版限定）

EADSをHMP-PCTOで動作させる際に、指定するパラメタを説明します。

EADSのパラメタの設定方法は、次の2とおりに分けられます。

EADSサーバ

EADSサーバチャート用values.yamlファイルを編集します。

EADSクライアント

ParticipantのKubernetesマニフェストを編集します。

なお、EADSのデフォルト値のままとする設定は記載されていません。

プロパティの仕様や指定方法については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照してください。

マニュアル「Elastic Application Data Store ユーザーズガイド」に記載されている見積もり式で使用するパラメタのうち、EADSパラメタに依存しないパラメタは次のとおりです。

表8‒14　EADSパラメタに依存しないパラメタ

パラメタ

値

説明

キャッシュ数

1

ディスクキャッシュを1個だけ使用します。

さらにそのキャッシュではデータ自動削除機能（FIFOモード）を有効にします。

詳細は「(f)　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サーバへのデータの更新操作のスループット（件/秒）×3600（秒/時）

コンパクションの実施間隔（単位：秒）

600

左記の値(600)はデフォルト値です。

コンパクションの実施間隔を変更したい場合は「(18)　EADSのセットアップ（通常版限定）」で、eztool compactionコマンドを定期的に実行する際のeads-command-cronjob-chart.tgzで指定するscheduleフィールドの値を変更してください。

マニュアル「Elastic Application Data Store ユーザーズガイド」の見積もり式の「コンパクションの実施間隔（単位：時）」には、この値を3600（秒/時）で割った値を設定してください。

注※1

例えばMAX(A, B)であった場合、AとBのどちらか大きい方の値を返します。

注※2

安全係数は2以上を推奨します。

注※3

余裕値係数の見積もり方法の詳細は、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照してください。

(1)　EADSサーバのパラメタ

設定が必要なEADSサーバのプロパティファイルのパラメタ値について説明します。

(a)　EADSサーバチャート用values.yamlファイル

EADSサーバ用のパラメタ指定値は、EADSサーバチャート用values.yamlファイルで設定します。values.yamlのサンプルを次に示します。

values.yamlファイルでの設定は、EADSサーバのデプロイ時にプロパティファイルに展開されます。

EADSサーバチャートで使用するvalues.yamlの例

release:
  service: "eads-service"
  server: "eads-server"
namespace: " my-namespace"
serverImage:
  repository: "eads-server-image"
  tag: ""
  imageOverride: ""
  pullSecrets: []
  pullPolicy: "IfNotPresent"
commandImage:
  repository: "eads-command-image"
  tag: ""
  imageOverride: ""
  pullSecrets: []
  pullPolicy: "IfNotPresent"
cluster:
  servers: 3
  replicationFactor: 2
caches:
- name: "hmppctoCache"
  type: "Disk"
  pvc:
    capacity: "258Mi"
    storageClassName: ""
  properties:
  - eads.cache.disk.filenum=8
  - eads.cache.disk.filesize=16
  - eads.cache.eviction.policy=FIFO
  - eads.cache.eviction.keyCount=1024
service:
  server: 24600
  operation: 24620
  heartbeat: 24630
  failureDetector: 24631
  transfer: 24632
  replication: 24633
logs:
  capacity: "1Gi"
  storageClassName: ""
store:
  capacity: "500Mi"
  storageClassName: ""
resources:
  limits:
    cpu: "2"
  requests:
    memory: "1664Mi"
properties:
  server:
  - eads.server.maxConnections=60
  - eads.server.cache.maxExecuteThreads=60
  - eads.java.nio.maxCachedBufferSize=8192
  - eads.logger.message.console.enable=true
  - eads.server.connection.keepAlive.timeout=70
  - eads.failureDetector.heartbeat.timeout=10000
  - eads.failureDetector.connection.timeout=2500
  - eads.failureDetector.read.timeout=2500
  command: []
  shared:
  - eads.java.heapsize=768
  - eads.java.external.heapsize=7
  - eads.replication.external.heapsize=6
  - eads.cache.key.maxsize=164
  - eads.cache.keyCount=1025
  cluster: []
  functions:
    eads: []
volumes: []
index: 0
args: "status"
schedule: "*/10 * * * *"

(b)　eads_server.properties（サーバ定義ファイル）

eads_server.propertiesのパラメタについて説明します。

values.yamlの.properties.server.〜で設定します。

表8‒15　eads_server.propertiesのパラメタ

パラメタ

説明

eads.server.maxConnections

補助合意の時にEADSサーバに同時にアクセスする最大同時接続数を指定してください。EADSサーバに対してこの値を超過する接続があった場合、その接続は拒否されます。

推奨値は、トランザクションに参加するParticipant数×eads.client.connectionPool.poolsize×2（安全係数※）となります。

eads.server.cache.maxExecuteThreads

eads.server.maxConnectionsに指定した値をこのプロパティにも指定してください。

eads.java.nio.maxCachedBufferSize

8192を指定してください。

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

ハートビートのタイムアウト時間をミリ秒単位で指定します。

10000を指定してください。ただし、実行環境に影響を受けるため、通信遅延が原因でタイムアウトが頻繁に発生する場合は、長めの値に調整してください。

このパラメタの指定値を変更すると、次のパラメタに影響します。

eads.failureDetector.connection.timeout

eads.failureDetector.read.timeout

eads.failureDetector.connection.timeout

生存確認の接続タイムアウト時間をミリ秒単位で指定します。

2500を指定してください。なお、ハートビートのタイムアウト時間（eads.failureDetector.heartbeat.timeout）を変更した場合は、指定値を見直してください。

このパラメタの指定値は、ハートビートのタイムアウト時間の1/4を目安としてください。

eads.failureDetector.read.timeout

生存確認の受信タイムアウト時間をミリ秒で指定します。

2500を指定してください。なお、ハートビートのタイムアウト時間（eads.failureDetector.heartbeat.timeout）を変更した場合は、指定値を見直してください。

このパラメタの指定値は、ハートビートのタイムアウト時間の1/4を目安としてください。

注※

Participantが再起動すると、一時的にEADSサーバに同時にアクセスする接続数が倍になる場合があります。そのための安全係数です。

Participant再起動から、eads.server.connection.keepAlive.time経過後にコネクションが切断されます。eads.server.connection.keepAlive.time間に2回以上Participant再起動を考慮する場合は、安全係数をParticipant再起動回数+1としてください。

(c)　eads_command.properties（コマンド定義ファイル）

このファイルでは、設定が必要なEADSサーバのプロパティファイルのパラメタ値はありません。

(d)　eads_shared.properties（共通設定ファイル）

eads_shared.propertiesのパラメタについて説明します。

values.yamlの.properties.shared.〜で設定します。

表8‒16　eads_shared.propertiesのパラメタ

パラメタ

説明

eads.replication.factor

（values.yamlの「.properties.cluster.replicationFactor」です）

EADSの多重度を指定してください。

多重度はEADSサーバの障害許容台数+1の値となります。

最低は2です。

2の場合、EADSサーバが1台故障しても、補助合意の継続が保証されます。

eads.replication.external.heapsize

見積もり方法の詳細については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表8‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

eads.java.heapsize

見積もり方法の詳細については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表8‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

eads.java.external.heapsize

見積もり方法の詳細については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表8‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

eads.cache.key.maxsize

「表8‒14　EADSパラメタに依存しないパラメタ」の「EADS サーバに格納される key の最大サイズ」を指定してください。

eads.cache.keyCount

見積もり方法の詳細については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表8‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

(e)　eads_cluster.properties（クラスタ定義ファイル）

eads_cluster.propertiesのパラメタについて説明します。

values.yamlの.cluster.〜で設定します。

表8‒17　eads_cluster.propertiesのパラメタ

パラメタ

説明

eads.node.＜EADSサーバID＞.address

（values.yamlの.cluster.serversです）

EADSサーバの台数を指定してください。

最低は3台です。

台数を増やすと1台当たりのメモリ・ディスク容量を減らすことができます。

(f)　eads_cache.＜キャッシュ名＞.properties（キャッシュ定義ファイル）

eads_cache.＜キャッシュ名＞.propertiesのパラメタについて説明します。

values.yamlの.caches.properties〜で設定します。

表8‒18　eads_cache.＜キャッシュ名＞.propertiesのパラメタ

パラメタ

説明

eads.cache.type

（values.yamlの.caches.type〜です）

EADSのキャッシュタイプを指定します。

Diskを指定してください。

eads.cache.eviction.policy

EADSに格納された補助合意結果の、自動削除ポリシーを指定します。

FIFO（古いデータから自動削除）を指定してください。

eads.cache.eviction.keyCount

自動削除でデータを削除するための閾値として使用する1レンジ当たりのデータ件数を指定します。

「表8‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタの「1レンジ当たりのデータ件数」を指定してください。

eads.cache.disk.filesize

キャッシュデータファイルのファイルサイズ(MB)を指定します。

見積もり方法の詳細は、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表8‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

eads.cache.disk.filenum

キャッシュデータファイルのファイル数を指定します。

見積もり方法の詳細は、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照ください。

「表8‒14　EADSパラメタに依存しないパラメタ」に記載したパラメタで見積もった値を指定してください。

(g)　eads_function.properties（ファンクション定義ファイル）

このファイルでは、設定が必要なEADSサーバのプロパティファイルのパラメタ値はありません。

(h)　注意事項

必要なリソース（メモリ使用量やディスク使用量など）については、マニュアル「Elastic Application Data Store ユーザーズガイド」を参照して、見積もってください。

(2)　EADSクライアントのパラメタ

(a)　EADSクライアント定義ファイル

EADSクライアント定義ファイルおよびパラメタの詳細についてはマニュアル「Elastic Application Data Store ユーザーズガイド」を参照してください。

ここでは、HMP-PCTOで使用する場合に指定が必要なパラメタについて説明します。次の表で示すパラメタ以外は、デフォルトとしてください。

EADSクライアント定義は、ユーザ責務で作成します。

EADSクライアント定義は、ParticipantのKubernetesマニフェストでEADSクライアント定義ファイルに設定するように定義します。「2.6.4　SQL-ParticipantのKubernetesマニフェストの作成（SQL-Participant限定）」、または「2.6.5　TCC-ParticipantのKubernetesマニフェストの作成（TCC-Participant限定）」を参照してください。

表8‒19　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

8.3.4　Ext-Cons（トライアル版限定）

Ext-Consのパラメタを説明します。トライアル版HMP-PCTOを使用する場合に設定します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

表8‒20　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-1080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.targets

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのターゲットKubernetesオブジェクト群を設定してください。

指定方法の詳細は「6.5.1　デプロイ依存関係チェックスクリプト（dependency_check.sh）」を参照してください。

List<String>

−

- my-namespace/deployments/logstash

- my-namespace/deployments/jaeger-query

- my-namespace/deployments/jaeger-collector

- my-namespace/deployments/prometheus

- my-namespace/deployments/metricbeat

- my-namespace/daemonsets/filebeat

http.port

Ext-Consのhttpポート番号を設定してください。

動的ポートなどほかのポートと重ならないよう設定してください。

Integer

1024-65535

20556

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

（凡例）−：該当しません。

8.3.5　Filebeat

Filebeatのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表8‒21　FilebeatのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

FilebeatのNamespace名を設定してください。

String

−

my-namespace

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※3

−※1、※3

1000m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

2Gi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

1000m

必ず設定してください。

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-2147483647

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-1080

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型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

8.3.6　Jaeger-query

Jaeger-queryのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表8‒22　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-2147483647

30

http.port

JaegerのWeb UIアクセス用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

Integer

1024-65535

なし

必ず指定してください。

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-1080

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型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

8.3.7　Jaeger-collector

Jaeger-collectorのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表8‒23　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

1000m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

500Mi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

1000m

必ず設定してください。

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-2147483647

30

collector.queueSize

Jaeger-collectorの内部キューのサイズを設定してください。

設定した値は次のパラメタとして有効になります。

Jaeger-collectorの--collector.queue-sizeパラメタ

String※3

−※2、※3

10000

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-1080

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型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

8.3.8　Prometheus

Prometheusのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表8‒24　PrometheusのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

PrometheusのNamespace名を設定してください。

String

−

my-namespace

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※3

−※1、※3

500m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

500Mi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

500m

必ず設定してください。

limits.memory

コンテナで上限のメモリを設定してください。

String※3

−※1、※3

500Mi

必ず設定してください。

image

Prometheusのコンテナイメージを設定してください。

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-2147483647

300

http.port

PrometheusのWeb UIアクセス用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないよう設定してください。

Integer

1024-65535

なし。

必ず指定してください。

scrapeNamespace.orchestrator

OrchestratorのpodのNamespace名を設定してください。

複数のNamespace名を指定する場合は、正規表現（RE2構文）を使用して設定してください。

String

−

なし。

必ず指定してください。

scrapeNamespace.sqlparticipant

SQL-ParticipantのpodのNamespace名を設定してください。

複数のNamespace名を指定する場合は、正規表現（RE2構文）を使用して設定してください。

SQL-Participantが存在しない場合は、値の設定は不要です。

String

−

なし。

scrapeNamespace.tccparticipant

TCC-ParticipantのpodのNamespace名を設定してください。

複数のNamespace名を指定する場合は、正規表現（RE2構文）を使用して設定してください。

TCC-Participantが存在しない場合は、値の設定は不要です。

String

−

なし。

scrapeNamespace.tp1bridge

TP1-BridgeのpodのNamespace名を設定してください。

複数のNamespace名を指定する場合は、正規表現（RE2構文）を使用して設定してください。

TP1-Bridgeが存在しない場合は、値の設定は不要です。

String

−

なし。

scrapeNamespace.entity

Entity-serviceのpodのNamespace名を設定してください。

複数のNamespace名を指定する場合は、正規表現（RE2構文）を使用して設定してください。

String

−

なし。

必ず指定してください。

scrapeNamespace.mediator

MediatorのpodのNamespace名を設定してください。

複数のNamespace名を指定する場合は、正規表現（RE2構文）を使用して設定してください。

String

−

なし。

必ず指定してください。

scrapeNamespace. jaegercollector

Jaeger-collectorのpodのNamespace名を設定してください。

複数のNamespace名を指定する場合は、正規表現（RE2構文）を使用して設定してください。

String

−

なし。

必ず指定してください。

scrapePort.orchestrator

Orchestratorのpodのhttpポート番号を設定してください。

単一のポート番号を指定する場合は、Integer型で設定してください。

複数のポート番号を指定する場合は、正規表現（RE2構文）を使用してString型で設定してください。

Integer/String

−

なし。

必ず指定してください。

scrapePort.sqlparticipant

SQL-Participantのpodのhttpポート番号を設定してください。

単一のポート番号を指定する場合は、Integer型で設定してください。

複数のポート番号を指定する場合は、正規表現（RE2構文）を使用してString型で設定してください。

SQL-Participantが存在しない場合は、値の設定は不要です。

Integer/String

−

なし。

scrapePort.tccparticipant

TCC-Participantのpodのhttpポート番号を設定してください。

単一のポート番号を指定する場合は、Integer型で設定してください。

複数のポート番号を指定する場合は、正規表現（RE2構文）を使用してString型で設定してください。

TCC-Participantが存在しない場合は、値の設定は不要です。

Integer/String

−

なし。

scrapePort.tp1bridge

TP1-Bridgeのpodのhttpポート番号を設定してください。

単一のポート番号を指定する場合は、Integer型で設定してください。

複数のポート番号を指定する場合は、正規表現（RE2構文）を使用してString型で設定してください。

TP1-Bridgeが存在しない場合は、値の設定は不要です。

Integer/String

−

なし。

scrapePort.entity

Entity-serviceのpodのhttpポート番号を設定してください。

単一のポート番号を指定する場合は、Integer型で設定してください。

複数のポート番号を指定する場合は、正規表現（RE2構文）を使用してString型で設定してください。

Integer/String

−

なし。

必ず指定してください。

scrapePort.mediator

Mediatorのpodのhttpポート番号を設定してください。

単一のポート番号を指定する場合は、Integer型で設定してください。

複数のポート番号を指定する場合は、正規表現（RE2構文）を使用してString型で設定してください。

Integer/String

−

なし。

必ず指定してください。

prometheus.scrape.interval

Prometheusがメトリクスの取得対象から情報を取得する間隔を設定してください。

設定した値は次のパラメタとして有効になります。

Prometheusのglobal.scrape_interval

String

−※2

15s

prometheus.storage.retentionTime

Prometheus内部で収集したメトリクスを保持する期間を設定してください。

設定した値は次のパラメタとして有効になります。

Prometheusの--storage.tsdb.retention.time

String

−※2

7d

prometheus.remoteWrite.queue.capacity

PrometheusからMetricbeatに対する送信処理を行うためにPrometheus内部で作成されるキューのサイズを設定してください。

設定した値は次のパラメタとして有効になります。

Prometheusのremote_write.queue_coinfig.capacity

String※3

−※2、※3

10000

prometheus.remoteWrite.queue.maxShards

Metricbeatに送信するデータの最大サイズを設定してください。

この値は、送信が遅延した場合などに有効となる最大サイズを指定します。

設定した値は次のパラメタとして有効になります。

Prometheusのremote_write.queue_coinfig.max_shards

String※3

−※2、※3

50

prometheus.remoteWrite.queue.maxSamplesPerSend

Metricbeatに対して一度にまとめて送信するデータのサイズを設定してください。

設定した値は次のパラメタとして有効になります。

Prometheusのremote_write.queue_coinfig.max_samples_per_send

String※3

−※2、※3

2000

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-1080

30

dependencyCheck.retryIntervalSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトのリトライ間隔秒数を設定してください。

Integer

0-360

10

dependencyCheck.connectTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの接続タイムアウト秒数を設定してください。

Integer

1-360

10

dependencyCheck.readTimeoutSeconds

初期化コンテナで実行するデプロイ依存関係チェックスクリプトの応答タイムアウト秒数を設定してください。

Integer

1-360

10

（凡例）

−：該当しません。

注※1

コンテナオーケストレーションに設定する値であるため、最大値、最大文字数および許容される文字パターンはコンテナオーケストレーションに依存します。詳細はKubernetesドキュメントを参照してください。

注※2

Prometheusへの設定値であるため、最大値、最大文字数および許容される文字パターンは、Prometheusに依存します。詳細はPrometheusドキュメントを参照してください。

注※3

Helmの仕様によって、7桁以上のInteger、Long型の入力は指数形式（例：「1e+06」）に自動で変換されるため、String型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

8.3.9　Metricbeat

Metricbeatのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表8‒25　MetricbeatのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

MetricbeatのNamespace名を設定してください。

String

−

my-namespace

replicas

起動するMetricbeatの数を設定してください。

Integer

1以上

1

必ず設定してください。

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※3

−※1、※3

1000m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

2Gi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

1000m

必ず設定してください。

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-2147483647

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-1080

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型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

8.3.10　Elasticsearch

Elasticsearchのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表8‒26　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-2147483647

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

1024-65535

なし。

必ず指定してください。

data.storageClassName

「3.6.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するElasticsearchのPodに割り当てるリポジトリディレクトリの永続ボリュームのストレージクラス名を設定してください。

クラスタ構成で構築する場合、マスターノード用values.yamlの場合はマスターノード用のストレージクラス名、データノード用values.yamlの場合はデータノード用のストレージクラスを設定してください。

String

−

なし。

必ず指定してください。

data.storageSize

「3.6.3　Elasticsearchデータディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するElasticsearchのPodに割り当てるデータディレクトリの永続ボリュームのサイズを設定してください。

String

−

なし。

必ず指定してください。

repo.storageClassName

「3.6.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するElasticsearchのPodに割り当てるリポジトリディレクトリの永続ボリュームのストレージクラス名を設定してください。

String

−

なし。

必ず指定してください。

repo.storageSize

「3.6.4　Elasticsearchリポジトリディレクトリの永続ボリュームおよびストレージクラスのKubernetesマニフェストの作成」で作成するElasticsearchのPodに割り当てるリポジトリディレクトリの永続ボリュームのサイズを設定してください。

String

−

なし。

必ず指定してください。

sysctlVmMaxMapCount

Elasticsearchコンテナのカーネルパラメタvm.max_map_countの値です。ElasticsearchのPodがダウンする場合、この値を262144より大きくしてください。

Integer

−

262144

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※2

−※1、※2

2000m

必ず指定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※2

−※1、※2

4Gi

必ず指定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※2

−※1、※2

2000m

必ず指定してください。

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型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

8.3.11　Logstash

Logstashのパラメタを説明します。

(1)　Helmチャートのパラメタ

Helmチャートの各パラメタの値は設定範囲に従って設定してください。

パラメタの値に、Integer型、Long型で7桁以上の数値を指定すると、Helmの仕様によって、指数表示に変換されます。このため、7桁以上の値を指定する場合は、ダブルクォーテーションで囲んでください。

次の表に記載されていないパラメタは設定を変更しないでください。

表8‒27　LogstashのHelmチャートのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

namespace

LogstashのNamespace名を設定してください。

String

−

my-namespace

replicas

起動するLogstashの数を設定してください。

Integer

1以上

1

必ず設定してください。

requests.cpu

コンテナが最低限要求するCPUコア数を設定してください。

String※3

−※1、※3

1000m

必ず設定してください。

requests.memory

コンテナが最低限要求するメモリを設定してください。

String※3

−※1、※3

3Gi

必ず設定してください。

limits.cpu

コンテナで上限のCPUコア数を設定してください。

String※3

−※1、※3

1000m

必ず設定してください。

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-2147483647

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-1080

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型の仕様とします。設定する際は指定値をダブルクォーテーションで囲んでください。

8.4　各RDBMSの使用に必要なパラメタ（SQL-Participant限定）

次に示すRDBMSを使用する際に必要なパラメタについて説明します。

PostgreSQL

SQL Server

HiRDB

8.4.1　PostgreSQL（SQL-Participant限定）

PostgreSQLを使用する際に必要なパラメタは、HMP-PCTOのパラメタではなく、PostgreSQLのサーバ側のパラメタです。HMP-PCTOを意識して設定してください。各パラメタのデフォルト値などを含めた詳細については、PostgreSQLのマニュアルを参照してください。

表8‒28　PostgreSQLのパラメタ

パラメタ

説明

max_connections

PostgreSQLサーバに同時接続する最大数を設定します。sql.pool.max-pool-sizeに指定した値より大きい値を指定してください。

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のパラメタより大きい値を指定してください。

8.4.2　SQL Server（SQL-Participant限定）

SQL Serverを使用する際に必要なパラメタは、HMP-PCTOのパラメタではなく、SQL Serverのサーバ側のオプションです。HMP-PCTOを意識して設定してください。各オプションのデフォルト値などを含めた詳細については、SQL Serverのマニュアルを参照してください。

また、HMP-PCTOはXAインタフェースを使用してSQL Serverに接続します。そのため、SQL Server側でXA分散トランザクションコンポーネントを有効化して、必要なロールを設定してください。

表8‒29　SQL Serverのオプション

オプション

説明

user connections

SQL Serverに同時接続する最大数を設定します。sql.pool.max-pool-sizeに指定した値より大きい値を指定してください。

sql.pool.max-pool-sizeについては、「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

8.4.3　HiRDB（SQL-Participant限定）

HiRDBを使用する際に必要なパラメタは、HMP-PCTOのパラメタではなく、HiRDBのサーバ側のサーバ定義のオペランドです。HMP-PCTOを意識して設定してください。

表8‒30　HiRDBのサーバ定義のオペランド

オペランド

説明

pd_max_users

HiRDBに同時接続する最大数を設定します。sql.pool.max-pool-sizeに指定した値より大きい値を指定してください。

sql.pool.max-pool-sizeについては、「(2)　jp.co.Hitachi.soft.hmppctoのパラメタ」を参照してください。

また、HiRDBサーバと接続するために、HiRDBのクライアント環境定義ファイル（HiRDB.ini）を作成する必要があります。HiRDBサーバに接続し、データベースを更新するために必要な定義を次に示します。

表8‒31　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 システム定義」を参照してください。

8.5　TP1連携時の連携先OpenTP1に設定が必要なパラメタ（通常版かつTP1-Bridge限定）

TP1連携機能を使用する際に必要なパラメタは、HMP-PCTOのパラメタではなく、連携先のOpenTP1の次の定義のオペランドです。HMP-PCTOを意識して設定してください。

rapリスナーサービス定義

システム共通定義

トランザクションサービス定義

ユーザサービス定義

各定義のオペランドのデフォルト値などを含めた詳細については、マニュアル「OpenTP1 システム定義」を参照してください。

8.5.1　rapリスナーサービス定義（通常版かつTP1-Bridge限定）

連携先のOpenTP1のrapリスナーサービス定義に設定が必要なオペランドを次に示します。

表8‒32　連携先の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を指定してください。

8.5.2　システム共通定義（通常版かつTP1-Bridge限定）

連携先のOpenTP1のシステム共通定義に設定が必要なオペランドを次に示します。

表8‒33　連携先のOpenTP1のシステム共通定義のオペランド

オペランド

説明

rpc_max_message_size

RPCコールで送受信できるメッセージ（ユーザ電文）の最大長を設定します。

TP1-Bridgeのtp1.cltj.dccltrpcmaxmsgsizeの設定値と同じ値を指定してください。

このパラメタの設定値を変更する場合は、TP1-Bridgeのserver.tomcat.maxSwallowSizeの設定値が、APがTP1-Bridgeに送信するリクエストボディの最大サイズ以上の値となっているか見直してください。

8.5.3　トランザクションサービス定義（通常版かつTP1-Bridge限定）

連携先のOpenTP1のトランザクションサービス定義に設定が必要なオペランドを次に示します。

表8‒34　連携先のOpenTP1のトランザクションサービス定義のオペランド

オペランド

説明

trn_xar_use

XAリソースサービスを使用するかどうかを設定します。

XAリソースサービスを使用するため、Yを指定してください。

8.5.4　HMP-PCTOのトランザクションに参加するSPPのユーザサービス定義（通常版かつTP1-Bridge限定）

連携先のOpenTP1のHMP-PCTOのトランザクションに参加するSPPのユーザサービス定義に設定が必要なオペランドを次に示します。

表8‒35　連携先のOpenTP1のユーザサービス定義のオペランド

オペランド

説明

atomic_update

サービスグループのプロセスでトランザクションを発生させるかどうかを設定します。

トランザクションの範囲に入れるため、Yを指定してください。

8.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/」です。

8.6.1　usrconf.properties（通常版かつTP1-Bridge限定）

(1)　jp.co.Hitachi.soft.hmppctoのパラメタ

パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表8‒36　usrconf.propertiesのjp.co.Hitachi.soft.hmppctoのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

tp1.data-conversion.definition-file.dir

データ変換で使用する定義ファイルを格納するディレクトリの絶対パス名を設定してください。

String

−

なし

必ず設定してください。

(2)　webserver.connectorのパラメタ

表8‒37　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（デフォルト値）を設定してください。

webserver.connector.nio_http.keep_alive.max_requests

TCPコネクションを持続したままの連続接続回数の上限を設定します。

TP1-BridgeとTP1-Converterの接続は持続しないため、1を設定してください。

(3)　ejbserver.applicationのパラメタ

表8‒38　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」を設定してください。

8.6.2　usrconf.cfg（通常版かつTP1-Bridge限定）

(1)　addのパラメタ

表8‒39　usrconf.cfgのaddのパラメタ

パラメタ

説明

型

設定範囲

デフォルト値

add.class.path

uCosminexus Application Serverのデータ変換APIのライブラリの絶対パス名を設定します。

「/opt/Cosminexus/CSC/lib/cscdt_api.jar」を設定してください。

uCosminexus Application Serverの仕様に依存します。

9　メッセージ

9.1　メッセージの概要

9.1.1　メッセージの記述形式

メッセージログの記述形式を記載します。

KFSGN₁N₂N₃N₄N₅-X (Y)

メッセージテキスト

メッセージの説明や要因コードなど、個別出力項目の説明を示します。

(Ｓ)システムの動作を示します。

(Ｏ)オペレータの処置を示します。

〔対策〕

システム管理者の処置を示します。

メッセージ中の、オペレータの処置、または対策で「保守員に連絡してください。」とは、購入時の契約に基づいて、システム管理者が当社問い合わせ窓口へ連絡することを示します。

メッセージIDの各項目についての説明を記載します。

KFSG：メッセージプレフィックス

N₁N₂N₃N₄N₅：コード

X：インジケータ

メッセージのレベルを表します。インジケータの表記と、対応するログレベル、内容を次の表に示します。

表9‒1　インジケータの表記と対応する内容

表記

ログレベル

内容

E

ERROR

稼働に支障のあるメッセージです。

参考例

環境設定、パラメタ誤りによって稼働できない

稼働に支障のある障害発生

W

WARN

継続稼働しますが、注意が必要なメッセージです。

参考例

環境設定、パラメタ誤りのうち継続稼働可能なケースの警告

メモリの使用状況などの警告

ロールバックの通知

I

INFO

稼働状況変化（正常動作）を示すメッセージです。

参考例

起動、終了

Y：出力先

メッセージログの出力先を示します。複数の出力先に出力する場合は、複数記載します。

表9‒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

9.1.2　メッセージ系統

メッセージIDはコードごとに系統が分かれています。メッセージの系統を次の表に示します。

表9‒3　メッセージ系統

メッセージコード

メッセージの系統

00001〜09999

不使用

10000〜19999

不使用

20000〜29999

不使用

30000〜39999

不使用

40000〜49999

不使用

50000〜59999

不使用

60000〜69999

エラーメッセージ全般、警告メッセージも含む

70000〜79999

トラブルシュート機能のメッセージ

80000〜89999

正常に動作しているときのメッセージ

90000〜99999

コマンド実行時のメッセージ

9.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"となります。

9.2　メッセージ一覧

9.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の起動を中止します。それ以外の場合、トランザクションブランチ処理を中断し、Participantはサービス閉塞します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

リソースマネージャのデータの整合性を確認してデータ修復後、Participantのサービス閉塞を解除するため再起動してください。解決しない場合は、保守員に連絡してください。

KFSG60001-E (Y)M

The gRPC server failed to start. (parameter name = aa....aa)

gRPCサーバの起動に失敗しました。

aa....aa：エラーが発生したポート番号のパラメタ名

jp.co.Hitachi.soft.hmppcto.sql.app.port

jp.co.Hitachi.soft.hmppcto.sql.mediator.port

jp.co.Hitachi.soft.hmppcto.tcc.mediator.port

jp.co.Hitachi.soft.hmppcto.tp1.mediator.port

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の場合はトランザクションブランチをロールバックします。それ以外の場合はトランザクションブランチ処理を続行します。

コミットまたはロールバック処理でこのメッセージが出力された場合、コミットまたはロールバックのリトライを開始します。リトライ中は同じメッセージの出力を60秒間抑止します。コミットまたはロールバックが成功すると、KFSG80007-IまたはKFSG80008-Iメッセージを出力します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

エラーコードが-7の場合はリソースマネージャが起動しているか確認し、起動していなければ起動してください。ネットワーク障害が発生している場合は原因を特定し対策してください。パラメタjp.co.Hitachi.soft.hmppcto.sql.db-typeにPostgreSQLを指定している場合はPostgreSQLのパラメタmax_prepared_transactionsの値を確認してください。

エラーが発生したリソースマネージャへのアクセス処理の種別が005、リソースマネージャが返却したエラーコードがXA_RB*（100〜107）の場合は、リソースマネージャで例外が発生しましたが、ロールバック処理を続行するため対策は不要です。

上記以外の場合は保守員に連絡してください。

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に指定したプロパティ名を見直してください。そのあと、SQL-Participantを再起動してください。

〔対策〕

なし。

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-sec）

(Ｓ)SQL-Participantの起動処理を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

出力した値がデータベースで有効かどうかを確認し値を見直してください。有効である場合は、直後に出力されるスタックトレースを参考に、データベースで異常が発生していないか確認してください。データベースの異常を取り除いたあと、SQL-Participantを再起動してください。解決しない場合は、保守員に連絡してください。

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に指定した値を見直してください。そのあと、再起動してください。

〔対策〕

なし。

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を使用する場合：jp.co.Hitachi.soft.hmppcto.sql.xa-server-nameの値

TP1-Bridgeを使用する場合：tp1.xaServerNameの値

(Ｓ)アプリケーションからの要求を無視して処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージの直前に出力されたKFSG60014-Eを参照して原因を取り除き、再起動してください。解決しない場合は保守員に連絡してください。

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)

トランザクションブランチを開始できません。

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)

トランザクションブランチは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

(Ｓ)アプリケーションからの要求を無視して処理を続行します。

(Ｏ)次のパラメタの値を見直し、必要であれば再起動してください。

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を使用する場合：jp.co.Hitachi.soft.hmppcto.sql.xa-server-nameの値

TP1-Bridgeを使用する場合：tp1.xaServerNameの値

(Ｓ)Participantは新規にトランザクションブランチを開始しません。仕掛中のトランザクションブランチはロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

これより前に出力されたKFSG60000-EおよびKFSG60011-Eメッセージについて対策してください。そのあと、Participantを再起動してください。解決しない場合は、保守員に連絡してください。

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.10.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)

トランザクションブランチは開始していません。

aa....aa：ブランチXID

(Ｓ)次のどれかの状態のため、アプリケーションからの該当するトランザクションブランチに対する要求に対してエラー応答して、処理を続行します。

Participantの再起動によってトランザクションブランチの情報が破棄された状態

先行プリペア機能によるプリペア処理で、リソースマネージャとの接続障害などのエラーが発生し、リソースマネージャとのコネクションが使用できない状態

トランザクションのキャンセル指示、トランザクション決着監視タイマのタイムアウト、またはトランザクション分散合意リプレイインターバルタイマのタイムアウトによるロールバック処理で、リソースマネージャとの接続障害などのエラーが発生し、リソースマネージャとのコネクションが使用できない状態

トランザクションのキャンセル指示、トランザクション決着監視タイマのタイムアウト、またはトランザクション分散合意リプレイインターバルタイマのタイムアウトによるロールバック処理で、ロールバックが成功し、リソースマネージャとのコネクションの使用を終了した状態

(Ｏ)必要ありません。

〔対策〕

新しいトランザクションブランチとして、アプリケーションからのSQLを再実行してください。

KFSG60019-E (Y)M

An invalid state was detected in a transaction branch. (branchxid = aa....aa)

トランザクションブランチで不正な状態を検知しました。

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)

トランザクションブランチで不正な状態を検知しました。

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)

トランザクションブランチの決着を行えませんでした。

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.

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を実行せずトランザクションブランチをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

メッセージ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

〔対策〕

なし。

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の初期化が失敗します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

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を復旧させたい場合は、Orchestrator、Entity-Service、Participant、Mediatorを停止し、ConsensusLogファイルを削除し、Orchestrator、Entity-Service、Participant、Mediatorを再起動してください。

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を復旧させたい場合は、Orchestrator、Entity-Service、Participant、Mediatorを停止し、ConsensusLogファイルを削除し、Orchestrator、Entity-Service、Participant、Mediatorを再起動してください。

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.trn-termination.timeout-in-millisパラメタ)

bb....bb：ブランチXID

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

ログや分散トレースを参照し、タイムアウトの原因となっている問題点があるかどうか確認し、確認結果に従い対応してください。

トランザクション決着監視タイマのタイマ監視時間のパラメタの値が十分な値になっていないおそれがあります。「3.10.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を復旧させたい場合は、Orchestrator、Entity-Service、Participant、Mediatorを停止し、ConsensusLogファイルを削除し、Orchestrator、Entity-Service、Participant、Mediatorを再起動してください。

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

Retrieval of transactional branch information failed.

トランザクションブランチ情報の取得に失敗しました。

(Ｓ)トランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

アプリケーション側でトランザクション境界の設定、トランザクションの伝搬、トランザクションブランチの属性の設定が正しく実装できているかどうかを確認および修正してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

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.trn-termination.timeout-in-millisの値

TP1-Bridgeを使用する場合：tp1.transactionTermination.timeoutInMillisの値

bb....bb：ブランチXID

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

ログや分散トレースを参照し、タイムアウトの原因となっている問題点があるかどうか確認し、確認結果に従い対応してください。

トランザクション決着監視タイマのタイマ監視時間のパラメタの値が十分な値になっていないおそれがあります。「3.10.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.10.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>

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>

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を再起動してください。

・保守員に連絡してください。

エラーが発生しているスクリプトが「デプロイ依存関係チェックスクリプト」の場合：

・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 (Y)DもしくはKFSG82103-Iのメッセージが出力されている場合は、リトライによって処理が成功しているため、対策は不要です。

直後にKFSG62107-E (Y)DもしくはKFSG62108-Eのメッセージが出力されている場合は、リトライオーバーしているため、KFSG62107-E (Y)D、またはKFSG62108-Eの対策を参照してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG62106-W (Y)D

The service still has active transactions. (number of the active transactions = aa....aa)

サービスにまだ未決着トランザクションが存在します。

aa....aa：未決着トランザクション件数

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

直後にKFSG82101-I (Y)DもしくはKFSG82103-Iのメッセージが出力されている場合は、リトライによって処理が成功しているため、対策は不要です。

直後にKFSG62107-E (Y)DもしくはKFSG62108-Eのメッセージが出力されている場合は、リトライオーバーしているため、KFSG62107-E (Y)Dもしくは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を再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

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を再起動してくだい。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

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の起動を中止します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

該当するコンテナで「6.4　各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を再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

KFSG63000-E (Y)J+M

The method is not supported by the JDBC proxy driver.

JDBC Proxy Driverがサポートしていないメソッドです。

(Ｓ)要求を無視します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

サポート対象のメソッドを使用するようアプリケーションを修正してください。

KFSG63001-E (Y)J+M

The format of the URL specified in the configuration file is incorrect. (information 1 = aa....aa)

設定ファイルに記載しているURLの形式が不正です。

aa....aa：設定ファイルに記載しているURL

(Ｓ)要求を無視します。

(Ｏ)管理者に連絡してください。

〔対策〕

Spring Bootの設定ファイル（application.properties、application.ymlなど）に設定している次の項目の設定値を修正してください。

spring.datasource.url

KFSG63002-E (Y)J+M

Failed to communicate with the participant. (branchxid = aa....aa, requet-type = bb....bb, host = cc....cc, port = dd....dd)

Participantとの通信に失敗しました。

aa....aa：ブランチXID

bb....bb：通信に失敗した契機（Participantへの要求）を示します。

SQL：SQLの実行要求

Prepare：先行Prepare機能使用時のPrepare要求

cc....cc：Participantのホスト名

dd....dd：Participantのポート番号

(Ｓ)aa....aaがSQLの場合、トランザクションをロールバックします。Prepareの場合は、トランザクションの決着には影響しないで続行します。

(Ｏ)Entity-ServiceのSpring Bootの設定ファイル（application.properties、application.ymlなど）の次の項目に、ParticipantがgRPCを受信するURLが正しく設定されているか確認してください。正しくない場合は修正してください。

spring.datasource.url

正しく設定されている場合にこのメッセージが出力される場合はParticipantが起動しているか確認してください。起動していない場合は、システム管理者に連絡してください。

〔対策〕

Participantを起動してください。Participantが障害によって停止している場合は原因を調査してから起動してください。

KFSG63003-E (Y)J+M

The JDBC proxy driver was run outside the scope of a transaction.

JDBC Proxy Driverがトランザクションの範囲外で実行されました。

(Ｓ)要求を無視します。

(Ｏ) JDBC Proxy Driverはトランザクションの範囲内で実行するようプログラムを修正してください。

〔対策〕

なし

KFSG63005-E (Y)J+M

Execution of the method failed, because the instance generated by the JDBC driver was lost. (branchxid = aa....aa, class name = bb....bb)

Participantがダウンした場合JDBC Driverが生成したインスタンスが失われているため、メソッドの実行に失敗しました。

aa....aa：ブランチXID

bb....bb：実行しようとしたインスタンスのクラス名

(Ｓ)トランザクションをロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Participantで障害が発生していないか確認してください。

KFSG63006-E (Y)J+M

Processing to read or write data failed during execution of the JDBC Proxy Driver.

JDBC Proxy Driver の実行時にデータの読み込みまたは書き込みに失敗しました。

(Ｓ)要求を無視します。

(Ｏ)このメッセージのあとに出力される例外情報を参照して障害の原因を調査してください。

〔対策〕

なし。

KFSG63007-E (Y)J+M

An instance of an unsupported class was specified as an instance of the Object class. (branchxid = aa....aa, class name = bb....bb)

サポート対象外のクラスのインスタンスが、Objectクラスのインスタンスとして指定されました。

aa....aa：ブランチXID

bb....bb：指定されたインスタンスのクラス名

(Ｓ)要求を無視します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

サポート対象のObjectクラスのインスタンスを指定するようアプリケーションを修正してください。

KFSG63008-E (Y)J+M

An unsupported class was specified as a class representing a Java data type. (class name = aa....aa)

サポート対象外のクラスが、Javaデータ型を表すクラスとして指定されました。

aa....aa：指定されたJavaデータ型を表すクラス

(Ｓ)要求を無視します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

Javaデータ型を表すクラスにはサポート対象のクラスを指定するようアプリケーションを修正してください。

KFSG63009-E (Y)J+M

A value corresponding to an unsupported JDBC type was specified for the sqlType parameter, which specifies the JDBC type. (sqlType = aa....aa)

サポート対象外のJDBC型を示す値が、JDBC型を指定するパラメタsqlTypeに指定されました。

aa....aa：指定されたsqlTypeの値

(Ｓ)要求を無視します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

サポート対象のJDBC型を指定するようアプリケーションを修正してください。

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.size設定値)

bb....bb：現在のMediator起動数

(Ｓ)Orchestratorを異常終了します。

(Ｏ)Mediatorをmediator.size設定値以上起動してください。Mediatorがmediator.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が出力する分散トレースの次のSpanから確認できます。

オペレーション名「j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSender」のTags: consensus-valueにCOMMIT、ROLLBACKのどちらかを出力します。

Spanは、JaegerのWeb UIで表示して確認してください。

Tagsに"root-xid"="< KFSG63104-Eのaa....aa 出力値>"を入力して検索することで、該当トランザクションの分散トレースを表示します。

該当トランザクションの分散トレースからGrpcNotifyTerminationResultRequestSenderで検索することでオペレーション名:j.c.H.s.h.p.s.GrpcNotifyTerminationResultRequestSenderのTagsの内容を確認してください。

〔対策〕

なし。

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 Entity-Service：Entity-Serviceとの通信障害

Rollback request from Entity-Service：Entity-Serviceからのロールバック要求

Rollback target exception occurs：Rollback対象の例外が発生

Rollback settlement notification from mediator：MediatorからのRollback決着通知

(Ｓ)処理を続行します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

下表を参照してトランザクションがロールバックした原因を調査して、必要に応じて対策してください。

bb....bbの出力値

原因の調査方法

Communication failure with Entity-Service

APがEntity-Serviceとの通信時に出力している情報から通信障害の原因を調査してください。

Rollback request from Entity-Service

Entity-Serviceで出力しているKFSG63107-Wを参照してAPがロールバック対象のステータスコードを設定した原因を調査してください。

Rollback target exception occurs

このメッセージが出力している例外情報中の「Suppressed:」以降がAPが送出した例外の情報です。この情報やAPが出力している情報から、APがロールバック対象の例外を送出した原因を調査してください。

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)

トランザクションブランチをロールバックにマークしました。

aa....aa：ブランチXID

bb....bb：トランザクションをロールバックにマークした理由

Communication failure with Entity-Service：Entity-Serviceとの通信障害

Participant failure：Participantの障害

The HTTP status of the rollback target：Rollback対象のHTTPステータス

cc....cc：HTTPステータスコード（出力する情報がない場合は「null」を表示します）

(Ｓ)トランザクションブランチをロールバックにマークして処理を続行します。トランザクションはロールバックします。

(Ｏ)システム管理者に連絡してください。

〔対策〕

下表を参照してトランザクションがロールバックした原因を調査して、必要に応じて対策してください。

bb....bbの出力値

原因の調査方法

Communication failure with Entity-Service

APがEntity-Serviceとの通信時に出力している情報から通信障害の原因を調査してください。

Participant failure

Participant、またはEntity-Serviceで次のメッセージが出力されていないか確認してください。出力されている場合は、これらのメッセージからロールバックした原因を調査してください。出力されていない場合は、保守員に連絡してください。

KFSG60010-W

KFSG60011-E

KFSG60012-E

KFSG60013-W

KFSG60016-E

KFSG63002-E

KFSG63005-E

The HTTP status of the rollback target

APがロールバック対象のHTTPステータスコードを設定した原因を調査してください。

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 service. Initialization of the entity service failed.

Entity-Serviceの初期化時にエラーが発生しました。Entity-Serviceの初期化に失敗しました。

(Ｓ)Entity-Serviceを異常終了します。

(Ｏ)このメッセージの前に出力されているメッセージを参照して障害を調査してください。

〔対策〕

なし。

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を呼び出したAPにエラー応答を返します。

(Ｏ)このメッセージのあとに出力されている例外情報、およびTP1-Converterのログを参照して障害を調査してください。

〔対策〕

なし。

KFSG63201-E (Y)M

Failed to obtain connection to TP1. (reason = aa....aa)

OpenTP1とのコネクション取得に失敗しました。

aa....aa：コネクション取得に失敗した理由コード

TIMEOUT：コネクションプールからの割り当て待ち時間のタイムアウト

(Ｓ)OpenTP1のサービスの呼び出し処理を中止して、TP1-Bridgeを呼び出したAPにエラー応答を返します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

次のパラメタの設定値を見直してください。

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を呼び出したAPにエラー応答を返します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

TP1-Bridgeを呼び出したAPを、トランザクションの範囲内で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を呼び出したAPにエラー応答を返します。

(Ｏ)システム管理者に連絡してください。

〔対策〕

このメッセージの前に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を呼び出したAPにエラー応答を返します。

(Ｏ)このメッセージの前後に出力されている例外情報を参照して障害を調査してください。

〔対策〕

なし。

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.dirパラメタの設定値が正しいかどうかを確認してください。

設定値が誤っていた場合：正しい値に変更してください。

設定値のディレクトリが存在していない場合：ディレクトリを作成してください。

そのあと、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名>.<ネームスペース名>

bb....bb：Participantのポート番号

cc....cc：ルートXID

トランザクション処理以外のgRPC通信の場合は*

dd....dd：保守情報

お問い合わせの際に連絡してください。

(Ｓ)処理を継続します。

(Ｏ) Exception情報を確認して対策を行うか、Participantなどに問題が発生していないかログおよびトレースを確認してください。また、次のParticipantのパラメタの設定値を見直してください。

SQL-Participanを使用する場合：jp.co.Hitachi.soft.hmppcto.sql.pod.service-name

TCC-Participanを使用する場合：jp.co.Hitachi.soft.hmppcto.tcc.pod.service-name

TP1-Bridgeを使用する場合：tp1.pod.serviceName

〔対策〕

Exceptionやログおよびトレースの確認結果に従い対応してください。

9.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を再起動してください。

上記対策を実施しても解決しない場合は、保守員に連絡してください。

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.

分散トレース機能が無効です。

(Ｓ)処理を続行します。

(Ｏ)管理者に連絡してください。

〔対策〕

テスト環境などでJaegerを使用できない場合などを除き、分散トレース機能を有効にしてください。

パラメタjp.co.Hitachi.soft.hmppcto.tracing.trace-useをtrueを設定してください。そのあと、再起動してください。

KFSG74206-I (Y)M

The trace will be sent to jaeger. (instance-id = aa....aa, URL = bb....bb)

分散トレースをJaegerに送信します。

aa....aa：パラメタjp.co.Hitachi.soft.hmppcto.tracing.instance-idの設定値

未設定の場合は自動生成されたIDです。

bb....bb：Jaegerのendpointの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

(Ｓ)処理を続行します。

(Ｏ)必要ありません。

〔対策〕

なし。

9.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の停止処理を行います。

(Ｏ)必要ありません。

〔対策〕

なし。

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)

トランザクションヘルスチェック処理を開始します。

aa....aa：リトライ回数

bb....bb：リトライ間隔秒数

cc....cc：接続タイムアウト秒数

dd....dd：応答タイムアウト秒数

ee....ee：HTTPポート番号

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

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)

未決着トランザクション待機処理を開始します。

aa....aa：リトライ回数

bb....bb：リトライ間隔秒数

cc....cc：接続タイムアウト秒数

dd....dd：応答タイムアウト秒数

ee....ee：HTTPポート番号

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

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.

デプロイ依存関係チェック処理が完了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

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 service finished.

Entity-Serviceの初期化が終了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

KFSG83103-I (Y)C

Initialization of the tp1 converter finished.

TP1-Converterの初期化が終了しました。

(Ｓ)処理を続行します。

(Ｏ)なし。

〔対策〕

なし。

第6編　システム運用に必要となる機能

10　システム運用に必要となる機能

10.1　概要

10.1.1　取得する情報および各情報の紐づけ方法

HMP-PCTOのトラブルシュート機能や連携製品で取得する情報、およびこれらの情報の紐づけ方法について説明します。

(1)　取得する情報

次の要件を満たすため、HMP-PCTOは最低限必要な情報取得先として次の表の情報を取得します。

ユーザによる障害検知ができること

どこで問題が起こっているか障害個所を調査できること

何が起こっているかを調査できること

表10‒1　HMP-PCTOの情報取得先

項番

情報取得先

名称

説明

1

メッセージログ

ユーザが障害検知するため、また、何が起こっているかを調査するため、詳細な情報を出力します。発生したイベントをタイムスタンプとともにテキストで取得します。

2

分散トレース

障害個所（エラー個所およびレスポンス遅延個所）の特定を行うため、サービス要求や製品機能間の通知に関するアクティビティを、関連づけ可能な形で取得します。各サービスでの処理時間、呼び出し関係と、付随する情報（種別など）を取得します。

分散トレースのイメージについては次の個所を参照してください。

SQL-Participant使用時：「図10‒1　分散トレースのイメージ（SQL-Participantを使用する場合）」

TCC-Participant使用時：「図10‒2　分散トレースのイメージ（TCC-Participantを使用する場合）」

TP1-Bridge使用時：「図10‒3　分散トレースのイメージ（TP1-Bridgeを使用する場合）」

3

メトリクス

レスポンス遅延が発生しているときに何が起こっているかを調査するため、システムの利用状況（CPU使用率など）、Java VMの利用状況（メモリ使用量など）、およびHMP-PCTOの性能を評価するための指標となる数値（トランザクション数など）を取得します。

HMP-PCTOにおける「ログ」は、ユーザに何が起こっているかを知らせる情報を文章として出力し、「トレース」はユーザにどこで問題が発生しているかを追跡するための情報を出力します。

分散トレースのイメージを次の図に示します。この図は分散トレースのイメージを表しているため、実際の処理シーケンスとは異なります。

図10‒1　分散トレースのイメージ（SQL-Participantを使用する場合）

図10‒2　分散トレースのイメージ（TCC-Participantを使用する場合）

図10‒3　分散トレースのイメージ（TP1-Bridgeを使用する場合）

要件「情報を永続化できること」を満たすため、HMP-PCTOは分散トレースおよび標準出力の情報をElasticsearchに送り永続化します。また、メトリクスの情報を永続化します。メトリクスの情報についてもElasticsearchに送り永続化します。障害が発生するケースに備えて、Elasticsearchはクラスタ構成を可能とします。クラスタはElasticsearchクラスタを制御するマスターノード群と情報を保持するデータノード群で構成されます。本バージョンではこの構成だけをサポートします。

分散トレースの情報は、ファイルにエクスポートする際に特定の種別の情報を抽出できます。例えば、SQL-Participant使用時の場合、XA関数発行時のトレースに絞って出力することで、1トランザクション当たりのXA関数の処理時間の合計を抽出できます。SQL-Participant使用時の場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートのイメージを次の図に示します。

図10‒4　HMP-PCTO 分散トレース・標準出力の送信およびエクスポート（SQL-Participantを使用する場合）

TCC-Participant使用時の場合、API Adapter発行時のトレースに絞って出力することで、1トランザクション当たりの処理時間の合計を抽出できます。TCC-Participantを使用する場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートイメージを次の図に示します。

図10‒5　HMP-PCTO 分散トレース・標準出力の送信およびエクスポート（TCC-Participantを使用する場合）

TP1-Bridge使用時の場合、RPCコール/XA関数発行時のトレースに絞って出力することで、1トランザクション当たりの処理時間の合計を抽出できます。TP1-Bridgeを使用する場合の、HMP-PCTO分散トレース・標準出力の送信およびエクスポートイメージを次の図に示します。

図10‒6　HMP-PCTO 分散トレース・標準出力の送信およびエクスポート（TP1-Bridgeを使用する場合）

要件「システムへのリソースおよび性能の影響を最小限にすること」を満たすため、「表10‒1　HMP-PCTOの情報取得先」以外の情報は、連携製品側で出力される情報を使用します。HMP-PCTOのトラブルシュートで利用する連携製品の情報は次のとおりです。

なお、各連携製品側の名称や機能などの最新の情報については、各製品のマニュアルを参照してください。

表10‒2　トラブルシュートで利用する連携製品の情報

項番

名称

説明

1

PostgreSQLのログ情報

XA関数に対応したPostgreのログ情報をトラブルシュートに利用します。

2

HiRDBのトレース・ログ情報

XA関数に対応したHiRDBのトレース・ログ情報をトラブルシュートに利用します。

3

SQL Serverのトレース・ログ情報

SQL Serverのトレース・ログ情報をトラブルシュートに利用します。

4

EADSの各種トラブルシュートファイル

EADSサーバでレスポンスの低下が起こっている場合、ログ情報のエラーメッセージや統計情報をトラブルシュートに利用します。トライアル版では利用できません。

5

Tomcatのアクセスログ

Orchestrator、Entity-ServiceまたはEntity-ModuleのREST API通信についてヘッダ情報をトラブルシュートに利用します。

6

uCosminexus Application Runtime with Java 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のトラブルシュートに利用します。

HMP-PCTOの取得先ごとに、調査に必要な情報は次のとおりです。

表10‒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 with Java for Spring Bootのログ

uCosminexus Application Runtime with Java for Spring Bootのトレース情報（HTTPリクエストのトレース）

uCosminexus Application Runtime with Java 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が出力するメッセージだけでは問題の解決が困難な場合に、トレースを取得してください。

(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以降は、連携製品側の情報として記録されています。

表10‒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

連携製品のトラブルシュート情報（TCC-Participant使用時）

API Adapterアクセスログ情報

API AdapterアクセスとブランチXIDの情報が記録されています。

13

連携製品のトラブルシュート情報（TP1-Bridge使用時）

uCosminexus Service Platformのトレース・ログ情報

J2EEアプリケーションのユーザログ

TP1-Converterが出力するメッセージ内に、ブランチXIDの情報が記録されています。

14

NIO HTTPサーバのアクセスログ

ログ中の時刻情報をキーに、そのほかのトラブルシュート情報と紐づけます。

15

Webサーブレットログ

ログ中の時刻情報をキーに、そのほかのトラブルシュート情報と紐づけます。

16

JavaVMスタックトレース情報

スタックトレース情報を参照し、例外が発生した要因および例外の発生個所を調査します。

17

JavaVMのGCログ

統計情報の確認のために取得する情報です。通信遅延などの現象が発生した場合、その現象が発生した時刻およびログの時刻情報を基にトラブルシュートを実施します。

18

JavaVMログ（JavaVMログファイル）

ログ中の時刻情報をキーに、そのほかのトラブルシュート情報と紐づけます。

19

OpenTP1のトレース・ログ情報

リアルタイム出力機能

時刻情報をキーにし、そのほかのトラブルシュート情報と紐づけます。

20

TP1/Client/Jのトレース情報

デバッグトレース

トレース情報は、TP1-Brdige Podの標準出力に出力されます。HMP-PCTOのメッセージ、メッセージが出力された時刻情報、およびトレースの時刻情報を基に、トラブルシュートを実施します。

21

エラートレース

時刻情報およびスレッド名をキーにし、そのほかのトラブルシュート情報と紐づけます。

22

メソッドトレース

時刻情報およびスレッド名をキーにし、そのほかのトラブルシュート情報と紐づけます。

23

UAPトレース

時刻情報およびスレッド名をキーにして、そのほかのトラブルシュート情報と紐づけます。

24

データトレース

時刻情報およびスレッド名をキーにし、そのほかのトラブルシュート情報と紐づけます。

「表10‒4　ブランチXIDを取得する情報、および連携製品のトラブルシュート情報の紐づけ」で述べた、分散トレースとそのほかの情報との紐づけのイメージについて次の図に示します。図中の番号は、表の項番に対応しています。

図10‒7　HMP-PCTO各情報の紐づけのイメージ（SQL-Participantを使用する場合）

図10‒8　HMP-PCTO各情報の紐づけのイメージ（TCC-Participantを使用する場合）

図10‒9　HMP-PCTO各情報の紐づけのイメージ（TP1-Bridgeを使用する場合）

ユーザは、HMP-PCTOが取得する分散トレースの情報と、連携製品の情報をブランチXIDで紐づけて調査できます。なお、HMP-PCTOが取得する各分散トレース情報（「図10‒7　HMP-PCTO各情報の紐づけのイメージ（SQL-Participantを使用する場合）」、「図10‒8　HMP-PCTO各情報の紐づけのイメージ（TCC-Participantを使用する場合）」、および「図10‒9　HMP-PCTO各情報の紐づけのイメージ（TP1-Bridgeを使用する場合）」の緑枠部分）は、分散トレース固有の紐づけ情報（トレースID）によって関連づけられるため、ユーザはJaegerのWeb UIなどで一貫した情報として見ることができます。

(3)　性能評価の対象と取得する情報

HMP-PCTOを使用した分散システムで、ユーザが性能を評価する対象は次のとおりです。

表10‒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、ConsesnusLogの状態ごとの件数

Participantの例：トランザクションの件数・時間

TP1-Bridgeの例：Spring Boot組み込みTomcatのスレッド数

要件「ユーザがHMP-PCTOの性能を評価するための情報を取得すること」を満たすため、HMP-PCTOは、最低限必要な情報取得先として次の表の情報を取得します。

表10‒6　HMP-PCTOの情報取得先

項番

情報取得先

名称

説明

1

メトリクス

HMP-PCTOを使用した分散システムでユーザが性能を評価するため、システムの利用状況（CPU使用率など）、Java VMの利用状況（メモリ使用量など）、およびHMP-PCTOの性能を評価するための指標となる数値（トランザクション数など）を取得します。

10.2　メッセージログ

10.2.1　概要

HMP-PCTOは、稼働状況管理、障害検知、および障害発生時の切り分けなどを目的としてメッセージログを出力します。メッセージログ出力の契機は、アプリケーションの稼働状況の変化、障害発生などです。

HMP-PCTOは、ロギングライブラリを使用して、メッセージログを標準出力します。ユーザは、HMP-PCTOが出力するメッセージログを監視し、出力されたメッセージログに従って適切に対応する必要があります。

標準出力の内容は、ノード上にログ収集基盤を使用したコンテナを作成し、標準出力の内容を収集します。収集したログは、ログ運用基盤などに転送され、永続化および可視化されます。障害発生時は、必要に応じて保存されたログをエクスポートし、障害調査者に送付してください。詳細については、「10.6　HMP-PCTOの障害調査」を参照してください。

また、KubernetesのコンテナのライフサイクルイベントハンドラではMediatorの起動・停止に関するイベントがメッセージログとして出力されます。出力された内容はKubernetesのイベントリソースに保存されます。ユーザは、必要に応じてイベントリソースのメッセージログを確認し、適切に対応する必要があります。

なお、ログ収集基盤は、イベントソースに保存されたメッセージログを収集しません。必要に応じて、永続化する必要があります。詳細については、「10.6　HMP-PCTOの障害調査」を参照してください。

メッセージログの構成を次の図に示します。なお、メッセージログの出力形式は、各コンポーネントで共通です。

図10‒10　メッセージログの構成

HMP-PCTOでは、次に示すロギングライブラリを使用します。

Logback

重要

ユーザアプリケーションで使用するロギングライブラリ

ユーザアプリケーションでロギングライブラリを使用する場合、HMP-PCTOの使用するロギングライブラリと記載が一致している必要があります。一致していない場合は、メッセージログが正常な出力フォーマットで出力されないか、またはメッセージログが出力されないことがあります。

HMP-ADIF、ユーザアプリケーションのログ出力形式

HMP-ADIF、またはユーザアプリケーションでログを出力する場合、ログの確認、永続化、および可視化の利便性の観点から、HMP-PCTOのメッセージログと同様に、標準出力への出力を推奨します。

HMP-PCTOでは、次に示すログ収集基盤をサポートしています。

Filebeat

また、HMP-PCTOでは、次に示すログ運用基盤を推奨しています。

ElasticStack（LogstashおよびElasticsearch）

ログ運用基盤の設定・運用方法については、次の説明を参照してください。

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

「3.6　Kubernetesマニフェスト作成」

「3.7　Helmチャートのカスタマイズ」

「3.8　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションの運用」

「3.9　ログの取得および監視の設定」

10.2.2　取得方針

HMP-PCTOは、アプリケーションの稼働状況の変化、障害発生などを契機に、メッセージIDを付与したメッセージを出力します。

メッセージは、ログレベル「ERROR」、「WARN」、および「INFO」で出力されます。メッセージの説明および対策については、「9.　メッセージ」を参照してください。

10.3　分散トレース

10.3.1　概要

HMP-PCTOは1つのトランザクション内で、Orchestrator、Mediator、Entity-ServiceまたはEntity-Module、Participantなどのコンポーネントがお互いに通信し動作しており、処理の流れが複雑です。HMP-PCTOは、トランザクションの開始から終了までの間の各コンポーネントでの処理の情報（開始時刻や実行時間など）を関連づけて、分散トレース情報として取得します。障害発生時に分散トレース情報を確認することでトランザクションの処理の複雑な流れを把握でき、問題のあった処理の特定を容易化します。

分散トレースはHMP-PCTOがOpenTelemetryを使用して取得し、分散トレース基盤であるJaegerに送信します。Jaeger単体ではデータの永続化の機能を持たないため、データの永続化が必要です。データを永続化しない場合、分散トレースの情報が失われ、HMP-PCTO利用者およびサポート部署共に分散トレースを使用しての調査ができません。そのため分散トレースの構成は次のようになります。

分散トレースの永続化手段としてElasticsearchを使います。HMP-PCTOの各コンポーネントの処理でOpenTelemetryを使用してトレース情報を取得し、Jaeger-collectorにトレース情報を送信します。Jaeger-collectorはElasticsearchにデータを送信しデータを永続化します。分散トレースを参照する際はJaegerのWeb UI上で参照します。この時Jaeger-queryがElasticsearchからトレース情報を取得し、JaegerのWeb UI上に表示します。JaegerのWeb UI上でトランザクションの一覧、およびトランザクションごとの処理の流れを確認できます。次に示す図はSQL-Participantを使用する場合です。TCC-Participantを使用する場合、Entity-ServiceをEntity-Moduleと読み替えてください。

図10‒11　分散トレースの概要

重要

分散トレース機能で付与するヘッダ

HMP-PCTOでは、Spanの親子関係やサンプリング有無などの情報を各コンポーネントに伝搬させるために、ほかのコンポーネントへのリクエストに特定のヘッダを付与することで、分散トレーシングを実現します。

なお、ヘッダの情報が変更されると、正しい情報が伝搬できなくなります。そのため、ほかの製品で同様のヘッダが付与されないようにしてください。

付与するヘッダを次に示します。

ヘッダ名がtraceparentの場合

トレースID、スパンID、およびサンプリング有無が付与されます。

ヘッダ名がtracestateの場合

OpenTelemetry固有のデータが付与されます。

(1)　分散トレースの送信に失敗したとき

(a)　分散トレース送信失敗時の検知、および分散トレース機能の抑止について

HMP-PCTOで、分散トレースを定期的に分散トレース基盤へ送信しますが、エンドポイントが機能していない、送信先エンドポイントのパラメタ指定値が誤っている、などの要因で送信に失敗した場合、OpenTelemetryは警告メッセージを標準出力に出力します。このため、標準出力には定期的に警告メッセージが出力されることになります。

ユーザの運用での対処として、分散トレース基盤への送信失敗時の警告メッセージが、標準出力に出力されているかどうかを確認します。警告メッセージが出力されていた場合は、送信先定義を見直し、分散トレース基盤が正常起動していることを確認してください。詳細については、「10.6　HMP-PCTOの障害調査」を参照してください。

(b)　分散トレース送信失敗時、トレース情報を一時的に別の出力先に変更することについて

「(a)　分散トレース送信失敗時の検知、および分散トレース機能の抑止について」にあるとおり、ユーザが運用で対処して分散トレース送信失敗を回復する必要があるため、HMP-PCTOではトレース情報の出力先を別の出力先に切り替えません。

そのため、ユーザが運用で対処するまでは分散トレースがJaegerに送信されず、トレース情報がロストするため注意してください。

10.3.2　トレースの単位

HMP-PCTOは分散トレースとしてSpanを取得します。Spanはトレースの単位です。HMP-PCTOでは、各コンポーネント（Orchestrator、Entity-Service、Entity-Module、Participant、Mediator）のプロセスをそれぞれ1つのマイクロサービスと考え、各コンポーネント内の特定処理（オペレーション）の開始時にSpan取得を開始し、特定処理の終了時にSpan取得を終了します。Spanを取得することで、特定処理の開始時刻と実行時間を取得できます。HMP-PCTOはSpanの取得開始から終了までの間に、Spanに特定処理に関する情報（ブランチXIDなど）を付加し取得します。次に示す図はSQL-Participantを使用する場合です。TCC-Participantを使用する場合、Entity-ServiceをEntity-Moduleと読み替えてください。

図10‒12　トレースの単位

HMP-PCTOは処理の起点（トランザクション開始時など）でトレースIDを採番します。トレースIDはグローバルに一意な識別子であり、同一トランザクションのすべてのコンポーネントにわたって同じトレースIDをコンポーネント間の通信に埋め込み伝搬し、各Spanに付与することでSpanをグループ化できます。Spanはネストできます。呼び出し元の処理が親Span、呼び出し先の処理が子Spanとなります。

ユーザはJaegerのWeb UIへアクセスし、トレースIDの一覧、およびトレースID単位での親Span、子Spanの呼び出し関係を確認することで、処理の流れを確認できます。

未決着トランザクションのRecovery機能が実行された場合、SQL-ParticipantまたはTCC-Participantの再起動前のトレースIDと再起動後のトレースIDは別の値となります。そのため、処理の流れを確認する場合は、同時に出力されているブランチXIDを基に処理の流れを確認する必要があります。

10.3.3　Spanへ付加する情報

Spanに付加する情報の形式について説明します。付加する情報の形式は3パターンあります。

(1)　Tags

次のkey（情報名）、value（情報値）の形式で情報を取得します。JaegerのWeb UIでTagsの情報名、情報値を指定することで表示するトレースIDをフィルタできます。時間情報を必要としない情報の場合に、Tagsに設定します。

例：受信した要求電文に含まれていたブランチXIDなど

図10‒13　Tags

(2)　Logs

次のLogs形式1、2どちらかの形式で情報を取得します。Span内での処理の実施時刻を取得でき、Span内で遅延した処理の確認などに使用できます。時間情報を必要とする場合にLogsに設定します（例：I/O開始、終了時刻など）。messageに対し、処理ごとの情報説明を設定します。情報説明には、対象情報がどのようなイベントかを設定します（ファイルI/O開始など）。

図10‒14　Logs形式1

情報説明に加えてkey（情報名）、value（情報値）の形式で情報追加したい場合は、Logs形式2で情報を取得します。追加情報が不要であれば、Logs形式1で取得します。

図10‒15　Logs 形式2

情報名と情報値を設定する場合に、TagsとLogs形式2の使い分けについて説明します。

対象イベントだけに関わる情報の場合はLogs形式2へ、対象Span全体に関わる情報の場合はTagsに設定します。例えば、あるSpan内でファイルI/Oする場合に、スレッド名やブランチXIDなどSpan全体に関わる情報はTagsに、ファイルI/Oの結果はLogs形式2に設定します。

(3)　Process

次のkey（情報名）、value（情報値）の形式でプロセスに関する情報を取得します。JaegerのWeb UIでProcessの情報名、情報値を指定することで表示するトレースIDをフィルタできます。

図10‒16　Process

10.3.4　取得方針

(1)　基本

Spanの基本の取得方針について説明します。EADS、XAについては、「(2)　EADS（通常版限定）」および「(3)　XA関数（SQL-Participant限定）」を参照してください。

取得個所、取得情報、および情報を取得するSpanについて説明します。

(a)　取得個所方針

HMP-PCTOではSpanを一般的な取得個所と、製品保守観点での取得個所で取得します。

一般的な取得個所でのSpanと、製品保守観点での取得個所でのSpanを、Spanに付与するオペレーション名で区別できます。オペレーション名は、各コンポーネント内の特定処理（オペレーション）を特定するため、製品のJavaクラス名やメソッド名などを組み合わせた文字列です。一般的な取得個所のSpanは、オペレーション名冒頭に「Recv」を付与します。なお、ここで示す図はSQL-Participantを使用する場合です。TCC-Participantを使用する場合、Entity-ServiceをEntity-Moduleと読み替えてください。

一般的な取得個所

分散トレースは一般的に、マイクロサービス間の情報を把握するために1回のサービス呼び出しで1Span取得します。HMP-PCTOでも、各コンポーネントでの処理開始時の上位処理でSpanを取得します。上位処理から呼び出す下位処理では別途Spanは取得しません。例外として、「製品保守観点での取得個所」に示す個所でSpanを取得します。

図10‒17　取得イメージ図

製品保守観点での取得個所

一般的なSpanの取得個所で情報を取得できない処理について、製品処理の調査のため別途Spanを取得します。

上位処理とは非同期に処理を実行する場合

タイマ処理など、他コンポーネントから要求の延長で実施した処理から登録し、別スレッドで実施する処理があります。これらの処理は登録元の処理が完了しても処理は続行するため、処理の終了時などの情報を、登録元のSpanへ登録できません。

そのため、コンポーネント内処理に応じて、次のどれかで取得します。

処理途中および終了時の情報を取得する場合（他コンポーネントや他製品と連携する場合など）

登録元処理のSpanを親Spanとした新たなSpanを作成します。

起動時の情報だけを取得する場合（処理途中、終了時情報が不要の場合）

登録元処理のSpanに、情報を付加します。

図10‒18　例1タイマ処理

電文送信処理

HMP-PCTOでは、複数の通信相手へ複数スレッドで同時送信する処理があります（OrchestratorからMediatorへのトランザクション決着要求など）。送信先の情報だけでは、ネットワーク遅延などが起きた場合に原因調査が難しいため、送信元での電文送受信時の情報（宛先、送受信時刻など）を取得したいため、送信先数分の情報取得が必要です。それらを1つのSpanで管理すると、宛先ごとの情報の確認がしづらくなります。そのため、送信先ごとに子Spanを取得し、送信先ごとの情報を子Spanで取得します。

図10‒19　通信処理

(b)　取得する付加情報方針

HMP-PCTOが取得する付加情報について説明します。

次の観点で付加情報を取得します。

他トラブルシュート情報との紐づけ情報（ルートXID/ブランチXIDなど）

対象処理がどこで実施した処理かの識別情報（ホスト名、スレッド名など）

通信先の情報（送信先のIPアドレス、ポート番号など）

通信データ（他コンポーネントへの指示内容（Commit/rollback要求）など）

対象処理の結果（commit/rollbackなど）

実行時間情報（ユーザアプリ、ファイルI/Oなど開始終了時間など）

付加する情報の一覧を次に示します。

コンポーネント共通

HMP-PCTOのコンポーネントが、共通でSpanに付加する情報の一覧を次に示します。

Tags

表10‒7　コンポーネント共通の付加情報（Tags）

項番

情報名

設定する情報値の説明

1

root-xid

ルートXIDをbase64エンコードした値を設定します。

ルートXIDとブランチXIDのうち、ルートXIDを使用する処理の場合に設定します。

2

branch-xid

ブランチXIDをbase64エンコードした値を設定します。

ルートXIDとブランチXIDのうち、ブランチXIDを使用する処理の場合に設定します。

3

thread-name

スレッド名を設定します。

4

otel.library.name

Spanが取得されたライブラリの名称を設定します。

HMP-PCTOのライブラリで取得されたSpanの場合、「HMP-PCTO」が設定されます。

5

otel.library.version

Spanが取得されたライブラリのバージョンを設定します。

Logs

表10‒8　コンポーネント共通の付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:operation

Spanで取得する処理が開始したことを意味します。

親処理と異なるスレッドで実行する処理で、スレッド割り当てなどが完了し、実際の処理開始時に取得します。

情報なし

−

2

End:operation

Spanで取得する処理の終了を意味します。

情報なし

−

（凡例）−：該当しません。

Process

表10‒9　コンポーネント共通の付加情報（Process）

項番

情報名

設定する情報値の説明

1

hostname

コンポーネントのホスト名を設定します。

2

ip

コンポーネントのIPアドレスを設定します。

3

jaeger.version

HMP-PCTOが使用しているOpenTelemetryのライブラリを設定します。

「opentelemetry-java」が設定されます。

4

otel.library.name

Spanが取得されたライブラリの名称を設定します。

HMP-PCTOのライブラリで取得されたSpanの場合、「HMP-PCTO」が設定されます。

5

otel.library.version

Spanが取得されたライブラリのバージョンを設定します。

6

service.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に付加する情報の一覧を次に示します。

Tags

表10‒10　REST通信の付加情報（Tags）

項番

項目名

説明

1

http-method

リクエストのHTTPメソッド。

例：POST、GETなど

2

http-url

リクエストのURL。

3

http-status-code

レスポンスのHTTPステータスコード

通信障害でレスポンスが受信できなかった場合、この項目は設定されません。

Logs

表10‒11　REST通信の付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:rest

REST通信の開始（リクエストの送信）を意味します。

情報なし

−

2

end:rest

REST通信の終了（レスポンスの受信）を意味します。

情報なし

−

（凡例）−：該当しません。

Process

付加情報はありません。

gRPC通信

コンポーネント共通の情報に加えて、gRPC通信を実施する際にSpanに付加する情報の一覧を次に示します。

Tags

表10‒12　gRPC通信の付加情報（Tags）

項番

項目名

説明

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種別を設定します。

gRPCサーバの場合：「server」が設定されます。

gRPCクライアントの場合：「client」が設定されます。

11

otel.scope.name

Spanが取得されたライブラリの名称を設定します。

「io.opentelemetry.grpc-1.6」が設定されます。

12

otel.scope.version

Spanが取得されたライブラリのバージョンを設定します。

Logs

表10‒13　gRPC通信の付加情報（Logs）

項番

項目名

説明

追加情報名

設定する情報値の説明

1

message

gRPCのメッセージ送信が行われたことを意味します。

message.id

メッセージのシーケンス番号

2

message.type

メッセージ送信時は「SENT」が設定されます。メッセージ受信時は「RECEIVED」が設定されます。

3

sent message(hmppcto)

gRPCのメッセージ送信が行われたことを意味します。

json-convert

JSON形式での出力か、protobuf形式での出力かを示します。

true: JSON形式

false: protobuf形式

4

message-value

電文内容。

電文の先頭から256文字の情報を表示します。

256文字を超過する電文内容の場合、超過した部分は、分散トレースに登録しません。

また、電文内容がすべて出力されていないことを表すため、分散トレースに登録される電文内容の終端3文字を"…"へと置換します。

5

received message(hmppcto)

gRPCのメッセージ受信が行われたことを意味します。

json-convert

JSON形式での出力か、protobuf形式での出力かを示します。

true: JSON形式

false: protobuf形式

6

message-value

電文内容。

電文の先頭から256文字の情報を表示します。

256文字を超過する電文内容の場合、超過した部分は、分散トレースに登録しません。

また、電文内容がすべて出力されていないことを表すため、分散トレースに登録される電文内容の終端3文字を"…"へと置換します。

Process

付加情報はありません。

Orchestrator

コンポーネント共通の情報に加えて、OrchestratorがSpanに付加する情報の一覧を次に示します。

Tags

表10‒14　Orchestratorの付加情報（Tags）

項番

情報名

設定する情報値の説明

1

result

グローバルトランザクション決着結果

Commit

コミット

Rollback

ロールバック

Failure

トランザクション決着失敗

Logs

表10‒15　Orchestratorの付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:service

Orchestratorのアプリケーション開始を意味します。

情報なし

−

2

end:service

Orchestratorのアプリケーション終了を意味します。

情報なし

−

（凡例）−：該当しません。

Process

付加情報はありません。

Entity-ServiceまたはEntity-Module

コンポーネント共通の情報に加えて、Entity-ServiceまたはEntity-ModuleがSpanに付加する情報の一覧を次に示します。

Tags

表10‒16　Entity-ServiceまたはEntity-Moduleの付加情報（Tags）

項番

情報名

設定する情報値の説明

1

result

Orchestratorへのトランザクション結果

Commit

コミット

Rollback

ロールバック

2

prepare

先行prepareの実施有無

Y

実行

N

未実行

Logs

表10‒17　Entity-ServiceまたはEntity-Moduleの付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:service

Entity-ServiceまたはEntity-Moduleのアプリケーション開始を意味します。

情報なし

−

2

end:service

Entity-ServiceまたはEntity-Moduleのアプリケーション終了を意味します。

情報なし

−

（凡例）−：該当しません。

Process

付加情報はありません。

SQL-Participant

コンポーネント共通の情報に加えて、SQL-ParticipantでSpanに付加する情報の一覧を次に示します。

Tags

表10‒18　SQL-Participantの付加情報（Tags）

項番

情報名

設定する情報値の説明

1

consensus-value

分散合意結果

Commit

コミット

Rollback

ロールバック

2

external-consensus

補助合意実施有無

Y

補助合意実施

N

補助合意未実施

Logs

表10‒19　SQL-Participantの付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

learning log size m/n

LearningLog（Mediatorから受信した合意）の数、m:受信数、n:Mediator数です。

情報なし

−

2

fast consensus

高速合意の実施を意味します。

情報なし

−

3

skip consensus

分散合意条件を満たせないため、分散合意をスキップしたことを意味します。

情報なし

−

4

external consensus

補助合意の実施を意味します。

情報なし

−

5

consensus finished

タイムアウト前に分散合意が完了していたことを意味します。

情報なし

−

6

start:jdbc

ParticipantでのJDBCメソッド開始を意味します。

情報なし

−

7

end:jdbc

ParticipantでのJDBCメソッド終了を意味します。

情報なし

−

（凡例）−：該当しません。

Process

付加情報はありません。

TCC-Participant

コンポーネント共通の情報に加えて、TCC-ParticipantでSpanに付加する情報の一覧を次に示します。

Tags

表10‒20　TCC-Participantの付加情報（Tags）

項番

情報名

設定する情報値の説明

1

consensus-value

分散合意結果

Commit

コミット

Rollback

ロールバック

2

external-consensus

補助合意実施有無

Y

補助合意実施

N

補助合意未実施

Logs

表10‒21　TCC-Participantの付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

learning log size m/n

LearningLog（Mediatorから受信した合意）の数、m:受信数、n:Mediator数です。

情報なし

−

2

fast consensus

高速合意の実施を意味します。

情報なし

−

3

skip consensus

分散合意条件を満たせないため、分散合意をスキップしたことを意味します。

情報なし

−

4

external consensus

補助合意の実施を意味します。

情報なし

−

5

consensus finished

タイムアウト前に分散合意が完了していたことを意味します。

情報なし

−

6

start:try

Try開始を意味します。

情報なし

−

7

end:try

Try終了を意味します。

情報なし

−

8

start:confirm

confirm開始を意味します。

情報なし

−

9

end:confirm

confirm終了を意味します。

情報なし

−

10

start:cancel

cancel開始を意味します。

情報なし

−

11

end:cancel

cancel終了を意味します。

情報なし

−

（凡例）−：該当しません。

Process

付加情報はありません。

TP1-Bridge

コンポーネント共通の情報に加えて、TP1-BridgeでSpanに付加する情報の一覧を次に示します。

Tags

表10‒22　TP1-Bridgeの付加情報（Tags）

項番

情報名

設定する情報値の説明

1

consensus-value

分散合意結果

Commit

コミット

Rollback

ロールバック

2

external-consensus

補助合意実施有無

Y

補助合意実施

N

補助合意未実施

Logs

表10‒23　TP1-Bridgeの付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

learning log size m/n

LearningLog（Mediatorから受信した合意）の数、m:受信数、n:Mediator数です。

情報なし

−

2

fast consensus

高速合意の実施を意味します。

情報なし

−

3

skip consensus

分散合意条件を満たせないため、分散合意をスキップしたことを意味します。

情報なし

−

4

external consensus

補助合意の実施を意味します。

情報なし

−

5

consensus finished

タイムアウト前に分散合意が完了していたことを意味します。

情報なし

−

6

start:<TP1/Client/Jのメソッド名>

またはstart:TP1-Converter

TP1/Client/Jのメソッドの呼び出し開始、またはTP1-Converterの呼び出し開始を意味します。

情報なし

−

7

end:<TP1/Client/Jのメソッド名>

またはend:TP1-Converter

TP1/Client/Jのメソッドの呼び出し終了、またはTP1-Converterの呼び出し終了を意味します。

情報なし

−

（凡例）−：該当しません。

Process

付加情報はありません。

Mediator

コンポーネント共通の情報に加えて、MediatorがSpanに付加する情報の一覧を次に示します。

Tags

表10‒24　Mediatorの付加情報（Logs）

項番

情報名

設定する情報値の説明

1

consensus-value

Participantでの分散合意結果

Commit

コミット

Rollback

ロールバック

2

consensus-id

ConsensusIdの値を設定します。

Logs

表10‒25　Mediatorの付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

1

start:consensuslog

ConsensusLogへのアクセス(I/O)開始を意味します。

情報なし

−

2

end:consensuslog

ConsensusLogへのアクセス(I/O)終了を意味します。

情報なし

−

3

start:proposallog-add-propose

Proposal Logへのアクセス（投票内容保存）の開始を意味します。

propose-values

Proposal Logに保存した投票内容の一覧を設定します。

COMMIT_VOTE

Commit投票

ROLLBACK_VOTE

Rollback投票

一覧は上記の値を","（コンマ）区切りで設定します。

4

end:proposallog-add-propose

Proposal Logへのアクセス（投票内容保存）の終了を意味します。

情報なし

−

5

start:proposallog-add-propose-participant

Proposal Logへのアクセス（投票を受信したParticipant情報保存）の開始を意味します。

participants-value

Proposal Logに保存した投票を受信したParticipant情報（<Service名>.<ネームスペース名>）の一覧を設定します。

一覧は<Service名>.<ネームスペース名>を","（コンマ）区切りで設定します。

6

end:proposallog-add-propose-participant

Proposal Logへのアクセス（投票を受信したParticipant情報保存）の終了を意味します。

情報なし

−

7

start:proposallog-add-all-participants

Proposal Logへのアクセス（トランザクションに参加したParticipant情報（<Service名>.<ネームスペース名>））の一覧の保存の開始を意味します。

all-participants

Proposal Logに保存されたトランザクションに参加したParticipant情報（<Service名>.<ネームスペース名>）の一覧を設定します。

一覧は<Service名>.<ネームスペース名>を","（コンマ）区切りで設定します。

8

end:proposallog-add-all-participants

Proposal Logへのアクセス（トランザクションに参加したParticipant情報（<Service名>.<ネームスペース名>））の一覧の保存の終了を意味します。

情報なし

−

（凡例）−：該当しません。

Process

付加情報はありません。

(c)　情報を取得するSpanの方針

付加情報をどのSpanで取得するかについて説明します。

Spanに付加する情報は、全Span共通で付加するわけではなく、他コンポーネントから伝達された情報（ブランチXIDなど）やプロセスに関わる情報（ホスト名）などは、他コンポーネントから呼び出された先頭処理（主に受信処理）のSpanで取得します。先頭処理から生成/呼び出した処理は、先頭Spanと差異のある情報（スレッド名など）を取得します。次に示す図はSQL-Participantを使用する場合です。TCC-Participantを使用する場合、Entity-ServiceをEntity-Moduleと読み替えてください。

図10‒20　取得する情報

(2)　EADS（通常版限定）

EADS API向け分散トレースは、分散合意取得機能の補助合意に使用されるEADSで、次の図に示すようなAPIを発行するParticipantとEADS間のデータ処理が妥当かどうかを判別するためにSpanを取得します。なお、トライアル版ではEADSは使用できません。

図10‒21　EADS向けトレース

このSpanによって、EADSへのアクセス時間、実行内容、実行結果を分析可能とし、障害発生時にトラブルシュートが可能になります。

(a)　取得個所

EADS APIのcreateおよびget向けにParticipantから補助合意のためにEADS APIを呼び出す時にSpanを取得します。

(b)　取得する情報

コンポーネント共通の情報に加えて、EADS API向けのSpanで取得する情報を次に示します。

Tags

なし。

Logs

表10‒26　EADSの付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

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

ret

取得した補助合意提案値。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関数の実行順序、実行内容、実行結果を分析し、障害発生時にトラブルシュートが可能になります。

図10‒22　XA関数向けSpan

(a)　取得個所

Participantで、Entity-ServiceからgRPC通信に初回のSQL実行が要求された時にSpanを取得します。

Participant初期化で、prepare済みのトランザクションを取得する時にSpanを取得します。

Participantで、CommitもしくはRollbackの通知のgRPC通信を受信した時のSpanにLogを追加します。

(b)　取得する情報

コンポーネント共通の情報に加えて、XA関数向けのSpanで取得する情報を次に示します。

Tags

なし。

Logs

表10‒27　XA関数の付加情報（Logs）

項番

情報説明名

意味

追加情報名

設定する情報値の説明

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

例外の詳細メッセージ文字列

(4)　パラメタ

次のパラメタを使用します。

jp.co.Hitachi.soft.hmppcto.tracing.instance-id

jp.co.Hitachi.soft.hmppcto.tracing.url

jp.co.Hitachi.soft.hmppcto.tracing.trace-use

jp.co.Hitachi.soft.hmppcto.tracing.queue-size

jp.co.Hitachi.soft.hmppcto.tracing.delay-time

jp.co.Hitachi.soft.hmppcto.tracing.batch-size

パラメタの詳細については、「8.　パラメタ」を参照してください。

10.4　メトリクス

ここでは、トラブルシュート機能および性能チューニング計測機能で使用するメトリクスの機能について説明します。

10.4.1　概要

HMP-PCTOが動作するシステムでサービスのレスポンス遅延が発生したときに、パフォーマンスの傾向を調査するため、また、HMP-PCTOの性能評価を行うため、システムのパフォーマンスの指標となるメトリクスを取得します。

(1)　メトリクスの評価対象

メトリクスの評価対象を次の表に示します。システム（Kubernetesの場合、コンテナ環境）の利用状況、Java VMの利用状況、およびHMP-PCTOの性能を評価するための指標となる数値を取得することで、HMP-PCTOが動作しているシステムのパフォーマンスの傾向を調査できます。

表10‒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、ConsesnusLogの状態ごとの件数

Participantの例：トランザクションブランチ数・処理時間

TP1-Bridgeの例：Spring Boot組み込みTomcatのスレッド数

Jaeger-collectorの例：受信したSpan数、内部キューに登録されたデータ数

上記の評価対象ごとに取得する項目を次に示します。項目の詳細については、「(3)　出力内容」を参照してください。

各コンポーネントで「表10‒28　メトリクスの評価対象」の項番1〜4の情報を取得します。

項番5「機能固有の稼働統計情報」については、機能ごとに次の表のパフォーマンスを評価します。

表10‒29　機能固有の稼働統計情報の評価対象

項番

コンポーネント

評価対象

1

Orchestrator、Entity-Service、Entity-Module

なし。

2

Mediator

ConsensusLogアクセス所要時間

3

SQL-Participant

TCC-Participant

TP1-Bridge

処理中のトランザクションブランチ数

完了したトランザクションブランチ数

完了したトランザクションブランチの処理時間

EADS APIの所要時間（トライアル版では評価できません）

4

TP1-Bridge

Spring Bootの組み込みTomcatで管理されるスレッド数

5

Jaeger-collector

Jaeger-collectorの内部キュー内のSpan数

Jaeger-collectorが受信したSpan数

上記で示したメトリクスの評価対象以外にも、次の表に示すExporterなどを用いてメトリクスを取得することを推奨します。Prometheusによって収集することで、HMP-PCTO各コンポーネントやKubernetesクラスタのパフォーマンス監視や保守を行うための情報を取得できます。

表10‒30　取得を推奨するメトリクスを出力するExporter

項番

Exporter/コンポーネント

概要

1

Node-Exporter

各Kubernetesノード上で実行し、各マシンのCPU,メモリの使用量などのマシンレベルのメトリクスを出力します。

2

kube-state-metrics

Kubernetes APIより、クラスタ上のリソース情報を収集し、メトリクスとして出力を行います。

3

cAdvisor

cgroupについてのメトリクスを収集するExporter。Kubernetes上で稼働するコンテナのパフォーマンスに関する情報を出力します。

(2)　メトリクスの取得手段

HMP-PCTOでは、各コンポーネントでMicrometerのライブラリを使用してメトリクスの情報を取得します。メトリクスデータを収集するサーバPrometheus（Prometheus-Server）は、HMP-PCTOがMicrometerで取得したメトリクスデータを収集します。HMP-PCTOでは、送信先であるPrometheusに対応したExporterをMicrometerで実装することでPrometheusにメトリクスデータを送信できます。次に示す図はSQL-Participantを使用する場合です。TCC-Participantを使用する場合、Entity-ServiceをEntity-Moduleと読み替えてください。

図10‒23　HMP-PCTOメトリクスの構成（SQL-Participantの場合）

図10‒24　HMP-PCTOメトリクスの構成（TCC-Participantの場合）

図10‒25　HMP-PCTOメトリクスの構成（TP1-Bridgeの場合）

評価対象ごとの取得手段を次の表に示します。

表10‒31　メトリクスの取得手段

項番

評価対象

取得手段

1

システムの利用状況

Micrometerが標準で用意するライブラリでPrometheus-Serverに送信するメトリクスデータを生成します。

2

Java VMの利用状況

Micrometerが標準で用意するライブラリでPrometheus-Serverに送信するメトリクスデータを生成します。

3

HMP-PCTOの性能を評価するための指標

gRPC通信の性能

Micrometerが標準で用意するライブラリでPrometheus-Serverに送信するメトリクスデータを生成します。

4

送信処理の性能

HMP-PCTO内部で実施される非同期送信処理に関する項目について、Micrometerを使用して独自に作成し、この取得項目についてPrometheus-Serverに送信するメトリクスデータを生成します。

5

機能固有の稼働統計情報

HMP-PCTOが各コンポーネント固有の稼働統計情報について、Micrometerを使用して独自に作成し、この取得項目についてPrometheus-Serverに送信するメトリクスデータを生成します。

Jaeger-collectorは、Jaeger-collectorの機能によってメトリクス情報を生成します。

6

Spring Bootの組み込みTomcatの情報（TP1-Bridge使用時)

Spring Bootの組み込みTomcatに関する情報について、Tomcat Webサーバに関する情報を独自に作成し、Micrometerが標準で用意するライブラリを用いて、Prometheus-Serverに送信するメトリクスデータを生成します。

重要

メトリクスデータの取得条件

Micrometerのライブラリによって取得されるメトリクスデータには、取得条件を満たした場合だけ記録されるため、PrometheusのWeb UIで閲覧できないことがあります。

メトリクスデータの取得条件については、Micrometerのライブラリのドキュメントを参照してください。

Prometheus-Server自体は永続化の手段を持たないため、さらに永続化を目的として外部に送信を行います。次の送信先があります。

Elasticsearch

Prometheus-ServerはRemote_write機能を使用してMetricbeatに送信し、MetricbeatがElasticsearchに送信します。

Prometheus-Serverが収集したメトリクスデータを閲覧するには、PrometheusのWeb UIを使用します。詳細については、「10.5.3　メトリクス」を参照してください。

10.4.2　パラメタ

パラメタの詳細については、「8.　パラメタ」を参照してください。

10.5　データおよびファイル

10.5.1　メッセージログ

(1)　出力先

(a)　HMP-PCTOが出力するメッセージログ

HMP-PCTOは、メッセージログをログレベルに応じて標準出力および標準エラー出力に出力します。メッセージログのログレベルと出力先の対応を次の表に示します。

表10‒32　ログレベルと出力先

ログレベル

出力先

ERROR

標準エラー出力

WARN

標準出力

INFO

標準出力

出力内容は、次の方法で確認できます。

Kubernetesのkubectl logsコマンド

出力内容は、Kubernetesのkubectl logsコマンドで確認できます。詳細については、Kubernetesのリファレンスを参照してください。

Kibanaなどの可視化ツール

Elasticsearchに格納された情報を、Kibanaなどの可視化ツールで確認できます。詳細については、Kibanaなどの可視化ツールのリファレンスを参照してください。

KibanaのDiscover機能でHMP-PCTOのメッセージを抽出するためのフィールドを次の表に示します。このフィールドはFilebeatによって設定されています。

表10‒33　検索対象のフィールド

フィールド名

説明

@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が作成されているネームスペース名。

サイドカーとして起動したFilebeatで収集したログでは、Pod名を付与するために設定が必要です。設定内容については、「3.6　Kubernetesマニフェスト作成」に記載のマニフェスト例を参照してください。

kubernetes.node.name

ログが出力されたPodが起動しているKubernetesノードの名前。

サイドカーとして起動したFilebeatで収集したログでは、Pod名を付与するために設定が必要です。設定内容については、「3.6　Kubernetesマニフェスト作成」に記載のマニフェスト例を参照してください。

kubernetes.pod.name

ログが出力されたPod名。

サイドカーとして起動したFilebeatで収集したログでは、Pod名を付与するために設定が必要です。設定内容については、「3.6　Kubernetesマニフェスト作成」に記載のマニフェスト例を参照してください。

検索時には、メッセージを抽出したいHMP-PCTOのコンポーネントを指定します。

（例）「mediator」

kubernetes.statefulset.name

Podを定義したStatefulsetリソースの名前。

サイドカーとして起動したFilebeatで収集したログでは、「-」として表されます。

Statefulsetで作成したPodではない場合は、「-」として表されます。

log.file.path

ログが出力されたファイルパス。

message

ログ本文。

検索時には、「KFSG*」と指定して、HMP-PCTOが出力したメッセージを抽出します。

図10‒26　検索の例

(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 KFSGN1N2N3N4N5-X message

表10‒34　出力情報

出力情報

説明

yyyy-mm-dd hh:mm:ss.SSS

出力日時

年月日 時分秒ミリ秒

level

ログレベル

hostname

ホスト名の値を取得し、出力します。

値が取得できない場合は、nullを表示します。

thread

スレッド名

classname

メッセージ出力元クラス名

短縮名で表示します。

＜例＞

正式名称:jp.co.Hitachi.soft.hmppcto.common.Myclass

短縮名:j.c.H.s.h.c.Myclass

PID

プロセスID

KFSGN1N2N3N4N5-X

メッセージID

message

メッセージテキスト

メッセージログ出力例を次に示します。

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)　ライフサイクルイベントハンドラが出力するメッセージログ

メッセージの出力フォーマットを次に示します。

KFSGN1N2N3N4N5-X message

(3)　メッセージログ機能が参照するファイル

(a)　ロギングライブラリの設定ファイル

HMP-PCTOは、メッセージログを出力するためのロギングライブラリとしてLogbackを使用します。その設定はロギングライブラリの設定ファイルを参照しています。ファイルはHMP-PCTOのライブラリファイル内に格納されています。

重要

ユーザ責務のKubernetesアプリケーションで使用するロギングライブラリの設定ファイル

ユーザ責務の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="PCTO_STD" level="INFO" additivity="false">
        <appender-ref ref="PCTO_STD" />
</logger>
<logger name="PCTO_ERR" level="ERROR" additivity="false">
        <appender-ref ref="PCTO_ERR" />
</logger>

重要

HMP-ADIFと連携する場合

HMP-ADIFのロギング機能は、Logbackを使用します。その設定はlogback-spring.xmlに定義します。ユーザ責務のKubernetesアプリケーションでHMP-ADIFと連携し、HMP-ADIFのロギングパターンでHMP-ADIFのログを出力したい場合は、次の対応が必要です。対応しない場合は、HMP-PCTOと同様の出力フォーマットでHMP-ADIFのログが出力されます。

Logbackの設定方法を次に示します。詳細については、LogbackやSpring Frameworkのドキュメントを参照してください。

次の表に示すとおりにHMP-ADIFのJARファイルを展開し、HMP-ADIFのデフォルト設定のlogback-spring.xmlファイルを取り出す

表10‒35　HMP-ADIFのデフォルト設定のlogback-spring.xmlファイルが含まれているJARファイル

項目

仕様

ファイル名

msa-common-core-<version>.jar

ファイル格納パス

<HMP-ADIFインストール先パス>¥org¥globallogic¥microservice¥msa-common-core¥<version>

logback-spring.xmlファイル格納パス

<JARファイル展開パス>¥logback-spring.xml

logback-spring.xmlファイルに次の記載を追加する

記載個所

<configuration>
記載個所
</configuration>

記載内容

<include resource="hmppcto-include.xml"/>
<logger name="PCTO_STD" level="INFO" additivity="false">
        <appender-ref ref="PCTO_STD" />
</logger>
<logger name="PCTO_ERR" level="ERROR" additivity="false">
        <appender-ref ref="PCTO_ERR" />
</logger>

カスタマイズしたlogback-spring.xmlファイルを次の表に示す仕様に従って格納する

表10‒36　logback-spring.xmlファイルの格納仕様

項目

仕様

ファイル名

logback-spring.xml

ファイル格納パス

Springアプリケーションのリソースフォルダの直下

(b)　メッセージプロパティファイル

HMP-PCTOは、メッセージログを作成するためにメッセージプロパティファイルを参照しています。ファイルはHMP-PCTOのライブラリファイル内に格納されています。

重要

ユーザ責務のKubernetesアプリケーションで使用するプロパティファイル

ユーザ責務のKubernetesアプリケーションでは、リソースフォルダの直下に次プロパティファイルを作成しないでください。作成した場合は、メッセージログが正常な出力フォーマットで出力されなくなります。

プロパティファイル名：hmppcto_messages.properties

10.5.2　分散トレース

(1)　出力先

Jaegerと連携したElasticsearchに分散トレースを出力します。

(2)　参照方法

収集された分散トレースは、JaegerのWeb UIの次のURLへアクセスすることで参照できます。

http://A...A:B...B

A...A：KubernetesワーカーノードのIPアドレス

B...B：ポート番号(「4.2.8 Jaeger-query」のhttp.portに指定した値)

(3)　出力形式

JaegerのWeb UI上での表示内容について説明します。この製品で使用する2つの画面について説明します。それ以外の画面に関してはJaegerの公式ページを参照してください。

(a)　Search Page

分散トレースの検索画面です。検索条件に合致したトレースIDの一覧を表示します。

図10‒27　Search Page

表10‒37　Search Page項目

図中番号

項目名

説明

1

service

HMP-PCTOのコンポーネントのservice名を選択します。この項目は選択必須です。

service名の形式は、jp.co.Hitachi.soft.hmppcto.tracing.instance-idパラメタの説明を参照してください。

2

Operation

HMP-PCTOのオペレーション名です。デフォルトはallです。

Operationの詳細については、「(b)　Trace Page」を参照してください。

3

Tags

SpanのTagsを指定します。Tagsの詳細については、「(b)　Trace Page」を参照してください。

4

−

検索対象範囲を指定します。詳細はJaegerの公式情報を参照してください。

5

Find trace

検索を実行します。

6

トレース情報

トレースID 1件分の情報を表示します。このエリアをクリックすると、「(b)　Trace Page」へ遷移します。

7

−

次の項目を表示します。

親SpanのService名：親SpanのOperation名：トレースID

8

−

該当トレースIDでの実行時間を表示します。

9

−

該当トレースIDでの開始時刻を表示します。

10

−

該当トレースIDで取得したSpan数を表示します。

11

−

該当トレースIDに含むSpanのserviceごとのSpan数を表示します。

(b)　Trace Page

「(a)　Search Page」で選択したトレースIDのトレース情報を表示します。

図10‒28　Trace Page

一般的な取得個所のSpanは、オペレーション名冒頭に「Recv」を付与します。

表10‒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名です。詳細は「(a)　Search Page」を参照してください。

5

Duration

選択Spanの実行時間です。

6

Starttime

該当するトレースIDを開始してから、選択したSpanのトレースを開始するまでの経過時間です。

7

Tags

選択Spanでの付加情報です。次の形式で表示します。

情報名  情報値

次の情報は、全Spanで取得します。

internal.span.format

jaeger

status.code

製品で取得するSpan：0

grpcで取得するSpan：grpcのstatus codeを設定します。

status.message

status.codeが0以外の場合に、status.codeに応じたメッセージを設定します。

8

Logs

選択Spanでの付加情報です。次の形式で表示します。

経過時間 message 情報

経過時間は、該当するトレースIDを開始してから、選択したSpanのトレースを開始するまでの経過時間です。

9

Process

選択Spanでの付加情報です。次の形式で表示します。

情報名  情報

10.5.3　メトリクス

(1)　出力先

HMP-PCTOの各コンポーネントは、Micrometerを使用してメトリクスデータを取得し、Prometheus向けのExporterを使って、テキストのデータをPrometheusサーバに送ります。

また、Jaeger-collectorから出力されるメトリクスについてもPrometheusサーバで収集します。

(2)　出力形式

(a)　PrometheusサーバのWeb UIによる参照

Prometheusサーバの標準のWeb UIにアクセスすると、次の画面が表示されます。

図10‒29　Prometheusサーバの標準のWeb UI

虫眼鏡マークの右にあるテキストフィールドにPromQLの構文でクエリを入力し、Executeボタンを押すことでクエリの結果のメトリクス情報が画面に出力されます。

(b)　Kibanaなどの可視化ツールによる参照

Elasticsearchに保存されたメトリクスはKibanaなどの可視化ツールで確認できます。詳細はKibanaなどの可視化ツールのリファレンスを参照してください。

Kibanaを例として、HMP-PCTOのメトリクスを抽出するためのフィールドを指定する例を次に示します。

prometheus.metrics.<メトリクス取得項目※1> : *※2

注※1

メトリクス取得項目に関しては、「(3)　出力内容」の項目を参照してください。

注※2

数値に関して特に条件がない場合は、": *"を指定することで、該当するメトリクスを取得した項目の絞り込みができます。

図10‒30　Kibanaによるメトリクス参照例

(3)　出力内容

メトリクスデータとして出力する、HMP-PCTOのメトリクス取得項目を次に示します。

なお、ユーザアプリケーション（業務処理）部分は、ユーザがメトリクスを取得する必要があります。

表10‒39　システムの利用状況、およびJava VMの利用状況

メトリクス取得項目

説明

system_cpu_usage

システム（Kubernetesの場合、コンテナ環境）のCPU使用率です。

process_cpu_usage

Java VMプロセスのCPU使用率です。

jvm_memory_max_bytes

Java VMで使用できるメモリの最大量です。

jvm_memory_used_bytes

Java VMの使用メモリ量です。

process_files_max_files

ファイル記述子の最大数です。

process_files_open_files

開いているファイル記述子の数です。

jvm_gc_memory_allocated_bytes_total

あるGC実施後から、次のGCの間での、JavaヒープNew世代領域のメモリプールサイズの増加量です。

jvm_gc_memory_promoted_bytes_total

あるGC実施前とGC実施後での、JavaヒープOld世代領域のメモリプールサイズの増加量です。

executor_active_threads

アクティブにタスクを実行しているユーザのスレッドのおおよその数です。

executor_queued_tasks

実行待ちのタスクのおおよその数です。

表10‒40　HMP-PCTOの性能を評価するための指標

メトリクス取得項目

説明

対象コンポーネント

grpc_server_processing_duration_seconds

gRPCサーバが呼び出し完了に掛かった時間

すべて

grpc_client_processing_duration_seconds

gRPCクライアントが通信完了するまでに掛かった合計時間

すべて

hmppcto_participant_transactions_inProcess_operations

処理中のトランザクションブランチ数

SQL-Participant

TCC-Participant

TP1-Bridge

hmppcto_participant_transactions_terminated_operations

完了したトランザクションブランチ数

SQL-Participant

TCC-Participant

TP1-Bridge

hmppcto_participant_transaction_duration_seconds_*

完了したトランザクションブランチの処理時間の統計情報

SQL-Participant

TCC-Participant

TP1-Bridge

hmppcto_asynctask_duration_seconds_*

HMP-PCTO内部で実施される非同期送信処理の所要時間

すべて

hmppcto_asynctask_operations_total

HMP-PCTO内部で実施される非同期送信処理の数

すべて

hmppcto_asynctask_queued_operations

キュー内にあり、まだ実行されていない非同期タスクの数

すべて

hmppcto_mediator_consensus_duration_*

ConsensusLogアクセス所要時間

Mediator

hmppcto_participant_eads_duration_*

EADS APIの所要時間（トライアル版では出力できません）

SQL-Participant

TCC-Participant

TP1-Bridge

tomcat_threads_busy_threads

Spring Boot組み込みTomcatで、ビジー状態のスレッド数

TP1-Bridge

表10‒41　Jaeger-collectorが出力するメトリクス

メトリクス取得項目

説明

出力するコンポーネント

jaeger_collector_queue_length

Jaeger-collectorの内部キュー内に存在するアイテム数

Jaeger-collector

jaeger_collector_spans_dropped_total

Jaeger-collectorの内部キューに存在し、Elasticsearchに送信されることなく、上書きされてしまったSpanの数

Jaeger-collector

(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

Orchestratorのエンドポイントを次に示します。

表10‒42　Orchestratorのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/orchestrator/metrics

Prometheusにメトリクスを公開するためのエンドポイント

Entity-ServiceまたはEntity-Module

Entity-ServiceまたはEntity-Moduleのエンドポイントを次に示します。

表10‒43　Entity-ServiceまたはEntity-Moduleのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/entity/metrics

Prometheusにメトリクスを公開するためのエンドポイント

SQL-Participant

SQL-Participantのエンドポイントを次に示します。

表10‒44　SQL-Participantのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/sqlparticipant/metrics

Prometheusにメトリクスを公開するためのエンドポイント

TCC-Participant

TCC-Participantのエンドポイントを次に示します。

表10‒45　TCC-Participantのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/tccparticipant/metrics

Prometheusにメトリクスを公開するためのエンドポイント

Mediator

Mediatorのエンドポイントを次に示します。

表10‒46　Mediatorのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/mediator/metrics

Prometheusにメトリクスを公開するためのエンドポイント

TP1-Bridge

TP1-Bridgeのエンドポイントを次に示します。

表10‒47　TP1-Bridgeのエンドポイント

項番

エンドポイント名

役割

1

/hmppcto/tp1bridge/metrics

Prometheusにメトリクスを公開するためのエンドポイント

10.5.4　定義するデータ形式

(1)　XIDの形式

HMP-PCTOでは、トランザクションを一意に識別する情報としてXIDを使用します。XIDをコンポーネント間で引き渡して、トランザクションの制御をします。

XIDの構造は、javax.transaction.xaインタフェースで定義された構造（X/Openトランザクション識別子XID構造のJavaマッピング）とします。XIDの構造と内容を次の表に示します。

表10‒48　XIDの構造

名称

説明

GlobalTransactionId

（グローバルトランザクション識別子）

トランザクションザクションを一意に識別するためのID。

FormatId

（形式識別子/フォーマットID）

XIDの形式を示す数値。

現時点のHMP-PCTOではフォーマットID=1の一形式。

将来的に、HMP-PCTOのバージョン、使用する機能などによって形式が変わる場合は、この値で形式を区別します。

BranchQualifier

（トランザクションブランチ識別子）

トランザクションブランチを一意に識別するためのID。

(2)　フォーマットID=1のXID形式

(a)　GlobalTransactionId

64バイトのbyte配列です。内容を次に示します。

表10‒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-ServiceもしくはEntity-Moduleを呼び出すOrchestrator、またはEntity-ServiceもしくはEntity-Moduleのパラメタjp.co.Hitachi.soft.hmppcto.branch.qualifier.listに設定した識別子をbyte[]に変換した値です。設定値が32バイト未満の場合は、「#」で埋めます。

ルートXIDの場合、BranchQualifierは意味はありません。0x00（1バイト）が設定されますが、使用されません。

10.6　HMP-PCTOの障害調査

HMP-PCTOで障害が発生した場合に取得する情報と、その収集方法について説明します。

10.6.1　取得する情報

ユーザ（システム運用者）が調査するため、また、システム運用者がサポート部署へ資料を送付するために取得する情報を次の表に示します。

表10‒50　取得する情報

項番

情報の種類

取得する情報

1

標準出力の情報

（HMP-PCTOのメッセージを含む）

Elasticsearchに格納された標準出力の情報（HMP-PCTOのメッセージを含む）です。

HMP-PCTOは、各podの標準出力をElasticsearchに送信します。

各コンテナの標準出力には、HMP-PCTOと同一コンテナ上で動作している次の項目が出力したメッセージなどを含みます。Elasticsearchに送信することで、どの項目が出力した情報なのかを検索したり、フィルタリングしたりできます。

ユーザ責務のKubernetesアプリケーションが出力したメッセージ

HMP-PCTOの前提プログラム/連携製品

・HMP-ADIF

・Spring

・Java VM

・Javaランタイム

・TP1/Client/J

2

分散トレースの情報

Elasticsearchに格納された分散トレース情報です。

HMP-PCTOは、各podの分散トレース情報をElasticsearchに送信します。

3

メトリクスの情報

Prometheus-Serverに格納されたメトリクス情報です。

HMP-PCTOは、各podのメトリクス情報をPrometheus-Serverに送信します。Prometheus-Serverはメトリクス情報をElasticsearchに送信します。

4

Kubernetesの情報

Kubernetes上のpodの詳細情報です。

Podで問題が発生していないかどうか、発生している場合はEvent情報で、どんな問題が発生しているかを確認します。

このEvent情報にはライフサイクルイベントハンドラで実行したHMP-PCTOのシェルスクリプトの標準出力の情報も出力されます。

5

連携製品が出力したトラブルシュート情報

連携製品が出力した次のトラブルシュート情報のファイルです。

次の情報については、コンテナのボリュームにファイルが出力されます。

PostgreSQLのログ情報

EADSのトラブルシュート情報（トライアル版では取得できません）

Tomcatのアクセスログ

TP1/Client/Jのトレース情報

次の情報については、連携製品が稼働するマシン上で収集します。

出力されるファイルのパス、ファイルの出力方法については、各連携製品のマニュアルを参照してください。

HiRDBのトレース・ログ情報

SQL Serverのトレース・ログ情報

uCosminexus Service Platformのトレース・ログ情報

OpenTP1のトレース・ログ情報

ユーザ（システム運用者）が調査する方法を次の表に示します。

表10‒51　ユーザの調査方法

項番

情報の種類

調査方法

1

標準出力の情報

（HMP-PCTOのメッセージを含む）

Elasticsearchに送られた標準出力の情報を、Kibanaなどの可視化ツールのUIで確認します。

2

分散トレースの情報

Elasticsearchに送られた分散トレースの情報をJaegerのWeb UIで確認します。

3

メトリクスの情報

Prometheus-Serverに送られたメトリクスの情報をPrometheusのWeb UI（またはGrafanaなどの可視化ツール）で確認します。

Elasticsearchに送られたメトリクスの情報をKibanaなどの可視化ツールのUIで確認します。

4

Kubernetesの情報

コマンド「kubectl describe」で確認します。

5

連携製品が出力したトラブルシュート情報

uCosminexus Application Runtime with Java for Spring Bootのスナップショットログ収集機能を使用して収集したものを確認します。

各Podのトラブルシュート情報のファイルの内容を、サイドカーのFilebeatコンテナからLogstashに出力し、Elasticsearchに送信した内容を確認します。

連携製品が稼働するマシン上に出力されたトラブルシュート情報を確認します。

ユーザが調査しても原因不明だった場合、システム運用者がサポート部署へ資料を送付するために収集する資料を次の表に示します。

表10‒52　情報の収集方法

項番

情報の種類

収集する情報

収集方法

1

標準出力の情報

（HMP-PCTOのメッセージを含む）

Elasticsearchに格納された標準出力の情報

Elasticsearchのスナップショット機能で収集します。

2

分散トレースの情報

Elasticsearchに格納された分散トレース情報をエクスポートしたファイル

Elasticsearchのスナップショット機能で収集します。

3

メトリクスの情報

Elasticsearchからメトリクス情報をエクスポートしたファイル

Elasticsearchのスナップショット機能で収集します。

4

Kubernetesの情報

Kubernetes上のpodの詳細情報

コマンド「kubectl describe」で出力された情報をファイルに出力します。

5

連携製品が出力したトラブルシュート情報

連携製品が出力した、次のトラブルシュート情報のファイル

PostgreSQLのログ情報

EADSのトラブルシュート情報（トライアル版では取得できません）

Tomcatのアクセスログ

TP1/Client/Jのトレース情報

uCosminexus Application Runtime with Java for Spring Bootのスナップショットログ収集機能を使用して収集します。

Elasticsearchのスナップショット機能で収集します。

6

連携製品が出力した、次のトラブルシュート情報のファイル

HiRDBのトレース・ログ情報

SQL Serverのトレース・ログ情報

uCosminexus Service Platformのトレース・ログ情報

OpenTP1のトレース・ログ情報

連携製品が稼働するマシン上でトラブルシュート情報の収集・出力を実施します。

収集・出力方法については、連携製品のマニュアルを参照してください。

10.6.2　情報の収集方法

サポート部署へ資料を送付する目的で、収集方法を次に示します。

(1)　Elasticsearchに格納された情報の収集方法

Elasticsearchのスナップショット機能で収集します。収集先として、不揮発のストレージに出力してください。

ElasticsearchにHMP-PCTOが出力する情報のindex名は、次の文字で始まります。

表10‒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)　uCosminexus Application Runtime for Spring Bootのスナップショットログ収集機能での収集方法

uCosminexus Application Runtime with Java for Spring Bootの「スナップショットログ収集機能」によって、コンテナ内の連携製品が出力したトラブルシュート情報のファイルを収集し、不揮発のストレージに出力してください。

コンテナ内に出力されるトラブルシュート情報をuCosminexus Application Runtime with Java for Spring Bootの機能で収集したい場合は、uCosminexus Application Runtime with Java for Spring Bootの設定ファイル（config.properties）を定義したConfigMapのマニフェストファイルに、次のパラメタを追加してください。このパラメタに収集対象とするファイルが出力されるファイルパスを指定することで、スナップショットログの収集対象を追加できます。

snapshot.include.paths.<n>※ = <追加収集するファイルパス>

注※

<n>には、1以上の整数を指定してください。

スナップショットログ収集機能についての詳細は、マニュアル「uCosminexus Application Runtime for Spring Boot ユーザーズガイド」を参照してください。

(3)　連携製品が稼働するマシン上のトラブルシュート情報の収集方法

マシン上で直接起動する連携製品のトラブルシュート情報の出力・収集は、ユーザの設定に依存します。そのため、各製品のマニュアルを参照して、トラブルシュート情報を出力・収集してください。

10.6.3　障害原因の調査方法

HMP-PCTOで発生する障害と、原因の調査方法について説明します。

(1)　障害発生時の流れ

ユーザは、標準出力（標準エラー出力を含む）に出力されたメッセージログのエラーメッセージ（警告メッセージを含む）、または分散トレースの出力情報によって、障害発生を検知します。

HMP-PCTOの障害発生時に、ユーザ（システム運用者）およびサポート部署が実施する障害調査の流れは次のとおりです。

資料取得

主なトラブルと調査個所

障害個所の特定

障害原因の調査

障害対策

次に、それぞれのフェーズでユーザ（システム運用者）およびサポート部署が実施する内容を示します。

図10‒31　HMP-PCTO 障害発生時の流れ（SQL-Participantを使用する場合）

図10‒32　 HMP-PCTO障害発生時の流れ（TCC-Participantを使用する場合）

図10‒33　HMP-PCTO 障害発生時の流れ（TP1-Bridgeを使用する場合）

(2)　資料取得

トラブルシュートを行うために必要な資料を収集する方法は、「10.6.2　情報の収集方法」を参照してください。

(3)　主なトラブルと調査個所

トラブル（障害）が発生するフェーズは次のとおりです。

環境構築時および起動時

HMP-PCTOの各コンポーネントで使用するPod・コンテナを構築し、起動した際に障害となった場合

システム稼働中

HMP-PCTOの各コンポーネントが稼働中に障害となった場合

障害の種類と調査個所について、次の表に示します。

表10‒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で確認

また、障害の種類と、ユーザの対策方法について次の表に示します。

表10‒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が出力したエラーメッセージがあったときは、「9.　メッセージ」を参照してください。メッセージに対策が記載されている場合は、それに従って対策を行ってください。

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コアやメモリの増強を行ってください。また、スレッドのキューへの滞留数を示している「executor_queued_tasks」「hmppcto_asynctask_queued_operations」が常時1以上になっている場合、同時実行可能なスレッド数を増やしてください。

Kubernetesの情報

Kubernetes上のpodの詳細情報を取得し、環境不正またはpodの操作ミスがないか確認してください。また、詳細情報の中のEvent情報から、ライフサイクルイベントハンドラで実行するHMP-PCTOのシェルスクリプトが出力したエラーメッセージがあったときは、「9.　メッセージ」を参照してください。メッセージに対策が記載されている場合は、それに従って対策を行ってください。

(b)　サポート部署の調査、対策

ユーザから調査依頼を受け、ユーザから資料を入手したサポート部署が調査する内容は次のとおりです。

標準出力の情報をエクスポートしたファイル

HMP-PCTOのエラーメッセージ、またはスタックトレースが出力されていないか確認します。

また、次に示す、そのほかの連携製品から出力された標準出力の情報からエラーメッセージが出力されていないか確認します。

HMP-ADIF

Spring

Java VM

TP1/Client/J

SQL Server

HiRDB

Kubernetesの情報

サポート部署は、ユーザにpodの情報収集した出力結果ファイルを依頼し、その結果から状態を確認します。

分散トレース情報をエクスポートしたファイル

サービス呼び出し関連が知りたい場合や、遅延が発生していて遅延個所を特定したい場合は、分散トレースを確認します。分散トレースでは、トランザクション内の次の実行時間を確認できます。

トランザクション（ルートXIDの割り当て〜合意）

サービス（Orchestrator/Entity-ServiceまたはOrchestrator/Entity-Module）の実行時間

DBアクセス時間

EADS APIアクセス時間（トライアル版では取得できません）

ConsensusLogアクセス時間

REST API通信時間

gRPC通信時間

連携製品側のトラブルシュートが必要になった場合、関連部署へ調査依頼を行います。

HMP-ADIF

EADS（トライアル版では不要です）

uCosminexus Application Runtime with Java for Spring Boot

TP1/Client/J

uCosminexus Service Platform

OpenTP1

HiRDB

OSSでのトラブルシュートが必要になった場合、関連部署（OSSサポートチーム）へ調査依頼を行います。

Spring

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情報を取得します。

分散トレース

通信やファイルアクセスで遅延が発生し始めた時間を特定します。

10.7　システム運用に必要となる機能の障害対策

ここでは、HMP-PCTOのシステム運用に必要となる機能機能で障害が発生した場合の対策について説明します。

HMP-PCTOのライブラリ、またはライブラリ以外でシステム運用に必要となる機能で使用するPod・コンテナで障害が発生した場合についても記載します。

10.7.1　障害の原因および対策

障害の種類と原因、対策について説明します。

(1)　メッセージログ

メッセージログに関する障害の種類と対策を次の表に示します。

表10‒56　メッセージログに関する障害の種類と対策

項番

障害の種類

現象

主な原因

対策

1

メッセージが出力されない

標準出力にHMP-PCTOのメッセージが出力されない（または、Kibanaなどのログ可視化ツールでHMP-PCTOのメッセージが出力されない）

HMP-PCTOのアプリケーションが動作していない

HMP-PCTOのPodが動作していることを確認してください。

誤って削除したなどの要因で、既定のディレクトリに製品提供のlogback-spring.xmlがない

製品提供のlogback-spring.xmlを既定のディレクトリに配置してください。

コンテナのLogging Driverの障害

コンテナの設定でLogging Driverがデフォルトの「json-file」であることを確認してください。

FilebeatのLogstashへの送信に失敗している

LogstashからElasticsearchへの送信に失敗している

Filebeat、Logstash、Elasticsearchの状態を確認し、再起動してください。

可視化ツールの設定ミス

可視化ツールの設定を見直してください。

可視化ツールへアクセスするURLが誤っている

URLが正しいかどうか確認してください。

Elasticsearchの容量が不足している

各コンポーネントを一旦停止し、Elasticsearchの容量を拡大し、再度各コンポーネントを開始してください。

イベントリソースにHMP-PCTOのメッセージが出力されない（ライフサイクルイベントハンドラで実行されたHMP-PCTOのシェルスクリプトが出力する）

ライフサイクルイベントハンドラでHMP-PCTOのシェルスクリプトが実行されていない（シェルスクリプトが実行されている場合、KFSG82102-Iがイベントリソースに出力される）

livenessProbe、およびreadinessProbeが正しく設定されていることを確認してください。

2

プロセスダウン

KFSG74103-Eが出力された（「ロガーがメッセージプロパティファイルを取得できませんでした。」）

誤って削除したなどの要因で、既定のディレクトリに製品提供の「hmppcto_messages.properties」がない

製品提供の「hmppcto_messages.properties」を既定のディレクトリに配置してください。

(2)　分散トレース

分散トレースに関する障害の種類と対策を次の表に示します。

表10‒57　分散トレースに関する障害の種類と対策

項番

障害の種類

現象

主な原因

対策

1

分散トレースの情報が出力されない

JaegerのWeb UIに、HMP-PCTOの分散トレースの情報が出力されない

標準出力に、「WARNING 〜 Failed to export traces:〜」というメッセージが出力される

HMP-PCTOのアプリケーションが動作していない

HMP-PCTOのPodが動作していることを確認してください。

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が正しいかどうか確認してください。

(3)　メトリクス

メトリクスに関する障害の種類と対策を次の表に示します。

表10‒58　メトリクスに関する障害の種類と対策

項番

障害の種類

現象

主な原因

対策

1

メトリクスの情報が出力されない

PrometheusのWeb UIに、HMP-PCTOのメトリクスの情報が出力されない

HMP-PCTOのアプリケーションが動作していない

Prometheus-Serverが動作していない

HMP-PCTOやPrometheus-ServerのPodが動作していることを確認してください。

Prometheus-Serverが、HMP-PCTOのメトリクス情報の収集に失敗している

Prometheus-Serverの設定（「(1)　Helmチャートのパラメタ」）を見直してください。

PrometheusのWeb UIへアクセスするURLが誤っている

URLが正しいかどうか確認してください。

Prometheus-Serverが何らかの要因で再起動した

Elasticsearchに登録されたメトリクスの情報を、Kibanaなどの可視化ツールで参照してください。

ElasticsearchにあるHMP-PCTOのメトリクスの情報が、Kibanaなどの可視化ツールで出力されない

Prometheus-ServerからMetricbeatへの送信が失敗している

MetricbeatからElasticsearchへの送信が失敗している

Prometheus-Server、Metricbeat、Elasticsearchの状態を確認し、再起動してください。

可視化ツールの設定ミス

可視化ツールの設定を見直してください。

可視化ツールへアクセスするURLが誤っている

URLが正しいかどうか確認してください。

付録

付録A　提供ファイル

HMP-PCTOの提供ファイルについて説明します。

HMP-PCTOは、HMP-PCTO提供媒体内に各種提供ファイルを格納しています。

「2.　ユーザ責務のKubernetesアプリケーション開発」および「3.　HMP-PCTOのコントロールプレーンおよびRASのKubernetesアプリケーションのデプロイ」の手順に従い、提供媒体内ファイルを各環境に配置して使用してください。

付録A.1　提供ファイル一覧

提供ファイル一覧を次に示します。

表A‒1　提供ファイル一覧

項番

ディレクトリ/ファイル

「¥」はディレクトリの区切り文字

説明

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-jdbc-proxy-driver¥V.R.S

JDBC Proxy Driver用ライブラリ配置ディレクトリ

15

hmppcto-jdbc-proxy-driver-V.R.S.jar

JDBC Proxy Driver用ライブラリファイル

16

hmppcto-jdbc-proxy-driver-V.R.S.module

JDBC Proxy Driver用moduleファイル

17

hmppcto-jdbc-proxy-driver-V.R.S.pom

JDBC Proxy Driver用pomファイル

18

hmppcto-propagation-rest-template¥V.R.S

RestTemplate用ライブラリ配置ディレクトリ

19

hmppcto-propagation-rest-template-V.R.S.jar

RestTemplate用ライブラリファイル

20

hmppcto-propagation-rest-template-V.R.S.module

RestTemplate用moduleファイル

21

hmppcto-propagation-rest-template-V.R.S.pom

RestTemplate用pomファイル

22

hmppcto-propagation-isc-imperative¥V.R.S

ISCコマンド用ライブラリ配置ディレクトリ

23

hmppcto-propagation-isc-imperative-V.R.S.jar

ISCコマンド用ライブラリファイル

24

hmppcto-propagation-isc-imperative-V.R.S.module

ISCコマンド用moduleファイル

25

hmppcto-propagation-isc-imperative-V.R.S.pom

ISCコマンド用pomファイル

26

hmppcto-mediator¥V.R.S

Mediator用ライブラリ配置ディレクトリ

27

hmppcto-mediator-V.R.S.jar

Mediator用ライブラリファイル

28

hmppcto-mediator-V.R.S.module

Mediator用moduleファイル

29

hmppcto-mediator-V.R.S.pom

Mediator用pomファイル

30

libhmppcto-mediator-V.R.S.so

Mediator用のダイレクトIO用ライブラリファイル

31

hmppcto-participant-common¥V.R.S

SQL-Participant/TCC-Participant共通用ライブラリ配置ディレクトリ

32

hmppcto-participant-common-V.R.S.jar

SQL-Participant/TCC-Participant共通用ライブラリファイル

33

hmppcto-participant-common-V.R.S.module

SQL-Participant/TCC-Participant共通用moduleファイル

34

hmppcto-participant-common-V.R.S.pom

SQL-Participant/TCC-Participant共通用pomファイル

35

hmppcto-participant-sql¥V.R.S

SQL-Participant用ライブラリ配置ディレクトリ

36

hmppcto-participant-sql-V.R.S.jar

SQL-Participant用ライブラリファイル

37

hmppcto-participant-sql-V.R.S.module

SQL-Participant用moduleファイル

38

hmppcto-participant-sql-V.R.S.pom

SQL-Participant用pomファイル

39

hmppcto-participant-tcc¥V.R.S

TCC-Participant用ライブラリ配置ディレクトリ

40

hmppcto-participant-tcc-V.R.S.jar

TCC-Participant用ライブラリファイル

41

hmppcto-participant-tcc-V.R.S.module

TCC-Participant用moduleファイル

42

hmppcto-participant-tcc-V.R.S.pom

TCC-Participant用pomファイル

43

hmppcto-lb¥V.R.S

ロードバランス用ライブラリ配置ディレクトリ

44

hmppcto-lb-V.R.S.jar

ロードバランス用ライブラリ

45

hmppcto-lb-V.R.S.module

ロードバランス用moduleファイル

46

hmppcto-lb-V.R.S.pom

ロードバランス用pomファイル

47

hmppcto-tx-paxos-manager¥V.R.S

トランザクション制御分散合意用ライブラリ配置ディレクトリ

48

hmppcto-tx-paxos-manager-V.R.S.jar

トランザクション制御分散合意用ライブラリ

49

hmppcto-tx-paxos-manager-V.R.S.module

トランザクション制御分散合意用moduleファイル

50

hmppcto-tx-paxos-manager-V.R.S.pom

トランザクション制御分散合意用pomファイル

51

hmppcto-participant-adapter¥V.R.S

Participantアダプタ用ライブラリ配置ディレクトリ

52

hmppcto-participant-adapter-V.R.S.jar

Participantアダプタ用ライブラリ

53

hmppcto-participant-adapter-V.R.S.module

Participantアダプタ用moduleファイル

54

hmppcto-participant-adapter-V.R.S.pom

Participantアダプタ用pomファイル

55

hmppcto-tp1-bridge ¥V.R.S

TP1-Bridge用ライブラリ配置ディレクトリ

56

hmppcto-tp1-bridge-V.R.S.jar

TP1-Bridge用ライブラリ

57

hmppcto-tp1-bridge-V.R.S.module

TP1-Bridge用moduleファイル

58

hmppcto-tp1-bridge-V.R.S.pom

TP1-Bridge用pomファイル

59

java-projects

HMP-PCTO Javaプロジェクト配置用ディレクトリ

60

mediator

Mediator用Javaプロジェクトディレクトリ

61

src¥main¥java¥jp¥co¥Hitachi¥soft¥hmppcto¥Application.java

Mediator用Javaソースファイル

62

build.gradle

Mediator用build.gradleファイル

63

settings.gradle

Mediator用settings.gradleファイル

64

gradle.properties

Mediator用gradle.propertiesファイル

65

sql-participant

SQL-Participant用Javaプロジェクトディレクトリ

66

src¥main¥java¥jp¥co¥Hitachi¥soft¥hmppcto¥Application.java

SQL-Participant用Javaソースファイル

67

build.gradle

SQL-Participant用build.gradleファイル

68

settings.gradle

SQL-Participant用settings.gradleファイル

69

gradle.properties

SQL-Participant用gradle.propertiesファイル

70

tp1-bridge

TP1-Bridge用Javaプロジェクトディレクトリ

71

src¥main¥java¥jp¥co¥Hitachi¥soft¥hmppcto¥Application.java

TP1-Bridge用Javaソースファイル

72

build.gradle

TP1-Bridge用build.gradleファイル

73

settings.gradle

TP1-Bridge用settings.gradleファイル

74

gradle.properties

TP1-Bridge用gradle.propertiesファイル

75

libs

TP1-Bridge用外部ライブラリ格納ディレクトリ

76

scripts

HMP-PCTOスクリプトファイル配置用ディレクトリ

77

dependency_check.sh

デプロイ依存関係チェックスクリプト

78

health_check.sh

トランザクションヘルスチェックスクリプト

79

wait_transactions.sh

未決着トランザクション待機スクリプト

80

templates

HMP-PCTOテンプレートファイル配置用ディレクトリ

81

container-files

Containerfile配置ディレクトリ

82

tp1-bridge

TP1-Bridge用Containerfile配置ディレクトリ

83

normal

TP1-Bridge用Containerfile配置ディレクトリ（uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合）

84

Containerfile

TP1-Bridge用Containerfile（uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合）

85

patch

TP1-Bridge用Containerfile配置ディレクトリ（uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合）

86

Containerfile

TP1-Bridge用Containerfile（uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合）

87

mediator

Mediator用Containerfile配置ディレクトリ

88

normal

Mediator用Containerfile配置ディレクトリ（uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合）

89

Containerfile

Mediator用Containerfile（uCosminexus Application Runtime with Java for Spring Bootの修正パッチがない場合）

90

patch

Mediator用Containerfile配置ディレクトリ（uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合）

91

Containerfile

Mediator用Containerfile（uCosminexus Application Runtime with Java for Spring Bootの修正パッチがある場合）

92

dependency-checker

Dependency-Checker用Containerfile配置ディレクトリ

93

Containerfile

Dependency-Checker用Containerfile

94

helm-charts

HMP-PCTOHelmチャート配置ディレクトリ

95

mediator-V.R.S.tgz

Mediator用Helmチャートパッケージファイル

96

tp1-bridge-V.R.S.tgz

TP1-Bridge用Helmチャートパッケージファイル

97

filebeat-V.R.S.tgz

FilebeatのHelmチャートのパッケージファイル

98

jaeger-query-V.R.S.tgz

Jaeger-queryのHelmチャートのパッケージファイル

99

jaeger-collector-V.R.S.tgz

Jaeger-collectorのHelmチャートのパッケージファイル

100

prometheus-V.R.S.tgz

PrometheusのHelmチャートのパッケージファイル

101

metricbeat-V.R.S.tgz

MetricbeatのHelmチャートのパッケージファイル

102

elasticsearch-V.R.S.tgz

ElasticsearchのHelmチャートのパッケージファイル

103

logstash-V.R.S.tgz

LogstashのHelmチャートのパッケージファイル

104

bundled-softwares

同梱ソフトウェア配置ディレクトリ

105

EADS-client

Hitachi Elastic Application Data Store Client for Javaインストーラ配置ディレクトリ

106

X64LIN

Hitachi Elastic Application Data Store Client for Javaインストーラ

107

PACK_TAR.Z

Hitachi Elastic Application Data Store Client for Javaの修正パッチ。修正パッチがない場合はこのファイルは提供物に含まない。

108

TP1-Converter

TP1-Converter用ファイル配置ディレクトリ

109

lib

TP1-Converter用ライブラリ配置ディレクトリ

110

tp1converter.war

TP1-Converter用アプリケーションライブラリ

111

usrconf

TP1-Converter用J2EEサーバ定義ファイル配置ディレクトリ

112

usrconf.cfg

J2EEサーバ用オプション定義ファイルのテンプレート

113

usrconf.properties

J2EEサーバ用ユーザプロパティファイルのテンプレート

V.R.Sには、バージョンを設定します。Sは数値に変換します。

（例）

Ver 01-00開発時：1.0.0

Ver 01-02-/A開発時：1.2.1

付録B　HMP-PCTOのメトリクス取得項目

ここでは、HMP-PCTOで取得するメトリクス項目について説明します。

表B‒1　メトリクスのMeter種別

Meter種別

説明

Timer

多数の短時間実行イベント

Counter

単調に増加する値

Gauge

上下する値

MultiGauge

複数のGauge

Prometheusサーバの標準のWeb UIで次のメトリクス項目名をクエリとして入力することでメトリクス情報が画面に出力されます。

表B‒2　HMP-PCTOで取得するメトリクス項目

メトリクス取得項目

説明

Meter種別

単位

system_cpu_usage

システム（Kubernetesの場合、コンテナ環境）のCPU使用率です。

使用率は0.0〜1.0(double型)の範囲で表されます。

Gauge

-

process_cpu_usage

Java VMプロセスのCPU使用率です。

使用率は0.0〜1.0(double型)の範囲で表されます。

Gauge

-

jvm_memory_max_bytes

Java VMで使用できるメモリの最大量です。

Gauge

bytes

jvm_memory_used_bytes

Java VMの使用メモリ量です。

Gauge

bytes

process_files_max_files

ファイル記述子の最大数です。

Gauge

files

process_files_open_files

開いているファイル記述子の数です。

Gauge

files

jvm_gc_memory_allocated_bytes_total

あるGC実施後から、次のGCに実施されたの間での、JavaヒープNew世代領域のメモリプールサイズの増加量です。

Counter

bytes

jvm_gc_memory_promoted_bytes_total

あるGC実施前とGC実施後での、JavaヒープOld世代領域のメモリプールサイズの増加量です。

Counter

bytes

executor_active_threads

アクティブにタスクを実行しているユーザのスレッドのおおよその数です。

Gauge

tasks

executor_queued_tasks

実行待ちのタスクのおおよその数です。

Gauge

tasks

grpc_server_processing_duration_seconds

gRPCサーバが呼び出し完了に掛かった時間

Timer

seconds

grpc_server_processing_duration_seconds_count

grpc_server_processing_duration_seconds_max

grpc_server_processing_duration_seconds_sum

grpc_client_processing_duration_seconds_count

gRPCクライアントが通信完了するまでに掛かった合計時間

Timer

seconds

grpc_client_processing_duration_seconds_max

grpc_client_processing_duration_seconds_sum

hmppcto_participant_transactions_inProcess_operations

処理中のトランザクションブランチ数

MultiGauge

operations

hmppcto_participant_transactions_terminated_operations

完了したトランザクションブランチ数

MultiGauge

operations

hmppcto_participant_transaction_duration_seconds

完了したトランザクションブランチの処理時間の統計情報

Timer

seconds

hmppcto_participant_transaction_duration_seconds_count

hmppcto_participant_transaction_duration_seconds_max

hmppcto_participant_transaction_duration_seconds_sum

hmppcto_participant_transaction_duration_seconds_bucket

hmppcto_asynctask_duration_seconds

HMP-PCTOが内部で非同期で送信する処理の所要時間

Timer

seconds

hmppcto_asynctask_duration_seconds_count

hmppcto_asynctask_duration_seconds_max

hmppcto_asynctask_duration_seconds_sum

hmppcto_asynctask_operations_total

HMP-PCTOが内部で非同期で送信する処理の数

MultiGauge

operations

hmppcto_asynctask_queued_operations

キュー内にあり、まだ実行されていない非同期タスクの数

MultiGauge

operations

hmppcto_mediator_consensus_duration_seconds

ConsensusLogアクセス所要時間

Timer

seconds

hmppcto_mediator_consensus_duration_seconds_bucket

hmppcto_mediator_consensus_duration_seconds_count

hmppcto_mediator_consensus_duration_seconds_max

hmppcto_mediator_consensus_duration_seconds_sum

hmppcto_participant_eads_duration_seconds

EADS APIの所要時間（トライアル版では出力できません）

Timer

seconds

hmppcto_participant_eads_duration_seconds_bucket

hmppcto_participant_eads_duration_seconds_count

hmppcto_participant_eads_duration_seconds_max

hmppcto_participant_eads_duration_seconds_sum

付録C　このマニュアルの参考情報

付録C.1　関連ドキュメント

このマニュアルの関連ドキュメントを次に示します。必要に応じてお読みください。

(1)　取扱説明書

取扱説明書「Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator 01-02　テクニカルガイド」（062469）

次の内容について説明しています。

システムの概要

Orchestrator/Entity-Serviceの機能

SQL-Participantの機能

TCC-Participantの機能

TP1-Bridgeの機能

コンポーネント共通機能

なお、このマニュアルでは、取扱説明書名について次のように省略して表記しています。

取扱説明書名

表記

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator 01-02　テクニカルガイド

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 基盤 サービスプラットフォーム システム構築・運用ガイド

付録C.2　マニュアルで使用している略語

このマニュアルでの表記と正式名称を次の表に示します。

表記

製品名

Amazon EBS

Amazon Elastic Block Store

Amazon EFS

Amazon Elastic File System

EADS

Hitachi Elastic Application Data Store

HMP-ADIF

Hitachi Microservices Platform - Application Distributed Integration Framework

HMP-PCTO

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator

RHEL/UBI 8

Red Hat(R) Universal Base Image 8

Tomcat

Apache Tomcat(R)

付録C.3　英略語

このマニュアルで使用する英略語を次に示します。

英略語

英字での表記

ACID

Atomicity Consistency Isolation Durability

AP

Application Program

API

Application Programming Interface

BLOB

Binary Large OBject

CA

Certification Authority

CLI

Command Line Interface

CN

Common Name

CPU

Central Processing Unit

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

OS

Operating System

PEM

Privacy Enhanced Mail

PV

Persistent Volume

PVC

Persistent Volume Claim

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

付録C.4　KB（キロバイト）などの単位表記について

1KB（キロバイト）、1MB（メガバイト）、1GB（ギガバイト）、1TB（テラバイト）はそれぞれ1,024バイト、1,024²バイト、1,024³バイト、1,024⁴バイトです。

付録D　HMP-PCTOで使用する用語

ここでは、HMP-PCTOで使用する用語について説明します。

表D‒1　用語解説

用語

説明

3/4合意

ThreeQuarters合意のこと

「よんぶんのさんごうい」と呼ぶ

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

TCC-ParticipantはEntity-Serviceの機能の一部を利用しており、TCC-Participant内で利用されているEntity-Serviceの機能をEntity-Moduleと呼ぶ

Entity-Service

データベースなどのリソースの参照、更新業務を行うアプリケーション、およびアプリケーションに組み込んでParticipantと連携するHMP-PCTOのライブラリの総称

Ext Cons

補助合意のこと

External Consensusの略

External Consensus

補助合意のこと

HMP-ADIF

Hitachi Microservices Platform-Application Distributed Integration Frameworkの略称

GlobalLogic社のMicroservices Acceleratorを導入した製品

マイクロサービスアーキテクチャを用いたシステムのアプリケーション開発を容易にするフレームワーク

HMP-PCTO

Hitachi Microservices Platform - Paxos Commit Transaction Orchestratorの略称

ミッションクリティカルシステムにおける分散トランザクション制御を、マイクロサービスアーキテクチャを用いたシステムで容易に実現するフレームワーク

Javaアプリケーション

HMP-PCTOのライブラリを使用しjava言語で作成するユーザアプリケーション

ユーザが作成したアプリケーションで、ユーザ任意の方法でJARファイルにビルドしたもの

JDBC Proxy Driver

アプリケーションやフレームワークからのJDBC Driverのメソッドの呼び出しを、Participantと連携して透過的にベンダネイティブなJDBC Driverに伝えるDriver

Entity-ServiceのHMP-PCTOのライブラリの機能

Kubernetesアプリケーション

Kubernetesクラスタにデプロイして実行するコンテナ化されたアプリケーション

Pod、Deployment、StatefulSetなどのワークロードリソースとして作成したもの

Learner

Consensus Learnerのこと

Mediator

Paxos Commitで、トランザクション制御を行うための構成要素の一つであり、Consensus AcceptorおよびTermination Judgeの機能を持つ

Consensus AcceptorおよびTermination Judgeは、ParticipantのTermination ProposerおよびConsensus Learnerと連動してクウォーラム型分散合意を実現する

Orchestrator

Clientシステムからの要求を受け付けて、Entity-Serviceを利用して業務を実行するアプリケーション、およびアプリケーションに組み込んでMediator、Entity-Serviceと連携するHMP-PCTOのライブラリの総称

Participant

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の性能を評価するための情報を取得する

SQL-Adapter

JDBC Driverを介してSQLを実行する

XAインタフェース（xa_start、xa_end、xa_prepare、xa_commit、xa_rollback、およびxa_recover）を使用してRDBMSに接続し、リソースを管理する

SQL-Participant

X/OpenのXA仕様に準拠したParticipant

SQL-AdapterおよびTx+Paxos-Managerによって構成される

TCC

REST APIサービスに対する分散トランザクションの設計パターンの一つ

Try、Confirm、Cancelの機能を持つ。これらの頭文字からTCCと呼ばれる

TCC-Participant

TCCパターンを利用したParticipant

Try、Confirm、Cancel、Recoverに対応したインタフェースを提供し、ユーザが実装することでリソースの管理を行う

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のサービスの呼び出しを橋渡しする機能

Entity-Service、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および関連するソフトウェアのファイルなどを、コンテナイメージとしてビルドしたもの

ルートXID（RootXID）

XIDのうち、グローバルトランザクションの基底となる識別子

X/Openトランザクション識別子XID構造のJavaマッピングのGlobalTransactionIdに相当する

高速合意

補助合意不要で一貫した合意結果を獲得すること

分散合意（機能）

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の補助合意の試行（補助合意可否の判定および補助合意リトライ）間隔タイマ

索引

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]

applicable(java.lang.String communicationType)メソッド〔TxPropagationIscImperativePluginクラス〕[1]

atomic_updateオペランド〔OpenTP1システムサービス定義のHMP-PCTOのトランザクションに参加するSPPのユーザサービス定義〕[1]

available()メソッド〔PctoInputStreamクラス〕[1]

B

branch.qualifier.listパラメタ〔Entity-Service/Entity-Module〕[1]

branch.qualifier.listパラメタ〔Orchestrator〕[1]

branch.qualifier.propagation-orderパラメタ〔Entity-Service/Entity-Module〕[1]

branch.qualifier.propagation-orderパラメタ〔Orchestrator〕[1]

C

client.proposer.typeパラメタ〔Entity-Service/Entity-Module〕[1]

close()メソッド〔PctoConnectionクラス〕[1]

close()メソッド〔PctoInputStreamクラス〕[1]

close()メソッド〔PctoReaderクラス〕[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.connectTimeパラメタ〔TP1-Bridge〕[1]

converter.hostパラメタ〔TP1-Bridge〕[1]

converter.portパラメタ〔TP1-Bridge〕[1]

converter.watchTimeパラメタ〔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パラメタ〔Prometheus〕[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パラメタ〔Metricbeat〕[1]

dependencyCheck.enabledパラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[1]

dependencyCheck.retryIntervalSecondsパラメタ〔TP1-Bridge〕[1]

dependencyCheck.targetsパラメタ〔Ext-Cons〕[1]

dependencyCheck.targetsパラメタ〔Mediator〕[1]

dependencyCheck.targetsパラメタ〔TP1-Bridge〕[1]

driver-class-nameパラメタ〔Entity-Service/Entity-Module〕[1]

E

eads.cache.disk.filenumパラメタ〔EADS〕[1]

eads.cache.disk.filesizeパラメタ〔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.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.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]

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]

getOrder()メソッド〔TxPropagationIscImperativePluginクラス〕[1]

getQueryTimeout()メソッド〔PctoStatementクラス〕[1]

getResultSet()メソッド〔PctoStatementクラス〕[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.intervalパラメタ〔Mediator〕[1]

grpc.keepalive. intervalパラメタ〔Orchestrator〕[1]

grpc.keepalive. intervalパラメタ〔SQL-Participant〕[1]

grpc.keepalive. intervalパラメタ〔TCC-Participant〕[1]

grpc.keepalive.intervalパラメタ〔TP1-Bridge〕[1]

grpc.keepalive.timeoutパラメタ〔Mediator〕[1]

grpc.keepalive.timeoutパラメタ〔Orchestrator〕[1]

grpc.keepalive.timeoutパラメタ〔SQL-Participant〕[1]

grpc.keepalive.timeoutパラメタ〔TCC-Participant〕[1]

grpc.keepalive.timeoutパラメタ〔TP1-Bridge〕[1]

grpc.portパラメタ〔Mediator〕[1]

grpc.portパラメタ〔TP1-Bridge〕[1]

grpc.server.queueSizeパラメタ〔Mediator〕[1]

grpc.server.threadPoolSizeパラメタ〔Mediator〕[1]

grpc.tls.client.client-auth.certificateパラメタ〔Orchestrator〕[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パラメタ〔Orchestrator〕[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パラメタ〔Orchestrator〕[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.server.client-auth.passwordパラメタ〔SQL-Participant〕[1]

grpc.tls.server.client-auth.passwordパラメタ〔TCC-Participant〕[1]

grpc.tls.server.client-auth.storeパラメタ〔SQL-Participant〕[1]

grpc.tls.server.client-auth.storeパラメタ〔TCC-Participant〕[1]

grpc.tls.server.server-auth.certificateパラメタ〔SQL-Participant〕[1]

grpc.tls.server.server-auth.certificateパラメタ〔TCC-Participant〕[1]

grpc.tls.server.server-auth.keyパラメタ〔SQL-Participant〕[1]

grpc.tls.server.server-auth.keyパラメタ〔TCC-Participant〕[1]

grpc.tls.session.cacheSizeパラメタ〔Mediator〕[1]

grpc.tls.session.cacheSizeパラメタ〔TP1-Bridge〕[1]

grpc.tls.session.cache-sizeパラメタ〔Orchestrator〕[1]

grpc.tls.session.cache-sizeパラメタ〔SQL-Participant〕[1]

grpc.tls.session.cache-sizeパラメタ〔TCC-Participant〕[1]

grpc.tls.session.timeoutパラメタ〔Mediator〕[1]

grpc.tls.session.timeoutパラメタ〔Orchestrator〕[1]

grpc.tls.session.timeoutパラメタ〔SQL-Participant〕[1]

grpc.tls.session.timeoutパラメタ〔TCC-Participant〕[1]

grpc.tls.session.timeoutパラメタ〔TP1-Bridge〕[1]

grpc.useTlsパラメタ〔Mediator〕[1]

grpc.useTlsパラメタ〔TP1-Bridge〕[1]

grpc.use-tlsパラメタ〔Orchestrator〕[1]

grpc.use-tlsパラメタ〔SQL-Participant〕[1]

grpc.use-tlsパラメタ〔TCC-Participant〕[1]

grpc.watchtimeパラメタ〔Entity-Service/Entity-Module〕[1]

grpc.watchtimeパラメタ〔Mediator〕[1]

grpc.watchtimeパラメタ〔Orchestrator〕[1]

grpc.watchtimeパラメタ〔SQL-Participant〕[1]

grpc.watchtimeパラメタ〔TCC-Participant〕[1]

grpc.watchtimeパラメタ〔TP1-Bridge〕[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パラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[1]

imageパラメタ〔TP1-Bridge〕[1]

init.modeパラメタ〔Entity-Service/Entity-Module〕[1]

instance-idパラメタ〔Orchestrator〕[1]

intercept(org.springframework.http.HttpRequest request, byte[] body, org.springframework.http.client.ClientHttpRequestExecution execution)メソッド〔TxPropagationRestTemplateInterceptorクラス〕[1]

isClosed()メソッド〔PctoResultSetクラス〕[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

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.cpuパラメタ〔Prometheus〕[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]

limits.memoryパラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[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.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パラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[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.successThresholdパラメタ〔Prometheus〕[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パラメタ〔Prometheus〕[1]

livenessProbe.timeoutSecondsパラメタ〔TP1-Bridge〕[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

mark(int readAheadLimit)メソッド〔PctoReaderクラス〕[1]

mark(int readlimit)メソッド〔PctoInputStreamクラス〕[1]

markSupported()メソッド〔PctoInputStreamクラス〕[1]

markSupported()メソッド〔PctoReaderクラス〕[1]

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]

N

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パラメタ〔Prometheus〕[1]

namespaceパラメタ〔TP1-Bridge〕[1]

next()メソッド〔PctoResultSetクラス〕[1]

nodes.hostnamesパラメタ〔Filebeat〕[1]

P

participant.sender.queueSizeパラメタ〔Mediator〕[1]

participant.sender.threadPoolSizeパラメタ〔Mediator〕[1]

passwordパラメタ〔Entity-Service/Entity-Module〕[1]

pd_max_usersオペランド〔HiRDB〕[1]

portパラメタ〔SQL-Participant〕[1]

portパラメタ〔TCC-Participant〕[1]

postExecute(IscImperativeCommandExecutionPluginContext pluginContext, IscImperativeCommand command)メソッド〔TxPropagationIscImperativePluginクラス〕[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]

preExecute(IscImperativeCommandExecutionPluginContext pluginContext, IscImperativeCommand command)メソッド〔TxPropagationIscImperativePluginクラス〕[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]

prometheus.remoteWrite.queue.capacityパラメタ〔Prometheus〕[1]

prometheus.remoteWrite.queue.maxSamplesPerSendパラメタ〔Prometheus〕[1]

prometheus.remoteWrite.queue.maxShardsパラメタ〔Prometheus〕[1]

prometheus.scrape.intervalパラメタ〔Prometheus〕[1]

prometheus.storage.retentionTimeパラメタ〔Prometheus〕[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]

read()メソッド〔PctoInputStreamクラス〕[1]

read()メソッド〔PctoReaderクラス〕[1]

read(byte[] b, int off, int len)メソッド〔PctoInputStreamクラス〕[1]

read(byte[] b)メソッド〔PctoInputStreamクラス〕[1]

read(char[] cbuf, int off, int len)メソッド〔PctoReaderクラス〕[1]

read(char[] cbuf)メソッド〔PctoReaderクラス〕[1]

read(CharBuffer target)メソッド〔PctoReaderクラス〕[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.failureThresholdパラメタ〔Prometheus〕[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.initialDelaySecondsパラメタ〔Prometheus〕[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.periodSecondsパラメタ〔Prometheus〕[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.successThresholdパラメタ〔Prometheus〕[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]

readinessProbe.timeoutSecondsパラメタ〔Prometheus〕[1]

ready()メソッド〔PctoReaderクラス〕[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]

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.cpuパラメタ〔Prometheus〕[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]

requests.memoryパラメタ〔Prometheus〕[1]

reset()メソッド〔PctoInputStreamクラス〕[1]

reset()メソッド〔PctoReaderクラス〕[1]

resourcesパラメタ〔Mediator〕[1]

resourcesパラメタ〔TP1-Bridge〕[1]

roleパラメタ〔Elasticsearch〕[1]

rpc_max_message_sizeオペランド〔OpenTP1システムサービス定義のシステム共通定義〕[1]

S

scrapeNamespace.entityパラメタ〔Prometheus〕[1]

scrapeNamespace. jaegercollectorパラメタ〔Prometheus〕[1]

scrapeNamespace.mediatorパラメタ〔Prometheus〕[1]

scrapeNamespace.orchestratorパラメタ〔Prometheus〕[1]

scrapeNamespace.sqlparticipantパラメタ〔Prometheus〕[1]

scrapeNamespace.tccparticipantパラメタ〔Prometheus〕[1]

scrapeNamespace.tp1bridgeパラメタ〔Prometheus〕[1]

scrapePort.entityパラメタ〔Prometheus〕[1]

scrapePort.mediatorパラメタ〔Prometheus〕[1]

scrapePort.orchestratorパラメタ〔Prometheus〕[1]

scrapePort.sqlparticipantパラメタ〔Prometheus〕[1]

scrapePort.tccparticipantパラメタ〔Prometheus〕[1]

scrapePort.tp1bridgeパラメタ〔Prometheus〕[1]

server.tomcat.maxSwallowSizeパラメタ〔TP1-Bridge〕[1]

server.tomcat.threads.maxパラメタ〔TP1-Bridge〕[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]

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]

skip(long n)メソッド〔PctoInputStreamクラス〕[1]

skip(long n)メソッド〔PctoReaderクラス〕[1]

sql.app.portパラメタ〔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.pathパラメタ〔SQL-Participant〕[1]

sql.mediator.portパラメタ〔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.max-pool-sizeパラメタ〔SQL-Participant〕[1]

sql.pool.transaction-timeout-in-secパラメタ〔SQL-Participant〕[1]

sql.transaction-termination.consensus.replay-interval-in-millisパラメタ〔SQL-Participant〕[1]

sql.transaction-termination.timeout-in-millisパラメタ〔SQL-Participant〕[1]

sql.xa-server-nameパラメタ〔SQL-Participant〕[1]

supportsMultipleResultSets()メソッド〔PctoDatabaseMetaDataクラス〕[1]

sysctlVmMaxMapCountパラメタ〔Elasticsearch〕[1]

T

tcc.consensus.interval-in-millisパラメタ〔TCC-Participant〕[1]

tcc.mediator.portパラメタ〔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.trn-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パラメタ〔Prometheus〕[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.dirパラメタ〔uCosminexus Application Serverのusrconf.properties〕[1]

tp1.mediator.portパラメタ〔TP1-Bridge〕[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]

tp1.xaServerNameパラメタ〔TP1-Bridge〕[1]

tracing.batchSizeパラメタ〔Mediator〕[1]

tracing.batchSizeパラメタ〔TP1-Bridge〕[1]

tracing.batch-sizeパラメタ〔共通〕[1]

tracing.delayTimeパラメタ〔Mediator〕[1]

tracing.delayTimeパラメタ〔TP1-Bridge〕[1]

tracing.delay-timeパラメタ〔共通〕[1]

tracing.instanceIdパラメタ〔Mediator〕[1]

tracing.instanceIdパラメタ〔TP1-Bridge〕[1]

tracing.instance-idパラメタ〔共通〕[1]

tracing.queueSizeパラメタ〔Mediator〕[1]

tracing.queueSizeパラメタ〔TP1-Bridge〕[1]

tracing.queue-sizeパラメタ〔共通〕[1]

tracing.traceUseパラメタ〔Mediator〕[1]

tracing.traceUseパラメタ〔TP1-Bridge〕[1]

tracing.trace-useパラメタ〔共通〕[1]

tracing.urlパラメタ〔Mediator〕[1]

tracing.urlパラメタ〔TP1-Bridge〕[1]

tracing.urlパラメタ〔共通〕[1]

trn_xar_useオペランド〔OpenTP1システムサービス定義のトランザクションサービス定義〕[1]

typeパラメタ〔Entity-Service/Entity-Module〕[1]

U

ucars.enabledパラメタ〔Mediator〕[1]

ucars.snapshots.claimNameパラメタ〔Mediator〕[1]

ucars.snapshots.claimNameパラメタ〔TP1-Bridge〕[1]

urlパラメタ〔Entity-Service/Entity-Module〕[1]

user connectionsオプション〔SQL Server〕[1]

usernameパラメタ〔Entity-Service/Entity-Module〕[1]

W

wasNull()メソッド〔PctoCallableStatementクラス〕[1]

wasNull()メソッド〔PctoResultSetクラス〕[1]

webserver.connector.nio_http.keep_alive.max_requestsパラメタ〔uCosminexus Application Serverのusrconf.properties〕[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]