Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 解説


8.5.2 ネームサービスを使用したRPC

all_nodeオペランドに指定するホスト名には,Kubernetesのマスターノードまたは,ワーカーノードを指定できます。マスターノードを指定する場合は,OpenTP1システム内のすべてのTP1/Server Baseの設定をマスターノードで統一してください。

ワーカーノードを指定する場合は,各TP1/Server BaseでKubernetesクラスタ内の任意のワーカーノードを設定してください。

また,all_nodeオペランドに指定するホスト名は,ほかのTP1/Server Baseに指定するipc_response_hostオペランドの値と一致させる必要があります。

〈この項の構成〉

(1) コンテナ内のTP1/Server Base間のRPC

図8‒4 コンテナ内のTP1/Server Base間のRPC

[図データ]

(a) システム定義の設定【①TP1/Server Base】

次のシステム定義を設定してください。

表8‒16 システム定義の設定【①TP1/Server Base】

#

定義名

オペランド名

設定内容

補足

1

システム共通定義

rpc_port_base

30000以降のポート番号

8.6.4 Serviceの作成」を参照し,ほかのPodの使用範囲と重複しないポート番号をrpc_port_baseに設定してください。

2

ipc_notify_response_host

Y

詳細は,マニュアル「OpenTP1 システム定義」を参照してください。

3

ipc_response_host

通信先ノードのTP1/Server Baseに通知する,応答電文受信用のホスト名

4

all_node=ホスト名:ポート番号

  • ホスト名:ネームサービス用のServiceが存在するホスト名

  • ポート番号:③Serviceのspec.ports.targetPortに対応するspec.ports.nodePort

Kubernetesクラスタ内のどれかのKubernetesノードのホスト名を設定してください。

また,ホスト名は②TP1/Server Baseのipc_response_hostオペランドの値と一致させてください。

(b) システム定義の設定【②TP1/Server Base】

表8-16 システム定義の設定【①TP1/Server Base】」に示すオペランドを設定してください。all_nodeオペランドに指定するポート番号(相手ノードのname_portオペランドに指定したポート番号)はOpenTP1システム内でユニークな値に設定する必要があります。

(c) 図中③Serviceの設定

コンテナ内のTP1/Server BaseへRPCする場合は,Serviceを作成してください。

コンテナ内の②TP1/Server Baseでname_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。

(d) 図中④Serviceの設定

コンテナ内の①TP1/Server Baseでname_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。

また,コンテナ内のTP1/Server Baseからコンテナ内のTP1/Server BaseにRPCする場合は,応答電文を受信するためのServiceを作成してください。

コンテナ内の①TP1/Server Baseで,応答電文を受信するためのポート番号をServiceのspec.ports.targetPortに設定してください。

応答電文の受信にはエフェメラルポートを使用するため,「8.6.4 Serviceの作成」で求めたエフェメラルポート数分のポートをServiceに設定する必要があります。

Serviceへ設定が必要なポート番号の見積方法については,「8.6.4 Serviceの作成」を参照してください。

(2) TP1/Server Baseとコンテナ内のTP1/Server Base間のRPC

図8‒5 TP1/Server Baseとコンテナ内のTP1/Server Base間のRPC

[図データ]

(a) システム定義の設定【①TP1/Server Base】

次のシステム定義を設定してください。

表8‒17 システム定義の設定【①TP1/Server Base】

#

定義名

オペランド名

設定内容

補足

1

システム共通定義

ipc_notify_response_host

Y

詳細は,マニュアル「OpenTP1 システム定義」を参照してください。

2

ipc_response_host

通信先ノードのTP1/Server Baseに通知する,応答電文受信用のホスト名

3

all_node=ホスト名:ポート番号

  • ホスト名:ネームサービス用のServiceが存在するホスト名

  • ポート番号:③Serviceのspec.ports.targetPortに対応するspec.ports.nodePort

図①TP1/Server Base:

Kubernetesクラスタ内のどれかのKubernetesノードのホスト名を設定してください。

また,ホスト名は②TP1/Server Baseのipc_response_hostオペランドの値と一致させてください。

なお,指定するホスト名には①TP1/Server Baseが起動するホストのホスト名を指定しないでください。指定した場合dc_rpc_call関数が失敗します。

図②TP1/Server Base:

①TP1/Server Baseが起動するホストのホスト名を設定してください。

また,ホスト名は①TP1/Server Baseのipc_response_hostオペランドの値と一致させてください。

(b) システム定義の設定【②TP1/Server Base】

表8-17 システム定義の設定【①TP1/Server Base】」に示すオペランドを設定してください。all_nodeオペランドに指定するポート番号(相手ノードのname_portオペランドに指定したポート番号)はOpenTP1システム内でユニークな値に設定する必要があります。

(c) 図中③Serviceの設定

コンテナ内のTP1/Server BaseへRPCする場合は,Serviceを作成してください。

コンテナ内の②TP1/Server Baseでname_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。

(3) コンテナ内のTP1/Server BaseとTP1/Server Base間のRPC

図8‒6 コンテナ内のTP1/Server BaseとTP1/Server Base間のRPC

[図データ]

(a) システム定義の設定【①TP1/Server Base】

次のシステム定義を設定してください。

表8‒18 システム定義の設定【①TP1/Server Base】

#

定義名

オペランド名

設定内容

補足

1

システム共通定義

rpc_port_base

30000以降のポート番号

8.6.4 Serviceの作成」を参照し,ほかのPodの使用範囲と重複しないポート番号をrpc_port_baseに設定してください。

2

ipc_notify_response_host

Y

詳細は,マニュアル「OpenTP1 システム定義」を参照してください。

3

ipc_response_host

通信先ノードのTP1/Server Baseに通知する,応答電文受信用のホスト名

4

all_node=ホスト名:ポート番号

図①TP1/Server Base:

  • ホスト名:②TP1/Server Baseが起動するホストのホスト名

  • ポート番号:②TP1/Server Baseのname_port

図②TP1/Server Base:

  • ホスト名:ネームサービス用のServiceが存在するホスト名

  • ポート番号:③Serviceのpec.ports.targetPortに対応するspec.ports.nodePort

図②TP1/Server Baseで指定するホスト名はKubernetesクラスタ内のどれかのKubernetesノードのホスト名を設定してください。

また,ホスト名は①TP1/Server Baseのipc_response_hostオペランドの値と一致させてください。

(b) システム定義の設定【②TP1/Server Base】

表8-18 システム定義の設定【①TP1/Server Base】」に示すオペランドを設定してください。all_nodeオペランドに指定するポート番号(相手ノードのname_portオペランドに指定したポート番号)はOpenTP1システム内でユニークな値に設定する必要があります。

(c) 図中③Serviceの設定

コンテナ内の①TP1/Server Baseでname_portオペランドに設定したポート番号と同じポート番号をServiceのspec.ports.targetPortに設定してください。

また,コンテナ内のTP1/Server Baseからコンテナ外のTP1/Server BaseにRPCする場合は,応答電文を受信するためのServiceを作成してください。

コンテナ内の①TP1/Server Baseで,応答電文を受信するためのポート番号をServiceのspec.ports.targetPortに設定してください。

応答電文の受信にはエフェメラルポートを使用するため,「8.6.4 Serviceの作成」で求めた数のエフェメラルポートをServiceに設定する必要があります。

Serviceへ設定が必要なポート番号の見積方法については,「8.6.4 Serviceの作成」を参照してください。