OpenTP1は,サービス要求処理の負荷を分散して各ノードに振り分けています。
この負荷分散をノード間負荷バランスといいます。
ノード間負荷バランス機能を使用するには,次の条件を満たしている必要があります。
ノード間負荷バランス機能を使用する際の運用形態には,次の二つがあります。
ノード間負荷バランスを使用する場合は,次のように定義します。
表3-6 ノード間負荷バランスを使用する場合の定義
ノード間負荷バランスの運用形態 | 種別 | 定義内容 |
---|---|---|
サーバ側の判断で負荷分散を行う | サーバ (TP1/Server Base) | スケジュールサービス定義
|
クライアント (TP1/Client/P,TP1/Client/W) | クライアント環境定義
| |
クライアント側の判断で負荷分散を行う (クライアントにTP1/Client/P,TP1/Client/Wを使用) | サーバ (TP1/Server Base) | スケジュールサービス定義
|
クライアント (TP1/Client/P,TP1/Client/W) | クライアント環境定義
| |
クライアント側の判断で負荷分散を行う (クライアントにTP1/Server Baseを使用) | サーバ (TP1/Server Base) | スケジュールサービス定義
|
クライアント (TP1/Server Base) |
スケジュールサービス定義でscd_announce_server_status=Yを指定すると,OpenTP1は,30秒以上の任意の間隔でサーバの負荷状態をすべてのノードに通知します。OpenTP1は,サービス要求処理をサーバの負荷状態に応じたノードを選択してスケジュールします。
scd_announce_server_status=Nを指定した場合は,サーバの負荷状態はほかのノードに通知されません。したがって,OpenTP1はランダムにノードを選択してサーバをスケジュールします。
scd_announce_server_statusオペランドの指定は,分散環境を構成するすべてのノードで同じにしてください。指定が異なると,特定のノードに負荷が集中します。
次に示す両方の条件に該当する場合は,scd_announce_server_status=Nを指定してください。
この場合,ノード間負荷バランスをする必要はありません。したがって,そのほかのノードにサーバの負荷状態を通知する必要もありません。scd_announce_server_status=Yを指定すると,サーバの負荷状態を通知するために回線を使用します。サーバが一つのノードだけで起動されている場合は,そのすべてのノードでscd_announce_server_status=Nを指定して,サーバの負荷状態の通知を抑止してください。
ノード間負荷バランスでは,サーバが自ノードにあっても,必ず自ノードにスケジュールされるとは限りません。
要求されたサーバが自ノードにある場合に,自ノードのサーバを優先してスケジュールするときは,スケジュールサービス定義でscd_this_node_first=Yを指定してください。ただし,要求されたサーバが自ノードにない場合,自ノードのサーバが過負荷状態や閉塞状態などでスケジュールできない場合は,ほかのノードにスケジュールします。
ノード間の通信を少なくしたいシステムに有効です。
scd_announce_server_statusオペランドとscd_this_node_firstオペランドの組み合わせを次の表に示します。
表3-7 scd_announce_server_statusとscd_this_node_firstオペランドの組み合わせ
オペランド | scd_announce_server_status | ||
---|---|---|---|
Y | N | ||
scd_this_node_first | Y | サーバの負荷状態をほかのノードに通知します。負荷を考慮したノード間ロードバランスになりますが,自ノードにあるサーバが優先されます。 | サーバの負荷状態をほかのノードに通知しません。ランダムに選択されたノードのサーバにスケジュールされます。自ノードにサーバがある場合で,スケジュールできるときは,自ノードにスケジュールされます。 |
N | サーバの負荷状態をほかのノードに通知します。負荷を考慮したノード間ロードバランスになります。スケジュール可能な負荷の低いサーバのノードにスケジュールされます。 | サーバの負荷状態をほかのノードに通知しません。ランダムに選択されたノードのサーバにスケジュールされます。自ノードのサーバでも,自ノードにスケジュールされない場合があります。 |
ノード間負荷バランスをほかの機能と組み合わせて使用する場合の動作を次の表に示します。
表3-8 ノード間負荷バランスとほかの機能との組み合わせ
組み合わせる機能 | ノード間負荷バランスの 使用形態 | 動作 |
---|---|---|
TP1/Clientで常設コネクション |
| TP1/Server Base側のCUP実行プロセスが,常設コネクションを張ったノードでRPCを行うため,ノード間負荷バランスは,「クライアント側の判断で負荷分散を行う(クライアントにTP1/Server Baseを使用)」と同じ結果になります。 |
TP1/Clientでトランザクション制御API |
| TP1/Server Base側のトランザクショナルRPC実行プロセスがRPCを行うため,ノード間負荷バランスは,「クライアント側の判断で負荷分散を行う(クライアントにTP1/Server Baseを使用)」と同じ結果になります。 |
リモートAPI機能 |
| TP1/Server Base側のrapサーバが実際にRPCを行うため,ノード間負荷バランスは,「クライアント側の判断で負荷分散を行う(クライアントにTP1/Server Baseを使用)」と同じ結果になります。 |
ノード間の負荷を分散するための拡張機能として,次の指定ができます。