12 分散アプリケーションのネットワーク設定

このトピックには、次の項があります。

12.1 分散アプリケーション用のネットワーク構成

分散アプリケーションとは、Oracle Tuxedoシステムがインストールされた複数のコンピュータ上で動作するアプリケーションのことです。コンピュータどうしは接続されており、ハードウェアやソフトウェア、アクセス方式、および通信プロトコルにより、ネットワーク経由で通信できます。Oracle Tuxedoシステムは、メッセージのエンコード、ルーティング、およびデコードを行い、処理されたメッセージをネットワーク経由でマシンに送信します。これらのタスクは自動的に実行されます。

分散アプリケーションのサポートに必要なネットワーク機能を構成するには、次の表の構成ファイルに次のエントリを含めます。

表12‑1 分散アプリケーション用のネットワークの構成

セクション名 パラメータ名 目的
RESOURCES MODEL(必須) MP。このパラメータを指定すると、他のネットワーク・パラメータが有効になります。これは、ネットワーク接続されたマシン用のパラメータです。1台のマシンによる構成では、マルチプロセッサ・マシンの場合でもSHMを使用します。
OPTIONS(必須) LAN (ローカル・エリア・ネットワーク)を指定すると、同一マシン上のプロセッサ間ではなく、異なるマシン間で通信が行われます。
MAXNETGROUPS (オプション) NETGROUPSに定義できるグループ数の上限値を指定します。デフォルトは8で、上限値は8192です。
MACHINES TYPE=string (オプション) 2台のマシン間でメッセージを交換する場合に、メッセージのエンコードが必要かどうかを指定します。TYPEパラメータは、定義されたマシンで使用されるデータ表現を指定します。データ表現が異なるマシン間でメッセージを送受信する場合は、送信メッセージをエンコードしてから送信し、受信時にデコードします。
データ表現が同じマシン間でメッセージを送受信する場合、エンコード/デコードの処理は省略されます。例1
LMID_1 TYPE = “abc” 
LMID_2 TYPE = “abc”
この場合、エンコードは行われません。例2
LMID_1 TYPE = “HP” 
LMID_2 TYPE = “SUN” 
この場合、エンコードが行われます。
メッセージを交換するすべてのマシンのデータ表現が同じであれば、このパラメータを設定する必要はありません。パラメータを設定する必要があるのは、データ表現が異なるマシンのみです。たとえば、9台のSPARCマシンと1台のHPマシンがある場合は、HPマシンにのみTYPE=stringを指定します。SPARCマシンは、デフォルトのNULL文字列により、同じタイプであると見なされます。
CMPLIMIT= remote[,local](オプション) 圧縮のしきい値、つまり、リモートやローカルの宛先に送信するメッセージのうち、圧縮の対象とするメッセージの最小値をバイト数で指定します。remoteおよびlocalに指定できる値は、0からMAXLONGまでの数値です。CMPLIMITに1つだけ値を指定すると、指定した値はremote引数と見なされ、ローカルの宛先に送信されるメッセージは圧縮されません。

たとえば、CMPLIMIT=1024と指定すると、リモートの宛先への、1024バイトより大きいメッセージは圧縮されます。

TMCMPLIMIT変数を使用して圧縮のしきい値を指定することもできます。TMCMPPRFM変数については、tuxenv(5)に関する項の説明を参照してください。この変数は、1 - 9の範囲で圧縮のレベルを設定します。

NETLOAD=number (オプション) リモート・サービスのLOADの値に、アプリケーション固有の数値を追加します。結果は、リクエストをローカルで処理するか、またはリモート・マシンに送信するかを決定するために使用されます。NETLOADの値が大きいほど、リモート・マシンに送信されるトラフィックは少なくなります。
NETGROUPS(オプション) NETGROUP(必須) アプリケーションにより、特定のマシン・グループに割り当てられる名前を指定します。名前には、最大30文字まで指定できます。ネットワーク上のすべてのマシンを含むグループが1つの場合、DEFAULTNETという名前に設定する必要があります。
NETGRPNO= number (必須) マシン・グループをシステム側で識別するための番号を指定します。1 - 8192の任意の数値を指定できます。DEFAULTNETの場合、NETGRPNOを0に指定する必要があります。
NETPRIO=number (オプション) NETGROUPに優先度を割り当てます。このパラメータは、システム側でどのネットワーク接続を使用するかを決定するのに役立ちます。0 - 8192の数値を指定する必要があります。高速回線に高い優先度を割り当てます。DEFAULTNETには最も低い順位を割り当てます。
NETWORK(オプション) LMID 指定したマシンを、MACHINESセクション内のエントリの1つにマッピングします。
NADDR=string (必須) このLMIDBRIDGEプロセスに対するリスニング用アドレスを指定します。このネットワーク・アドレスを指定する有効な形式は4つあります。詳細は、UBBCONFIG(5)NETWORKセクションを参照してください。
NLSADDR=string (必須) このLMIDのtlistenプロセスに対するネットワーク・アドレスを指定します。有効な形式は、NADDRの形式と同じです。
NETGROUP=string (必須) NETWORKグループ名を指定します。stringには、NETGROUPSセクションで指定したグループ名を指定しなければなりません。デフォルトはDEFAULTNETです。

12.2 ネットワーク上のデータの流れ

分散アプリケーションでは、データはネットワーク上で次のように送信されます。

  • 送信側では、BRIDGEにより、メッセージがdestination_machineに送信されます。これは、メッセージを仮想回線に書き込み、オペレーティング・システムにその送信処理を委託することにより実現されます。保留メッセージのコピーは、オペレーティング・システム側で保持されます。ただし、ネットワーク・エラーが発生すると、保留メッセージは失われます。
  • 受信側では、BRIDGEプロセスが、特定のネットワーク・アドレスで受信メッセージをリスニングします。

12.3 パラレル・ネットワーク上でのデータの流れ

分散アプリケーションでは、ネットワーク上でのデータの送受信にパラレル・データ回線を使用すると、次のような利点を活用できます。

  • 複数のアドレスでリスニングできるため、BRIDGEを頻繁に使用できます。
  • パラレル・データ回線上で同時にデータを送信することにより、従来のネットワークでの制限が解消され、BRIDGEでより高いスループットを実現できます。
  • パラレル・データ回線を構成すると、最初の送信先である回線がビジー状態でも、メッセージの送信処理は失敗しません。トラフィックは、ネットワーク・グループ番号(NETGRPNO)が最も大きい回線に流れるように、システム側でスケジューリングされます。この回線がビジー状態の場合、トラフィックは次の回線、つまりネットワーク・グループ番号が2番目に大きい回線に自動的にスケジューリングされます。すべての回線がビジー状態の場合は、回線が使用可能になるまでデータはキューに入れられます。

ただし、パラレル・データ回線を使用するかどうかを決定する前に、メッセージを順番に処理する必要があるかどうかを判断してください。システムでは、1つの特定のデータ回線に会話接続をバインドすることにより、会話型メッセージの正しいシーケンスが確保されます。

すべてのメッセージが順番に送信される必要がある場合、非会話型メッセージのシーケンスも追跡されるようにアプリケーションをプログラミングします。この方法を使用する場合、パラレル・データ回線は構成しない方がよいでしょう。

次の図は、あるマシンから別のマシンへのデータの流れを示しています。この図は、マシンAとマシンBで構成される例に基づいています。まず、BRIDGEは、両方のマシンに共通のネットワーク・グループであるMAGENTA_GROUPGREEN_GROUPおよびDEFAULTNETを識別します。

優先度が同じネットワーク・グループ(NETPRIOパラメータの値が同じグループ)には、データは並列に流れます。優先度が異なるネットワーク・グループは、フェイルオーバー用です。

図12-1 BRIDGE上のデータの流れ


BRIDGE上のデータの流れの図

12.4 単純な分散アプリケーションのネットワーク構成の例

次の例は、単純なネットワークの構成方法を示しています。

# 次の構成ファイルの抜粋は、2サイト構成用のNETWORK

# セクションを示しています。

*NETWORK
    SITE1     NADDR="//mach1:51669”
              NLSADDR="//mach1:31669"
#
    SITE2     NADDR="//mach386:51669"
              NLSADDR="//mach386:31669"

12.5 ネットワーク・データのスケジューリングでのフェイルオーバーとフェイルバック

データは使用可能な回線のうち、優先度が最も高い回線を流れます。すべてのネットワーク・グループに同じ優先度が与えられている場合、データはすべてのネットワークに同時に送信されます。現在優先されているすべての回線で障害が発生すると、データは次に優先度が高い回線に送信されます。このプロセスを「フェイルオーバー」と呼びます。フェイルオーバーが発生すると、失敗した接続は定期的に再試行されます。

優先度の高いネットワーク接続が再確立されると、フェイルバックが発生し、優先度の低い接続にはデータがスケジューリングされなくなります。優先度が低い接続は、規則的な方法で切断されます。

すべてのネットワーク・アドレスへの接続の再試行が失敗すると、次にマシン間でのアプリケーション・データやシステム・データの送信が必要になったときに接続が再試行されます。

12.6 複数のネットグループによる構成の例

First State Bankという架空の銀行で、5台のマシン(A-E)が構成されるネットワークを想定してください。これらのマシンは4つのネットワーク・グループに構成され、それぞれのマシンが2つから3つのネットワーク・グループで使用されています。

ノート:

複数のネットワーク・グループ(NETGROUPS)を含む構成では、ハードウェアおよびソフトウェアに対する要件があります。ただし、このマニュアルでは説明していません。たとえば、マシンが、複数の物理ネットワークに参加しなければならない場合があります。各マシンのTCP/IPシンボリック・アドレスは、/etc/hostsファイルまたはDNS(ドメイン・ネーム・サービス)で識別する必要があります。

次の例の//A_CORPORATE:5345という形式のアドレスの文字列A_CORPORATEは、/etc/hostsファイルまたはDNS(ドメイン・ネーム・サービス)で指定されていることを想定しています。

First State Bankには、次の4つのネットワーク・グループがあります。

  • DEFAULTNET (デフォルトのネットワークである企業WAN)
  • MAGENTA_GROUP (LAN)
  • BLUE_GROUP (LAN)
  • GREEN_GROUP (メンバーのマシン間に、高速な光ファイバのポイント・ツー・ポイント・リンクを提供する専用LAN)

すべてのマシンは、DEFAULTNET(企業WAN)に属します。さらに、各マシンはMAGENTA_GROUPまたはBLUE_GROUPに関連付けられます。MAGENTA_GROUPの一部のマシンはGREEN_GROUPにも属しています。次の図は、ネットワークにおけるグループの割当てを示しています。

図12-2 ネットワーク・グループの例


ネットワーク・グループの例の図

この例では、マシンAとBは以下のグループに対するアドレスを持ちます。

  • DEFAULTNET (企業WAN)
  • MAGENTA_GROUP (LAN)
  • GREEN_GROUP (LAN)

マシンCは以下のグループに対するアドレスを持ちます。

  • DEFAULTNET (企業WAN)
  • MAGENTA_GROUP (LAN)

マシンDとEは以下のグループに対するアドレスを持ちます。

  • DEFAULTNET (企業WAN)
  • BLUE_GROUP (LAN)

ローカル・エリア・ネットワークは場所間でルーティングされないため、マシンD (BLUE_GROUP LAN内)は、共通の単一アドレス、つまり企業WANネットワーク・アドレスのみを使用してマシンA (GREEN_GROUP LAN内)と通信します。

12.6.1 サンプル・ネットワークの構成ファイル

前の項で説明した構成を設定するため、First State Bankの管理者は、以下に示すように、UBBCONFIGファイルのNETGROUPSおよびNETWORKセクションで各グループを定義します。

*NETGROUPS

DEFAULTNET       NETGRPNO = 0         NETPRIO = 100 #default
BLUE_GROUP       NETGRPNO = 9         NETPRIO = 200
MAGENTA_GROUP    NETGRPNO = 125       NETPRIO = 200
GREEN_GROUP      NETGRPNO = 13        NETPRIO = 300

*NETWORK

A     NETGROUP=DEFAULTNET         NADDR="//A_CORPORATE:5723”
A     NETGROUP=MAGENTA_GROUP      NADDR="//A_MAGENTA:5724"
A     NETGROUP=GREEN_GROUP        NADDR="//A_GREEN:5725"

B     NETGROUP=DEFAULTNET         NADDR="//B_CORPORATE:5723"
B     NETGROUP=MAGENTA_GROUP      NADDR="//B_MAGENTA:5724"
B     NETGROUP=GREEN_GROUP        NADDR="//B_GREEN:5725"

C     NETGROUP=DEFAULTNET         NADDR="//C_CORPORATE:5723"
C     NETGROUP=MAGENTA_GROUP      NADDR="//C_MAGENTA:5724"

D     NETGROUP=DEFAULTNET         NADDR="//D_CORPORATE:5723"
D     NETGROUP=BLUE_GROUP         NADDR="//D_BLUE:5726"

E     NETGROUP=DEFAULTNET         NADDR="//E_CORPORATE:5723"
E     NETGROUP=BLUE_GROUP         NADDR="//E_BLUE:5726"

12.6.2 各ネットワーク・グループへの優先度の割当て

ネットワークのBRIDGEプロセスの機能を最大限に生かすには、各NETGROUPに適切に優先度を割り当てます。NETGROUPの優先度を割り当てる場合は、次の点を念頭に置いてください:

  • データは、最も優先度が高い使用可能な回線上にのみ流れます。
  • ネットワーク・グループすべてに同じ優先度が設定されている場合、データはすべてのネットワーク上を同時に流れます。
  • 現在優先されているすべての回線で障害が発生すると、データは次に優先度が高い回線に送信されます。
  • 優先度がより高い回線が使用可能になると、データは再びこの回線に流れます。
  • 優先度がより高く、使用不可能なすべての回線は定期的に再試行されます。
  • すべてのネットワーク・アドレスへの接続の試みが失敗すると、次にマシン間のデータ送信が必要になったときに接続が再試行されます。
  • NETPRIOのデフォルト値は100です。
12.6.2.1 ネットワーク・グループへの優先度の割当て例

次の図は、First State Bankの管理者が使用可能なネットワーク・グループに優先度を割り当てる方法を示しています。

図12-3 ネットワーク・グループへの優先度の割当て


ネットワーク・グループへの優先度の割当ての図

次のように優先度が割り当てられます。

  • BLUE_GROUP=200
  • DEFAULTNET=100
  • GREEN_GROUP=300
  • MAGENTA_GROUP=200
12.6.2.2 NETGROUPセクションおよびNETWORKセクションの例

最も優先度の低いネットワーク・グループは、デフォルトのネットワーク・グループとして予約されます。つまり、他のネットワーク・グループがすべて使用不可能にならない限り、このグループは使用されません。したがって、分単位で課金される衛星回線など、特定のネットワークの使用を制限する場合は、そのネットワークをデフォルトのネットワーク・グループとして指定します。

デフォルトのネットワーク・グループに優先度を割り当てるには、他のグループと同じように、DEFAULTNETNETPRIOバラメータを設定します。DEFAULTNETの優先度を指定しないと、以下の例に示すようにデフォルト値の100が使用されます。

*NETGROUP
DEFAULTNET NETGRPNO = 0 NETPRIO = 100

DEFAULTNETでは、ネットワーク・グループ番号(NETGRPNO)の値を0に指定しなければなりません。これ以外の値は無効です。NETGRPNOの値は、エントリごとに一意である必要があります。

一方、複数のネットワーク・グループに対して、同じNETPRIOの値を割り当てることもできます。たとえば、First State Bankの構成ファイルで、MAGENTA_GROUPGREEN_GROUPに同じネットワーク優先度(NETPRIO=200)を割り当てることができます。

各ネットワーク・アドレス(NETWORK)は、デフォルトでDEFAULTNETネットワーク・グループに関連付けられます。このパラメータは、エントリ間の統一性を保ちたい場合、または定義されるネットワーク・アドレスを2つ目のネットワーク・グループに関連付けたい場合に、明示的に指定することができます。

*NETWORK
D NETGROUP=BLUE_GROUP NADDR="//D_BLUE:5726"