Hitachi

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


8.5.3 スケジューラダイレクト機能を使用したRPC

TP1/Client/J,TP1/Server Baseからコンテナ内外のTP1/Server Baseへスケジューラダイレクト機能を使用したRPCができます。システム形態に応じてTP1/Client/J,TP1/Server Baseの定義設定,およびServiceの設定を行ってください。

また,dchostオペランドやdcsvgdefコマンドに指定する通信先のホスト名は,通信先のTP1/Server Baseに指定したipc_response_hostオペランドの値と一致させる必要があります。

〈この項の構成〉

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

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

[図データ]

(a) TP1/Client/J環境定義の設定【①TP1/Client/J】

TP1/Client/Jインスタンスごとに,次のTP1/Client/J環境定義を設定してください。

表8‒19 TP1/Client/J環境定義の設定

#

オペランド名

設定内容

補足

1

dccltcuprcvport

CUPの電文受信で使用するポート番号

この構成では必ずdccltcuprcvportオペランドを設定してください。

2

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

rpcCallメソッドを発行する場合

  • ホスト名:スケジュールサービス用のServiceが存在するホスト名

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

rpcCallToメソッドを発行する場合,このオペランドの設定は不要です。

rpcCallToメソッドを使用する場合は,左記のホスト名を設定したDCRpcBindTblオブジェクトを作成してから,rpcCallToメソッドを発行してください。

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

3

dcnotifyreshost

Y

詳細は,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」を参照してください。

4

dcresponsehost

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

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

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

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

#

定義名

オペランド名

設定内容

補足

1

スケジュールサービス定義

scd_port

スケジュールサービスのポート番号

2

システム共通定義

ipc_notify_response_host

Y

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

3

ipc_response_host

TP1/Client/Jに通知する,②TP1/Server Baseの電文受信用のホスト名

(凡例)

−:該当しません

(c) 図中③Serviceの設定

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

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

TP1/Client/Jからスケジューラダイレクト機能を使用する場合は,Serviceのspec.ports.nodePortに対して接続してください。

(d) 図中④Serviceの設定

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

コンテナ内の①TP1/Client/Jで,dccltcuprcvportオペランドに指定したポート番号を,Serviceのspec.ports.targetPortおよびspec.ports.nodePortに設定してください。

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

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

[図データ]

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

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

表8‒21 システム定義の設定【①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

ユーザサービスネットワーク定義

dcsvgdef -hホスト名-p ポート番号

dc_rpc_call関数を発行する場合

  • ホスト名:スケジュールサービス用のServiceが存在するホスト名

  • ポート番号:

③Serviceのspec.ports.targetPortに対応するspec.ports.nodePort

dc_rpc_call_to関数を発行する場合,このオペランドの設定は不要です。

dc_rpc_call_to関数を使用する場合は,DCRPC_DIRECT_SCHEDULE関数で左記ホスト名を設定し,DCRPC_BINDING_TBL構造体を作成してからdc_rpc_call_to関数を発行してください。

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

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

表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定してください。

(c) 図中③Serviceの設定

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

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

TP1/Server Baseからスケジューラダイレクト機能を使用する場合は,Serviceのspec.ports.targetPortに対応するspec.ports.nodePortに対して接続してください。

(d) 図中④Serviceの設定

コンテナ内の①TP1/Server Baseでscd_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の作成」を参照してください。

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

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

[図データ]

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

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

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

#

定義名

オペランド名

設定内容

補足

1

システム共通定義

ipc_notify_response_host

Y

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

2

ipc_response_host

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

3

ユーザサービスネットワーク定義

dcsvgdef -hホスト名-p ポート番号

dc_rpc_call関数を発行する場合

  • ホスト名:スケジュールサービス用のServiceが存在するホスト名

  • ポート番号:

③Serviceのspec.ports.targetPortに対応するspec.ports.nodePort

dc_rpc_call_to関数を発行する場合,このオペランドの設定は不要です。

dc_rpc_call_to関数を使用する場合は,DCRPC_DIRECT_SCHEDULE関数で左記ホスト名を設定し,DCRPC_BINDING_TBL構造体を作成してからdc_rpc_call_to関数を発行してください。

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

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

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

表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定してください。

(c) 図中③Serviceの設定

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

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

TP1/Server Baseからスケジューラダイレクト機能を使用する場合は,Serviceのspec.ports.targetPortに対応するspec.ports.nodePortに対して接続してください。

(4) コンテナ内のTP1/Client/JとTP1/Server Base間のRPC

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

[図データ]

(a) TP1/Client/J環境定義の設定【①TP1/Client/J】

次のTP1/Client/J環境定義を設定してください。

表8‒23 TP1/Client/J環境定義の設定

#

オペランド名

設定内容

補足

1

dccltcuprcvport

CUPの電文受信で使用するポート番号

この構成では必ずdccltcuprcvportオペランドを設定してください。

2

dcnotifyreshost

Y

詳細は,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」を参照してください。

3

dcresponsehost

TP1/Server Baseに通知する,応答電文受信用のServiceが存在するホスト名

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

表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定してください。

(c) Serviceの設定

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

コンテナ内の①TP1/Client/Jで,dccltcuprcvportオペランドに指定したポート番号を,Serviceのspec.ports.targetPortおよびspec.ports.nodePortに設定してください。

(5) TP1/Client/Jとコンテナ内のTP1/Server Base間のRPC

図8‒11 TP1/Client/JとTP1/Server Base間のRPC

[図データ]

(a) TP1/Client/J環境定義の設定【TP1/Client/J】

次のTP1/Client/J環境定義を設定してください。

表8‒24 TP1/Client/J環境定義の設定

#

オペランド名

設定内容

補足

1

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

rpcCallメソッドを発行する場合

  • ホスト名:スケジュールサービス用のServiceが存在するホスト名

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

rpcCallToメソッドを発行する場合,このオペランドの設定は不要です。

通信先指定RPCを使用する場合は,左記のホスト名を設定したDCRpcBindTblオブジェクトを作成してから,rpcCallToメソッドを発行してください。

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

2

dcnotifyreshost

Y

詳細は,マニュアル「OpenTP1 クライアント使用の手引 TP1/Client/J編」を参照してください。

3

dcresponsehost

TP1/Server Baseに通知する,応答電文受信用のServiceが存在するホスト名

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

表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定し,スケジュールサービス用のServiceを作成してください。

(c) 図中③Serviceの設定

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

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

TP1/Client/Jからスケジューラダイレクト機能を使用する場合は,Serviceのspec.ports.targetPortに対応するspec.ports.nodePortに対して接続してください。

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

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

[図データ]

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

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

表8‒25 システム定義の設定【①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に通知する,応答電文受信用のServiceが存在するホスト名

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

表8-20 システム定義の設定【②TP1/Server Base】」に示すオペランドを設定してください。

(c) 図中③Serviceの設定

コンテナ内の①TP1/Server Baseでscd_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の作成」を参照してください。