Hitachi

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


7.2.4 SQL-Participant

SQL-Participantのパラメタについて説明します。

〈この項の構成〉

(1) serverのパラメタ

各パラメタの接頭辞は、serverです。

表7‒7 SQL-Participantのserverのパラメタ

パラメタ

説明

設定範囲

デフォルト値

port

SQL-Participant用ポート番号を設定してください。

動的ポートなど、ほかのポートと重ならないように設定してください。

Integer

1024-65535

なし。

必ず指定してください。

(2) jp.co.Hitachi.soft.hmppctoのパラメタ

各パラメタの接頭辞は、jp.co.Hitachi.soft.hmppctoです。

表7‒8 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を指定した場合は、コネクションプールの空き待ちを行いません。

トランザクションブランチの処理時間(業務要件)に応じたタイマ監視時間であるsql.transaction-termination.timeout-in-millisのパラメタより大きい値を指定してください。

空きがなかった場合、このパラメタに指定した時間だけコネクションの空きを待ちます。空き待ちを行わない、または待ち時間内にコネクションの空きができなかった場合はエラーとなり、JDBC Proxy Driverを使用してコネクションの取得を実行したAPに例外を送出します。

Long

0-65535000

61000

sql.pod.service-name

SQL-Participantを構成するPodを定義したKubernetesのServiceのService名とネームスペース名を「.」でつないだ形式で設定します。

このパラメタには、Mediatorからホスト名として認識できる値を設定する必要があります。

設定例:

name.namespace

String

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からロードするデータソースのクラス名を設定します。

例えば、PostgreSQL JDBC DriverのPostgreSQLデータソースを使用する場合は次の形式で指定します。

設定例:

org.postgresql.xa.PGXADataSource

String

なし。

必ず指定してください。

sql.datasource.property.values

JDBC Driverからロードしたデータソースに設定するプロパティの名前と値を「=」でつないだ形式で指定します。複数のプロパティを指定する場合はsql.datasource.property.delimiterで設定した値で区切って設定してください。

データソースに設定するプロパティには、次の値を指定しないでください。

  • =

  • sql.datasource.property.delimiterで設定した値

設定例:

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の値として使用します。

String

なし。

必ず指定してください。

sql.datasource.property.delimiter

sql.datasource.property.valuesで複数のプロパティを指定した場合の区切りとなる文字を設定します。

String

「=」以外の1バイトの文字

; (半角セミコロン)

sql.pool.max-pool-size

SQL-ParticipantがコネクションプールにプールするDBコネクションの数を設定します。

SQL-Participant起動時にこのパラメタに指定した数のDBコネクションがプールされます。

SQL-Participantが使用するDBコネクションの数がこのパラメタに指定したサイズを超えた場合、コネクションプールの空き待ちになります。

データベースの同時接続数以下、かつ同時実行するトランザクション数以上の値を指定してください。

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

トランザクション分散合意インターバルタイマのタイマ監視時間をミリ秒単位で設定します。

このタイマは、トランザクション決着監視タイマのタイムアウトによるトランザクション決着処理をリプレイ(再実行)、またはSQL-Participantダウンからの再起動時にトランザクション決着処理をリプレイ(再実行)する際に設定し、該当する時間を超えてもトランザクションが決着しなかった場合に、DBの排他ロック解除のためにトランザクションを決着に向かわせるタイマです。

このタイマを短く設定することで、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×t

m:トランザクションに参加するMediator数

p:トランザクションに参加するParticipant数

t:同時実行するトランザクション数

Integer

1-2147483647

25

sql.db-type

SQL-Participantが接続するRDBMSを指定します。

String

PostgreSQL

なし。

必ず指定してください。

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

(凡例)−:該当しません。