構成ファイルの要件は、アプリケーションのニーズによって決まります。いくつかのタイプの構成を次に説明します。
1台のマシンの構成では、構成ファイルに次のセクションを作成する必要があります。各タスクをクリックすると、そのタスクの実行に関する説明が表示されます。
次の図のいずれかの領域をクリックして、その領域で指定されているセクションの作成方法を参照することもできます。
分散ATMIアプリケーションでは、構成ファイルに次のセクションを作成する必要があります。次のいずれかのタスクをクリックすると、そのタスクの実行に関する説明が表示されます。
注: | Oracle Tuxedo システムに分散型のCORBAアプリケーション用の構成ファイルを作成する方法については、CORBAアプリケーションのスケーリング、分散およびチューニングを参照してください。 |
次の図のいずれかの領域をクリックして、その領域で指定されているセクションの作成方法を参照することもできます。
複数ドメインの構成では、参加しているドメインごとに2つの構成ファイルを作成する必要があります。
2つのドメイン(たとえば、ローカル・ドメインのlapp
とリモート・ドメインのrapp
)から構成されるアプリケーションでは、次のタスクが必要です。
図3-1に、複数のドメインにまたがるサンプル・アプリケーションの構成タスクを示します。
図3-2は、2つのドメインにまたがるアプリケーションの構成に必要なUBBCONFIG
ファイルとDMCONFIG
ファイルのセクションを示しています。一方のドメインがローカル・ドメインを表し、もう一方のドメインがリモート・ドメインを表しています。
次の図のいずれかの領域をクリックすると、構成ファイルのそのセクションの作成手順が表示されます。
構成ファイルの最初のセクションは、RESOURCES
セクションである必要があります。このセクションで定義されるパラメータは、アプリケーション全体を制御し、システム全体のデフォルトとして機能します。ただし、MACHINES
セクションに他の値を割り当てることで、RESOURCES
パラメータの値をマシンごとにオーバーライドできます。
表3-1では、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
に設定されます。グローバル共有メモリーのないマルチプロセッサとネットワーク化されたアプリケーションの場合は、MP
のMODEL
値が使用されます。これは必須パラメータです。
OPTIONS
パラメータは、アプリケーション構成オプションのカンマ区切りリストです。使用可能な2つのオプションは、(ネットワーク構成を示す)LAN
と(アプリケーション・サーバー移行が許可されることを示す)MIGRATE
です。
表3-2に、MODELおよびOPTIONSパラメータの特性を示します。
構成ファイルの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リソースが消費されます。過度にサイズが小さい場合は、限界値を超えると処理が失敗します。tmloadcf -c
コマンドを使用し、特定のアプリケーションに必要なIPCリソースの最大量を検索できます。(『Oracle Tuxedoコマンド・リファレンス』の「tmloadcf(1)」を参照してください。)
MAXACCESSERS、MAXSERVERS、MAXSERVICES、MAXINTERFACESおよびMAXOBJECTSは、IPCサイズ設定を制御するチューニング可能なパラメータです。アプリケーションに割り当てられている共有メモリー量は、MAXGTT
パラメータとMAXCONV
パラメータで制御されます。
注: | システムが提供するサーバーの例として、AUTHSVR 、TMQUEUE 、TMQFORWARD 、TMUSREVT 、TMSYSEVT 、TMS 、TMS_QM 、GWTDOMAIN 、WSL があります。 |
MAXACCESSERS
の増加によるコストは、クライアントまたはサーバー・プロセス(アクセサ - 次の注意を参照)のサイトあたり1つの追加セマフォです。MAXACCESSERS
値によって追加されるオーバーヘッドに加えて、システム・プロセスには小さい固定のセマフォ・オーバーヘッドがあります。MAXSERVERS
とMAXSERVICES
の増加のコストは、サーバー、サービス、クライアント・エントリそれぞれに保持される少量の共有メモリーです。これらのパラメータに関する一般的な概念は、アプリケーションの将来の拡張に対応することです。MAXACCESSERS
を精査することの方が重要です。
注: | システムは、アクセス・スロットごとに1つのセマフォを掲示板に割り当てます。セマフォは、複数のプロセスが掲示板内の同じ共有メモリーに同時にアクセスすることを防ぐラッチ回路です。 |
リリース7.1より前のOracle Tuxedoでは、アプリケーションのMAXACCESSERS
パラメータとMAXSERVERS
パラメータの両方が、ユーザー・ライセンス・チェック・スキームに関与しました。具体的には、そのマシンのMAXACCESSERS
の数と、アプリケーションですでに実行されている1台以上のマシンのMAXACCESSERS
の数の合計が、MAXSERVERS
の数とアプリケーションのユーザー・ライセンス数の合計を超える場合、マシンの起動は許可されません。したがって、アプリケーションのMAXACCESSERS
の合計数は、MAXSERVERS
の数とアプリケーションのユーザー・ライセンス数の合計以下である必要があります。
Oracle Tuxedoリリース7.1以降のユーザー・ライセンス・チェック・スキームでは、チェックの実行時に、アプリケーションのユーザー・ライセンス数とアプリケーションで現在使用されているライセンス数の2つの要因のみ考慮されます。すべてのユーザー・ライセンスが使用中の場合、新規クライアントはアプリケーションに参加できません。
この例では、一度に最大75プロセス(クライアントおよびサーバー)がシステムにアクセスできます。40台のサーバーが掲示板の55個のサービスを通知できます。
*RESOURCES
MAXACCESSERS 75
MAXSERVERS 40
MAXSERVICES 55
Oracle Tuxedoでは、アプリケーション全体に対し、ロード・バランシングのアルゴリズムを使用するかどうかを制御できます。ロード・バランシングを使用すると、ロード・ファクタがシステム内の各サービスに適用され、各サーバーの負荷の合計を追跡できます。各サービス・リクエストは、負荷が最も少ない適切なサーバーに送信されます。
ロード・バランシングを使用する必要があるかどうかを指定するには、LDBAL
パラメータをY
(Yes)またはN
(No)に設定します。デフォルトでは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
の2つの値を指定する必要があります。
Site1
はMASTER
マシンです。SITE2
はバックアップ・マシンです。
*RESOURCES
MASTER SITE1, SITE2
構成ネットワーク・グループの最大数を指定するには、MAXNETGROUPS
パラメータを設定します。この値は、1以上8192未満にする必要があります。デフォルトは8です。このパラメータは省略できます。
定期的に(デフォルトでは120秒ごとに)掲示板連絡(BBL)はマシン上のサーバーのサニティをチェックします。ただし、SCANUNIT
パラメータとSANITYSCAN
パラメータを設定することで、これらのチェックの頻度を変更できます。
SANITYSCAN
パラメータを使用して、サーバーのサニティ・チェック間のSCANUNIT
の経過数を指定します。現在のデフォルトは、SANITYSCAN
* SCANUNIT
が約120秒になるように設定されています。
また、BLOCKTIME
パラメータを設定することで、ブロッキング・メッセージ、トランザクションおよびその他のシステム・アクティビティのタイムアウト期間数を指定できます。
注: | 非トランザクション型のブロッキング時間値は、サービスごと、ATMI呼出しごとおよびコンテキストごとに設定できます。これらのブロック時間値は、UBBCONFIG ファイルのRESOURCES セクションで設定されたシステム全体のデフォルトであるBLOCKTIME 値をオーバーライドします。詳細は、「非トランザクション型サービス・レベルのブロック時間を指定する」を参照してください。 |
タイムアウトという用語は、クライアントが次の操作を行っている間に経過する時間の長さを総称します。
ブロッキング・タイムアウトという用語は、クライアント・リクエストがブロッキング条件のクリーン・アップの待機に費やした時間の長さを表します。非同期サービス・リクエストおよび会話のブロック・タイムアウトは、個々の送信操作と受信操作に適用されます。プロセスがtpacall
(3c)、tpconnect
(3c)またはtpsend
(3c)を使用してメッセージを送信する場合、タイムアウトは、キューが一杯の場合にリクエストがキューに入るまで待機している期間にのみ適用されます。クライアント・プロセスがtpgetrply
(3c)またはtprecv
(3c)呼出しを発行してメッセージを受信する場合、タイムアウトはキューが空の場合にクライアントが着信メッセージを待機できる時間の長さを指定します。
この例では、サニティ・スキャンは30秒ごとに実行され、リクエストが10秒を超えてブロックされることはありません。10のSCANUNIT
と3のSANITYSCAN
により、BBLスキャンの前に10秒のブロックが3回、つまり30秒の経過が許可されます。
*RESOURCES
SCANUNIT 10
SANITYSCAN 3
BLOCKTIME 1
UID
、GID
、PERM
の3つのパラメータを設定することで、Oracle Tuxedo管理機能へのアクセスを認可された管理者のみに制限できます。
MACHINES
セクションで指定された値をオーバーライドしていないかぎり、UID
およびGID
のデフォルトは、それぞれ構成に対してtmloadcf(1)
コマンドを実行するユーザーのユーザーIDとグループIDです。
|
|||
|
|||
注: | リモート・マシンに対してこれらのパラメータに割り当てられている値を上書きできます。リモート・マシン上のユーザーIDとグループIDは、MASTER マシン上のユーザーIDおよびグループIDと同じである必要はありません。構成ファイルのMACHINES セクションに別のユーザーIDとグループIDを指定することで、デフォルトをオーバーライドできます。指定されていない場合は、RESOURCES セクションに指定されている値が使用されます。 |
PERM
パラメータ - 権限を介してアプリケーション・キューへの書込み機能を制限することで最小限のセキュリティを提供します。SECURITY
パラメータ - より高いセキュリティを提供します。このパラメータが設定されている場合、クライアントはアプリケーションに参加するときにパスワードを指定する必要があります。このパスワードは、TUXCONFIG
ファイルがUBBCONFIG
ファイルから生成されたときに管理者が指定したパスワードに照らしてチェックされます。 AUTHSVC
パラメータ - 最大レベルのセキュリティを設定します。このパラメータが設定されている場合、アプリケーションに参加するためのクライアント・リクエストは認証サービスに送信されます。認証サービスは、Oracle Tuxedoシステムで提供されるデフォルトのサービスまたはKerberosサービスなどのサード・パーティ・ベンダーのサービスです。このレベルのセキュリティは、SECURITY
パラメータが設定されていないかぎり使用できません。注: | LDAPシングル・セキュリティ管理を有効化するには、UBBCONFIG ファイルのSERVERS セクションでLAUTHSVR を設定する必要があります。 |
注: | 認証および認可の拡張セキュリティ管理を有効化するには、UBBCONFIG ファイルのSERVERS セクションでXAUTHSVR を設定する必要があります。 |
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 セクションを参照してください。 |
表3-3では、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
パラメータを使用して、あるマシンから別のマシンにサービス・リクエストを送信するコストの計算時に加算する負荷を指定できます。この値は0以上、32,768未満の数値にする必要があります。デフォルトは0です。
最初に、アドレス部分にMASTER
マシンのアドレスを定義します(これはMACHINES
セクション・エントリの基礎になります)。エントリの他のすべてのパラメータは、このアドレスで指定されたマシンを記述します。UNIXシステムでuname -n
を呼び出すことで、出力する値にアドレスを設定する必要があります。Windowsシステムでは、「ネットワーク」コントロール パネルの「ネットワークID」ダイアログで「コンピュータ名」の値を参照してください。
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です。環境変数の設定の詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』の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にマップするだけです。分散トランザクション・システムをサポートする柔軟性も備えられています。
表3-4では、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ファクトリ・ベース・ルーティングに関する項(3-59ページ)を参照してください。ルーティング機能を正しく動作させるには、この一致が重要です。また、アプリケーションでグループを構成する際にグループ名を変更した場合は、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
(『Oracle 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
セクションを構成します。
表3-5では、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アドレスを含む文字配列に変換されます。
tmloadcf(1)
は、NLSADDR
がMASTER
LMID
のエントリから欠落している場合は警告を出力し、これ以外の任意のマシンのエントリから欠落している場合はエラーを出力します。NLSADDR
がMASTER
LMID
から欠落している場合には、tmadmin(1)
をリモート・マシンから管理者モードで実行することはできません。読取り専用操作のみに限定されます。また、MASTER
サイトで障害が発生しても、バックアップ・サイトから再起動できません。
UBBCONFIG
ファイルのNETGROUPS
セクションでは、LAN環境で使用可能なネットワーク・グループの情報を設定します。1組のマシンに割り当てるネットワーク・グループの数に制限はありません。ネットワーク・グループを構成する各ネットワークの通信方式は、優先度のメカニズム(NETPRIO
)によって決まります。
すべてのLMID
は、デフォルトのネットワーク・グループ(DEFAULTNET
)のメンバーでなければなりません。デフォルトのネットワーク・グループのグループ番号(NETGRPNO
)は、0です。ただし、DEFAULTNET
に設定されているデフォルトの優先度は変更できます。リリース6.4より前のOracle Tuxedoシステムで定義されているネットワークは、DEFAULTNET
ネットワーク・グループに割り当てられています。
表3-6では、NETGROUPS
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
ネットワーク・アドレスは、ネットワーク・グループに関連付けられます。この機能の例を以下に示します。
たとえば、First State Bankには5台のマシン(A - E)で構成されるネットワークがあるとします。各マシンは、以下のように定義した4つのネットグループの中の2つまたは3つに属します。
すべてのマシンは、DEFAULTNET
(企業WAN)に属します。さらに、各マシンはMAGENTA_GROUP
またはBLUE_GROUP
に関連付けられます。MAGENTA_GROUP
LANの一部のマシンは、GREEN_GROUP
というプライベート・グループにも属しています。図3-3は、ネットワーク内のアドレスを持つマシンAからEを示します。
表3-7に、マシンと、対応するグループのアドレスを示します。
注: | ローカル・エリア・ネットワークは場所間でルーティングされないため、マシンD (BLUE_GROUP LAN内)は、共通の単一アドレス、つまり企業WANネットワーク・アドレスのみを使用してマシンA (GREEN_GROUP LAN内)と通信します。 |
前の項で説明した構成を設定するには、First State Bankのシステム管理者は、リスト3-1に示すように、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システムでサポートされるコマンド行オプションについては、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』の「servopts(5)」を参照してください。 |
表3-8では、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
セクションの例では、次のパラメータと値が指定されています。
|
サンプル・サーバーの3つのインスタンスが、サーバー・グループ
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
# By default, restart a server if it crashes, up to 5 times
# in 24 hours.
#
DEFAULT:
RESTART = Y
MAXGEN = 5
# Start the Oracle Tuxedo System EventBroker. This event broker
# must be started before any servers providing the
# NameManager Service
#
TMSYSEVT
SRVGRP = SYS_GRP
SRVID = 1
# TMFFNAME is a Oracle Tuxedo CORBA provided server that
# runs the NameManager and FactoryFinder services.
# The NameManager service is a Oracle Tuxedo CORBA-specific
# service that maintains a mapping of application-supplied names
# to object references.
# Start the NameManager Service (-N option). This name
# manager is being started as a Master (-M option).
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 2
CLOPT = "-A -- -N -M"
# Start a slave NameManager Service
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 3
CLOPT = "-A -- -N"
# Start the FactoryFinder (-F) service
#
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 4
CLOPT = "-A -- -F"
# Start the interface repository server
#
TMIFRSVR
SRVGRP = SYS_GRP
SRVID = 5
# Start the university server
#
univb_server
SRVGRP = ORA_GRP
SRVID = 6
RESTART = N
# Start the listener for IIOP clients
#
# Specify the host name of your server machine as
# well as the port. A typical port number is 2500
#
ISL
SRVGRP = SYS_GRP
SRVID = 7
CLOPT = "-A -- -n //TRIXIE:2500"
この例では、TMSYSEVT
サーバーとTMFFNAME
サーバーを起動した後、以下のコンポーネントが起動します。
CLOPT
パラメータ)については、「CORBAインタフェース・リポジトリの管理」を参照してください。univb_server
。詳細は、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)
によって組み込まれたすべてのサービスを通知するようサーバーに指示します。表3-9は、使用可能なオプションの一部です。
注: | その他の標準的なmain() オプションについては、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』の「servopts(5)」を参照してください。 |
BANKAPP
サンプル・アプリケーションでは、コマンド行オプションは次のように指定されます。
CLOPT=”-A -- -T 10"
サーバーは、すべてのサービスを通知するオプション(-A)と、窓口IDの10を与えられるので、オペレーションごとに特定の窓口レコードを更新できます。このオプション、特にtpsvrinit()
に渡されるオプションを使用する場合、システム管理者とアプリケーション・プログラマは、よく相談する必要があります。
環境設定を指定するには、MACHINES
セクションにあるENVFILE
パラメータを使用します。また、特定のサーバー・プロセスに同じパラメータを指定できますが、セマンティクスは同じです。MACHINES
セクションのENVFILE
と、SERVERS
セクションのENVFILE
が指定されると、両方とも有効になります。MACHINES
およびSERVERS
セクションの両方に同じ変数が定義された場合は、SERVERS
セクションの設定が優先されます。
ENVFILE
は、サーバー環境ファイルを定義するパラメータであり、以下の特性があります。
環境変数の設定の詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』の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
パラメータを使ってその応答キューに権限を割り当てることもできます。
このサーバーに対して、応答キュー(リクエスト・キューとは別)を設定するかどうかを指定します。リクエスト・キューを使用しているサーバーが1つだけの場合、応答は問題なくリクエスト・キューから受け取られます。Oracle Tuxedoシステムでは、サーバーがMSSQセットのメンバーであり、サービスが応答メッセージを受け取るようにプログラミングされている場合は、
REPLYQ をYに設定して、このサーバーに対して応答キューが個別に作成されるようにします。そうでない場合、応答は、MSSQセット内の全サーバーが共有するリクエスト・キューに送信されてしまい、応答がリクエスト元のサーバーに返されるかどうかは保証されません。マルチスレッド化されたサーバーの場合は、このパラメータが設定されていなくても、自動的にREPLYQ が作成されます。
|
|
適切にデバッグされたサーバーは、自動的に終了しません。デフォルトでは、アプリケーションの実行中に終了したサーバーは、自動的に再起動しません。サーバーを再起動する場合は、RESTART
パラメータにY
を設定します。RESTART
がYの場合、RCMD
、MAXGEN
、またはGRACE
パラメータを設定できます。
RCMD
パラメータを使用すると、サーバーの再起動時に並行して実行されるコマンドを指定できます。たとえば、サーバー開発者や、サーバーのアクティビティを監査する担当者に電子メールを送信する、という操作を実行できます。
MAXGEN
パラメータは、サーバーがGRACE
で指定された期間にアクティブになれる合計回数を表します。サーバーは、GRACE
で指定された秒数内にMAXGEN-1
回再起動できます。GRACE
がゼロに設定されている場合、サーバーの再起動に制限はありません。MAXGEN
はデフォルトで1になり、256を超えることはできません。GRACE
は0より大きい必要があり、2,147,483,647 (231 - 1)を超えることはできません。
注: | 完全にデバッグされたサーバーを再起動する必要はありません。RESTART パラメータおよび関連するパラメータには、テスト用と本番用の2つの値を設定する必要があります。 |
SYSTEM_ACCESS
パラメータは、サーバー・プロセスを共有メモリーにアタッチし、システム・コードの外から内部表へのアクセスを許可するかどうかを決定します。アプリケーション開発時には、このようなアクセスを許可しないように設定しておく(PROTECTED
)ことをお薦めします。アプリケーションをテストした後で、SYSTEM_ACCESS
の値をFASTPATH
に変更すると、パフォーマンスを向上させることができます。
このパラメータの設定は、RESOURCES
セクションでNO_OVERRIDE
が指定されないかぎり、RESOURCESセクションの値をオーバーライドします。この場合、このパラメータは無視されます。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にインストールされています。
これらのパラメータ設定の詳細は、『CORBAアプリケーションにおけるセキュリティの使用』を参照してください。
構成ファイルのSERVICES
セクションでは、アプリケーションで提供されるサービスに関する詳しい情報を指定できます。非トランザクション型、非分散型のアプリケーションの場合、これらの情報の指定は簡単です。SERVICES
セクションには、以下の種類の情報が含まれます。
サービスには必須パラメータはありません。サービスを示す必要があるのは、省略可能なパラメータを設定する場合のみです。
表3-10では、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, group %TA_SRVGRP, id %TA_SRVID server killed due to a service timeout
UBBCONFIG
ファイルのSERVICES
セクションにあるSVCTIMEOUT
パラメータを変更するか、またはTM_MIB
のT_SERVER
クラスまたはT_SERVICE
クラスのTA_SVCTIMEOUT
属性を変更してサービス・タイムアウトを制御することができます。また、ULOG
ファイルをモニターして、サービス・タイムアウトの動作を確認することもできます。 ULOG
ファイルをモニタリングする方法に加え、アプリケーション・オペレータは、サービス・タイムアウトの発生をアラートする.SysServiceTimeout
イベントをサブスクライブできます。 tperrordetail
(3c)およびtpstrerrordetail
(3c)関数と、TPED_SVCTIMEOUT
エラー詳細コードを使用できます。
場合によっては、1つ以上のサブスクリプションを.SysServiceTimeout
システム・イベントに追加できます。このイベントは、サービス・タイムアウトの発生時に生成されます。
処理にかかる時間はサービスごとに異なるため、それぞれ個別に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
セクションには、以下の種類の情報が含まれます。
次の表に、AUTOTRAN、FACTORYROUTING、LOAD、PRIO、SRVGRP、TRANTIME、TIMEOUTの各パラメータの特性をリストします。
操作の呼出しを受け取るときにトランザクションを自動的に開始する場合は、CORBAインタフェースごとに
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-89ページ)を参照してください。
リスト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つのグループに処理を分散するように指定しています。BANK_GROUP1
は、atmID
フィールドが1から5の間か、または10を越える場合に、アプリケーションで使用されるインタフェースを処理します。BANK_GROUP2は、atmID
フィールドが6から10 (10を含む)の間にある場合に、アプリケーションで使用されるインタフェースを処理します。
Oracle TuxedoのCORBA環境では、ロード・バランシングは常に有効です。
各CORBAインタフェースには、起動するたびにLOAD
ファクタが割り当てられます。これで、各サーバー・プロセスの実行結果としてCORBAインタフェース全体にかかる負荷が追跡されます。各インタフェース・リクエストは、負荷の合計が最も低いサーバーにルーティングされます。ルーティング先のサーバーの負荷は、ルーティングされたCORBAインタフェースのロード・ファクタ分(LOAD
)だけ増加します。ロード・バランシングが無効であり、複数のサーバーが同じCORBAインタフェースを提供する場合は、使用可能な最初のキューがリクエストを受け取ります。
Oracle Tuxedo CORBA環境でのロード・バランシングの詳細は、CORBAアプリケーションのスケーリング、分散およびチューニングのシステム制御ロード・バランシングの有効化に関する項を参照してください。
Oracle Tuxedoのリリース8.0では、CORBA環境におけるパラレル・オブジェクトがサポートされるようになり、ローカル・ドメイン内の複数サーバー間でロード・バランシングが可能になります。Oracle Tuxedo CORBA環境のパラレル・オブジェクトについては、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環境でのファクトリ・ベース・ルーティングの構成については、『CORBAアプリケーションのスケーリング、分散およびチューニング』を参照してください。 |
表3-11では、ROUTING
セクションの各パラメータを説明し、参照先へのリンクやその他の情報を示します。
BRNCH FIELD=B_FLD
RANGES="0-2:DBG1,3-5:DBG2,6-9:DBG3"
BUFTYPE="FML"
次の表は、ルーティング・バッファ・フィールドとフィールド・タイプの説明です。
Oracle Tuxedoのデータ依存型ルーティングでは、このパラメータの値は、
FML フィールドの名前(FML バッファ)、XML の要素または属性、FML フィールド表で指定されたVIEW フィールド名(FLDTBLDIR およびFIELDTBLS 環境変数を使用)、FML のVIEW表(VIEWDIR およびVIEWFILES 環境変数を使用)のいずれかになります。この情報は、メッセージの処理時に、データ依存型ルーティングに関連するフィールド値を取得するために使用されます。FML32 バッファ内のフィールドがルーティングに使用される場合は、8191以下の数値をフィールド番号として指定します。
要素は、XMLドキュメントまたはデータグラムの要素のタイプ(または名前)あるいは要素の属性名と見なされます。この情報は、ドキュメントまたはデータ・グラムの送信時に、データ依存型ルーティングに関連する要素の内容または属性値を取得するために使用されます。索引はサポートされないので、Oracle Tuxedoシステムは、データ依存型ルーティングでXMLバッファを処理する際に、与えられた要素タイプの最初のオカレンスだけを認識します。
|
|
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
ファイルを通常どおりに編集し、アプリケーションに必要な表3-12のパラメータを追加します。編集には、テキスト・エディタまたはOracle Tuxedo管理コンソールを使用します。
構成ファイルのコンパイルとは、テキスト形式の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) は正常に実行されません。 |