bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo CORBA アプリケーションのスケーリング、分散、およびチューニング

 Previous Next Contents Index View as PDF  

CORBA アプリケーションの分散

ここでは、以下の内容について説明します。

このトピックでは、CORBA アプリケーションを例に、BEA Tuxedo CORBA 環境でのアプリケーションの分散方法を説明します。

 


アプリケーションを分散する理由

ここでは、以下の内容について説明します。

アプリケーションの分散について

アプリケーションを分散すると、アプリケーションのある部分を選択して論理的にグループ化し、そのグループを実行する場所を選択できます。アプリケーションの分散は、UBBCONFIG ファイルの GROUPS セクションに複数のエントリを作成し、アプリケーションの資源またはタスクをグループ間に分割することによって行います。サーバのグループを作成することにより、非常に大規模なアプリケーションをコンポーネント・ビジネス・アプリケーションに分割し、これらの各論理コンポーネントを管理可能なサイズで最適な場所に配置できます。

分散アプリケーションの利点

分散アプリケーションの利点には、以下のようなものがあります。

アプリケーション分散の特性

分散アプリケーションには、次の特性があります。

 


データ依存型ルーティングの使用 (BEA Tuxedo ATMI サーバのみ)

ここでは、以下の内容について説明します。

注記 このトピックは、BEA Tuxedo にのみ適用されます。

データ依存型ルーティングについて

データ依存型ルーティングは、サービス要求が、送信されたバッファ内のデータ値に基づき、クライアント (またはクライアントとして動作しているサーバ) によって、特定グループ内のサーバにルーティングされるメカニズムです。サービス呼び出しの内部コードにおいて、BEA Tuxedo はデータ・フィールドと掲示板共用メモリ内で探し出したルーティング基準を比較して、送信先となるサーバを選択します。

所定のどのサービスについても、UBBCONFIG ファイルの SERVICES セクションでルーティング基準識別子を指定できます。ルーティング基準識別子 (特にサーバ・グループに対するデータ範囲のマッピング) は、ROUTING セクションで指定します。

データ依存型ルーティングの特性

データ依存型ルーティングの特性は次のとおりです。

分散アプリケーションの例

表 3-1 は、クライアント要求がサーバにルーティングされるしくみを説明します。この例では、bankapp と呼ばれる銀行取引アプリケーションでデータ依存型ルーティングが使用されています。bankapp には、3 つのグループ (BANKB1BANKB2、および BANKB3) と、2 つのルーティング基準 (Account_ID および Branch_ID) があります。サービス WITHDRAWDEPOSIT、および INQUIRY は、Account_ID フィールドを使用してルーティングされます。サービス OPEN および CLOSE は、Branch_ID フィールドを使用してルーティングされます。

表 3-1 サンプル分散アプリケーションのデータ依存型ルーティング

サーバ・グループ

ルーティング基準

サービス

BANKB1

Account_ID: 10000 - 49999

WITHDRAWDEPOSIT、および INQUIRY

Branch_ID: 1 - 4

OPEN および CLOSE

BANKB2

Account_ID: 50000 - 79999

WITHDRAWDEPOSIT、および INQUIRY

Branch_ID: 5 - 7

OPEN および CLOSE

BANKB3

Account_ID: 80000 - 109999

WITHDRAWDEPOSIT、および INQUIRY

Branch_ID: 8 - 10

OPEN および CLOSE


 

分散アプリケーションにおける UBBCONFIG セクションの例

リスト3-1 は、BEA Tuxedo システムでデータ依存型ルーティングを実現するためのコンフィギュレーション・ファイルにおける、GROUPSSERVICES、および ROUTING の各セクションを含む UBBCONFIG ファイルの例を示します。

コード リスト 3-1 UBBCONFIG ファイルの例

*GROUPS
BANKB1 GRPNO=1
BANKB2 GRPNO=2
BANKB3 GRPNO=3
#
*SERVICES
WITHDRAW ROUTING=ACCOUNT_ID
DEPOSIT ROUTING=ACCOUNT_ID
INQUIRY ROUTING=ACCOUNT_ID
OPEN_ACCT ROUTING=BRANCH_ID
CLOSE_ACCT ROUTING=BRANCH_ID
#
*ROUTING
ACCOUNT_ID FIELD=ACCOUNT_ID BUFTYPE=”FML”
RANGES=”MIN - 9999:*,
10000-49999:BANKB1,
50000-79999:BANKB2,
80000-109999:BANKB3,
*:*”
BRANCH_ID FIELD=BRANCH_ID BUFTYPE=”FML”
RANGES=”MIN - 0:*,
1-4:BANKB1,
5-7:BANKB2,
8-10:BANKB3,
*:*”

 


UBBCONFIG ファイルのコンフィギュレーション

ここでは、以下の内容について説明します。

UBBCONFIG ファイルの詳細については、『BEA Tuxedo アプリケーションの設定』の「コンフィギュレーション・ファイルの作成」を参照してください。

分散アプリケーションにおける UBBCONFIG ファイルについて

UBBCONFIG ファイルには、以下のようなデータ依存型ルーティング (BEA Tuxedo) またはファクトリ・ベース・ルーティング (BEA Tuxedo CORBA) の説明が含まれます。

GROUPS セクションの変更

GROUPS セクションのパラメータは、分散トランザクション処理に関する次の 2 つの重要な側面をインプリメントします。

表 3-2 では、GROUPS セクションのパラメータを説明します。

表 3-2 GROUPS セクションで指定されるパラメータ

パラメータ

説明

LMID

このサーバ・グループがこの特定のマシン上で実行されることを示すには、LMIDMACHINES セクションに割り当てる必要があります。値の後に、カンマで区切って別の LMID を指定し、代替マシンを設定することもできます。MIGRATE オプションが指定されている場合は、サーバ・グループをこの代替マシンに移行できます。グループ内のサーバを移行するには、RESTART=Y を指定する必要があります。

GRPNO

このサーバ・グループにグループ番号を示す数値を関連付けます。0 より大きく、30000 未満の番号を指定する必要があります。番号は、このコンフィギュレーション・ファイルの GROUPS セクションのエントリの中で一意でなければなりません(必須)。

TMSNAME

このサーバ・グループに関連付けるトランザクション管理サーバ (TMS) を指定します。

TMSCOUNT

このサーバ・グループ用に起動する TMSNAME のコピー数を指定します。最小値は 2 です。値を指定しない場合は、デフォルトの 3 が指定されます。サーバ・グループ用に起動された TMSNAME サーバはすべて、MSSQ セットで自動的に設定されます(省略可能)。

OPENINFO

特定のリソース・マネージャの特定のインスタンスを開くために必要な情報を指定するか、またはそのような情報がこのサーバ・グループには不要であることを示します。リソース・マネージャを OPENINFO パラメータで指定した場合、データベース名やアクセス・モードなどの情報が含まれます。値の文字列全体を 256 文字以下とし、二重引用符で囲む必要があります。OPENINFO 文字列の形式は、基となるリソース・マネージャのベンダごとに異なります。ベンダ固有の文字列の先頭は、rm_name: となります。これはベンダのトランザクション・インターフェイス (XA インターフェイス) の公開名の直後にコロン (:) を付けたものです。

TMSNAME が設定されていないか、TMS に設定されている場合、OPENINFO パラメータは無視されます。TMSNAME が設定されているが、OPENINFO 文字列の設定がヌル文字列 ("") になっている場合、またはこのパラメータがエントリ内に登場しない場合は、グループのリソース・マネージャが存在しているが、open オペレーションを実行するための情報を必要としていないことを意味します。

CLOSEINFO

データベースを閉じるときにリソース・マネージャが必要とする情報を指定します。このパラメータは省略することも、ヌル文字列を指定することもできます。デフォルト値はヌル文字列です。

SERVICES セクションの変更

SERVICES セクションのパラメータは、アプリケーション・サービスの処理方法を制御します。このセクションのエントリの行は、識別子名によってサービスと関連付けられます。SRVGRP パラメータは、1 つのサービスを複数のサーバにリンクするために用意されています。このパラメータは、サービスのインスタンスを示すパラメータを特定のサーバ・グループに関連付けます。

変更するパラメータ

SERVICES セクションには、特に BEA Tuxedo ATMI サービスを使用する BEA Tuxedo CORBA アプリケーションの分散トランザクション処理 (DTP) に関連付けられるパラメータが 2 つあります。AUTOTRAN および TRANTIME です。

表 3-4 では、SERVICES セクションのパラメータを説明します。

表 3-3 SERVICES セクションで指定されるパラメータ

パラメータ

説明

AUTOTRAN

このサービスで受信されたメッセージが既にトランザクション・モードではない場合に、自動的にトランザクションを開始するかどうかを判断します。デフォルト値は、N です。このパラメータの使用については、アプリケーションのサービスをコーディングするプログラマとの間で調整を行ってください。

TRANTIME

このサービスで自動的に開始されたトランザクションの、タイムアウト値を秒単位で指定します。デフォルト値は 30 秒です。これを指定するのは、AUTOTRAN=Y や、ほかのタイムアウト値が必要な場合のみです。

SERVICES セクションの例

リスト3-2 では、SERVICES セクションの例を示します。

コード リスト 3-2 Production サンプルの SERVICES セクション

*SERVICES
    # Tuxedo Teller アプリケーション・サービスを公開する
#
DEBIT
AUTOTRAN=Y
CREDIT
AUTOTRAN=Y
CURRBALANCE
AUTOTRAN=Y

INTERFACES セクションの変更

INTERFACES セクションのパラメータは、アプリケーション・インターフェイスの処理方法を制御します。このセクションのエントリの行は、識別子名によってインターフェイスと関連付けられます。SRVGRP パラメータは、1 つのインターフェイスを複数のサーバにリンクするために用意されています。このパラメータは、インターフェイスのインスタンスを示すパラメータを特定のサーバ・グループに関連付けます。

変更するパラメータ

INTERFACES セクションには、特に分散トランザクション処理 (DTP) に関連付けられるパラメータが 3 つあります。FACTORYROUTINGAUTOTRAN、および TRANTIME です。

表 3-4 では、INTERFACES セクションのパラメータを説明します。

表 3-4 INTERFACES セクションで指定されるパラメータ

パラメータ

説明

FACTORYROUTING = criterion-name

この BEA Tuxedo CORBA インターフェイスのファクトリ・ベース・ルーティングに使用されるルーティング基準名を指定します。ファクトリ・ベース・ルーティングを要求するインターフェイスに対しては、 FACTORYROUTING パラメータを指定する必要があります。

AUTOTRAN

このインターフェイスで受信されたメッセージが既にトランザクション・モードではない場合に、自動的にトランザクションを開始するかどうかを判断します。デフォルト値は、N です。このパラメータの使用については、アプリケーションの ICF ファイルの transaction policy オプションの設定とパラメータが一致するように、アプリケーションのインターフェイスをコーディングするプログラマとの間で調整を行ってください。

TRANTIME

このインターフェイスで自動的に開始されたトランザクションの、タイムアウト値を秒単位で指定します。デフォルト値は 30 秒です。これを指定するのは、AUTOTRAN=Y およびデフォルト以外のタイムアウト値が必要な場合のみです。

LOAD = number

CORBA インターフェイスがシステムに与えると予想される相対的な負荷を表す、1 から 100 の間の任意の数値を指定します。数の設定スキーマは、このアプリケーションで使用されるほかの CORBA インターフェイスに割り当てられた LOAD 数値を基準としています。デフォルト値は 50 です。BEA Tuxedo システムは、要求のルーティング先として最適なサーバを選択するためにこの数字を使用します。

INTERFACES セクションの例

リスト3-2 では、INTERFACES セクションの例を示します。

コード リスト 3-3 INTERFACES セクションの例

*INTERFACES
   "IDL:beasys.com/UniversityP/Registrar:1.0"
FACTORYROUTING = STU_ID
AUTOTRAN=Y
TRANTIME=50

"IDL:beasys.com/BillingP/Teller:1.0"
FACTORYROUTING = ACT_NUM
AUTOTRAN=Y

ROUTING セクションの作成

BEA Tuxedo のデータ依存型ルーティングまたは BEA Tuxedo CORBA のファクトリ・ベース・ルーティングをサポートする ROUTING パラメータについては、『BEA Tuxedo アプリケーションの設定』の「コンフィギュレーション・ファイルの作成」を参照してください。

リスト3-4 は、Production サンプル・アプリケーションでファクトリ・ベース・ルーティングに使用される UBBCONFIG ファイルの ROUTING セクションを示します。

コード リスト 3-4 Production サンプルの ROUTING セクション

*ROUTING

STU_ID
FIELD = "student_id"
TYPE = FACTORY
FIELDTYPE = LONG
RANGES = "100001-100005:ORA_GRP1,100006-100010:ORA_GRP2"

ACT_NUM
FIELD = "account_number"
TYPE = FACTORY
FIELDTYPE = LONG
RANGES = "200010-200014:APP_GRP1,200015-200019:APP_GRP2"

 


factory_finder.ini のコンフィギュレーション (CORBA アプリケーションのみ)

CORBA アプリケーションの場合、複数ドメインにわたってファクトリ・ベース・ルーティングをコンフィギュレーションするには、現在の (ローカル) ドメインで使用されているが、別の (リモート) ドメインに存在するファクトリ・オブジェクトを識別するために、factory_finder.ini ファイルをコンフィギュレーションする必要があります。詳細については、『BEA Tuxedo Domains コンポーネント』の「複数の CORBA ドメインを設定する」を参照してください。

 


ルーティングをサポートするためのドメイン・ゲートウェイ・コンフィギュレーション・ファイルの変更

ここでは、以下の内容について説明します。

この節は BEA Tuxedo のみを対象とし、ルーティングをサポートするためにドメイン・ゲートウェイ・コンフィギュレーションを変更する方法と、この処理が必要である理由を説明します。ドメイン・ゲートウェイ・コンフィギュレーション・ファイルの詳細については、『BEA Tuxedo Domains コンポーネント』の「複数の CORBA ドメインを設定する」を参照してください。

ドメイン・ゲートウェイ・コンフィギュレーション・ファイルについて

ドメイン・ゲートウェイ・コンフィギュレーションに関する情報は、バイナリ形式の BDMCONFIG ファイルに格納されています。DMCONFIG ファイル (ASCII) は、任意のテキスト・エディタで作成および編集できます。コンパイル済みの BDMCONFIG ファイルは、実行中のシステムで dmadmin(1) コマンドを使用して更新できます。

Domains 機能を必要とする各 BEA Tuxedo アプリケーションには、BDMCONFIG ファイルを 1 つ作成する必要があります。BDMCONFIG ファイルへのアクセスは、Domains 管理サーバである DMADM(5) から行います。ゲートウェイ・グループが起動されると、ゲートウェイ管理サーバである GWADM(5) は、そのグループに必要なコンフィギュレーションのコピーを DMADM サーバに要求します。また、GWADM サーバと DMADM サーバは、コンフィギュレーションにおける実行時の変更が、対応するドメイン・ゲートウェイ・グループに反映されるようにします。

注記 DMCONFIG ファイルの変更の詳細については、『BEA Tuxedo Domains コンポーネント』の「複数の CORBA ドメインを設定する」を参照してください。

DMCONFIG ファイルの DM_ROUTING セクションのパラメータ (BEA Tuxedo ATMI のみ)

DM_ROUTING セクションでは、型付きバッファである FMLVIEWX_C_TYPE、および X_COMMON を使用したサービス要求のデータ依存型ルーティングに関する情報を提供します。DM_ROUTING セクション内にある各行の形式は、CRITERION_NAME です。ここで、CRITERION_NAME は SERVICES セクションで指定されたルーティング・エントリの名前 (識別子名) です。CRITERION_NAME エントリの長さは 15 文字以下です。

指定するパラメータ

表 3-5 では、DM_ROUTING セクションのパラメータを説明します。

表 3-5 DM_ROUTING セクションで指定されるパラメータ

パラメータ

説明

FIELD = identifier

ルーティング・フィールドの名前を指定します。長さは 30 文字以下です。このフィールドは、FML フィールド・テーブルで識別されたフィールド名 (FML バッファの場合)、または FML VIEW テーブルで識別されたフィールド名 (VIEWX_C_TYPE、または X_COMMON バッファの場合) と見なされます。FLDTBLDIR 環境変数および FIELDTBLS 環境変数は FML フィールド・テーブルを見つけるために使用され、 VIEWDIR 環境変数および VIEWFILES 環境変数は、FML VIEW テーブルを見つけるために使用されます。FML32 バッファ内のフィールドがルーティングに使用される場合は、8191 以下の数値をフィールド番号として指定します。

BUFTYPE = "type1[:subtype1[,subtype2 . . . ]][;type2[:subtype3[, . . . ]]] . . ."

このルーティング・エントリで有効なデータ・バッファのタイプとサブタイプのリストを指定します。有効なタイプは、FMLVIEWX_C_TYPE、および X_COMMON に限定されます。

タイプ FML ではサブタイプは指定されません。それ以外のタイプにはサブタイプが必要です。ただし * は使用できません。

タイプとサブタイプのペアのうち、重複するものは同じルーティング基準名として指定できません。タイプとサブタイプのペアが一意の場合、複数のルーティング・エントリは同じ基準名を持つことができます。これは必須パラメータです。

単一のルーティング・エントリに複数のバッファ・タイプが指定される場合、各バッファ・タイプに対するルーティング・フィールドのデータ型は同じでなければなりません。フィールド値が設定されていないか (FML バッファの場合)、または特定の範囲と一致しておらず、ワイルドカードの範囲が指定されていない場合、リモート・サービスの実行を要求したアプリケーション・プロセスに対してエラーが返されます。CORBA および EJB では、ルーティングは許可されていません。TGIOPは有効なバッファ型ではありません。

RANGES ="range1:rdom1[,range2:rdom2 ...]"

ルーティング・フィールドの範囲と関連付けられたリモート・ドメイン名 (RDOM) を指定します。文字列は二重引用符で囲み、range/RDOM のペアをカンマで区切って順番に並べた形式にします。

範囲は、単一の値 (符号付き数値または一重引用符で囲んだ文字列)、または、lower - upper (lowerと upper は共に符号付き数値または一重引用符で囲んだ文字列) の形式で表します。lower には、upper 以下の値を設定します。文字列値に一重引用符を埋め込むには、一重引用符の前にバックスラッシュを 2 つ挿入します。たとえば、「O'Brien」は「O¥¥'Brien」になります。

したがって、MIN - -5-5 以下のすべての数を表し、6 - MAX6 以上のすべての数を表します。

範囲 (range) 内のメタキャラクタ * (ワイルドカード) は、既にエントリとして指定した範囲では使用されなかった任意の値を示します。各エントリでは 1 つのワイルドカードによる範囲指定だけが可能です。* は最後に指定します。続けて範囲を指定すると無視されます。


 

ルーティング・フィールドの説明

ルーティング・フィールドには、FML または VIEW でサポートされている任意のデータ型を指定できます。数値のルーティング・フィールドには、数値による範囲値、文字列のルーティング・フィールドには文字列による範囲値を指定します。

文字列、carray、および文字フィールド型の文字列の範囲値は、1 組の一重引用符で囲みます。前に符号を付けることはできません。short 型および long 型の整数値は数値の文字列であり、オプションで先頭に正の符号 (+) または負の符号 (-) を指定できます。浮動小数点数は、C コンパイラまたは atof() で受け付けられる形式です。つまり、符号 (オプション)、数字の文字列 (オプションで小数点を追加)、e または E (オプション)、符号または空白文字 (オプション)、整数という形式で指定します。

フィールド値が範囲と一致するときに、関連する RDOM 値には、要求がルーティングされるリモート・ドメインを指定します。RDOM 値に * を指定すると、ゲートウェイ・グループが認識する任意のリモート・ドメインに要求が送信されることを示します。range/RDOM の組み合わせでは、範囲と RDOM はコロン (:) で区切られます。

ルーティングを使用した 5 サイトのドメイン・コンフィギュレーションの例

リスト3-5 は、5 サイトのドメイン・コンフィギュレーションを定義するコンフィギュレーション・ファイルを示します。Central Bank Branch と通信する、4 つの銀行支店ドメインがあります。銀行支店のうち、3 つがほかの BEA Tuxedo システム・ドメイン内で実行されています。残りの支店は、別の TP ドメインの制御下で実行されており、そのドメインとの通信には OSI-TP が使用されています。この例では、Central Bank から見た BEA Tuxedo のドメイン・ゲートウェイ・コンフィギュレーション・ファイルを示しています。DM_TDOMAIN セクションは、b01 をミラーリングしたゲートウェイを例示しています。

コード リスト 3-5 5 サイトのドメイン・コンフィギュレーションのための DMCONFIG ファイル

# Central Bank 用の BEA Tuxedo ドメイン・コンフィギュレーション・ファイル
#
#
*DM_LOCAL_DOMAINS
# <local domain name> <Gateway Group name> <domain type> <domain id> <log device>
# [<audit log>] [<blocktime>]
# [<log name>] [<log offset>] [<log size>]
# [<maxrdom>] [<maxrdtran>] [<maxtran>]
# [<maxdatalen>] [<security>]
# [<tuxconfig>] [<tuxoffset>]

#
#
DEFAULT: SECURITY = NONE
c01 GWGRP = bankg1
TYPE = TDOMAIN
DOMAINID = "BA.CENTRAL01"
DMTLOGDEV = "/usr/apps/bank/DMTLOG"
DMTLOGNAME = "DMTLG_C01"
c02 GWGRP = bankg2
TYPE = OSITP
DOMAINID = "BA.CENTRAL01"
DMTLOGDEV = "/usr/apps/bank/DMTLOG"
DMTLOGNAME = "DMTLG_C02"
NWDEVICE = "OSITP"
URCH = "ABCD"
#
*DM_REMOTE_DOMAINS
#<remote domain name> <domain type> <domain id>
#
b01 TYPE = TDOMAIN
DOMAINID = "BA.BANK01"
b02 TYPE = TDOMAIN
DOMAINID = "BA.BANK02"
b03 TYPE = TDOMAIN
DOMAINID = "BA.BANK03"
b04 TYPE = OSITP
DOMAINID = "BA.BANK04"
URCH = "ABCD"
#
*DM_TDOMAIN
#
# <local or remote domainname> <network address> [nwdevice]
#
# Local network addresses
c01 NWADDR = "//newyork.acme.com:65432" NWDEVICE ="/dev/tcp"
c02 NWADDR = "//192.76.7.47:65433" NWDEVICE ="/dev/tcp"
# Remote network addresses: second b01 specifies a mirrored gateway
b01 NWADDR = "//192.11.109.5:1025" NWDEVICE = "/dev/tcp"
b01 NWADDR = "//194.12.110.5:1025" NWDEVICE = "/dev/tcp"
b02 NWADDR = "//dallas.acme.com:65432" NWDEVICE = "/dev/tcp"
b03 NWADDR = "//192.11.109.156:4244" NWDEVICE = "/dev/tcp"
#
*DM_OSITP
#
#<local or remote domain name> <apt> <aeq>
# [<aet>] [<acn>] [<apid>] [<aeid>]
# [<profile>]
#
c02 APT = "BA.CENTRAL01"
AEQ = "TUXEDO.R.4.2.1"
AET = "{1.3.15.0.3},{1}"
ACN = "XATMI"
b04 APT = "BA.BANK04"
AEQ = "TUXEDO.R.4.2.1"
AET = "{1.3.15.0.4},{1}"
ACN = "XATMI"
*DM_LOCAL_SERVICES
#<service_name> [<Local Domain name>] [<access control>] [<exported svcname>]
# [<inbuftype>] [<outbuftype>]
#
open_act        ACL = branch
close_act ACL = branch
credit
debit
balance
loan LDOM = c02 ACL = loans
*DM_REMOTE_SERVICES
#<service_name> [<Remote domain name>] [<local domain name>]
# [<remote svcname>] [<routing>] [<conv>]
# [<trantime>] [<inbuftype>] [<outbuftype>]
#
tlr_add LDOM = c01 ROUTING = ACCOUNT
tlr_bal LDOM = c01 ROUTING = ACCOUNT
tlr_add RDOM = b04 LDOM = c02 RNAME ="TPSU002"
tlr_bal RDOM = b04 LDOM = c02 RNAME ="TPSU003"
*DM_ROUTING
# <routing criteria> <field> <typed buffer> <ranges>
#
ACCOUNT FIELD = branchid BUFTYPE ="VIEW:account"
RANGES ="MIN - 1000:b01, 1001-3000:b02, *:b03"
*DM_ACCESS_CONTROL
#<acl name> <Remote domain list>
#
branch ACLIST = b01, b02, b03
loans ACLIST = b04

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy