|
構成ファイルの要件は、アプリケーションのニーズによって決まります。いくつかのタイプの構成を次に説明します。
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パラメータを使用すると、nontransactionalの個々のサービスに対してブロック・タイム値を秒単位で指定できます。指定したサービスに関してデフォルトの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)は正常に実行されません。 |
|