![]() ![]() ![]() ![]() |
コンフィグレーション ファイルに指定する内容は、作成するアプリケーションによって異なります。以下は、さまざまなコンフィグレーションの方法です。
1 台のマシンで構成するコンフィグレーションでは、コンフィグレーション ファイルに、次のセクションを作成する必要があります。各作業をクリックすると、その作業を行う手順が表示されます。
次の図中をクリックすると、クリックしたセクションの作成方法が表示されます。
分散型の ATMI アプリケーションでは、コンフィグレーション ファイルに次のセクションを作成する必要があります。各作業をクリックすると、その作業を行う手順が表示されます。
注意 : | Oracle Tuxedo システムで分散型 CORBA アプリケーションのコンフィグレーション ファイルを作成する方法については、『Oracle Tuxedo CORBA アプリケーションのスケーリング、分散、およびチューニング』を参照してください。 |
次の図中をクリックすると、クリックしたセクションの作成方法が表示されます。
複数のドメインにまたがるコンフィグレーションでは、ドメインごとに次の 2 つのコンフィグレーション ファイルを作成する必要があります。
たとえば、ローカル ドメイン (lapp
) とリモート ドメイン (rapp
) で構成されるアプリケーションの場合は、以下の作業が必要です。
次の図は、2 つのドメインにまたがるアプリケーションの UBBCONFIG
ファイルおよび DMCONFIG
ファイルでコンフィグレーションするセクションを示しています。片方はローカル ドメインであり、もう一方はリモート ドメインです。
次の図中をクリックすると、クリックしたコンフィグレーション ファイルのセクションの作成方法が表示されます。
コンフィグレーション ファイルの先頭には、必ず RESOURCES
セクションを指定します。このセクションで定義されるパラメータは、アプリケーション全体を制御し、システムのデフォルト値になります。RESOURCES
セクションのパラメータ値は、MACHINES
セクションのマシンごとの値を変更することによってオーバーライドできます。
次の表では、RESOURCES
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
以下は、コンフィグレーション ファイルの RESOURCES
セクションの例です。
*RESOURCES
IPCKEY 39211
UID 0
GID 1
PERM 0660
MAXACCESSERS 75
MAXSERVERS 40
MAXSERVICES 55
MASTER SITE1, SITE2
MODEL MP
OPTIONS LAN, MIGRATE
SECURITY APP_PW
AUTHSVC "AUTHSVC"
NOTIFY DIPIN
SYSTEM_ACCESS PROTECTED, NO_OVERRIDE
LDBAL Y
Oracle Tuxedo のアプリケーションのアーキテクチャについて、以下の事項を決定する必要があります。
アプリケーション タイプを定義するには、MODEL
パラメータおよび OPTIONS
パラメータを使用します。
MODEL
パラメータは、単一のプロセッサ上でアプリケーションを実行するかどうかを指定します。ユニプロセッサ、およびグローバル共有メモリを備えたマルチプロセッサの場合、このパラメータには SHM
が設定されます。共有メモリを備えていないマルチプロセッサ、およびネットワーク接続されたアプリケーションの場合は、MODEL
に MP
が設定されます。これは、必須パラメータです。
OPTIONS
パラメータは、アプリケーションのコンフィグレーションに関するオプションをカンマ区切りの形式で指定したリストです。指定できるオプションは、LAN
(ネットワーク接続されたコンフィグレーションであることを示す) および MIGRATE
(アプリケーション サーバの移行が可能であることを示す) の 2 つです。
以下は、コンフィグレーション ファイルの RESOURCES
セクションの設定例です。
*RESOURCES
MODEL MP
OPTIONS LAN, MIGRATE
アプリケーションで受け付けられるバッファのタイプおよびサブタイプの数はそれぞれ、MAXBUFTYPE
パラメータおよび MAXBUFSTYPE
パラメータで制御できます。ユーザ定義のバッファ タイプが多数指定されていない限り、MAXBUFTYPE
は省略できます。何種類もの VIEW
タイプを使用する予定がある場合は、MAXBUFSTYPE
に現在設定されているデフォルト値を増やしておきます。
この例では、バッファのタイプの最大数として 20、サブタイプの最大数として 40 が指定されています。
*RESOURCES
MAXBUFTYPE 20
MAXBUFSTYPE 40
MAXCONV
パラメータを使用すると、マシン上で同時に実行できる会話数を指定できます。MAXCONV
には、0 より大きく 32,768 未満の値を指定します。
この例では、各マシンで同時に実行できる会話の最大数が 15 に設定されています。
ほとんどの IPC および共有メモリの掲示板テーブルは、高速処理用に静的に割り当てられているため、正しくチューニングすることが重要です。値の設定が大きすぎると、メモリと IPC リソースが無駄に消費されます。逆に、値の設定が小さすぎると、IPC リソースの上限を超えた時点でプロセスが異常終了します。tmloadcf -c
コマンドを使用すると、アプリケーションに必要な IPC リソースの上限を確認できます。『Tuxedo コマンド リファレンス』の「tmloadcf(1)」を参照してください。
MAXACCESSERS、MAXSERVERS、MAXSERVICES、MAXINTERFACES、および MAXOBJECTS は、IPC リソースのサイズを決める、調整可能なパラメータです。アプリケーションに割り当てられる共有メモリの容量は、MAXGTT
および MAXCONV
パラメータによって制御されます。
注意 : | システム提供のサーバには、AUTHSVR 、TMQUEUE 、TMQFORWARD 、TMUSREVT 、TMSYSEVT 、TMS 、TMS_QM 、GWTDOMAIN 、WSL などがあります。 |
MAXACCESSERS
の値を増やすと、サイトごと、および、クライアントまたはサーバ プロセスごとに、別のセマフォが必要になります (アクセサについては下記の注意を参照)。MAXACCESSERS
の値を増やすことによって追加されるセマフォのほか、システム プロセスでもわずかなセマフォのオーバーヘッドが発生します。一方、MAXSERVERS
および MAXSERVICES
の値を増やしても、各サーバ、サービス、またはクライアント エントリに用意されている程度の少量の共有メモリしか消費されません。MAXSERVERS および MAXSERVICES パラメータは、アプリケーションの拡張に対応するために用意されています。これらのパラメータより、MAXACCESSERS
を詳細に調べる方が重要です。
注意 : | システムでは、掲示板へのアクセス スロットごとに 1 つのセマフォが割り当てられます。セマフォは、複数のプロセスが、掲示板の共有メモリに同時にアクセスしないようにするラッチ回路です。 |
Oracle Tuxedo のリリース 7.1 より前の MAXACCESSERS
および MAXSERVERS
パラメータは、ユーザ ライセンス数をチェックするしくみと関連付けられていました。つまり、アプリケーションで実行中の 1 台以上のマシンの MAXACCESSERS
の数と、特定のマシンの MAXACCESSERS
の数の合計が、MAXSERVERS
の数とユーザ ライセンス数の合計より大きい場合、マシンを起動することはできませんでした。したがって、アプリケーションの MAXACCESSERS
パラメータには、MAXSERVERS
の数とユーザ ライセンス数の合計か、またはそれより小さい値を指定しなければなりませんでした。
Oracle Tuxedo のリリース 7.1 以降では、アプリケーションに設定されているユーザ ライセンスの数と、現在使用されているユーザ ライセンスの数に基づいて、ライセンスのチェックが行われます。すべてのユーザ ライセンスが使用中になると、アプリケーションに新しいクライアントが参加することはできなくなります。
この例では、最大 75 のプロセス (クライアントおよびサーバ) が同時にシステムにアクセスできます。掲示板では、40 サーバが 55 のサービスを宣言できます。
*RESOURCES
MAXACCESSERS 75
MAXSERVERS 40
MAXSERVICES 55
Oracle Tuxedo では、アプリケーション全体に対し、ロード バランシングのアルゴリズムを使用するかどうかを制御できます。ロード バランシングを使用すると、ロード ファクタがシステム内の各サービスに適用され、各サーバの負荷の合計をモニタできます。各サービス要求は、負荷が最も少ない適切なサーバに送信されます。
ロード バランシングを使用するかどうかを指定するには、LDBAL
パラメータに Y
(はい) または N
(いいえ) を設定します。デフォルトでは N
が設定されます。
ロード バランシングは、必要な場合のみ、つまり、複数のキューを使用するサーバによってサービスが提供される場合にのみ使用します。1 つのサーバによって提供されるサービス、または MSSQ セット (複数サーバ、単一キュー) のサーバによって提供されるサービスに対してロード バランシングを設定する必要はありません。コンフィグレーションにこのようなタイプのサービスしかない場合、LDBAL
パラメータを N
に設定します。LDBAL
が N
に設定されているときに複数のキューが同じサービスを提供すると、最初に使用可能なキューが選択されます。
LDBAL
に Y
を設定すると、ロード バランシングが使用されます。LDBAL
に Y
を設定し、アプリケーションがネットワーク接続されている場合は、TMNETLOAD
環境変数を使用してローカル サイトの優先順位を設定できます。LDBAL
に N
を設定すると、割り当てられたサーバが最初に使用可能なサーバになります。N
です。LDBAL
を設定するとオーバーヘッドが発生するため、必要な場合にのみ使用してください。MSSQ
サーバ セットによって提供される場合、ロード バランシングは使用しないでください。
この例では、アプリケーションでロード バランシングが有効になっています。
MASTER
マシンは、アプリケーションの起動およびアプリケーション全体の管理を制御します。各アプリケーションでは、必ず MASTER
パラメータを設定して MASTER
マシンを指定する必要があります。MASTER
には、該当するコンピュータの論理マシン識別子 (LMID
) を指定します。LMID
は、管理者が指定する英数字の文字列であり、MACHINES
セクションの LMID
パラメータに割り当てられます。したがって、LMID
パラメータの値が SITE1
の場合、MASTER
の値も SITE1
でなければなりません。
アプリケーションを停止せずに MASTER
マシンを終了するには、MASTER
を移行できるようにしておく必要があります。移行を行うには、LMID
に、プライマリ MASTER
とバックアップ MASTER
を指定する必要があります。
Site1
は MASTER
マシン、SITE2
はバックアップ マシンです。
*RESOURCES
MASTER SITE1, SITE2
コンフィグレーション済みのネットワーク グループの最大数を指定するには、MAXNETGROUPS
パラメータを設定します。値には、1 以上 8192 未満を指定します。デフォルト値は 8 です。これは、省略可能なパラメータです。
BBL は、定期的 (デフォルトでは 120 秒ごと) にマシン上のサーバの正常性をチェックします。ただし、この間隔は、SCANUNIT
および SANITYSCAN
パラメータを設定して変更することができます。
サーバの正常性チェックを行うときに、次のチェックまでに繰り返す SCANUNIT
の回数を指定するには、SANITYSCAN
パラメータを使用します。現在のデフォルト値は、SANITYSCAN
× SCANUNIT
が約 120 秒になるように設定されています。
さらに、BLOCKTIME
パラメータを設定して、メッセージ、トランザクション、およびその他のシステム アクティビティをブロッキングする際のタイムアウト値を設定することもできます。
注意 : | トランザクションに関与しないブロックタイム値は、サービスごと、ATMI 呼び出しごと、およびコンテキストごとに設定できます。これらのブロックタイム値を設定すると、UBBCONFIG ファイルの RESOURCES で設定されている BLOCKTIME の値 (システム全体のデフォルト値) がオーバーライドされます。詳細については、「トランザクションに関与しないサービスのブロックタイムを指定する」を参照してください。 |
ブロッキング タイムアウトとは、ブロックされているクライアント要求が、ブロック解除されるまでの期間のことです。非同期型のサービス要求および会話のブロッキング タイムアウトは、個々の送受信操作に対して適用されます。tpacall
(3c)、tpconnect
(3c)、または tpsend
(3c) を使用してメッセージが送信される場合は、キューがいっぱいであり、送信されたメッセージがキューへの登録を待機する場合にのみタイムアウトが適用されます。メッセージを受信するための tpgetrply
(3c) または tprecv
(3c) 呼び出しがクライアント プロセスから発行される場合、タイムアウトは、キューが空の場合にクライアントがメッセージの受信を待機する期間になります。
この例では、正常性チェックが 30 秒ごとに実行されます。要求が 10 秒以上ブロックされることはありません。SCANUNIT
に 10 が指定され、SANITYSCAN
に 3 が指定されているため、10 秒の 3 倍、つまり 30 秒が経過すると、次のチェックが BBL により行われます。
*RESOURCES
SCANUNIT 10
SANITYSCAN 3
BLOCKTIME 1
UID
、GID
、および PERM
の 3 つのパラメータを設定すると、Oracle Tuxedo の管理機能へのアクセスを、認可された管理者だけに制限できます。
UID
および GID
のデフォルト値は、アプリケーションのコンフィグレーションの際に tmloadcf(1)
コマンドを実行したユーザのユーザ ID (UID の場合) およびグループ ID (GID の場合) になります。ただし、MACHINES
セクションの値をオーバーライドして、この設定を変更することもできます。
|
|||
|
|||
注意 : | リモート マシンに対して割当てられている上記のパラメータは、上書きできます。リモート マシンと MASTER マシンのユーザ ID およびグループ ID は、同じでなくてもかまいません。デフォルト値をオーバーライドするには、コンフィグレーション ファイルの MACHINES セクションで、別のユーザ ID およびグループ ID を指定します。特に値を指定しない場合は、RESOURCES セクションで指定した値が使用されます。 |
PERM
パラメータ - アプリケーションのキューに対する書き込み権を制限することにより、必要最低限のセキュリティを設定します。SECURITY
パラメータ - より高いセキュリティ レベルを設定します。このパラメータが設定されている場合、クライアントはアプリケーションに参加するときにパスワードを入力しなければなりません。このパスワードは、UBBCONFIG
ファイルから TUXCONFIG
ファイルが生成されたときに管理者が割り当てたパスワードと照合されます。 AUTHSVC
パラメータ - 最もレベルの高いセキュリティを設定します。このパラメータが設定されていると、アプリケーションへの参加を要求するクライアント要求は、認証サービスに送信されます。認証サービスは、Oracle Tuxedo システムに用意されているデフォルトのサービスか、またはサード パーティのベンダによるサービス (Kerberos サービスなど) になります。このセキュリティ レベルは、SECURITY
パラメータが設定されていないと使用できません。
SEC_PRINCIPAL_NAME
、SEC_PRINCIPAL_LOCATION
、および SEC_PRINCIPAL_PASSVAR
パラメータを使用すると、認証用のサーバのセキュリティ属性を指定できます。
注意 : | 上記のポリシーは、ワークステーション ハンドラ、Domains のゲートウェイ処理、および相互運用するアプリケーション サーバに適用されます。 |
SYSTEM_ACCESS
パラメータを使用すると、共有メモリにあるシステム テーブルを、アプリケーション クライアントとアプリケーション サーバから保護できます。このパラメータを指定しておくと、アプリケーションの開発中に、欠陥のあるアプリケーション コードが不当なポインタによって誤って共有メモリの内容を破壊することを防ぐことができます。アプリケーションが完全にデバッグされ、テストされたら、パラメータの値を変更して、応答が早く返されるように設定できます。このパラメータの有効な値は、次のとおりです。
値を選択した後で NO_OVERRIDE
を指定すると、選択したオプションをクライアントや管理者が変更できなくなります (クライアントの場合は tpinit
() 呼び出しの TPINIT
構造体、管理者の場合は SERVERS
セクションで指定)。
SYSTEM_ACCESS PROTECTED、NO_OVERRIDE
共有メモリのアドレスを設定するには、IPCKEY
パラメータを設定します。このパラメータにより、Oracle Tuxedo システムは、アプリケーションに対して IPC リソースを割り当てます。これにより、新たにアプリケーションに参加したプロセスは IPC リソースを簡単に見つけることができます。キーの値は、新しいアプリケーション プロセスに対して掲示板、メッセージ キュー、およびセマフォを割り当てるために内部で使用されます。単一プロセッサ モードでは、このキーが掲示板を指定します。マルチプロセッサ モードでは、このキーが DBBL のメッセージ キューを指定します。
NOTIFY
パラメータを使用すると、クライアントが非請求メッセージを受信するデフォルトの方法を設定できます。ただし、クライアントは、tpinit
() を呼び出してこの設定をオーバーライドできます。
IGNORE
- クライアントは、非請求メッセージを無視します。DIPIN
- クライアントは、tpchkunsol
() を呼び出したとき、または ATMI 呼び出しを行ったときにのみ非請求メッセージを受信します。SIGNAL
- クライアントは、シグナル ハンドラに関数を呼び出させるシグナルをシステムに生成させ、つまり、tpsetunsol
() を設定して、非請求メッセージを受信します。注意 : | この方法は、マルチスレッド化されたアプリケーションまたはマルチコンテキスト化されたアプリケーションでは使用できません。 |
THREAD
- 非請求メッセージは、Oracle Tuxedo システムがこの目的で管理する別のスレッドによって処理されます。
USIGNAL
パラメータは、SIGNAL
ベースの通知を使用する場合に使用されるシグナルを指定します。SIGUSR1
と SIGUSR2
の 2 種類のシグナルが生成されます。デフォルト設定は SIGUSR2
です。この方法を使用すると、直ちに通知を返すことができますが、ネイティブ クライアントを実行しているときは、制限があります。つまり、送信プロセス側のユーザ ID が同じでなければなりません。ただし、ワークステーション クライアントには、この制限はありません。
注意 : | この方法を適用できないプラットフォームもあります。 |
コンフィグレーション ファイルの 2 番目のセクションには、必ず MACHINES
セクションを指定します。MACHINES
セクションでは、アプリケーション内の各マシンに対するパラメータを定義します。これらのパラメータは、次の情報を指定します。
注意 : | UID 、GID 、PERM 、MAXACCESSERS 、MAXOBJECTS 、MAXCONV 、および MAXGTT は、オーバーライドできます。MAXGTT 以外のパラメータについては、RESOURCES セクションを参照してください。 |
次の表では、MACHINES
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
|
||||
以下は、ATMI 環境のコンフィグレーション ファイルの MACHINES セクションの例です。
*MACHINES
gumby LMID=SITE1
TUXDIR=”/tuxdir”
APPDIR=”/home/apps/mortgage”
TUXCONFIG=”/home/apps/mortgage/tuxconfig”
ENVFILE=”/home/apps/mortgage/ENVFILE”
ULOGPFX=”/home/apps/mortgage/logs/ULOG”
MAXACCESSERS=100
MAXCONV=15
以下は、CORBA 環境のコンフィグレーション ファイルの MACHINES セクションの例です。
*MACHINES
gumby LMID=SITE1
TUXDIR=”/tuxdir”
APPDIR=”/home/apps/mortgage”
TUXCONFIG=”/home/apps/mortgage/tuxconfig”
ENVFILE=”/home/apps/mortgage/ENVFILE”
MAXOBJECTS=700
ULOGPFX=”/home/apps/mortgage/logs/ULOG”
MAXACCESSERS=100
上の MACHINES
セクションの例では、以下のパラメータと値が指定されています。
|
|||
MACHINES セクションをカスタマイズするには、以下を指定します。
注意 : | Windows システムの場合、マシン名は大文字で指定する必要があります。 |
SECURITY
が ACL
または MANDATORY_ACL
に設定されている場合は、MAXACLCACHE パラメータを使用して、キャッシュ内の ACL 用エントリの数を指定できます。このパラメータに適切な値を設定すると、以下のことを実現できます。
値には、10 ~ 30,000 を指定します。デフォルト値は 100 です。
NETLOAD
パラメータを使用すると、1 つのマシンから別のマシンへサービス要求を送信するときにかかるコストを計算する際に追加する負荷を指定できます。値には、0 以上 32,768 未満を指定します。デフォルト値は 0 です。
まず、アドレスを指定する箇所に、MASTER
マシンのアドレスを定義します。これが、MACHINES
セクションのエントリの基本となります。エントリ内のその他のすべてのパラメータは、このアドレスで指定されたマシンに関する情報を指定します。UNIX システムの場合は、uname -n
コマンドを呼び出し、出力された値にアドレスを設定します。Windows システムの場合は、[コントロール パネル] の [ネットワーク] にある [コンピュータ名] を参照してください。
LMID
パラメータは必須パラメータです。このパラメータは、アドレスを指定したばかりのコンピュータを示す論理名を指定します。論理名には、アプリケーション内のマシン間でユニークな英数字を指定します。
Oracle Tuxedo システムの一部の操作 (サービス名のルックアップやトランザクションなど) では、掲示板をロックし、掲示板へのアクセスを 1 つのプロセスだけに制限する場合があります。プロセスまたはスレッドの処理中に、別のプロセスまたはスレッドによって掲示板がロックされていることがわかると、その処理は再試行されるか、または SPINCOUNT
で指定された回数のロック スピンが行われます。指定された回数のロック スピンが行われた後、処理はキューでスリープ状態になります。スリープ状態はリソースを消費するため、一定のロック スピンを行ってからスリープ状態になるように設定しておく方が効率的です。
SPINCOUNT
パラメータの値は、アプリケーションおよびシステムによって異なりますが、以下の基本的なガイドラインを覚えておくと便利です。
SPINCOUNT
の適切な値は 1 です。 SPINCOUNT
を 5,000 から始めるのが適切ですが、場合によっては 100,000 が適切です。 SPINCOUNT
の値を設定した後で、アプリケーションのスループットを確認します。SPINCOUNT
の値は、TMIB
を使用してシステムの実行中に調整できます。
TYPE
パラメータを使用すると、マシンをクラスごとにグループ化できます。TYPE
には、15 文字以下の任意の文字列を設定できます。
コンフィグレーション ファイルの場所およびマシンを識別するエントリ ファイル名を指定するには、必須パラメータの TUXCONFIG
を設定します。TUXCONFIG
パラメータには、最大 64 文字までの絶対パス名を指定し、値は二重引用符で囲みます。
注意 : | このパラメータに指定するパス名は、TUXCONFIG 環境変数に指定したパス名 (大文字/小文字の区別も含む) と完全に一致しなければなりません。パス名が一致していない場合、tmloadcf(1) は正常に実行されません。 |
TLOGSIZE
パラメータは、このマシンの DTP トランザクション ログのサイズをページ単位で指定します。オペレーティング システムのファイルシステム上の空き容量に応じ、0 より大きく 2048 以下の値を指定します。デフォルトは 100 ページです。
TLOGNAME
パラメータは、このマシンの DTP トランザクション ログの名前を定義します。デフォルト値は、TLOG
です。1 つの TLOGDEVICE
に複数の TLOG
がある場合、各 TLOG の名前はユニークでなければなりません。TLOGNAME
には、TLOG
テーブルの作成先である TLOGDEVICE
の VTOC
(ボリューム リスト) 内のテーブル名とは異なる名前を指定する必要があります。TLOGNAME
には、30 文字以下の英数字を指定します。
ENVFILE
パラメータを使用すると、Oracle Tuxedo システムが起動するすべてのプロセスに対する環境変数を格納したファイルを指定できます。各プロセスの TUXDIR
および APPDIR
は、システム側で設定されます。したがって、これらのパラメータはファイル内で指定しないでください。
ただし、アプリケーション操作に関連する次のパラメータについては、環境設定を指定できます。
ENVFILE
は、以下の特性を持つ省略可能なパラメータです。
ENVFILE
パラメータは、ENVFILE=”
envfile
”
の形式で、文字列を二重引用符で囲んで示します。ENVFILE
は、Oracle Tuxedo システムが起動するすべてのプロセスに対する環境変数を格納したファイルです。UBBCONFIG
ファイルは、同様の方法、つまり完全修飾パス名を使用して警告を生成します。FIELDTBLS
、FLDTBLDIR
などを設定しますが、TUXDIR
と APPDIR
は設定しません。FLDTBLDIR=$APPDIR
などの評価を伴う設定はできません。 VARIABLE
=
string です。
環境変数の設定の詳細については、『Oracle Tuxedo のファイル形式とデータ記述方法』の「tuxenv (5)」を参照してください。
TLOGDEVICE
パラメータは、該当するマシンの DTP トランザクション ログ (TLOG
) を含む Oracle Tuxedo のファイルシステムを指定します。TLOG
は、Oracle Tuxedo システムの VTOC テーブルとしてデバイスに格納されています。TLOGDEVICE
の値は、64 文字以下の文字列でなければなりません。
このパラメータを指定しない場合、そのマシンには TLOG
がないものと見なされます。
MAXGTT
パラメータは、特定のマシンが同時に関与できるグローバル トランザクションの最大数を指定します。このパラメータには、0 以上 32,768 未満の値を指定します。RESOURCES
セクションで指定した値は、MACHINES
セクションでマシンごとにオーバーライドできます。
MAXWSCLIENTS
パラメータは、ワークステーション クライアント用に確保しておくマシン上のエントリ数を定義します。MAXWSCLIENTS
用に確保しておくアクセサ スロットの数は、慎重に設定してください。この値は、このマシンの MAXACCESSERS
で指定したアクセサ総数のうちの一部になります。このマシンのその他のクライアントやサーバは、MAXWSCLIENTS
用に確保されたアクセサ スロットを使用できません。ワークステーション クライアントからのシステムへのアクセスは、Oracle Tuxedo システムに組み込まれている代理プロセス、つまり Oracle Tuxedo ワークステーション ハンドラ (WSH) によって多重化されます。そのため、このパラメータを適切に設定すると、IPC リソースを節約できます。
MAXWSCLIENTS
には、0 以上 32,768 未満の値を指定します。値を指定しない場合は、デフォルト値の 0 が設定されます。この値を MAXACCESSERS
の値より大きい値に設定すると、エラーが返されます。
注意 : | MAXWSCLIENTS の値は、ライセンス供与されているユーザ数によって制限されます。 |
MAXPENDINGBYTES
パラメータは、BRIDGE
プロセスによる送信を待機するメッセージに割り当てる領域の制限を定義します。値には、100,000 から MAXLONG
までの値を指定します。
MAXPENDINGBYTES
が重要になるのは、以下の 2 つの状況です。
メモリおよびディスク領域のサイズが大きい大型コンピュータの場合は MAXPENDINGBYTES
の値を大きくし、小型のコンピュータの場合は MAXPENDINGBYTES
の値を小さくします。
どの Oracle Tuxedo ファイルシステムにもボリューム リスト (VTOC : Volume Table of Contents) があります。これは、汎用デバイス リスト (UDL : Universal Device List) で指定されたデバイス上のファイルのリストです。UDL には、Oracle Tuxedo システム テーブルの物理ストレージ スペースが指定されています。Oracle Tuxedo システムのアプリケーションでは、すべてのシステム ファイルを同じ raw ディスクやオペレーティング システムのファイルシステム上に格納することができます。
TLOGOFFSET
パラメータは、このマシンのデバイスの先頭から Oracle Tuxedo ファイルシステムの開始点 (このマシンの DTP トランザクション ログを格納) までのオフセットをページ単位で指定します。オフセットには、0 以上でデバイス上のページ数より小さい値を指定します。デフォルト値は 0 です。
どの Oracle Tuxedo ファイルシステムにもボリューム リスト (VTOC : Volume Table of Contents) があります。これは、汎用デバイス リスト (UDL : Universal Device List) で指定されたデバイス上のファイルのリストです。UDL には、Oracle Tuxedo システム テーブルの物理ストレージ スペースが指定されています。Oracle Tuxedo システムのアプリケーションでは、すべてのシステム ファイルを同じ raw ディスクやオペレーティング システムのファイルシステム上に格納することができます。
TUXOFFSET
パラメータは、このマシンのデバイスの先頭から Oracle Tuxedo ファイルシステムの開始点 (このマシンの TUXCONFIG
を格納) までのオフセットをページ単位で定義します。この値が環境でどのように使用されるかについては、MACHINES
セクションの ENVFILE
を参照してください。
サーバをサポートするアプリケーション内の各マシンは、Oracle Tuxedo システム ソフトウェアおよびアプリケーション サーバのコピーを備えている必要があります。システム ソフトウェアの場所は、TUXDIR
パラメータで指定します。アプリケーション ソフトウェアの場所は、APPDIR
パラメータで指定します。どちらも必須パラメータです。APPDIR
パラメータで指定したディレクトリは、すべてのプロセスの現在の作業ディレクトリになります。Oracle Tuxedo ソフトウェアは、TUXDIR/bin
および APPDIR
内で実行可能ファイルを検索します。
CMPLIMIT
パラメータは、リモート プロセス (string_value1
) およびローカル プロセス (string_value2
) に送信される、自動圧縮の対象となるメッセージのしきい値を定義します。このしきい値を超えると、メッセージは圧縮されます。
どちらの値も、負以外の整数または文字列 MAXLONG
でなければなりません。値を指定しない場合は、デフォルトの MAXLONG
,MAXLONG
が指定されます。
注意 : | CMPLIMIT の値を設定した後で、アプリケーションのスループットを確認します。CMPLIMIT の値は、TMIB を使用してシステムの実行中に調整できます。 |
CMPLIMIT
=string_value1
,string_value2
ULOGPFX
パラメータを設定すると、マシン上の userlog
(3c) メッセージ ファイルの接頭辞として使用する名前の絶対パス名を指定できます。指定したマシンの ULOGPFX
の値は、このマシン上で実行されるすべてのサーバ、クライアント、および管理プロセスに関する userlog
(3c) メッセージ ファイルを作成するために使用されます。このパラメータが指定されない場合、APPDIR
環境変数で指定されたパスが使用されます。mmddyy
(月、日、年) が接頭辞に追加されると、完全なログ ファイル名になります。
GROUPS
セクションでは、複数のサーバを論理的にグループ化することができます。グループ化したサーバを使用すると、リソース マネージャにアクセスしたり、サーバ グループの移行を簡単に行うことができます。コンフィグレーション ファイルの GROUPS
セクションでは、サーバ グループが定義されています。アプリケーション サーバをマシン上で実行するには、マシンに対して少なくとも 1 つのサーバ グループを定義する必要があります。ただし、マシンに対してサーバ グループが定義されていなくても、アプリケーションの一部にグループを含め、そのサイトから管理コマンド tmadmin(1)
を実行できます。
トランザクションに関与しない非分散型のシステムでは、グループのコンフィグレーションは比較的単純です。各グループに対して、グループ名をグループ番号および論理マシン ID にマップするだけです。分散トランザクション システムをサポートする柔軟性も備えられています。
次の表では、GROUPS
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
以下は、ATMI 環境のコンフィグレーション ファイルの GROUPS セクションの例です。
##EVBGRP1 LMID=SITE1 GRPNO=104
DEFAULT:TMSNAME=TMS_SQL TMSCOUNT=2 LMID=SITE1
BANKB1GRPNO=1 OPENINFO="TUXEDO/SQL:APPDIR1
/bankdl1:bankdb:readwrite"
BANKB2GRPNO=2 OPENINFO="TUXEDO/SQL:APPDIR1
/bankdl2:bankdb:readwrite"
BANKB3GRPNO=3 OPENINFO="TUXEDO/SQL:APPDIR1
/bankdl3:bankdb:readwrite"
以下は、Tuxedo CORBA University の Production サンプル アプリケーションの UBBCONFIG
ファイルにある、GROUPS
セクションの例です。この例では、UBBCONFIG
ファイルの ROUTING
セクションにある RANGES
識別子で指定されたグループを識別し、コンフィグレーションする必要があります。
Production サンプルでは、ORA_GRP1、ORA_GRP2、APP_GRP1、
および APP_GRP2
の 4 つのグループが指定されています。ここでは、これらのグループをコンフィグレーションし、実行するマシンを識別しなければなりません。
*GROUPS
APP_GRP1
LMID = SITE1
GRPNO = 2
TMSNAME = TMS
APP_GRP2
LMID = SITE1
GRPNO = 3
TMSNAME = TMS
ORA_GRP1
LMID = SITE1
GRPNO = 4
OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir=.+MaxCur=5"
CLOSEINFO = ""
TMSNAME = "TMS_ORA"
ORA_GRP2
LMID = SITE1
GRPNO = 5
OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir=.+MaxCur=5"
CLOSEINFO = ""
TMSNAME = "TMS_ORA"
上の例は、ORA_GRP1、ORA_GRP2、APP_GRP1、
および APP_GRP2
グループのコンフィグレーション方法を示しています。GROUPS
セクションのグループ名と、ROUTING
セクションで指定されたグループ名の対応については、「University Production サンプル アプリケーションの CORBA ファクトリベース ルーティング」を参照してください。ルーティング機能を正しく動作するには、両方のグループ名を一致させる必要があります。また、アプリケーションでグループをコンフィグレーションする際にグループ名を変更した場合は、ROUTING
セクションにも反映しなければなりません。
注意 : | Oracle Tuxedo ソフトウェアに収録されている Production サンプル アプリケーションは、1 台のマシンで実行するようにコンフィグレーションされていますが、LMID パラメータで他のマシンを指定することにより、複数のマシンで実行するようにコンフィグレーションすることもできます。この方法は、RESOURCES セクションで MODEL MP パラメータが指定されていることを前提としています。 |
GROUPS
セクションの基本であるグループ名は、グループを識別する名前であり、英数字で指定します。グループ名により、グループの論理名 (string_value
) が決まります。各グループには、ユニークなグループ番号 (GRPNO
) が指定されます。これは、必須パラメータです。各グループは、すべて 1 つの論理マシン (LMID
) 上に常駐する必要があります。
LMID
は、このサーバ グループが MACHINES
セクションの string_value1
というシンボリック名で指定されているマシンに存在することを示します。
分散トランザクション、つまり、複数のリソース マネージャまたはマシンにわたるトランザクションに参加するサーバを含むサーバ グループのエントリには、トランザクション マネージャ サーバ (TMS : Transaction Manager Server) を指定する必要があります。TMS を指定するには、TMSNAME
パラメータを設定します。このパラメータは、サーバ グループの起動時に tmboot(1)
が実行するファイル (string_value
) を指定します。
値「TMS」は、NULL XA インタフェースの使用を示すために予約されています。このインタフェースは、リソース マネージャのないサーバ グループ用に使用できます。ただし、リソース マネージャがない場合は、TMS も必要ありません。このサーバ グループは、トランザクションに関与するメッセージの影響を受けます。「TMS」以外で、さらに空ではない値が指定された場合は、このエントリの LMID
値に関連するマシンに対して、TLOGDEVICE
を指定する必要があります。各 TM サーバには、ユニークなサーバ識別子が自動的に割り当てられます。サーバは何度でも再起動できます。
TMSNAME
が指定されている場合は、TMSCOUNT=
number
も指定し、関連するサーバ グループ用の TMS の数を設定する必要があります。TMSCOUNT
のデフォルト値は 3 です。このパラメータに 0 以外の値を指定する場合、指定できる最小値は 2、最大値は 256 です。サーバは、自動的に MSSQ セットに設定されます。
ENVFILE
環境変数 (ENVFILE=
string_value
) に無効なファイル名が指定された場合、環境には何も値が設定されません。環境ファイルの各行は、ident
=
value
の形式で指定します。ident
はアンダースコア (_) または英数字で構成します。
value
内の $
{env
} という形式の文字列は、ファイルの処理時に、環境内の既存の変数を使用して展開されます。前方参照はサポートされていません。値が設定されていない場合、変数は空の文字列に置換されます。バックスラッシュ (\) を使用すると、ドル記号 ($) およびバックスラッシュ自体をエスケープできます。その他のシェルのクォーテーションおよびエスケープのメカニズムは無視され、展開された value がそのまま環境に組み込まれます。
環境ファイルは、コンフィグレーション ファイル内の少なくとも 2 つのセクションに用意されています。Oracle Tuxedo システムでは、次の順序で環境ファイルが読み取られます。
SERVERS
セクションの値は、GROUPS
セクションの値をオーバーライドします。GROUPS
セクションの値は、MACHINES
セクションの値をオーバーライドします。
OPENINFO
および CLOSEINFO
パラメータには、256 以下の英数字で構成する文字列を二重引用符で囲んで指定します。これらの設定は、このグループ (グループ名) のリソース マネージャを開くおよび閉じるときに必要な、リソース マネージャに依存する情報を指定します。
このグループの TMSNAME
パラメータが設定されていないか、または TMS
に設定されている場合、この値は無視されます。TMSNAME
パラメータが TMS
以外の値に設定されており、OPENINFO
が NULL 文字列 (""
) に設定されているか、または何も設定されていない場合は、グループのリソース マネージャは存在しますが、open
操作の実行に関する情報は必要ありません。TMSNAME
パラメータが TMS
以外の値に設定されており、CLOSEINFO
文字列に NULL 文字列 (""
) が設定されているか、または何も設定されていない場合は、グループのリソース マネージャは存在しますが、close 操作の実行に関する情報は必要ありません。
OPENINFO
文字列の形式は、基底のリソース マネージャのベンダごとに異なります。ベンダ固有の情報の先頭には、トランザクション インタフェース (XA インタフェース) の公開名とコロン (:) が付きます。
たとえば、Oracle Tuxedo /Q データベースの場合、OPENINFO
は次のような形式になります。
上記の設定では、TUXEDO/QM
が Oracle Tuxedo /Q XA インタフェースの公開名です。qmconfig
は、キュー スペースを設定する QMCONFIG
(『Tuxedo コマンド リファレンス』の「qmadmin(1)」を参照) の名前です。qspace
はキュー スペースの名前です。Windows では、qmconfig
の後に指定する区切り文字として、セミコロン (;
) を使用します。
注意 : | Oracle Tuxedo /Q データベースでは、CLOSEINFO 文字列は使用されません。 |
その他のベンダのデータベースでは、OPENINFO
文字列の形式は、基底のリソース マネージャのベンダごとに異なります。たとえば、次の OPENINFO
文字列は、Oracle のリソース マネージャを開くときに必要な情報を示します。
OPENINFO="Oracle_XA: Oracle_XA+Acc=P/Scott/*****+SesTm=30+LogDit=/tmp"
Oracle_XA
は、Oracle XA インタフェースの公開名です。OPENINFO
文字列内の 5 つの連続するアスタリスク (*) は、暗号化されたパスワードを示します。次に、パスワードについて説明します。
リソース マネージャに渡される OPENINFO
文字列内のパスワードは、クリア テキストまたは暗号化された形式で格納されます。パスワードを暗号化するには、まず、OPENINFO
文字列内のパスワードが必要な場所に、5 つ以上の連続するアスタリスクを入れます。次に、tmloadcf(1)
コマンドを実行して、UBBCONFIG
ファイルをロードします。tmloadcf()
は、アスタリスクの文字列を検出すると、パスワードの作成をユーザに要求します。次に例を示します。
tmloadcf -y /usr5/apps/bankapp/myubbconfig
Password for OPENINFO (SRVGRP=BANKB3):password
tmloadcf()
は、暗号化したパスワードを TUXCONFIG
ファイルに格納します。tmunloadcf(1)
を使用して TUXCONFIG
から UBBCONFIG
ファイルを再生成すると、パスワードは @@
で区切られた暗号化形式でその UBBCONFIG
ファイルに出力されます。次に例を示します。
OPENINFO="Oracle_XA: Oracle_XA+Acc=P/Scott/@@A0986F7733D4@@+SesTm=30+LogDit=/tmp"
tmloadcf()
の実行時に、tmunloadcf()
によって生成された UBBCONFIG
ファイル内で暗号化されたパスワードが検出されても、ユーザに対してパスワードの作成は要求されません。
分散アプリケーションが複数のマシンで構成されている場合は、コンフィグレーション ファイルに NETWORK
セクションを作成する必要があります。このセクションは、マシン間の通信を設定します。ネットワーク グループを作成するには、アプリケーションの UBBCONFIG
ファイルで、NETGROUPS
セクションおよび NETWORK
セクションをコンフィグレーションします。
次の表では、NETWORK
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
以下は、2 サイトを含むコンフィグレーション ファイルの NETWORK
セクションの例です。
*NETWORK
SITE1 NADDR="//mach1:80952"
NLSADDR="//mach1:serve"
# SITE2 NADDR="//mach386:80952"
NLSADDR="//mach386:serve"
LMID
上に置かれた BRIDGE
プロセスで使用するデバイス名を指定し、ネットワークにアクセスするには、BRIDGE
パラメータを次のように設定します。
BRIDGE=
string_value
TCP/IP を使用する場合は、BRIDGE
にデバイス名を指定する必要はありません。
ネットワーク トランスポートのエンドポイント ファイルのパス名は、次の形式で指定します。
/dev/
provider_name
LMID
のリスン用アドレスとして、LMID 上に置かれている BRIDGE
プロセスで使用する完全なネットワーク アドレスを指定するには、NADDR
パラメータを次のように設定します。
BRIDGE
のリスン用アドレスは、アプリケーションの別の BRIDGE プロセスがその BRIDGE
プロセスにアクセスする場所です。
BRIDGE
のリスン用アドレスは、次の 3 つのうち、いずれかの形式で指定できます。
最初の形式では、host.name
は、アドレスがバインドされるときに TCP/IP のアドレスに解決されます。この形式は、オペレーティング システムのコマンドによる、ローカル名の解決機能に基づいています。port_number
には、シンボリック名または 10 進数を指定します。
2 番目の形式の文字列 #.#.#.#
は、ドット区切りの 4 つの 10 進数 (0 ~ 255 を指定) を示します。port_number
は、0 ~ 65,535 の 10 進数です (指定された文字列の 16 進表現)。port_number
には、シンボリック名または 10 進数を指定します。
3 番目の形式の文字列 0xhex-digits
または \\
xhex-digits
には、有効な 16 進数の偶数を含めます。2 つのうち、どちらかの形式で表現された文字列は、内部で TCP/IP アドレスを含む文字配列に変換されます。
注意 : | プラットフォームによっては、システム側で、上記より小さい数値が予約されている場合があります。 |
このマシンに対してネットワーク リンクを確立するときに必要な暗号化の最低レベルを設定するには、MINENCRYPTBITS
パラメータを設定します。有効な値は、0、56、および 128 です。0 は暗号化を行わないことを示し、56 および 128 は暗号化キーの長さをビット単位で指定します。ここで指定する最小レベルの暗号化が満たされない場合、リンクの確立は失敗します。デフォルト値は 0 です。
ネットワーク リンクを確立するときの暗号化の最大レベルを設定するには、MAXENCRYPTBITS
パラメータを設定します。有効な値は、0、56、および 128 です。0 は暗号化を行わないことを示し、56 および 128 は暗号化キーの長さをビット単位で指定します。デフォルト値は 128 です。
MAXENCRYPTBITS=128
MINENCRYPTBITS=0
LMID
が指定するマシン上でネットワークにサービスを提供する tlisten(1)
プロセス用のネットワーク アドレスを指定するには、NLSADDR
パラメータを次のように指定します。
string
には、NADDR
パラメータと同じ形式でネットワーク アドレスを指定します。
NLSADDR
の tlisten
アドレスは、次の 3 つのうち、いずれかの形式で指定できます。
最初の形式では、host.name
は、アドレスがバインドされるときに TCP/IP のアドレスに解決されます。この形式は、オペレーティング システムのコマンドによる、ローカル名の解決機能に基づいています。port_number
には、シンボリック名または 10 進数を指定します。
2 番目の形式の文字列 #.#.#.#
は、ドット区切りの 4 つの 10 進数 (0 ~ 255 を指定) を示します。port_number
は、0 ~ 65,535 の 10 進数です (指定された文字列の 16 進表現)。port_number
には、シンボリック名または 10 進数を指定します。
3 番目の形式の文字列 0xhex-digits
または \\
xhex-digits
には、有効な 16 進数の偶数を含めます。2 つのうち、どちらかの形式で表現された文字列は、内部で TCP/IP アドレスを含む文字配列に変換されます。
NLSADDR
が MASTER
LMID
以外のマシンのエントリにない場合、tmloadcf(1)
はエラーを出力します。NLSADDR
が MASTER
LMID
エントリにない場合、tmadmin(1)
をリモート マシンから管理者モードで実行することはできません。可能な処理は、読み取り専用の操作だけです。これは、MASTER
サイトで障害が発生しても、バックアップ サイトから再起動できないことも意味します。
UBBCONFIG
ファイルの NETGROUPS
セクションでは、LAN 環境で使用可能なネットワーク グループの情報を設定します。1 組のマシンに割り当てるネットワーク グループの数に制限はありません。ネットワーク グループを構成する各ネットワークの通信方式は、優先順位のメカニズム (NETPRIO
) によって決まります。
すべての LMID
は、デフォルトのネットワーク グループ (DEFAULTNET
) のメンバーでなければなりません。デフォルトのネットワーク グループのグループ番号 (NETGRPNO
) は、0 です。ただし、DEFAULTNET
に設定されているデフォルトの優先順位は変更できます。リリース 6.4 より前の Oracle Tuxedo システムで定義されているネットワークは、DEFAULTNET
ネットワーク グループに割り当てられています。
次の表では、NETGROUPS
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
ネットワーク アドレスは、ネットワーク グループに関連付けられます。この機能の例を以下に示します。
たとえば、First State Bank には 5 台のマシン (A ~ E) で構成されるネットワークがあるとします。各マシンは、以下のように定義した 4 つのネットグループの中の 2 つまたは 3 つに属します。
すべてのマシンは、DEFAULTNET
(企業 WAN) に属します。さらに、各マシンは MAGENTA_GROUP
または BLUE_GROUP
に関連付けられます。MAGENTA_GROUP
LAN の一部のマシンは、GREEN_GROUP
という特殊なグループに属しています。次の図は、ネットワーク内のネットワーク アドレスを持つマシン A ~ E を示します。
注意 : | ローカル エリア ネットワークは場所間でルーティングされないため、マシン D (BLUE_GROUP LAN 内) は、共通の単一アドレス、つまり企業 WAN ネットワーク アドレスのみを使用してマシン A (GREEN_GROUP LAN 内) と通信します。 |
前の節で説明したコンフィグレーションを設定するには、First State Bank のシステム管理者は、次のコンフィグレーション ファイルの例に示すように、UBBCONFIG
ファイルの NETGROUPS
セクションで各グループを定義します。
*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"
ネットワーク グループに名前を割り当てるには、NETGROUP
パラメータを次のように設定します。
NETGROUP
required_parameters
[
optional_parameters
]
NETGROUP
に DEFAULTNET
を設定すると、エントリには、デフォルトのネットワーク グループに関する情報が指定されます。NETGROUP
パラメータが DEFAULTNET
に設定されているネットワーク エントリは、すべて TM_MIB
の T_MACHINE
クラスで表されますが、他の NETGROUP
に関連付けられた NETWORK
エントリは、TM_MIB
の T_NETMAP
クラスで表され、以前のリリースとの相互運用が可能です。
フェイルオーバおよびフェイルバックに対応するには、NETGRPNO
パラメータを次のように設定します。
NETGRPNO=
numeric_value
このエントリが DEFAULTNET
を説明している場合、NETGRPNO
の値はゼロにする必要があります。
複数のネットワーク グループにある、同じ優先順位が指定された 1 組のマシンは、優先順位が最も高い回線上で同時に通信できます。ネットワーク グループの優先順位を割り当てるには、NETPRIO
パラメータを使用します。特定の優先順位を持つすべてのネットワーク回線が、管理者またはネットワークによって切断された場合は、1 つ下の優先順位の回線が使用されます。優先順位の高い回線に対しては、接続の再試行が行われます。NETPRIO
パラメータには、0 より大きく 8,192 未満の値を指定します。デフォルト値は 100 です。
コンフィグレーション ファイルの SERVERS
セクションには、サーバ プロセスに固有な情報が含まれています。このセクションは必須ではありません。ただし、このセクションがないということは、アプリケーション サーバがなく、機能もほとんどないことを意味します。このセクションの各エントリは、アプリケーションで起動するサーバ プロセスを表し、次の情報を指定します。
SRVGRP
、SRVID
)servopts
で定義するサーバのコマンドライン オプション (CLOPT
)SEQUENCE
、MIN
、MAX
)ENVFILE
)RQADDR
、RQPERM
、REPLYQ
、RPPERM
) RESTART
、RCMD
、MAXGEN
、GRACE
)CONV
)SYSTEM_ACCESS
)注意 : | Oracle Tuxedo システムでサポートされるコマンドライン オプションについては、『Oracle Tuxedo のファイル形式とデータ記述方法』の「servopts(5)」を参照してください。 |
次の表では、SERVERS
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
以下は、コンフィグレーション ファイルの SERVERS セクションの例です。
*SERVERS
DEFAULT: RESTART=Y MAXGEN=5 GRACE=3600
REPLYQ=N CLOPT=”-A”
ENVFILE=”/usr/home/envfile”
SYSTEM_ACCESS=PROTECTED
RINGUP1 SRVGRP=GROUP1 SRVID=1 MIN=3
RQADDR=”ring1"
RINGUP2 SRVGRP=GROUP1 SRVID=4 MIN =3
RQADDR=”ring2"
注意 : | この例では、SEQUENCE (1 ~ 6 の順に起動)、REPLYQ と RPPERM (サーバは応答を受け取らない)、RCMD (再起動時のコマンド不要)、および CONV (非会話型サーバ) が省略されています。特定のサーバに対して特に設定を行わない限り、すべてのサーバにはデフォルト設定が適用されます。 |
上の SERVERS
セクションの例では、以下のパラメータと値が指定されています。
|
GROUP1 で起動します。サーバ ID は、1 、2 、および 3 です。3 つのサーバは、MSSQ セットを構成し、キュー ring1 からの要求を読み取ります。
|
||
サーバが会話型サーバである (つまり、クライアントと専用サーバの間に双方向接続を確立する) 場合、CONV
は必須パラメータであり Y
を設定する必要があります。デフォルト値は N
で、この場合はそのサーバが会話に含まれないことを示します。
サーバを起動する順序を指定するには、各サーバの SEQUENCE
パラメータを設定します。SEQUENCE
には、1 から 10,000 までの任意の数字を指定します。SEQUENCE
パラメータの値が小さいサーバは、値が大きいサーバより先に起動します。SEQUENCE
パラメータをまったく指定しない場合、サーバは SERVERS
セクションに示されている順序で起動します。順序が指定されたサーバと指定されていないサーバが混在する場合は、順序が指定されたサーバが先に起動します。サーバは、起動する順序とは逆の順序で停止されます。
SEQUENCE
は、省略可能なパラメータです。このパラメータは、大規模なアプリケーションで、サーバを起動する順序を指定する必要がある場合に役立ちます。
警告 : | CORBA 環境では、システムのイベント ブローカ、FactoryFinder オブジェクト、およびアプリケーション ファクトリを起動する順序が厳密に規定されています。この順序に従わないと、CORBA アプリケーションは起動しません。詳細については、「CORBA C++ サーバの起動順序」を参照してください。 |
複数のサーバを起動するには、MIN
パラメータを設定して、起動作業を簡略化できます。この場合、すべてのサーバに同じオプションが適用されます。RQADDR
を指定すると、サーバは MSSQ セットを生成します。MIN
のデフォルト値は 1 です。
起動するサーバの最大数を指定するには、MAX
パラメータを設定します。tmboot(1)
コマンドを実行すると、実行時に MIN
で指定した数のサーバが起動します。続いて、MAX
で指定した数までのサーバが起動します。デフォルトは、MIN
で指定した数のサーバです。
MIN
および MAX
パラメータは、大規模なアプリケーションのコンフィグレーション ファイルを管理しやすいサイズに保つ上で役立ちます。MAX
の最大値は、IPC リソースを割り当てて設定します。MIN
および MAX
パラメータは、会話型サービスやサーバの自動生成でも使用されます。
Oracle Tuxedo CORBA 環境でのサーバの正しい起動順序は以下のとおりです。この順序に従わないと、CORBA アプリケーションは起動しません。
コード リスト 3-2 は、Oracle Tuxedo ソフトウェアに収録されているサンプル アプリケーションの 1 つである、Oracle Tuxedo CORBA University Basic アプリケーションの起動順序を示します。この SERVERS
セクションは、ubb_b.nt
コンフィグレーション ファイルを編集したものから抜粋しています。
*SERVERS
# デフォルトでは、サーバがクラッシュした場合、24 時間以内に最大 5 回まで
# 再起動する
#
DEFAULT:
RESTART = Y
MAXGEN = 5
# Oracle Tuxedo System のイベント ブローカを起動する。このイベント ブローカは、
# NameManager サービスを提供するサーバを起動する前に
# 起動する必要がある
#
TMSYSEVT
SRVGRP = SYS_GRP
SRVID = 1
# TMFFNAME は、Oracle Tuxedo CORBA 環境で提供される、
# NameManager および FactoryFinder サービスを実行するサーバ
# NameManager は、Oracle Tuxedo CORBA 環境固有のサービスで、
# アプリケーションが提供する名前とオブジェクト参照の
# マッピングを管理する
# NameManager Service (-N オプション) を起動する。この NameManager は
# マスタとして起動される (-M オプション)
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 2
CLOPT = "-A -- -N -M"
# スレーブ NameManager サービスを起動する
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 3
CLOPT = "-A -- -N"
# FactoryFinder (-F) サービスを起動する
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 4
CLOPT = "-A -- -F"
# インタフェース リポジトリ サーバを起動する
#
TMIFRSVR
SRVGRP = SYS_GRP
SRVID = 5
# University サーバを起動する
#
univb_server
SRVGRP = ORA_GRP
SRVID = 6
RESTART = N
# IIOP クライアントのリスナを起動する
#
# サーバ マシンのホスト名とポート番号を
# 指定する。通常、ポート番号は 2500
#
ISL
SRVGRP = SYS_GRP
SRVID = 7
CLOPT = "-A -- -n //TRIXIE:2500"
この例では、TMSYSEVT
サーバと TMFFNAME
サーバを起動した後、以下のコンポーネントが起動します。
CLOPT
パラメータ) については、「CORBA インタフェース リポジトリの管理」を参照してください。univb_server
。サンプル アプリケーションの詳細については、『Tuxedo CORBA University サンプル アプリケーション』を参照してください。CLOPT
パラメータについては、「Oracle Tuxedo CORBA リモート クライアント アプリケーションの管理」を参照してください。注意 : | 何らかの理由でグループやマシンを移行または停止するとき、アクティブなスレーブ NameManager が別のグループにある場合は、マスタ NameManager がアクティブになる前に FactoryFinder やスレーブ NameManager が再起動されないように、UBBCONFIG ファイルを設定してください。たとえば、FactoryFinder がマスタ NameManager と同じグループにある場合、マスタ NameManager が先に起動されるように、UBBCONFIG ファイルでサーバの起動順序を変更します。 |
Oracle Tuxedo システムでは、サーバが要求を処理するときに使用するオプションを指定できます。これらのオプションは、servopts
で定義します。これを実行すると、サーバ プロセス用の実行時オプションが示されます。サーバサイドでは、コマンドラインからの情報の取得が必要な場合があります。CLOPT
パラメータを使用すると、コマンドライン オプションを指定して、サーバに設定されたデフォルト値を変更したり、ユーザ定義のオプションを tpsvrinit()
関数に渡すことができます。
標準の main()
を使用すると、引数 -- までのオプションのセットが解析され、以降のオプションは tpsvrinit()
に渡されます。CLOPT
のデフォルトのオプション -A は、buildserver(1)
または buildobjserver(1)
によって組み込まれたすべてのサービスを宣言するようサーバに通知します。次の表は、使用可能なオプションの一部です。
注意 : | その他の標準的な main() オプションについては、『Oracle Tuxedo のファイル形式とデータ記述方法』の「servopts(5)」を参照してください。 |
サンプルの BANKAPP
アプリケーションでは、次のようにコマンドライン オプションを指定しています。
CLOPT=”-A -- -T 10"
これは、サーバに対し、すべてのサービスを宣言するオプション (-A) と 10 という窓口 ID が指定されていることを示します。操作が発生すると、特定の窓口のレコードは更新されます。このオプション、特に tpsvrinit()
に渡されるオプションを使用する場合、システム管理者とアプリケーション プログラマは、よく相談する必要があります。
環境設定を指定するには、MACHINES
セクションにある ENVFILE
パラメータを使用します。また、特定のサーバ プロセスに同じパラメータを指定できますが、セマンティクスは同じです。MACHINES
セクションの ENVFILE
と、SERVERS
セクションの ENVFILE
が指定されると、両方とも有効になります。MACHINES
および SERVERS
セクションの両方に同じ変数が定義された場合は、SERVERS
セクションの設定が優先されます。
ENVFILE
は、サーバ環境ファイルを定義するパラメータであり、以下の特性があります。
環境変数の設定の詳細については、『Oracle Tuxedo のファイル形式とデータ記述方法』の「tuxenv (5)」を参照してください。
まず、SERVERS
セクションでサーバに名前を割り当てます。指定する名前は、以下のいずれかのコマンドを使用して作成した実行可能ファイルです。
また、各サーバにグループ識別子 (SRVGRP
) を指定する必要があります。SRVGRP
には、GROUPS
セクションのエントリの最初に指定した名前を設定します。最後に、指定されたグループ内の各サーバ プロセスにユニークな数値識別子 (SRVID
) を指定します。サーバ エントリには、必ず SRVGRP
パラメータと SRVID
パラメータが必要です。エントリでは、アプリケーションのほか、起動するマシンも記述されるため、複数のエントリに同じサーバ名が表示される場合もあります。
サーバ キュー情報を指定すると、サーバ メッセージ キューを作成し、このキューへのアクセスを制御できます。Oracle Tuxedo システムでは、RQADDR
パラメータを使用して複数サーバ、単一キュー (MSSQ) セットを作成できます。どのサーバに対しても、このパラメータの値に英数字を設定できます。同じサービスを提供するすべてのサーバに対して同じ RQADDR
値を設定すると、サービスを 1 つのメッセージ キューにまとめて MSSQ セットを作成することができ、ロード バランシングを実現できます。
MSSQ セットは、銀行の窓口担当者の業務に似ています。たとえば、窓口が 4 つあり、顧客は 1 列に並んで順番にサービスを受けるとします。顧客は、空いた窓口へ順番に進みます。当然ながら、融資担当の窓口は別です。融資担当の窓口では、預金の預け入れや引き出しを処理できません。また、融資を希望する顧客は限られています。同様に、MSSQ セットの場合も、提供するサービスが異なるサーバは、同じ MSSQ セットに参加できません。
RQPERM
パラメータを使用すると、UNIX システムの規則に従った、サーバ要求キューのパーミッションを指定できます (0666 など)。この設定により、要求キューへのアクセスを制御できます。
MSSQ サーバ内のサービス ルーチンでサービス要求が発行されると、それらの要求に対する応答を応答キューで受け取る必要があります。このような応答キューは、REPLYQ=Y
で指定することができます。デフォルトでは、REPLYQ
に N
が設定されています。REPLYQ
が Y
に設定されている場合、RPPERM
パラメータを使ってその応答キューにパーミッションを割り当てることもできます。
REPLYQ を Y に設定して、このサーバに対して応答キューが個別に作成されるようにします。そうでない場合、応答は、MSSQ セット内の全サーバが共有する要求キューに送信されてしまい、応答が要求元のサーバに返されるかどうかは保証されません。マルチスレッド化されたサーバの場合は、このパラメータが設定されていなくても、自動的に REPLYQ が作成されます。
|
|
適切にデバッグされたサーバは、自動的に終了しません。デフォルトでは、アプリケーションの実行中に終了したサーバは、自動的に再起動しません。サーバを再起動する場合は、RESTART
パラメータに Y
を設定します。RESTART
が Y の場合、RCMD
、MAXGEN
、または GRACE
パラメータを設定できます。
RCMD
パラメータを使用すると、サーバの再起動時に並行して実行されるコマンドを指定できます。たとえば、サーバ開発者や、サーバのアクティビティを監査する担当者に電子メールを送信する、という操作を実行できます。
MAXGEN
パラメータは、GRACE
で指定された期間内にサーバを再起動できる回数を示します。サーバは、GRACE
で指定された秒数の間に MAXGEN-1
回だけ再起動できます。GRACE
がゼロに設定されると、サーバの再起動は無制限に行われます。MAXGEN
はデフォルトで 1 に設定されており、256 より大きい値は設定できません。GRACE
には、ゼロまたはゼロより大きい値を設定します。ただし、2,147,483,647 (231 - 1) 以上の値は設定できません。
注意 : | 完全にデバッグされたサーバを再起動する必要はありません。RESTART パラメータおよび関連するパラメータには、テスト用とプロダクション用の 2 つの値を設定する必要があります。 |
SYSTEM_ACCESS
パラメータは、サーバ プロセスを共有メモリにアタッチし、システム コードの外から内部テーブルへのアクセスを許可するかどうかを決定します。アプリケーション開発時には、このようなアクセスを許可しないように設定しておく (PROTECTED
) ことをお勧めします。アプリケーションをテストした後で、SYSTEM_ACCESS
の値を FASTPATH
に変更すると、パフォーマンスを高めることができます。
このパラメータの設定は、RESOURCES
セクションで NO_OVERRIDE
が指定されない限り、RESOURCES セクションの値をオーバーライドします。RESOURCES セクションで NO_OVERRIDE が指定されている場合、このパラメータは無視されます。NO_OVERRIDE
値は、このセクションでは使用されません。
SYSTEM_ACCESS
パラメータには、以下の特性があります。
MAXDISPATCHTHREADS
は、各サーバ プロセスで生成される、同時に実行できるディスパッチ スレッドの最大数です。MAXDISPATCHTHREADS > 1
のときに使用される個別のディスパッチ スレッドは、パラメータで指定した数には含まれません。MAXDISPATCHTHREADS は、MINDISPATCHTHREADS と同じか、またはそれ以上でなければなりません (MINDISPATCHTHREADS<=MAXDISPATCHTHREADS
)。指定しない場合、このパラメータのデフォルト値は 1 です。
MINDISPATCHTHREADS
は、最初にサーバを起動するときのサーバ ディスパッチ スレッドの最小数です。MAXDISPATCHTHREADS
> 1 のときに使用される個別のディスパッチャ スレッドは、MAXDISPATCHTHREADS
の値の一部としてはカウントされません。MAXDISPATCHTHREADS は、MINDISPATCHTHREADS と同じか、またはそれ以上でなければなりません (MINDISPATCHTHREADS<=MAXDISPATCHTHREADS
)。このパラメータのデフォルト値は 0 です。
最初のスレッド以降の各サーバ スレッドのスタック サイズをバイト数で指定する必要があります。このパラメータを指定しないか、または 0 の場合は、オペレーティング システムのデフォルト値が使用されます。このオプションは、MAXDISPATCHTHREADS
に 1 より大きい値が指定された場合のみサーバに影響を与えます。
CORBA 環境では、IIOP リスナ (ISL) プロセスが、リモート クライアントの接続要求をリスンします。ISL プロセスは、Oracle Tuxedo システム側で提供されるサーバとして、1 つのエントリで指定されます。
IIOP を使用する場合、Secure Socket Layer (SSL) プロトコルによってプロセス間の安全な通信方法を定義します。ISL コマンドの -s
オプションを使用して、必須パラメータを設定します。これらのパラメータは、SSL プロトコルを使用する場合のみ設定する必要があります。SSL プロトコルは、Oracle Tuxedo Security Pack にインストールされています。
表 3-1 に、SSL パラメータの特性を示します。
これらのパラメータ設定の詳細については、『Tuxedo CORBA アプリケーションのセキュリティ機能』を参照してください。
コンフィグレーション ファイルの SERVICES
セクションでは、アプリケーションで提供されるサービスに関する詳しい情報を指定できます。トランザクションに関与しない非分散型のアプリケーションの場合、これらの情報の指定は簡単です。SERVICES
セクションには、以下の種類の情報が含まれます。
サービスには必須パラメータはありません。サービスを示す必要があるのは、省略可能なパラメータを設定する場合のみです。
次の表では、SERVICES
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
以下は、コンフィグレーション ファイルの SERVICES セクションの例です。
*SERVICES
#
DEFAULT: LOAD=50 PRIO=50
RINGUP BUFTYPE=”VIEW:ringup”
この例では、サービスのデフォルトのロードおよび優先順位の値は 50
です。宣言されている 1 つのサービスは、RINGUP
サービスであり、バッファ タイプ ringup
VIEW
が指定されています。
AUTOTRAN ={Y|N}
パラメータをコーディングして、要求メッセージがすでにトランザクション モードの場合に、トランザクションを自動的に開始するかどうかを指定できます。デフォルト値は N
です。
あるサービスに対するトランザクションが開始した後でそのトランザクションが失敗した場合、ロールバックされるまでのタイムアウト間隔を指定することができます。タイムアウト間隔が自動的に実行されるように指定するには、TRANTIME
パラメータを次のように設定します。
デフォルト値は 30 秒です。0 (タイムアウトの最大値) をコンピュータに指定すると、トランザクションでタイムアウトは発生しません。
UBBCONFIG
ファイルの RESOURCES
セクションでは、MAXTRANTIME
という追加のトランザクション タイムアウト プロパティを使用できます。MAXTRANTIME
タイムアウト値が TRANTIME
タイムアウト値またはトランザクションを開始する tpbegin(3c)
の呼び出しで渡されたタイムアウト値より小さい場合、トランザクションのタイムアウトは MAXTRANTIME
の値に削減されます。
注意 : | MAXTRANTIME は Oracle Tuxedo 8.0 以前を実行するマシン上で開始されるトランザクションには影響を与えません。ただし、Oracle Tuxedo 8.1 以降を実行するマシンがトランザクションの影響を受ける場合は、そのノードに対してコンフィグレーションされている MAXTRANTIME 値までトランザクション タイムアウト値が制限 (必要に応じて減少) されます。 |
BUFTYPE
パラメータを使用すると、サービス コードとは関係なく、バッファ タイプをチェックするサービスを調整できます。このパラメータを設定する場合は、サービスで受け付けるバッファ タイプのリストを次の形式で指定します。
すべての subtype
を受け入れるには、サブタイプの値に *
を設定します。
サービスの BUFTYPE
パラメータの値が ALL
の場合、このサービスはすべてのバッファ タイプを受け付けます。デフォルト値は ALL
です。
要求の処理中に、予期しないシステム エラーが発生し、サービスが停止 (フリーズ) したり、制御不可能になる場合があります。このようなプロセスは削除することが望ましいですが、実際にこれらのエラーを検出したり、エラー原因を追跡することは困難です。Oracle Tuxedo システムには、エラーを識別できなくても、このようなプロセスを終了できるメカニズムが組み込まれています。このメカニズムを使用するには、SVCTIMEOUT
パラメータを設定します。
SVCTIMEOUT
パラメータは、サービスが要求を処理できる時間 (秒) を指定します。このパラメータで定義された間隔が経過してもサービスが要求を処理できなかった場合、その要求の処理は強制終了されます。本質的に、サービス タイムアウトは、停止または制御不能状態にあるアプリケーション サーバのスカベンジ機能として働きます。デフォルトでは、Oracle Tuxedo システムはサービス プロセスを終了しません。この機能を有効にするには、SVCTIMEOUT
を設定する必要があります。
UBBCONFIG
ファイルの SVCTIMEOUT
パラメータに値を割り当てるか、または TM_MIB
の TA_SVCTIMEOUT
属性を動的に変更することによって設定できます。SVCTIMEOUT
または TA_SVCTIMEOUT
の値には、サービスが 1 つの要求の処理に費やす時間の 2 ~ 3 倍の時間を指定しておくことをお勧めします。このような値を設定しておくと、Oracle Tuxedo システムは、停止状態のプロセスだけを削除します。
この節では、サービス タイムアウト エラーの原因と結果、および Oracle Tuxedo システムによるエラーのレポート方法を説明します。また、エラーの処理方法に関するアドバイスも掲載しています。
タイムアウトが発生すると、Oracle Tuxedo システムは、停止されたサービスの実行元であるサーバ プロセスを終了します。ただし、子プロセスは終了しません。次に、TPESVCERR
エラーを返し、サービスの処理中に未知のエラーが発生したことを示します。会話型サービスでは、会話型イベントである TPEV_SVCERR
が返されます。
Oracle Tuxedo システムでは、以下の 3 つの機能を使用してサービス タイムアウトを通知します。
SVCTIMEOUT
値がコンフィグレーション可能になったため、クライアント アプリケーション側では、SVCTIMEOUT
の値を超過して発生した TPESVCERR
とそれ以外の原因で発生した TPESVCERR
を簡単に識別できるようにしておくことが必要です。この情報は、ULOG
にも記録されていますが、クライアント プログラムによって抽出するのは困難です。サービス タイムアウトの TPESVCERR
をその他のエラーと区別するため、プログラムで TPESVCERR
を検出した後に tperrordetail
(3c) ルーチンを呼び出し、サービス タイムアウトが発生したときに TPED_SVCTIMEOUT
を生成することができます。
また、サービス タイムアウトが発生すると、システム イベントである .SysServiceTimeout
が生成されます。.SysServiceTimeout
イベントが発生すると、ULOG
に次のように記録されます。
ERROR: .SysServiceTimeout: %TA_SERVERNAME、グループ %TA_SRVGRP、id %TA_SRVID のサーバが、サービス・タイムアウトのため強制終了しました。
UBBCONFIG
ファイルの SERVICES
セクションにある SVCTIMEOUT
パラメータを変更するか、または TM_MIB
の T_SERVER
クラスまたは T_SERVICE
クラスの TA_SVCTIMEOUT
属性を変更してサービス タイムアウトを制御することができます。また、ULOG
ファイルをモニタして、サービス タイムアウトの動作を確認することもできます。 ULOG
ファイルをモニタする方法に加え、アプリケーション オペレータは、サービス タイムアウトの発生を警告する .SysServiceTimeout
イベントをサブスクライブできます。 tperrordetail
(3c) や tpstrerrordetail
(3c) といった関数、および TPED_SVCTIMEOUT
エラー詳細コードを使用できます。
また、サービス タイムアウトの発生時に生成されるシステム イベント .SysServiceTimeout
の 1 つまたは複数のサブスクリプションが可能です。
処理にかかる時間はサービスごとに異なるため、それぞれ個別に BLOCKTIME
値を設定する必要があります。アプリケーションによっては、クライアントごとまたはサービス呼び出しごとに、個別にデフォルトのブロックタイム値をオーバーライドする必要がある場合もあります。
UBBCONFIG
ファイルの SERVICES
セクションの BLOCKTIME
パラメータを使用すると、トランザクションに関与しない個々のサービスに秒単位でブロックタイム値を指定できます。ここで設定した値によって、指定したサービスのデフォルト値 (RESOURCES
セクションの BLOCKTIME
パラメータの値) がオーバーライドされます。サービスごとの BLOCKTIME
パラメータ値は、DMCONFIG
ファイルを使用してリモート サービスに設定することもできます。詳細については、「UBBCONFIG(5)」(SERVICES
セクション) および「DMCONFIG(5)」(DM_IMPORT
セクション) を参照してください。
SVCTIMEOUT
パラメータとは異なり、BLOCKTIME
パラメータはサービス アプリケーションを終了しません。代わりに、指定した時間が経過した後に、サービス要求の処理中にサーバが応答を受信しなかったことをクライアントに通知します。
注意 : | tpsblktime(3c) および tpgblktime(3c) 関数を使用すると、トランザクションに関与しないブロックタイム要求を設定してブロックタイム値を取得することもできます。 |
ロード バランシングを有効にするには、RESOURCES
セクションの LDBAL
パラメータを Y
に設定します。実行するサービスには、LOAD
パラメータの値に基づいてロード ファクタが割り当てられます。Oracle Tuxedo システムは、各サーバの負荷の合計をモニタします。各サービス要求は、負荷の合計が最も低いサーバにルーティングされます。ルーティング先のサーバの負荷合計は、要求されたサービスの LOAD
ファクタ分だけ増加します。
負荷の情報は、サービス要求のルーティング元サイトにのみ保存されます。Oracle Tuxedo システムでは、分散アプリケーションのすべてのサイトに負荷の情報を常に伝播するのは非効率的です。このような環境でロード バランシングを行う場合、各サイトは、そのサイトで発生した負荷だけを認識し、必要に応じてロード バランシングを行います。つまり、各サイトは、指定されたサーバ (またはキュー) に関し、それぞれ異なる負荷の統計情報を持ちます。したがって、負荷が最も低いと見なされるサーバは、サイトごとに異なります。
ロード バランシングが無効であり、複数のサーバが同じサービスを提供する場合は、使用可能な最初のキューが要求を受け取ります。
データ依存型ルーティングを使用するときは、サービス用のルーティング基準を指定する必要があります。このような基準を指定するには、ROUTING
パラメータを次のように設定します。
このパラメータが指定されないと、サービスはデータ依存型ルーティングを実行しません。
文字列の最大値は 15 文字です。サービスには、1 つ以上の
ROUTING
パラメータの値は割り当てられません。1 つのサービスに複数のエントリがあり、それらのエントリに異なる SRVGRP
パラメータが含まれている場合でも、ROUTING
の値はすべてのエントリで同じでなければなりません。
複数のグループに同じサービスを割り当てたり、異なるグループのサービス エントリに対して設定したさまざまなサービス固有のパラメータに異なる値を割り当てることができます。そのためには、SRVGRP
パラメータにグループ固有の値を指定して、各グループのサービスに対して個別のエントリを作成してください。
PRIO
パラメータを使用して、サービスの優先順位を割り当てることにより、アプリケーション内のデータ フローを有効に制御できます。PRIO には、0 ~ 100 の数値を指定する必要があります。数値が大きいほど割り当てられるサービスの優先順位も高くなります。優先順位の高いサービスは優先順位の低いサービスより先にキューから取り出されますが、システムは、10 回に 1 回ごとに FIFO 順序で要求をキューから取り出し、メッセージがキューで無制限に待機することがないようにしています。
たとえば、サーバ 1 はサービス A、B、および C を提供します。サービス A および B の優先順位は 50
、サービス C の優先順位は 70 です。サービス C に対するサービス要求は、常に A または B に対する要求の前にキューから取り出されます。A および B に対する要求は、互いに等しくキューから取り出されます。
注意 : | tpsprio() 呼び出しを使用すると、優先順位を動的に変更できます。 |
次の SERVICES セクションの例は、サービスに対する優先順位の割り当て方を示します。
*SERVICES
A SRVGRP=GRP1 PRIO=50 LOAD=60
A SRVGRP=GRP2 PRIO=70 LOAD=30
この例では、2 つのサーバ グループに対して異なるサービス固有のパラメータが割り当てられます。サーバ グループ GRP1
のサービス A には、優先順位 50、およびロード 60 が割り当てられ、サーバ グループ GRP2
のサービス A に優先順位 70、およびロード 30 が割り当てられます。
サービスの処理にかかる最大時間を秒単位で指定するには、SVCTIMEOUT
パラメータを次のように設定します。
値は 0
以上でなければなりません。この値が 0
以外の場合は、サービスに対してタイムアウトが適用されることを示します。サービス要求を処理しているサーバは SIGKILL
シグナルによって終了します。このパラメータのデフォルト値は 0 です。
注意 : | このセクションは、Oracle Tuxedo CORBA 環境にのみ適用されます。 |
コンフィグレーション ファイルの INTERFACES
セクションは、Oracle Tuxedo システムの CORBA 環境用のパラメータを定義するためのセクションです。このセクションでは、アプリケーションで使用される CORBA インタフェースに対する、アプリケーション全体のデフォルト パラメータを指定します。ファクトリベース ルーティングに参加する CORBA インタフェースに対しては、インタフェース名を定義し、Tuxedo CORBA 環境で各インタフェースに適用するルーティング基準の名前を指定します。ファクトリベース ルーティングは、プロセスを特定のサーバ グループに分散するための機能です。
ファクトリベース ルーティングを実装する場合、INTERFACES
セクションだけでなく、ROUTING
セクションでルーティング基準を定義し、GROUPS
セクションでグループ名を定義する必要があります。関連パラメータとファクトリベース ルーティングの詳細については、この章の「コンフィグレーション ファイルの ROUTING セクションの作成方法」を参照してください。
アプリケーションで使用する CORBA インタフェース固有の情報は、コンフィグレーション ファイルの INTERFACES
セクションで指定します。必須パラメータはありません。省略可能なパラメータが不要の場合、CORBA インタフェースを示す必要はありません。INTERFACES
セクションには、以下の種類の情報が含まれます。
表 3-2 に、AUTOTRAN、FACTORYROUTING、LOAD、PRIO、SRVGRP、TRANTIME、および TIMEOUT パラメータの特性を示します。
AUTOTRAN を Y に設定します。AUTOTRAN=Y は、インタフェースがすでにトランザクション モードにある場合は無効です。デフォルト値は N です。
AUTOTRAN の設定が有効かどうかは、システム設計者が実装コンフィグレーション ファイル (ICF) またはサーバ記述ファイル (XML) でそのインタフェースに対して指定したトランザクション ポリシーによって異なります。このトランザクション ポリシーが、実行時に、関連する T_IFQUEUE MIB オブジェクトのトランザクション ポリシーの属性になります。この値が実際にアプリケーションの動作に影響するのは、システム設計者がトランザクション ポリシーを「optional」に指定した場合だけです。
|
|||
各 CORBA インタフェースに対し、INTERFACES
セクションでインタフェースのルーティング基準を指定します。INTERFACES
セクションでは、FACTORYROUTING 識別子を使用してルーティング基準を指定します。
University Production サンプル アプリケーションでは、ファクトリベース ルーティングのコード作成方法を示しています (コード リスト 3-3 を参照)。このサンプルの UBBCONFIG
ファイル (ubb_p.nt
または ubb_p.mk
) は、Oracle Tuxedo ソフトウェアのインストール ディレクトリに収められています。\samples\corba\university\production
サブディレクトリを検索してください。
*INTERFACES
"IDL:beasys.com/UniversityP/Registrar:1.0"
FACTORYROUTING = STU_ID
"IDL:beasys.com/BillingP/Teller:1.0"
FACTORYROUTING = ACT_NUM
上の例では、University Production サンプルの 2 つのインタフェースに、完全修飾されたインタフェース名が使用されています。FACTORYROUTING
識別子は、ルーティング値の名前を指定します。値はそれぞれ、STU_ID
および ACT_NUM
です。
INTERFACES
FACTORYROUTING
パラメータと ROUTING
セクションの関連性については、「University Production サンプル アプリケーションの CORBA ファクトリベース ルーティング」を参照してください。
コード リスト 3-4 は、サンプル アプリケーション Bankapp でのファクトリベース ルーティングの指定例を示しています。
*INTERFACES
"IDL:BankApp/Teller:1.0"
FACTORYROUTING=atmID
*ROUTING
atmID
TYPE = FACTORY
FIELD = "atmID"
FIELDTYPE = LONG
RANGES = "1-5:BANK_GROUP1,
6-10: BANK_GROUP2,
*:BANK_GROUP1
この例では、IDL:Bankapp/Teller
インタフェースが、ROUTING
セクションで定義された atmID
という名前のファクトリベース ルーティング基準を使用しています。この例の ROUTING
セクションでは、2 つのグループに処理を分散するように指定しています。atmID
フィールドが 1 ~ 5 または 10 より大きい場合は、BANK_GROUP1
がアプリケーションで使用されるインタフェースを処理し、atmID
が 6 ~ 10 の場合は、BANK_GROUP2 がアプリケーションで使用されるインタフェースを処理します。
Oracle Tuxedo の CORBA 環境では、ロード バランシングは常に有効です。
各 CORBA インタフェースには、起動するたびに LOAD
ファクタが割り当てられます。これで、各サーバ プロセスの実行結果として CORBA インタフェース全体にかかる負荷が追跡されます。各インタフェース要求は、負荷の合計が最も低いサーバにルーティングされます。ルーティング先のサーバの負荷は、ルーティングされた CORBA インタフェースのロード ファクタ分 (LOAD
) だけ増加します。ロード バランシングが無効であり、複数のサーバが同じ CORBA インタフェースを提供する場合は、使用可能な最初のキューが要求を受け取ります。
Oracle Tuxedo CORBA 環境でのロード バランシングの詳細については、『Oracle Tuxedo CORBA アプリケーションのスケーリング、分散、およびチューニング』の「システム制御のロード バランシングの有効化」を参照してください。
Oracle Tuxedo のリリース 8.0 では、CORBA 環境におけるパラレル オブジェクトがサポートされるようになりました。これにより、ローカル ドメイン内の複数サーバ間でロード バランシングが可能になります。Oracle Tuxedo CORBA 環境のパラレル オブジェクトについては、『Oracle Tuxedo CORBA アプリケーションのスケーリング、分散、およびチューニング』の「パラレル オブジェクトの使用」を参照してください。
PRIO
パラメータを使用してインタフェースの優先順位を割り当てることにより、Oracle Tuxedo のクライアントまたはサーバ アプリケーションのデータ フローを制御することができます。たとえば、サーバ 1 がインタフェース A、B、および C を提供し、インタフェース A と B の優先順位が 50
、インタフェース C の優先順位が 70 であるとします。インタフェース C に対する要求は、常に A または B に対する要求より先にキューから取り出されます。A および B に対する要求がキューから取り出される優先順位は同等です。システムは、10 回に 1 回の割合で FIFO
順序で要求をキューから取り出し、メッセージがキューで無制限に待機しないようにします。
ロード バランシングや優先順位など、インタフェース固有のパラメータは、サーバ グループごとに変えて設定することができます。この場合、SRVGRP
パラメータに指定したグループごとに、インタフェースの設定を繰り返す必要があります。
UBBCONFIG
の ROUTING
セクションでは、SERVICES
セクション (ATMI のデータ依存型ルーティングの場合) や INTERFACES
セクション (CORBA のファクトリベース ルーティングの場合) で指定されたルーティング基準を詳細に定義することができます。
注意 : | CORBA 環境でのファクトリベース ルーティングのコンフィグレーションについては、『Oracle Tuxedo CORBA アプリケーションのスケーリング、分散、およびチューニング』を参照してください。 |
次の表では、ROUTING
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
以下は、コンフィグレーション ファイルの ROUTING
セクションの例です。
BRNCH FIELD=B_FLD
RANGES="0-2:DBG1,3-5:DBG2,6-9:DBG3"
BUFTYPE="FML"
次の表は、ルーティング バッファ フィールドとフィールド タイプの説明です。
FML フィールドの名前 (FML バッファ)、XML の要素または属性、FML フィールド テーブルで指定された VIEW フィールド名 (FLDTBLDIR および FIELDTBLS 環境変数を使用)、FML の VIEW テーブル (VIEWDIR および VIEWFILES 環境変数を使用) のいずれかになります。この情報は、メッセージの処理時に、データ依存型ルーティングに関連するフィールド値を取得するために使用されます。FML32 バッファ内のフィールドがルーティングに使用される場合は、8191 以下の数値をフィールド番号として指定します。
|
|
RANGES
パラメータでは、フィールド値を次のようにグループ名にマップできます。
RANGES=”[
val1
[-
val2
]:
group1
] [,
val3
[-
val4
]:
group2
]...[,*:
groupn
]”
val1
、val2
などはフィールドの値であり、groupn
はグループ名または任意のグループが選択されることを示すワイルドカード文字 (*) です。最後に val
の代わりに指定されている * は「catch-all」、つまり、データが指定された範囲内にない場合はデフォルトのグループに割り当てられることを示します。また、データが範囲内にあっても、その範囲のエントリに関連する有効なサーバがグループ内にない場合、サービス要求は、ワイルドカード「*
」で指定したデフォルトのグループに転送されます。val1
には、以下の値を使用できます。
範囲はいくつでも指定できますが、ルーティング情報は共有メモリに保存されるため、システム リソースを消費します。
注意 : | 範囲は重複してもかまいません。ただし、値が 2 つの範囲に当てはまる場合、その値は最初のグループにマップされます。たとえば、RANGES が RANGES=”0-5:Group1,3-5:Group2" に指定されている場合、4 は Group1 にルーティングされます。 |
Oracle Tuxedo のデータ依存型ルーティングでは、BUFTYPE
パラメータを使用して、バッファ タイプを指定できます。このパラメータは、特定のバッファ タイプとサブタイプに対してルーティング基準を適用するため、SERVICES
セクションの対応するパラメータと似ています。ルーティングに使用できるのは、FML
、XML
、および VIEW
タイプだけです。構文は、SERVICES
セクションと同じく、type:subtype[,subtype]
をセミコロンで区切って示します。ルーティング基準には 1 つのタイプしか指定できません。この制限により、サービスのルーティング時に受け付けられるバッファ タイプの数が限定されます。
CORBA University Production サンプル アプリケーションでは、Oracle Tuxedo でファクトリベース ルーティングを実装する方法を示します。このサンプルの UBBCONFIG
ファイル (ubb_p.nt
または ubb_p.mk
) は、Oracle Tuxedo ソフトウェアのインストール ディレクトリに収められています。\samples\corba\university\production
サブディレクトリを検索してください。
ubb_b.nt
コンフィグレーション ファイルから抜粋した以下の INTERFACES、ROUTING
、および GROUPS
セクションは、Oracle Tuxedo の CORBA アプリケーションでファクトリベース ルーティングを実装する方法を示しています。
INTERFACES
セクションには、ファクトリベース ルーティングを有効にするインタフェースの名前のリストが示されます。各インタフェースに対し、このセクションでインタフェースのルーティング基準を指定します。このセクションでは、コード リスト 3-5 の例に示すように、FACTORYROUTING
という識別子を使用してルーティング基準を指定します。
*INTERFACES
"IDL:beasys.com/UniversityP/Registrar:1.0"
FACTORYROUTING = STU_ID
"IDL:beasys.com/BillingP/Teller:1.0"
FACTORYROUTING = ACT_NUM
上の例では、ファクトリベース ルーティングを使用する Production サンプルで、2 つのインタフェースに完全修飾されたインタフェース名が使用されています。FACTORYROUTING
識別子は、ルーティング値の名前を指定します。値はそれぞれ、STU_ID
および ACT_NUM
です。
ROUTING
セクションでは、ルーティング値ごとに以下のデータを指定します。
TYPE
パラメータでは、ルーティングのタイプを指定します。Production サンプルでは、ルーティングのタイプはファクトリベース ルーティングです。したがって、このパラメータは、FACTORY
と定義します。 FIELD
パラメータでは、ファクトリがルーティング値として挿入する変数名を指定します。Production サンプルでは、フィールド パラメータはそれぞれ、student_id
および account_number
です。 FIELDTYPE
パラメータでは、ルーティング値のデータ型を指定します。Production サンプルでは、student_id
および account_number
のフィールドは long 型です。 RANGES
パラメータでは、サーバ グループと、各ルーティング値の有効範囲のサブセットを関連付けます。
コード リスト 3-6 は、Production サンプル アプリケーションで使用される UBBCONFIG
ファイルの 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"
上の例では、ID が特定の範囲に含まれる学生の Registrar オブジェクトが 1 つのサーバ グループに、別の範囲に含まれる学生の Registrar オブジェクトが別のグループにインスタンス化されています。同様に、特定の範囲に含まれる口座の Teller オブジェクトが 1 つのサーバ グループに、別の範囲に含まれる口座の Teller オブジェクトが別のグループにインスタンス化されています。
UBBCONFIG
ファイルの ROUTING
セクションで RANGES
識別子によって指定されたグループを、識別してコンフィグレーションする必要があります。たとえば、Production サンプルでは、ORA_GRP1
、ORA_GRP2
、APP_GRP1
、および APP_GRP2
の 4 つのグループが指定されていますが、ここでこれらのグループをコンフィグレーションし、実行するマシンを識別する必要があります。
コード リスト 3-7 は、Production サンプルの UBBCONFIG
ファイルにある GROUPS
セクションの例を示しています。GROUPS
セクションに列挙されている名前が、ROUTING
セクションに指定されているグループ名とどのように一致するかに注目してください。この点が、ファクトリベース ルーティングの正常な動作に不可欠です。さらに、アプリケーションでグループをコンフィグレーションする方法に関する何らかの変更も、ROUTING
セクションに反映される必要があります。Oracle Tuxedo ソフトウェアに収録されている Production サンプルは、1 台のマシンで実行するようにコンフィグレーションされていますが、複数のマシンで実行するようにコンフィグレーションすることもできます。
*GROUPS
APP_GRP1
LMID = SITE1
GRPNO = 2
TMSNAME = TMS
APP_GRP2
LMID = SITE1
GRPNO = 3
TMSNAME = TMS
ORA_GRP1
LMID = SITE1
GRPNO = 4
OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir=.+MaxCur=5"
CLOSEINFO = ""
TMSNAME = "TMS_ORA"
ORA_GRP2
LMID = SITE1
GRPNO = 5
OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir=.+MaxCur=5"
CLOSEINFO = ""
TMSNAME = "TMS_ORA"
コード リスト 3-8 は、INTERFACES
セクションを使用して Bankapp サンプル アプリケーションを拡張し、ファクトリベース ルーティングを使用する方法を示しています。Oracle Tuxedo ソフトウェアに収録されているサンプル アプリケーションでは、以下のパラメータは設定されていません。
*INTERFACES
"IDL:BankApp/Teller:1.0"
FACTORYROUTING=atmID
*ROUTING
atmID
TYPE = FACTORY
FIELD = "atmID"
FIELDTYPE = LONG
RANGES = "1-5:BANK_GROUP1,
6-10: BANK_GROUP2,
*:BANK_GROUP1
*GROUPS
SYS_GRP
LMID = SITE1
GRPNO = 1
BANK_GROUP1
LMID = SITE1
GRPNO = 2
BANK_GROUP2
LMID = SITE1
GRPNO = 3
この例では、IDL:Bankapp/Teller
インタフェースが、ROUTING
セクションで定義された atmID
という名前のファクトリベース ルーティング基準を使用しています。この例では、以下の 2 つのサーバ グループに処理が分散されます。
マルチコンテキスト化されたアプリケーションをコンフィグレーションするには、UBBCONFIG
ファイルを通常どおりに編集し、アプリケーションに必要な次の表のパラメータを追加します。編集には、テキスト エディタまたは Oracle Tuxedo Administration Console を使用します。
コンフィグレーション ファイルのコンパイルとは、テキスト形式の UBBCONFIG
ファイルを、バイナリ形式の TUXCONFIG
ファイルに変換することです。コンフィグレーション ファイルをコンパイルするには、tmloadcf
コマンドを実行します。tmloadcf
により UBBCONFIG
ファイルが解析され、バイナリ形式のファイルがロードされます。
tmloadcf
は、ファイル (UBBCONFIG
の構文に記述された標準入力) を読み取って構文をチェックし、成功すると、バイナリ形式のコンフィグレーション ファイルである TUXCONFIG
ファイルをロードします。TUXCONFIG
環境変数および TUXOFFSET
環境変数 (省略可能) により、TUXCONFIG
ファイルとオフセットが指定され、情報はこの場所に格納されます。tmloadcf
は、-c
または -n
オプションが指定されていない限り、UBBCONFIG
ファイルの RESOURCES
セクションで指定されている MASTER
マシンでのみ実行できます。
注意 : | UBBCONFIG ファイルの RESOURCES セクションに UID が指定されている場合、この値は、tmloadcf を実行する担当者のユーザ識別子 (UID ) と同じでなければなりません。 |
注意 : | TUXCONFIG 環境変数に指定されたパス名は、UBBCONFIG ファイルの MACHINES セクションに指定されている TUXCONFIG パラメータの値と完全に一致しなければなりません (大文字/小文字の区別も含む)。パス名が一致していない場合、tmloadcf(1) は正常に実行されません。 |
![]() ![]() ![]() |