Oracle Tuxedo/Oracle Exalogic
ユーザーズ・ガイド
このドキュメントでは、ExalogicのためのすべてのOracle Tuxedo最適化を紹介します。このドキュメントを使用すれば、ExalogicでTuxedoを簡単にインストール、構成および実行できるようになります。
Oracle Exalogicは、演算処理、ネットワーキングおよび記憶域ハードウェアを仮想化、オペレーティング・システムおよび管理ソフトウェアと統合するエンジニアド・システムです。広範なビジネス・アプリケーション・ワークロードに対応するために卓越したパフォーマンス、信頼性、可用性、スケーラビリティおよび投資保護を提供します。
Oracle ExalogicのためのOracle Tuxedo最適化について
11.1.1.3.0以降、Oracle TuxedoではOracle Exalogicプラットフォーム向けの多数の最適化を提供しています。
表1に、Exalogicがサポートする機能を示します。
表1
ExalogicがサポートするOracle Tuxedo機能
|
|
|
Direct Cross Node Communication Leveraging RDMA
|
Oracle Tuxedo 11gR1 (11.1.1.3.0)以上
|
Direct Cross Domain Communication Leveraging RDMA
|
Oracle Tuxedo 12cR2 (12.1.3)以上
|
|
|
Oracle Tuxedo 11gR1 (11.1.1.3.0)以上
|
|
|
Oracle Tuxedo 11gR1 (11.1.1.3.0)以上
|
|
|
Oracle Tuxedo 12cR1 (12.1.1)以上
|
|
|
Oracle Tuxedo 12cR1 (12.1.1)以上
|
|
|
Oracle Tuxedo 12cR1 (12.1.1)以上
|
|
|
Oracle Tuxedo 12cR1 (12.1.1)以上
|
|
|
Oracle Tuxedo 12cR2 (12.1.3)以上
|
|
|
Oracle Tuxedo 12cR2 (12.1.3)以上
|
Single Group Multiple Branches (SGMB)
|
Oracle Tuxedo 12cR2 (12.1.3)以上
|
データベース・インスタンス間のフェイルオーバー/フェイルバック
|
Oracle Tuxedo 12cR2 (12.1.3)以上
|
|
|
Oracle Tuxedo 12cR2 (12.1.3)以上
|
|
|
ローリング・パッチ040が適用されたOracle Tuxedo 12cR2 (12.1.3)以上
|
|
注意:
|
Oracle Tuxedo 12cR2 (12.1.3)以降、Direct Cross Node Communication Leveraging RDMAおよびDirect Cross Domain Communication Leveraging RDMAを除き、すべての最適化がExalogic Linux 64bitおよびSPARC 64bitの両方をサポートしています。
|
Oracle Linux 32ビット・プラットフォーム上のOracle Tuxedo 12.1.3.0.0 RP020以降、Direct Cross Node Communication Leveraging RDMA、Direct Cross Domain Communication Leveraging RDMA、Oracle Tuxedo SDP SupportおよびShared Applications Stagingを除き、すべての最適化がExalogic Linux 32ビットをサポートしています。
Direct Cross Node Communication Leveraging RDMA
これはTuxedo 11.1.1.3.0の新機能であり、MPモード下でTuxedoアプリケーションのパフォーマンスを著しく向上できます。
以前のリリースでは、ローカル・クライアントとリモート・サーバー間のメッセージの転送にはブリッジを介す必要がありました。たとえば、メッセージは最初にIPCキューを介してローカル・ブリッジに送信され、次にローカル・ブリッジはネットワークを介してメッセージをリモート・ブリッジに送信し、リモート・ブリッジはメッセージをサーバーのIPCキューに送信し、最後にサーバーはIPCキューからメッセージを取得します。そのため、同時実行性が高いとブリッジがボトルネックとなってしまいます。InfinibandのRDMA機能を利用することにより、Tuxedo 11.1.1.3.0では、「Direct Cross Node Communication Leveraging RDMA」の新機能が導入され、ローカル・クライアントがリモート・サーバーに直接メッセージを転送する機能を提供しています。
Direct Cross Domain Communication Leveraging RDMA
以前のリリースでは、ローカル・ドメインとリモート・ドメイン間のメッセージの転送にはドメイン・ゲートウェイ(GWTDOMAIN)を介す必要がありました。たとえば、メッセージは最初にIPCキューを介してローカルGWTDOMAINに送信され、次にローカルGWTDOMAINはネットワークを介してメッセージをリモートGWTDOMAINに送信し、リモートGWTDOMAINはメッセージをサーバーのIPCキューに送信し、最後にサーバーはIPCキューからメッセージを取得します。そのため、同時実行性が高いとドメイン・ゲートウェイがボトルネックとなってしまいます。このリリースでは、TUXCONFIGファイルでDirect Cross Domain Communication Leveraging RDMAを有効化すると、ローカル・クライアントとリモート・サーバーはドメイン・ゲートウェイをスキップし、メッセージを直接転送します。
この機能を使用すると、CPUサイクルを最大限に活用できるようにSPINCOUNTの値を動的に調整できます。
Tuxedoの掲示板(BB)は、すべてのアプリケーション構成情報および動的処理情報が実行時に格納されるメモリー・セグメントです。Tuxedoシステムの一部の操作(サービス名のルックアップやトランザクションなど)では、掲示板をロックし、掲示板へのアクセスを1つのプロセスのみに制限する場合があります。プロセスまたはスレッドにより、掲示板が別のプロセスまたはスレッドでロックされていることが検出されると、再試行するか、ロック・スピンをSPINCOUNT回数行ってから(スピンを介したユーザー・レベル・メソッド)、この操作をやめて、待機キューでスリープ状態に入ります(システム・セマフォを介したシステム・レベル・メソッド)。スリープ状態はリソースを消費するため、一定のロック・スピンを行ってからスリープ状態になるように設定しておく方が効率的です。
SPINCOUNTパラメータの値は、アプリケーションおよびシステムによって異なるため、管理者は異なるSPINCOUNT値の下でアプリケーション・スループットを確認して、SPINCOUTが適切な値になるように手動で調整する必要があります。
自動チューニング・ロック・メカニズムにより、ジョブのチューニングを自動的に行います。SPINCOUNT値が適切な値になるように設計されているため、掲示板をロックするほとんどのリクエストが、待機キューでスリープ状態になるのではなく、ロック・スピンを行うことによって完了します。
Oracle Tuxedo 12cリリース2 (12.1.3)では、自動チューニング・ロック・メカニズムのアルゴリズムが改良され、チューニングが以前よりも正確になりました。
InfiniBandベースのネットワーク・ハードウェアを使用することの利点の1つは、ソケット・ダイレクト・プロトコル(SDP)を利用する機能です。このプロトコルを使用して、アプリケーションは通常のソケット・インタフェースを介して互いに通信できますが、順序付け、断片化、タイムアウト、再試行などのTCP/IPに関連したネットワーク処理を回避できます。これはInfiniBandハードウェアがこのような内容を扱うからです。また、SDPは、InfiniBandハードウェアが呼出し側のアドレス領域からバッファを直接転送することが可能な、ゼロ・コピー転送もサポートします。
SDPを利用することにより、Tuxedoアプリケーションはネットワーク処理で消費されるCPU量を減らすとともに、ネットワーク処理のスループット全体を向上させることができます。SDPは、ブリッジ間通信を含むすべてのTuxedoネットワーク接続で、他のTuxedoドメインと通信するためのドメイン・ゲートウェイGWTDOMAINで、ワークステーションやJoltクライアント用に、およびWebLogic Tuxedo Connectorを介したWebLogic Serverとの通信に使用できます。
Oracle Tuxedo 12cリリース2 (12.1.3)では、同一のTuxedoノードにおけるプロセス間通信でIPCメッセージ・キューのかわりに共有メモリー・キューを用いることで、ExalogicでのTuxedoアプリケーションのパフォーマンスが大幅に改善されました。共有メモリー・キューを使用すると、送信者と受信者のプロセスは、事前に割り当てられたメッセージを共有メモリー内で交換できます。これにより、メッセージが目標とするターゲットに届くまで何度もメッセージをコピーする必要がなくなり、結果的にスループットが大幅に向上するとともに待機時間も短縮されます。
この機能では、XAのリソース・マネージャの読取り専用最適化を利用します。2フェーズ・コミット・シナリオでは、準備リクエストが予約グループを除く参加グループに同期されます。これらのグループのすべてのトランザクション・ブランチが読取り専用の場合、Tuxedoは予約グループで1フェーズ・コミットを直接実行します。これは、(予約グループへの)1つの準備リクエストが省略され、TLOGの記述が無視されることを意味します。
TuxedoドメインおよびWTCを介したWLS間のグローバル・トランザクションを含む、ドメイン内またはドメイン間のいずれのトランザクションもサポートされます(WLS 12.1.1の場合、WLSのパッチ、または以降のリリースについて、Oracleサポートにお問い合せください)。
Oracle Tuxedo 12cでは、Exalogicシステムでストレージ・アプライアンスの多数のコンピュート・ノード全体で共有アプリケーション・ディレクトリ(APPDIR)を使用できるため、アプリケーション・デプロイメントの管理がより簡単に行えるようになります。
Oracle Tuxedo 11.1.1.3.0以前は、異なるドメインでは異なるグローバル・トランザクション識別子(GTRID)が使用されるため、トランザクションのブランチが同じデータベース上で実行される場合でも、ドメインをまたがるトランザクションは疎結合されます。Oracle Tuxedo 12.1.1以降、共通GTRIDがデフォルトで導入され、ドメインをまたがるグローバル・トランザクション内のブランチで共通GTRIDが使用されます。ブランチは同一データベースで実行されている場合には密結合されます(データベースが許可している場合)。
XAトランザクション・アフィニティは、可能な場合に、1つのグローバル・トランザクション内のすべてのOracleデータベース・リクエストを同一のOracle RACインスタンスにルーティングする機能を提供します。そのリクエストがOracle Tuxedoアプリケーション・サーバーからのものか、Oracle WebLogic Serverからのものかは関係ありません。この機能により、データベース要求を新しいOracle RACインスタンスにリダイレクトするコストを削減できるため、アプリケーション・パフォーマンス全体が向上します。
以前のリリースでは、グローバル・トランザクションの場合、参加しているグループごとに独自のトランザクション・ブランチを持ち、一意のトランザクション・ブランチ識別子(XID)が各ブランチを識別していました。グローバル・トランザクションに複数のグループが含まれる場合、Tuxedoでは各ブランチで2フェーズ・コミットを採用し、最初に参加しているグループをコーディネータとみなします。
このリリースの共通XID (トランザクション・ブランチ識別子)機能を使用して、Tuxedoは同一グローバル・トランザクション内の他のすべてのグループとコーディネータ・グループのXIDを共有します。以前のリリースでは、複数グループが参加している場合は、各グループが自身のXIDを持つために2フェーズ・コミットを必要としましたが、これとは対照的です。
共通XIDは、コーディネータ・ブランチを直接使用するため、同一のサービスを介して同一のOracle RACインスタンスに接続するグループに対するXAコミット操作が不要です。
グローバル・トランザクションのすべてのグループがコーディネータ・ブランチを直接使用する場合、(2フェーズ・コミット・プロトコルではなく)1フェーズ・コミット・プロトコルが使用されるため、
TLOGの書込みは行われません。
Single Group Multiple Branches (SGMB)
以前のリリースでは、同一の参加グループのサーバーはグローバル・トランザクション内の同一トランザクション・ブランチを使用しています。これらのサーバーが同一RACの異なるインスタンスに接続する場合は、トランザクション・ブランチは失敗し、XAエラー
XAER_AFFINITYが報告されます。これは、1つのブランチでは複数のインスタンスを通過できないことを示しています。このような理由から、Tuxedoグループで使用できるのは、シングルトンRACサービスのみです。DTPサービス(DTPオプションである
srvctl内の
-xが指定されている場合)または1つのインスタンスのみで提供されるサービスを、シングルトンRACサービスに指定できます。
このリリースでは、この機能により、サーバー・グループ内の複数サーバーが同一のグローバル・トランザクションに参加している場合の、シングルトンRACサービスの使用が不要になります。同一サーバー・グループおよび同一グローバル・トランザクションのサーバーが異なるRACインスタンスに接続している場合は、別のトランザクション・ブランチが使用されます。これにより、このようなアプリケーションは、使用可能なRACインスタンス間でロード・バランシングを実行できるようになります。
|
注意:
|
1つのグループに16を超えるインスタンスが含まれる場合、トランザクションは依然として失敗します。
|
データベース・インスタンス間のフェイルオーバー/フェイルバック
高速アプリケーション通知(FAN)は、データベース・クライアントがデータベースの状態の変化を知ることができる、Oracle Databaseによって提供される機能です。これらの通知によって、アプリケーションはRACノードの計画停止やデータベースの負荷の不均衡などのイベントに対してプロアクティブに対応できます。Tuxedoは、新しいシステム・サーバー
TMFANによってFAN通知のサポートを提供します。このシステム・サーバーでOracle RACインスタンスをモニターし、データベース・インスタンスの起動または停止の場合にTuxedoアプリケーション・サーバーに通知して新規データベース接続を確立できます。
FAN通知に基づいてTuxedo
TMFANサーバーは、各RACインスタンスの負荷情報を含むロード・バランシング・アドバイザリを受信できます。指摘された負荷の変化が
TMFANコマンド行スイッチで指定されたしきい値を超えた場合、Tuxedoリクエストはデータベースの負荷の低いTuxedoアプリケーション・サーバーに転送されます。
Oracle Tuxedoでは、グローバル・トランザクション表(GTT)と呼ばれるOracle Tuxedo掲示板にアクティブなグローバル・トランザクションとそのパーティシパントの表を保持することでグローバル・トランザクションを管理します。この表は複数の同時プロセスによってアクセスされるため、セマフォを使用して保護する必要があります。通常のOracle Tuxedoの場合、掲示板のロックを使用してこの表へのアクセスはシリアライズされます。ただし、トランザクションの負荷が高い場合、このロックの競合が激しくなり、人為的なパフォーマンス・ボトルネックとなる場合があります。
XPPは、GTTへのアクセスのシリアライズを掲示板のロックから他の複数のロック(GTTへのアクセス用に1つとGTTの各エントリ用に1つ)に移行します。これによって、GTTにアクセスする場合の同時実効性が大幅に向上し、このボトルネックを解消できます。
Direct Cross Node Communication Leveraging RDMA
「Direct Cross Node Communication Leveraging RDMA」の構成には、次のものが含まれます。
Direct Cross Node Communication Leveraging RDMAがサポートされるのは、MPモードのときのみです。この機能を有効にするには、OPTIONSのEECSを指定する必要があります。これを指定しない場合は、ブリッジを介してメッセージが送信されます。
*RESOURCEセクションのDirect Cross Node Communication Leveraging RDMAには1つの属性があります。
Oracle Tuxedoファイル転送のディレクトリ名。ここで、EXALOGIC_SHARED_PATHの機能は、環境変数EXALOGIC_SHARED_PATHの機能と同じです。ただし、Tuxedo実行時には、この環境変数の優先度が高くなります。EXALOGIC_SHARED_PATHは、すべてのTuxedoノードが読取り/書込み権限を持つ共有ディレクトリであることが必要です。これは、RDMAが有効になっている場合のみ*RESOURCEセクションに指定できます。
*MACHINESセクションのDirect Cross Node Communication Leveraging RDMAには5つの属性があります。
Msgq_daemonがバインドされるIPアドレス。構成する必要があり、IPoIBアドレスである必要があります(イーサネット・ベースのIPアドレスではありません)。1つの論理マシンには1つの
Msgq_daemonを構成する必要があります。
Msgq_daemonがリスニングするポート番号。構成する必要があります。
EMSQキューのサイズ。UBBCONFIGファイルで定義しない場合、デフォルト値は65536バイトです。
EMSQキュー・エントリ数。このキューで許可されるメッセージの最大数です。
UBBCONFIGファイルで定義しない場合、デフォルト値は64です。
Oracle Tuxedo EMSQキャッシュのエントリ番号。ここで、
EXALOGIC_MSGQ_CACHE_SIZEの機能は、環境変数
EXALOGIC_MSGQ_CACHE_SIZEの機能と同じです。ただし、環境変数は優先度が高くなります。値は32から2048までにする必要があります。
EXALOGIC_MSGQ_CACHE_SIZEは、RDMAが有効な場合にのみ*
MACHINESで指定できます。デフォルト値は、
UBBCONFIGで定義されていない場合は32です。
*RESOURCESセクションでRDMAオプションを有効化後。デフォルトでは、RDMA機能をサポートするために、MPモードのすべてのマシンがExalogicマシン(同一タイプ)である必要があるため、
*MACHINESセクションの
TYPE属性を設定できません。
リスト1は、Direct Cross Node Communication Leveraging RDMAが有効な状態の
UBBCONFIGサンプル・ファイルです。
リスト1
Direct Cross Node Communication Leveraging RDMAが有効な状態のUBBCONFIGサンプル・ファイル
APPDIR="/home/oracle/tuxedo12.1.1.0/samples/atmi/simpapp"
TUXCONFIG="/home/oracle/tuxedo12.1.1.0/samples/atmi/simpapp/tuxconfig"
TUXDIR="/home/oracle/tuxedo12.1.1.0"
RDMADAEMONIP=192.168.10.1
APPDIR="/home/oracle/tuxedo12.1.1.0/samples/atmi/simpapp/slave"
TUXCONFIG="/home/oracle/tuxedo12.1.1.0/samples/atmi/simpapp/slave/tuxconfig"
TUXDIR="/home/oracle/tuxedo12.1.1.0"
RDMADAEMONIP=192.168.10.2
LMID=site1 GRPNO=1 OPENINFO=NONE
LMID=site2 GRPNO=2 OPENINFO=NONE
site1 NADDR="//slce04cn01:5432"
NLSADDR="//slce04cn01:5442"
site1 NADDR="//slce04cn02:5432"
NLSADDR="//slce04cn02:5442"
simpserv SRVGRP=GROUP2 SRVID=3
Msgq_Daemonで使用される共有メモリーは、スワップ領域にページングされないように物理メモリーにロックされるため、
/etc/securitylimits.confのmemlockに適切な値を設定する必要があります。
次の式を使用してmemlockの最小値を取得してください。
[Msgq_daemon共有メモリー・サイズ] * 2 + MAXACCESSERS * 14000KB
MAXACCESSERS:
UBBCONFIGファイル内の属性。
Msgq_daemon共有メモリー・サイズ:
200*1024KB
200*1024*2 + 100 * 14000 = 1809600
/etc/securitylimits.confで次のように指定します。
Oracle Tuxedoを起動する前に、Direct Cross Node Communication Leveraging RDMAが有効な状態ですべてのExalogicノードに共有ディレクトリがあるか確認します。また、アクセス権限が適切に設定されているか確認します。
デフォルト名は
/u01/common/patches/tuxtmpfileです。また、
EXALOGIC_SHARED_PATH環境変数を使用すると、独自のディレクトリを設定できます。これは、Oracle Tuxedoファイル転送に使用されます。EMSQがフルか、メッセージ・サイズがキュー・サイズを超過する場合、Oracle Tuxedoはこのメッセージを
/u01/common/patches/tuxtmpfileディレクトリ直下の一時ファイルに保存し、リモート・プロセス・キューに通知を直接送信します。リモート・プロセスは通知を受信するかぎり、ファイルを取得できます。
Direct Cross Domain Communication Leveraging RDMA
Direct Cross Domain Communication Leveraging RDMAを使用する場合は、UBBCONFIGファイルの構成が必要になります。
|
注意:
|
Direct Cross Domain Communication Leveraging RDMAの場合、最初にDirect Cross Note Communication Leveraging RDMAを有効にする必要があります。
|
この機能を有効にするには、
UBBCONFIGの
RESOURCESセクションで、
BYPASSDOM_ID、
BYPASSDOM_SEQ_NUMおよび
BYPASSDOM_SHARED_DIRパラメータを指定するとともに、
OPTIONSパラメータの
EECSフラグも指定する必要があります。
1つのドメイン・グループ内のドメインの最大数を指定する、オプション属性
MAXDOMAINSがあります。デフォルトは32です。
リスト2は、Direct Cross Domain Communication Leveraging RDMAを有効化する
UBBCONFIGサンプル・ファイルです。
リスト2
Direct Cross Domain Communication Leveraging RDMAを有効化するUBBCONFIGサンプル・ファイル
BYPASSDOM_SHARED_DIR "/nfs/bypassdom/bddomgrp1/shareddir"
APPDIR="/home/oracle/tuxedo12.1.3.0/samples/atmi/simpapp"
TUXCONFIG="/home/oracle/tuxedo12.1.3.0/samples/atmi/simpapp/tuxconfig"
TUXDIR="/home/oracle/tuxedo12.1.3.0"
RDMADAEMONIP="192.168.10.1"
GROUP1 LMID=site1 GRPNO=1 OPENINFO=NONE
simpserv SRVGRP=GROUP1 SRVID=3
Oracle Tuxedo SDPサポートを有効にするには、
*RESOURCESセクションにある
OPTIONSの
EECSを指定し、
UBBCONFIGファイルまたは
DMCONFIGファイルで関連する構成を設定します。
要件によれば、MPはIBクラスタ内で機能する必要があります。つまり、マスター・マシンとスレーブ・マシンが両方ともIBクラスタ内にあるため、SDPとIPoIBはIBクラスタ内で使用され、bootstrapフェーズでは、tmboot、tlisten、bsbridgeおよびbridgeが相互通信を行うためにソケットAPIを使用していることのみを考慮します。
ネットワーク・アドレスの接頭辞「sdp:」とネットワーク・アドレスはIPoIBアドレスである必要があります。
リスト3はUBBCONFIGファイルのSDPの例です。
リスト3
UBBCONFIGファイルのSDP構成例
NADDR="sdp://IB_IP: 9003"
NLSADDR="sdp://IB_IP: 3050
NADDR="sdp://IB_IP: 9003"
NLSADDR="sdp://IB_IP: 3050"
tlisten ��Cd /dev/tcp ��Cl sdp://IB_IP: 3050
|
•
|
MPデプロイメント・モデルでIPoIBを構成します。
|
ネットワーク・アドレスとしてIPoIBアドレスを使用します。
リスト4は、UBBCONFIGファイルのIPoIB構成例です。
リスト4
UBBCONFIGファイルのIPoIB構成例
tlisten -d /dev/tcp -l //IB_IP: 3050
GWTDOMAINを実行しているノードに複数のIPアドレスを持つ複数のネットワーク・インタフェース(マルチホーム型)がある場合、DMCONFIGファイルでGWTDOMAINを構成する場合、ホスト名のかわりに明示的なIPアドレスを使用することをお薦めします。通常、すべてのExalogicノードには、IBインタフェースとイーサネット・インタフェースという少なくとも2種類のネットワーク・インタフェースがあります。GWTDOMAINを構成する方法を説明するに当たりわかりやすくするため、IBインタフェースはIPアドレス
IB_IPに対してバインドされ、イーサネット・インタフェースはIPアドレス
ETH_IPを持つと仮定します。
機能として、GWTDOMAINはサーバーとクライアントの両方の役割を果たします。サーバーの役割としては、DMCONFIGファイルで構成済のIPアドレスとポート番号をリスニングし、他のGWTDOMAINからの接続リクエストを受け入れます。クライアントの役割としては、DMCONFIGファイルで構成されたポリシーによって他のGWTDOMAINへの接続リクエストを開始します。
|
•
|
SDPをリスニングするようにGWTDOMAINを構成します。
|
ネットワーク・アドレスの接頭辞「sdp:」とネットワーク・アドレスは、
リスト5で示すようにIPoIBアドレスである必要があります。
リスト5
SDPをリスニングしているGWTDOMAINのDMCONFIGファイルの構成例
SCLCU03 NWADDR="sdp://IB_IP: 27610"
|
•
|
SDPを使用して接続するようにGWTDOMAINを構成します。
|
ネットワーク・アドレスの接頭辞「sdp:」とネットワーク・アドレスは、
リスト6で示すようにIPoIBアドレスである必要があります。
リスト6
SDPを使用するGWTDOMAIN接続のDMCONFIGファイルの構成例
DOMAINID="EXALOGIC_SCLCU05"
SCLCU05 NWADDR="sdp://IB_IP: 27610"
|
•
|
IPoIBをリスニングするようにGWTDOMAINを構成します。
|
ネットワーク・アドレスとしてIPoIBアドレスを使用します。次はIPoIBのDMCONFIGファイルの構成例です。
リスト7
IPoIBをリスニングしているGWTDOMAINのDMCONFIGファイルの構成例
SCLCU03 NWADDR="//IB_IP: 27610"
|
•
|
IPoIBを使用して接続するようにGWTDOMAINを構成します。
|
ネットワーク・アドレスとしてIPoIBアドレスを使用します。次はIPoIBのDMCONFIGファイルの構成例です。
リスト8
IPoIBを使用するGWTDOMAIN接続のDMCONFIGファイルの構成例
DOMAINID="EXALOGIC_SCLCU05"
SCLCU05 NWADDR="//IB_IP: 27610"
ネットワーク・アドレスの接頭辞「sdp:」とネットワーク・アドレスは、
リスト9で示すようにIPoIBアドレスである必要があります。
リスト9
SDPをリスニングしているWSLのDMCONFIGファイルの構成例
WSL SRVGRP=WSGRP SRVID=1001
CLOPT="-A -- -nsdp://IB_IP: 11101 -m1 -M10 -x1"
|
•
|
IPoIBにリスニングするようにWSLを構成するには、
|
IpoIB DMをリスニングしているWSLで示すようにネットワーク・アドレスとしてIPoIBアドレスを使用します。
リスト10
IPoIBをリスニングしているWSLのDMCONFIGファイルの構成例
WSL SRVGRP=WSGRP SRVID=1001
CLOPT="-A -- -n //IB_IP: 11101 -m1 -M10 -x1"
|
•
|
SDPを使用するよう/WSクライアントを構成します。
|
WSNADDRのネットワーク・アドレスは接頭辞を「sdp:」にして、ネットワーク・アドレスはIPoIBアドレスである必要があります。次に例を示します。
export WSNADDR=sdp://IB_IP:1001
|
•
|
IPoIBを使用するよう/WSクライアントを構成します。
|
WSNADDRのネットワーク・アドレスとしてIPoIBアドレスを使用します。次に例を示します。
export WSNADDR=//IB_IP:1001
Configure JSL listen on SDP
ネットワーク・アドレスの接頭辞「sdp:」とネットワーク・アドレスは、
リスト11で示すようにIPoIBアドレスである必要があります。
リスト11
SDPをリスニングしているJSLのUBBCONFIGファイルの構成例
JSL SRVGRP=WSGRP SRVID=1001
CLOPT="-A -- -nsdp: //IB_IP: 11101 -m1 -M10 -x1"
|
•
|
IPoIBにリスニングするようにJSLを構成するには、
|
ネットワーク・アドレスとしてIPoIBアドレスを使用します。次はIPoIBを有効にした状態のUBBCONFIGファイルの構成例です。
リスト12
IPoIBをリスニングしているJSLのUBBCONFIGファイルの構成例
JSL SRVGRP=WSGRP SRVID=1001
CLOPT="-A -- -n //IB_IP: 11101 -m1 -M10 -x1"
WTCとOracle Tuxedo間のSDP接続を有効化するには、次の手順を実行します。
|
1.
|
次のようにWTCサービスのローカル/リモート・アクセス・ポイントのNWAddrを指定します。
|
これは、DMCONFIGファイル内のGWTDOMAINの
NWADDR構成と同じです。
|
2.
|
補足Javaオプション「 Djava.net.preferIPv4Stack=true」をjavaコマンドに追加し、WLSサーバーを起動します。
|
|
注意:
|
WTCアクセス・ポイントでSSLが有効化されると、SDPを構成した後、SSL構成が無視されます。
|
|
注意:
|
機能が有効な場合、Tuxedoで必要な共有メモリーが多くなります。Tuxedoが作成する共有メモリー・セグメントが1つのプロセスで使用できる共有メモリー・セグメントの最大数である SHMSEGより多い場合、操作は失敗します。その場合は、 TM_ENGINE_TMSHMSEGSZ (Tuxedoによってアクセス可能な共有メモリー・セグメントの最大サイズ)を大きい値(ただし、システムが定義する SHMMAXを超えない値)に設定します。
|
Oracle Tuxedoシステムは、X/Open XAインタフェースを使用して様々なリソース・マネージャと通信します。XA規格は、あらゆる主要データベース・ベンダー製品で幅広くサポートされています。
Oracle Databaseの起動には、SDP (Sockets Direct Protocol)を使用できます。Oracle Tuxedoアプリケーションには特別な要件はありません。
|
注意:
|
次のSDPパラメータは、大容量データ・ブロックをデータベースに送信する際、パフォーマンスに影響を与えます。
|
|
•
|
recv_poll
データを待機するスリープ状態に入る前の受信ポール時間。 recv_poll 値を減らすと、書き込みパフォーマンスを向上できます。値をゼロにすることをお薦めします。
|
|
•
|
sdp_zcopy_thresh
ゼロ・コピー送信データのしきい値。メッセージが sdp_zcopy_thresh値よりも長い場合、ユーザー・バッファが固定され、データはオリジナル・バッファから直接送信されます。これによって、CPU使用率が下がります。デフォルト値は64Kです。値をゼロにすることをお薦めします。
|
たとえば、サーバー・ノード上で「
/etc/modprobe.conf」の2つのパラメータを次のように設定できます。
ib_sdp sdp_zcopy_thresh=0 recv_poll=0のオプション
EECSオプションとMPモードが両方とも設定され有効化されている場合のみ、Oracle TuxedoアプリケーションをMP環境(共有アプリケーション・ステージングという名前)のExalogicで共有ディレクトリにデプロイできます。Oracle Tuxedoアプリケーションを起動する前に、UBBCONFIGファイルで次のパラメータが正しく設定されているか確認します。
TUXCONFIGはノードごとに違うものにする必要があります。
TLOGDEVICEは各ノードごとに別々にする必要があります。
ULOGを個別にする場合は、ULOGPFXに別々のパスを設定します。
異なるExalogicノードからのユーザーは、OSの同一のuidおよびgidを持つ必要があります。
前述のほか、明確なロギング・システムを持つには各ノードで固有のTMIFRSVR
repository_file、標準出力/エラー・ファイル、AUDITLOGファイルおよびALOGPFXを使用することをお薦めします。共有アプリケーション・ステージング機能を最適に使用するには、すべてのアプリケーションに固有の名前を設定する必要があります。
リスト13は、
UBBCONFIGファイルの共有APPDIRの例です。
リスト13
UBBCONFIGファイルの共有APPDIRの例
APPDIR="/home/oracle/tuxapp"
TUXCONFIG="/home/oracle/tuxapp/tuxconfig_cn01"
TUXDIR="/home/oracle/tuxedo11gR1"
TLOGDEVICE=/home/oracle/tuxapp/TLOG1
ULOGPFX="/ home/oracle/tuxapp /ULOG_cn01"
RDMADAEMONIP="192.168.10.1"
APPDIR=" home/oracle/tuxapp"
TUXCONFIG=" home/oracle/tuxapp/tuxconfig_cn02"
TUXDIR="/home/oracle/tuxedo11gR1"
TLOGDEVICE=/home/oracle/tuxapp/TLOG2
ULOGPFX="/home/oracle/tuxapp /ULOG_cn02"
RDMADAEMONIP="192.168.10.2"
UBBCONFIGファイルに
SECURITYが設定されている場合、
EECSが有効化されているMPドメインのみが、共通の
APPDIRを共有できます。
構成の詳細は、
『Oracle Tuxedo Advanced Performance Packの使用』の
共通XIDに関する項を参照してください。
Single Group Multiple Branches (SGMB)
データベース・インスタンス間のフェイルオーバー/フェイルバック
パフォーマンスを最適化するためのベスト・プラクティス
Direct Cross Node Communication Leveraging RDMA
この機能は、クライアントがリモート・サーバーに直接アクセスする機能を提供し、
BRIDGEにおけるボトルネックを解消します。TuxedoがMPモードで同時リモート・アクセス数が多いときに、この機能が
UBBCONFIGで有効になっている場合、スループットが著しく改善します。
クライアントは
BRIDGEを介してリモート・サーバーに接続し、比較的短い期間、そのサーバー上で動作します。たとえば、
tpinit()の次にいくつかの
tpcall()、次に
tpterm()という順番です。RDMA接続の作成/オープン/クローズのオーバーヘッドは、Unix IPCキューにおけるオーバーヘッドよりずっと高いです。したがって、このシナリオでは、明白なパフォーマンスの改善はありません。
EXALOGIC_MSGQ_CACHE_SIZEの設定
Oracle Tuxedoスレッドにはそれぞれ、
EMSQランタイム・キャッシュがあります。デフォルトのエントリ数は32です。この値は、Oracle Tuxedoアプリケーションが起動するか、それを
UBBCONFIGで設定する前に、環境変数
EXALOGIC_MSGQ_CACHE_SIZEを使用して32から2048の間で変更できます。一部のシナリオでは、数値を大きくすると、Oracle Tuxedoのパフォーマンスを向上できます。次に例を示します。
|
•
|
同一のサービスを提供するリモートOracle Tuxedoサーバーが40台あり、クライアントがそのサービスを繰返しコールする場合、クライアント側で EXALOGIC_MSGQ_CACHE_SIZEを40以上の値に設定すると、パフォーマンスを向上できます。
|
|
•
|
WSHが50台あり、各WSHが同一のリモート・サーバーからレスポンス・メッセージを受信する場合、サーバー環境で EXALOGIC_MSGQ_CACHE_SIZEを50以上の値に設定するとパフォーマンスを向上できます。
|
Msgq_daemonの共有メモリー・サイズの計算
推奨値を取得するには、
リスト14で示すように
tmloadcf -c ubbを実行してください。
リスト14
UBBCONFIGファイルの*MACHINESセクション
RDMADAEMONIP="192.168.10.1"
RDMADAEMONIP="192.168.10.2"
RDMADAEMONIP="192.168.10.3"
RDMADAEMONIP="192.168.10.4"
コマンド
tmloadcf -c ubbを実行し、
リスト15で示すように出力を取得します。
Ipc sizing (minimum /T values only) ...
Variable Minimums Per Node
Node SEMMNS SEMMSL SEMMSL SEMMNI MSGMNI MSGMAP SHMSEG RCDMSZ
----- ----- ----- ---- ------- ----- ------ ------ ------
ex03 126 15 120 A + 2 26 52 1178K 220M
ex04 221 28 220 A + 1 26 52 1340K 340M
ex04_1 121 15 120 A + 1 26 52 1178K 1300M
ex03_1 221 28 220 A + 1 25 50 1340K 2500M
UBBで構成済の次の項目のいずれかの値を大きくすると、RCDMSZも連動して増えます。
tmloadcfで
RCDMSZを取得後、次のランタイム要素に従って実際のサイズを調整できます。
パフォーマンス上の理由から、キューが破棄された後に共有メモリー・リソースはその直後に解放されません。プロセスの起動/停止頻度を多くするほど、キューの作成/破棄の頻度を多くするほど、古いキューがリソースに占める割合が多くなります。次の式を使用して、できるだけ多く共有メモリーを割り当てる必要があります。
3 * EXALOGIC_MSGQ_CACHE_SIZE * MAXSERVERS * RDMAQSIZE
|
•
|
EXALOGIC_MSGQ_CACHE_SIZE: この値をUBBCONFIGファイルまたは環境変数で指定します。デフォルト値は32です。
|
|
•
|
MAXSERVERS: UBBCONFIGファイル属性。
|
|
•
|
RDMAQSIZE: UBBCONFIGファイル属性。
|
たとえば、
MAXSERVERSが100、
RDMAQSIZEは100000、マシンex04上のプロセスが頻繁に起動/停止する場合、共有メモリー・サイズを340Mではなく、最大の1300M (340M+960M)として構成する必要があります。
UBBCONFIGファイル内のマシン数は、
RCDMSZの計算時に考慮されます。
MIBを使用して新しいマシンを追加する場合、サイズも連動して増やす必要があります。
一部の使用環境では、
EXALOGIC_MSGQ_CACHE_SIZEを使用してキュー・キャッシュ・エントリ数を増やすと、
Msgq_daemonが共有メモリーをさらに割り当てる必要があります。たとえば、Oracle Tuxedoプロセスの起動/停止またはtpinit/tptermの頻度が高い場合、
Msgq_daemonの初期共有メモリー・サイズを調整することを検討する必要があります。調整しないと、メッセージ転送が失敗する場合があります。
Oracle Tuxedoスレッドのそれぞれのデフォルト値は32、
tmloadcf -cは常に値として32を想定しています。デフォルト値を変更する場合は、次のメソッドを使用して
Msgq_daemonの共有メモリー・サイズを調整します。
|
•
|
MEMSZ: 前述のメソッドによって計算された現在の共有メモリー・サイズ。
|
|
•
|
CACHENUM: Oracle Tuxedoスレッドごとのエントリ・キュー・キャッシュの最大数。
|
|
注意:
|
マシン・レベルで EXALOGIC_MSGQ_CACHE_SIZEを設定する場合のみ、このメソッドを使用してサイズを調整できます。
|
ベスト・プラクティスについては、
『Oracle Tuxedo Advanced Performance Packの使用』の
共通XIDに関する項を参照してください。
データベース・インスタンス間のフェイルオーバー/フェイルバック
Single Group Multiple Branches (SGMB)
Direct Cross Domain Communication Leveraging RDMA
この機能は、クライアントがドメインを介してリモート・サービスに直接アクセスする機能を提供し、
GWTDOMAINにおけるボトルネックを解消します。Tuxedoが異なるドメイン上で同時リモート・アクセス数が多い状態である場合、この機能により、スループットのパフォーマンスが著しく向上します。
クライアントはリモート・ドメイン内のリモート・サービスにアクセスし、比較的短い期間、そのサービス上で機能します。たとえば、
tpinit()の次にいくつかの
tpcall()、次に
tpterm()という順番です。RDMA接続の作成/オープン/クローズのオーバーヘッドは、Unix IPCキューにおけるオーバーヘッドよりもずっと高くなります。したがって、この機能は、このシナリオでは明白なパフォーマンス向上をもたらしません。
SDPはすべてのTuxedoネットワーク通信上で使用できますが、Direct Cross Node Communication Leveraging RDMAまたはDirect Cross Domain Communication Leveraging RDMAに適用可能なシナリオにはお薦めされません。
Direct Cross Node Communication Leveraging RDMAが有効な状態の場合、Exalogic以外のプラットフォームでOracle Tuxedoを実行する方法は異なります。Oracle Tuxedoアプリケーションを起動する前に、
tux_msgq_monitorを起動しておく必要があります。この項には次のトピックが含まれます:
tux_msgq_monitorは、
Msgq_daemonデフォルト・モニターとして機能します。
Msgq_daemonの起動とその実行状況の確認を行います。
Msgg_daemonが異常終了すると、
tux_msgq_monitorを使用して再起動します。
Oracle Tuxedoアプリケーションを起動する前に、tux_msgq_monitorを起動する必要があります。1つのモニターがサービスを提供できるのは、1つの論理マシン上の1つのOracle Tuxedoアプリケーションのみです。
tux_msgq_monitorを起動する前に、TUXCONFIG、
LD_LIBRARY_PATHおよびTUXDIRの各環境変数が適切に設定されているか確認します。次のように
tux_msgq_monitorを実行します。
tux_msgq_monitor -i <IPoIBアドレス> -d <ポート番号> -M <共有メモリー・サイズ> -K <Msgq_daemonによって使用される共有メモリー・キー>
tux_msgq_monitor:
tux_msgq_monitorオプションのリストです。
表2
ttux_msgq_monitor: オプション
|
|
|
|
|
IPoIBアドレス。UBBCONFIGファイルのRDMADAEMONIP値と同一にする必要があります。
|
|
|
ポート番号。UBBCONFIGファイルのRDMADAEMONPORT値と同一にする必要があります。
|
|
|
Msgq_daemonによって割り当てられた共有メモリー・サイズ(バイト単位)。 tmloadcf –cによって取得されます。詳細は、 「Msgq_daemonの共有メモリー・サイズの計算」を参照してください。
|
|
|
Msgq_daemonによって使用される共有メモリー・キー。 -Kが0よりも大きい場合は、その最大値はOSによる key_tの定義に応じて異なります。
|
tux_msgq_monitorの実行時、
tux_msgq_monitorおよび
Msgq_daemonという2つのアクティブ・プロセスがあります。
tux_msgq_monitorを正常に起動したら、Oracle Tuxedoアプリケーションを起動できます。
kill pid -- tux_msgq_monitor's pid
|
注意:
|
-9を使用してkillコマンドを実行する場合、次の手順を実行してすべてのリソースを消去します。
|
kill pid-- Msgq_daemon pid
ipcrm –m shmid --Msgq_daemonによって作成された共有メモリー。
Oracle Tuxedo起動/停止用シェル・スクリプト
起動/停止処理を簡略化するシェル・スクリプトがいくつかあります。これらのツールを使用すると、1つのコマンドを実行するだけで
tux_msgq_monitorとOracle Tuxedoアプリケーションの路湯方を起動/停止できます。これらのコマンドを実行する前に、TUXCONFIG、
LD_LIBRARY_PATHおよびAPPDIRの各環境変数が適切に設定されているか確認します。
たとえば、マスター・ノードでは次を実行するとOracle Tuxedoを起動/停止できます。
マスター・ノードには、次の2つのシェル・スクリプトがあります。
tmboot.sh -i daemon_ip -d daemon_port -M shm_size -K shm_key [-l nlsaddr]
このスクリプトは、
tux_msgq_monitorを起動し、tmbootを実行してOracle Tuxedoアプリケーションを起動します。また、オプション「-l」が指定されている場合は、tlistenを起動します。
Oracle Tuxedoアプリケーションとtux_msgq_monitorを両方とも停止します。
スレーブ・ノードには、次の2つのシェル・スクリプトがあります。
tlisten_start.sh -l nlsaddr -i daemon_ip -d daemon_port -M shm_size -K shm_key
このスクリプトは、
tux_msgq_monitorおよびtlistenを起動します。
このスクリプトは、tlistenおよび
tux_msgq_monitorを終了します。
|
注意:
|
MPモードでの起動の場合、次の順序でコマンドを実行する必要があります。
|
|
•
|
すべてのスレード・ノード上でtmlisten_start.sh
|
|
注意:
|
シャットダウンの場合は、次の順序でコマンドを実行する必要があります。
|
|
•
|
すべてのスレード・ノード上でtmlisten_stop.sh
|
OVMで実行されるOracle Tuxedoには特別な要件がありません。
|
注意:
|
Exalogic最適化が OPTIONSで指定されている場合は、以前のリリースからのホット・アップグレードを実行できません。
|
|
•
|
Oracleホーム: ターゲット・システム上にインストールされたすべてのOracle製品の中央サポート・ディレクトリとして機能するOracleホーム・ディレクトリです。
|
|
•
|
コンピュート・ノード: 所定の時間にOracle Fusion Middlewareインスタンスを実行するためのExalogicラック内の物理マシンです。
|
|
•
|
共有ストレージ: 共有ストレージとは、Oracle Exalogicマシン内のすべてのコンピュート・ノードによってアクセス可能なSun ZFS Storage 7320 Applianceのことです。Exalogicマシン内のすべてのCompute Nodeは、このストレージ・アプライアンスに同時にアクセスして読取りと書込みの両方の操作を実行できます。
|
|
•
|
UBBCONFIG: 各Oracle Tuxedoドメインは、構成ファイルによって制御され、インストール時の設定に基づくパラメータが定義されています。構成ファイルのテキスト版がUBBCONFIGと呼ばれます。Oracle TuxedoドメインのUBBCONFIGファイルには、アプリケーションの起動に必要な前情報が記載されています。
|
|
•
|
TUXCONFIG: TUXCONFIGファイルは、UBBCONFIGファイルのバイナリ版です。tmloadcf(1)コマンドを実行することで作成されます。このコマンドはUBBCONFIGを解析して、バイナリTUXCONFIGファイルを TUXCONFIG環境変数によって参照される場所にロードします。
|
|
•
|
XA: eXtended Architecture (XA)とは、トランザクション・マネージャとリソース・マネージャ間の標準定義インタフェースです。XAによって、分散トランザクションに含まれるリソース・マネージャのプログラム制御が可能になります。
|
|
•
|
InfiniBand: スイッチで切り替えられるファブリック通信リンクで、高パフォーマンスの演算と企業のデータ・センターで使用されます。その機能には高スループット、低レイテンシ、サービスのクオリティ、フェイルオーバーなどが含まれ、拡張性が高い設計となっています。
|
|
•
|
EMSQ: InfiniBandテクノロジをベースとしたExalogicメッセージ・キュー。
|
|
•
|
Msgq_daemon: EMSQリソースを管理するデーモン・プロセス。
|
|
•
|
EOIB : InfiniBandを介したイーサネット。
|
SDP: Sockets Direct Protocol
Oracle Tuxedoをインストールする前に、Exalogic環境の現在の状態を理解する必要があります。
Oracle Exalogicマシン・オーナーズ・ガイドに記載されるすべてのタスクは完了済と仮定されます。このガイドでは、データ・センター・サイトの準備、Oracle Exalogicマシンの試験稼動、IPアドレスの割当てを含む初期ネットワーク構成、およびSun ZFS Storage 7320 Applianceの初期設定が説明されています。
Oracle Tuxedo製品バイナリは、Sun ZFS Storage 7320アプライアンスの場所にある共有のいずれかにインストールできるため、バイナリを1つコピーすれば任意のExalogicノードでOracle Tuxedoを実行できます。
|
注意:
|
共有ファイル・システムは、すべてのコンピュート・ノードによってアクセス可能である必要があります。各ノードにローカル・ユーザー・アカウントを作成できます。ただし、UIDおよびGIDは(アクセス権限の問題を避けるため)必ず同一のものにしてください。また、ユーザー用のNISアカウントを作成できます。
|
各Oracle Tuxedoごとに異なる実装を使用してOracle Tuxedoプラグイン・インタフェースを開発する場合、Oracle Tuxedoは別々のディレクトリにインストールする必要があります。