4 「分散アプリケーションでのネットワーク管理」

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

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

分散アプリケーション用のネットワークを構築する作業は、主に構成フェーズまたはセットアップ・フェーズで行われます。ネットワークを定義し、アプリケーションを起動すると、ネットワークは自動的に構築されます。

この章では、ネットワークを介してデータを移動する方法と、ネットワークに関する操作を制御する構成ファイルのパラメータを設定する方法について説明します。

4.2 ネットワーク・データの圧縮

Oracle Tuxedoシステムでは、アプリケーションのプロセス間で送信されるデータを圧縮できます。データ圧縮は便利な機能であり、特に、大規模な構成を運用する場合に重要です。データ圧縮は、同じマシン上でメッセージの送受信を行う場合(ローカル・データ圧縮)、または異なるマシン間でメッセージの送受信を行う場合(リモート・データ圧縮)に使用できます。データ圧縮には次の利点があります。

  • プロセス間通信(IPC)のキューを使用してメッセージが送信されるため、ローカル・データ圧縮を行うと、IPCリソースの消費を抑えることができます。
  • ネットワーク経由でメッセージが送信されるため、リモート・データ圧縮を行うと、ネットワーク帯域の消費を抑えることができます。

4.2.1 圧縮レベルの設定

データ圧縮を使用するには、構成ファイルのMACHINESセクションのCMPLIMITパラメータを次のように設定する必要があります。

CMPLIMIT=string_value1[,string_value2]

このパラメータの文字列値には、リモート・プロセス(string_value1)およびローカル・プロセス(string_value2)で処理されるメッセージのサイズのしきい値を指定します。最初の文字列のみが必須です。どちらの文字列も、デフォルトはMAXLONGパラメータの値です。

TMCMPPRFMパラメータを設定して、圧縮とCPUのパフォーマンスとのバランスを調整することもできます。圧縮レベルを高くすると、圧縮速度は下がりますがネットワーク帯域幅を効率的に利用できます。圧縮レベルを低くすると、圧縮速度は上がり、CPU使用率を節約できます。

圧縮レベルを指定するには、次の手順に従います。

  1. UBBCONFIG構成ファイルのCMPLIMITパラメータを使用して、圧縮のしきい値を設定します。
  2. (オプション・ステップ) TMCMPPRFM環境変数を設定します。TMCMPPRFMの値には、1 - 9の範囲の1桁の数値を指定します。デフォルトは1です。

圧縮レベルの最低値1を指定すると、圧縮は最も早い速度で行われます。圧縮レベルの最高値9を指定すると、圧縮は最も遅い速度で行われます。つまり、低い数値が指定されると、圧縮ルーチンの処理速度は速くなります。

TMCMPPRFM変数の設定方法の詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』「tuxenv(5)」を参照してください。

4.2.2 データ圧縮のしきい値の選択

メッセージに対して圧縮のしきい値を指定できます。つまり、指定したしきい値を超えるメッセージは圧縮されます。圧縮のしきい値を指定するには、CMPLIMITパラメータを設定します。設定の手順については、「圧縮レベルの設定」を参照してください

データ圧縮のしきい値を選択する場合は、次の基準を参考にしてください。

  • サイトでOracle Tuxedoリリース4.2.1以降を実行している場合は、リモート・データ圧縮の使用を検討してください。設定は、ネットワークの速度によって異なります。たとえば、イーサネット(高速ネットワーク)とX.25(低速ネットワーク)には、別の設定を割り当てます。
    • 高速ネットワークの場合は、Oracle Tuxedoシステムで生成されるファイル転送処理に対し、下限値を指定してリモート・データ圧縮を設定します。(ファイル転送については、後のノートを参照してください。)つまり、送信サイトまたは受信サイトで、ファイル転送の対象となるメッセージだけが圧縮されます。

      ノート:

      アプリケーション内の各マシンの制限値は異なる場合があります。このような場合は、各マシンに対して下限値を選択してください。
    • 低速ネットワークの場合は、すべてのマシンに対してリモート・データ圧縮のしきい値をゼロに設定します。つまり、すべてのアプリケーションとシステム・メッセージは圧縮されます。
  • Oracle Tuxedoリリース4.2.1以降が稼働中のサイトでは、リリース4.2.1以前のサイトと相互運用している場合も、ローカル・データ圧縮の使用を検討してください。これにより、少ないIPCリソースで処理を実行できます。また、この設定により多くのファイル転送が不要になり、ファイル転送が必要な場合もファイルのサイズを大幅に縮小できます。詳細は、『Oracle Tuxedoシステムのインストール』のメッセージ・キューおよびメッセージに関する項を参照してください。

    ローカル・データ圧縮の場合、アプリケーション内の各マシンに対して、異なるしきい値を割り当てることができます。このような場合は、常に各マシンに対して下限値を選択する必要があります。

  • Oracle Tuxedoリリース4.2.1以降が稼働中のサイトでは、リリース4.2.1以前のサイトと相互運用している場合も、ローカル・データ圧縮の使用を検討してください。これにより、少ないIPCリソースで処理を実行できます。また、この設定により多くのファイル転送が不要になり、ファイル転送が必要な場合もファイルのサイズを大幅に縮小できます。詳細は、「メッセージ・キューとメッセージ」を参照してください。
ローカル・データ圧縮の場合、アプリケーション内の各マシンに対して、異なるしきい値を割り当てることができます。このような場合は、常に各マシンに対して下限値を選択する必要があります。

ノート:

IPCキューのブロッキングにより、タイムアウトとメッセージの破棄が頻繁に発生する高トラフィックのアプリケーションでは、ローカル圧縮が常に行われるように設定し、IPCのキューイング・サブシステム上のアプリケーションからの要求を少なくすることができます。

圧縮方法は転送されるデータの種類によって異なるため、環境に応じた最適な設定を行うことをお薦めします。

関連項目

4.3 ネットワーク・リクエストのロード・バランシング

ロード・バランシングがオンになっている場合、つまりアプリケーション構成ファイルのRESOURCESセクションでLDBALYに設定されている場合、Oracle Tuxedoシステムは、リクエストをネットワーク全体に均衡化します。ロード情報はグローバルには更新されないため、各サイトにはリモート・サイトにおけるロードの独自のビューを持ちます。

構成ファイルのMACHINESセクションのNETLOADパラメータ、またはTMNETLOAD環境変数を使用すると、より多くのリクエストをローカル・キューに送るよう強制できます。このパラメータの値はリモート・キューのロードに追加されるため、リモート・キューに実際より多くの作業があるように見えます。そのため、ロード・バランシングがオンになっていても、ローカル・リクエストはリモート・キューよりもローカル・キューに頻繁に送られます。

たとえば、サーバーAとサーバーBがロード・ファクタ50のサービスを提供するとします。サーバーAは呼出し側クライアント(ローカル)と同じマシン上で稼働しており、サーバーBは別のマシン(リモート)上で稼働しています。NETLOADを100に設定すると、1つのリクエストがサーバーBに送られる度に約3つのリクエストがサーバーAに送られます。

ロード・バランシングに影響するもう1つのメカニズムは、アイドル状態のローカル・サーバーのプリファレンスです。クライアントと同じマシン上にあるサーバーが、希望するサービスを提供し、アイドル状態にある場合、このサーバーにリクエストが送られます。ローカル・サーバーは直ちに使用可能になるため、この決定はどのようなロード・バランシングの設定もオーバーライドします。

関連項目

ロード・バランシングとはOracle Tuxedo ATMIの紹介

4.4 データ依存型ルーティングの使用

データ依存型ルーティングは、クライアントが次のものにサービス・リクエストを発行したときに有用です。

  • 水平分離型データベース
  • ルール・ベース・サーバー

水平分離型データベースは、情報を格納しておくリポジトリです。情報はカテゴリ別に保存されます。 ここれは、図書館で各本棚に異なるカテゴリ(伝記、フィクションなど)の本が収納されているのと似ています。

ルール・ベース・サーバーとは、サービス・リクエストをサービス・ルーチンに転送する前に、サービス・リクエストが特定のアプリケーション固有の条件を満たしているかどうかを判定するサーバーです。ルール・ベース・サーバーは、ほとんど同じ複数のリクエストに対して、ビジネス上の理由で多少異なる処理を行う場合に使用すると有用です。

ノート:

分散Oracle Tuxedo CORBAアプリケーションのファクトリ・ベースのルーティングの詳細は、Oracle Tuxedo CORBAアプリケーションのスケーリングのCORBAアプリケーションのスケーリング、分散およびチューニングに関する項を参照してください

4.4.1 水平分離型データベースを使ったデータ依存型ルーティングの例

銀行取引アプリケーションで2つのクライアントが口座3と口座17という2つの口座の現在の残高を照会するリクエストを発行したとします。アプリケーションでデータ依存型ルーティングが使用されている場合、Oracle Tuxedoシステムでは次の処理が行われます。

  1. 2つのサービス・リクエストで指定された口座番号(3と17)を取得します
  2. どのサーバーがどのデータ範囲の処理を行うかを示す、Oracle Tuxedoの掲示板のルーティング表を確認します。(この例では、サーバー1は口座1 - 10の範囲のすべてのリクエストを処理し、サーバー2は口座11 - 20の範囲のすべてのリクエストを処理します)。
  3. それぞれのリクエストを該当するサーバーに送信します。つまり、口座3へのリクエストをサーバー1に転送し、口座17へのリクエストをサーバー2に転送します
次の図は、水平分離型データベースでのデータ依存型ルーティングのこのプロセスを示しています

図4-1 水平分離型データベースでのデータ依存型ルーティング


水平分離型データベースでのデータ依存型ルーティング

4.4.2 ルール・ベース・サーバーでのデータ依存型ルーティングの例

次の規則を持つ銀行取引アプリケーションがあるとします。

  • 顧客は、特別なパスワードを入力しなくても、$500まで引き出すことができます。
  • $500を超える額を引き出すには、特別なパスワードを入力する必要があります。

2つのクライアントが$100と$800の引出しのリクエストを発行したとします。引出しの規則でデータ依存型ルーティングが有効になっている場合、Oracle Tuxedoでは次のような処理が行われます。

  1. 2つのサービス・リクエストで指定された引出し額($100と$800)を取得します。
  2. どのサーバーがいくらのリクエストの処理を行うかを示す、Oracle Tuxedoの掲示板のルーティング表を調べます。(この例では、$500までのすべての引出しリクエストはサーバー1により処理され、$500を超えるすべての引出しリクエストはサーバー2により処理されます。)
  3. それぞれのリクエストを該当するサーバーに送信します。つまり、$100のリクエストをサーバー1に転送し、$800のリクエストをサーバー2に転送します。
次の図は、ルール・ベース・サーバーでのデータ依存型ルーティングのこのプロセスを示しています

図4-2 ルール・ベース・サーバーでのデータ依存型ルーティング


ルール・ベース・サーバーでのデータ依存型ルーティング

関連項目

4.5 ネットワーク構成の変更

アプリケーションの稼働中に構成パラメータを変更するには、tmconfig(1)コマンドを実行します。このコマンドは、Oracle Tuxedoシステム管理情報ベース(MIB)へのシェル・レベルのインタフェースです。

tmconfigを使用すると、システムを停止せずにTUXCONFIGファイルの表示や変更を行うことができます。たとえば、アプリケーションの起動中にマシンやサーバーなどの新しいコンポーネントを追加することができます。

関連項目: