| Oracle Communication and Mobility インストレーション・ガイド 10gリリース3(10.1.3) B50836-01 |
|
この章では、Presenceの大規模デプロイを行う方法について説明します。内容は次のとおりです。
OCMSには独自のPresenceサーバーがあり、クライアントがビジー、可能、会議中などのプレゼンス情報を公開するために使用できます。また、プレゼンス情報の変更時に通知を希望するとして登録したユーザーに、その情報を表示することができます。エンドクライアントの観点では、マルチ・ノードのPresenceサーバーはシングル・ノードと同じです。エンド・ユーザーに対してサーバーはブラックボックスであり、違いに気付くことはありません。
ここでは、基本のPresenceの機能や、OCMS 10.1.3.4の新しい要素であるUser Dispatcherを使用してPresenceサーバーを拡張する方法について説明します。Presenceサーバーの一般的な機能の詳細は、『Oracle Communication and Mobility Server管理者ガイド』を参照してください。
大規模なプレゼンス・サービスを適切にインストールして管理するには、きわめて多くの概念を理解する必要があります。ここでは、主要な概念について定義して説明します。
| 用語 | 定義 |
|---|---|
|
Presenceクラスタ |
Y個のロード・バランサが対応するX個のPresenceノードで構成されるクラスタ。詳細は、「Presenceクラスタ」を参照してください。 |
|
Presenceノード |
X個のPresenceサーバー・インスタンス(PS)に対応する1つのUser Dispatcherで構成される物理マシン(ノード)。 |
|
Presenceサーバー(PS) |
Presenceイベントパッケージに対するサブスクライブと公開のリクエストおよび |
|
プレゼンス・サービス |
プレゼンス・サービスという語はRFC 2778で定義されており、プレゼンスに関連するすべてのトラフィックを処理するサービスを非常に広義に意味します。これには、ウォッチャ情報のトラフィック、プレゼンティティをサブスクライブするウォッチャ許可を決定するためのトラフィック、実際のプレゼンス更新などが含まれます。 |
|
XDM |
XMLドキュメント管理 |
|
XDMC |
XDMクライアント。XDMネットワークにアクセスする任意のクライアント。Presenceサーバー・インスタンスはXDMクラスタにアクセスするため、XDMクライアントとしても機能します。 |
|
XDMクラスタ |
Y個のロード・バランサが対応するX個のXDMノードで構成されるクラスタ。詳細は、「XDMクラスタ」を参照してください。 |
|
XDMノード |
1つのAggregation Proxy、1つのUser Dispatcher、X個のXDMサーバー(XDMS)で構成される物理マシン(ノード)。 |
|
XDMサーバー(XDMS) |
XMLドキュメントを格納する実際のXDMSインスタンス。XCAPを介してそれらのドキュメントの問合せと処理を行うことができます。XDMSを使用すると、SIP SUBSCRIBE/NOTIFYを使用した、ドキュメントにおける変更のサブスクライブも可能になります。XDMSインスタンスは、Presenceサーバー・インスタンスがPresenceノードで行うのと同じ役割をXDMノードで果します。 |
Presenceクラスタは、図5-2に示すように1つ以上のロード・バランサが対応するPresenceノードのセットです。Presenceクラスタは、該当する場合にNOTIFY:sを送信するために、Presenceイベントパッケージに対するサブスクライブと公開のリクエストを受信して処理します。また、Presenceクラスタは、presence.winfoイベントパッケージに対するサブスクライブ・リクエストも受け取って処理します。
Presenceクラスタは、XDMクラスタとやりとりして、処理を完了するために必要な情報を取得します。XDMクラスタに問い合せる情報には、ユーザーのプレゼンス・ルールやpidf-manipulationドキュメント(つまりユーザーのハードステート)が含まれます。
XDMクラスタは、図5-3に示すように1つ以上のロード・バランサが対応するXDMノードのセットです。XDMクラスタは、すべてのXDM関連トラフィック(つまり、XCAPトラフィックとua-profileイベントパッケージへのSIPサブスクライブ・トラフィック)を処理します。つまり、XMLドキュメントの操作に必要なすべての処理を行います。XDMクラスタは、XMLドキュメントを格納するためにデータベースを使用しますが、データベース(およびそのクラスタ)はXDMクラスタには含まれません。
XDMクラスタはすべてのXMLドキュメントを処理するため、各ノードは共有XDMSとPS XDMSの両方になります。
図5-1は、クライアントが1つのPresenceサーバーとやりとりする様子を示しています。より大きな規模のユーザー・ベースを扱うためには、このような単一サーバーを拡張する必要があります。このためには、PresenceノードとXDMノードをシステムにさらに追加します。このようにして拡張したプレゼンス・サービスは2つのクラスタに分かれます。「定義」で定義したPresenceクラスタとXDMクラスタです。
図5-4に、必要なすべてのコンポーネントを備えた完全なPresenceクラスタとXDMクラスタを示します。この図では、2つのクラスタPresenceとXDMが別個のクラスタとして扱われ、最初のトラフィックにおいてこれら2つのネットワークへの経路は、常にそれぞれのロード・バランサを介することも示されます。Presenceサーバーは、たとえばプレゼンス・ルール・ドキュメントに対するサブスクリプションを設定するとき、実際にはXDMクラスタのロード・バランサを経由します。ただし、サブスクリプションが確立されると、その後のリクエストはロード・バランサを通らずに、サブスクリプションをホストするXDMSインスタンスに直接送られます。XDMクラスタのすべてのノードは、Presenceクラスタから直接アクセスできます。実際、PSはプレゼンス・ルール・ドキュメントをフェッチするときに、XDMSインスタンスに直接アクセスします。
この図では、2つのロード・バランサ(Presenceクラスタの前に1つとXDMクラスタの前に1つ)が示されていますが、それらは通常は同じ物理マシンに格納されることに注意してください。
2つの異なるノード(PresenceノードとXDMノード)は、それぞれ小規模なコンポーネントのセットで構成されます。これらのコンポーネントについてこの項で定義して説明します。コンポーネントの違いと目的を理解することが重要です。実際のインストールを実行するときは、これらの様々なコンポーネントが物理ノードにデプロイされる要素になります。
ロード・バランサの目的は、他のコンポーネントにトラフィックを分散することです。ロード・バランサは下位レベルのコンポーネントを認識し、SIPトラフィックを常にUser Dispatcherに分散しますが、XCAPトラフィックはAggregation Proxyに分散します。
User Dispatcherが行う処理は、受信リクエストからのユーザー・アイデンティティの抽出です。ユーザーに基づき、トラフィック(SIPとXCAPの両方)をサブアプリケーションに応じてPSまたはXDMSにディスパッチします。
Presenceサーバーは、Presenceイベントパッケージに対するSUBSCRIBEおよびPUBLISHリクエストを受信して処理し、該当する場合にNOTIFYを送信するコンポーネントです。presence.winfoイベントパッケージに対する受信SUBSCRIBEリクエストも処理します。PSは、プレゼンス・ルールとpidf-manipulation(プレゼンスのハードステート)ドキュメントを得るためにXDMSとやりとりします。
XDMSの主な目的は、XMLドキュメントのリモート・ファイル記憶域として動作することです。これらのドキュメントはXCAPを使用して操作できます。XCAPには、クライアントがドキュメント内の変更に対するサブスクリプションを設定できるSIPインタフェースもあります。イベント・パッケージはua-profileです。XDMSは、サブスクライバにNOTIFY:sを送信することでドキュメントの状態を伝えます。
Aggregation Proxyの役割は、すべての着信XCAPトラフィックを認証してから、それらのリクエストをUser Dispatcherにプロキシ処理することです。したがって、Aggregation ProxyがXDMSに直接アクセスすることはありません。XDMSへのアクセスはUser Dispatcherが実行します。
データベースは、XDMSで管理されるXMLドキュメントが物理的に格納される場所です。
PresenceノードはPresenceクラスタのメイン・コンポーネントであり、受信トラフィックを正しいPresenceサーバー・インスタンスにディスパッチします。ブラックボックスの観点ではユーザーにプレゼンス情報を提供します。User Dispatcherはシングル・ノード・デプロイでもマルチノード・デプロイでも同じ目的を果すことを理解してください(目的は受信トラフィックを特定のPSインスタンスにディスパッチすることです。このインスタンスが同じ物理ノードで実行しているかいないかは、User Dispatcherには関係ありません)。User Dispatcherは特定のノードを完全アドレス(IPアドレスおよびポート)で識別します。ローカル・インスタンスという概念はありません。
図5-5に、典型的なPresenceノードのレイアウトを示します。このノードには必ずUser Dispatcherがデプロイされ、ノードそのものへの主経路として機能します。通常、User Dispatcherはポート5060(SIPのデフォルト・ポート)をリスニングし、そのノード上の他のPresenceサーバーは他のポートでリスニングします。このように、シングル・ノードはクライアントに対して1つのPresenceサーバーとして示されますが、実際にはUser Dispatcherの後ろで複数のインスタンスが実行されています。Presenceノードにデプロイされる各コンポーネントはそれぞれの別個のJVMで実行されます(つまり、User DispatcherとPSインスタンスはすべて独自のOC4Jインスタンスで実行されます)。
これらのOC4Jインスタンス(この例では4つ)はすべて同じOracle Application Server(同一AS_HOME)内で実行していることに注意してください。
XDMノードには、図5-6のように必ずAggregation Proxyがデプロイされます。これは、通常ポート80でXCAPトラフィックをリスニングします(XCAPはHTTPを介して送信される)。Aggregation Proxyは受信トラフィックを認証し、認証が正常に終了すると、リクエストをUser Dispatcherに転送します。Presenceノードと同様に、XDMノードにもUser Dispatcherがデプロイされます(通常はポート5060)。SIPトラフィックに関してはXDMノードとPresenceノードの違いはまったくありません。2つのタイプのノードの違いは、User DispatcherがXCAPトラフィックのディスパッチも行うという点です。User Dispatcherは、SIPの場合と同様に、ユーザーIDをリクエストから抽出し、それに基づいてリクエストを特定のXDMSインスタンスにマップして、そのXDMSインスタンスにリクエストを転送します。
また、X個のXDMSインスタンスがデプロイされ、User DispatcherはSIPトラフィックとXCAPトラフィックの両方をそれらにディスパッチします。Presenceノード上のPSインスタンスの場合と同様に、各XDMSインスタンスは互いに認識せず、独立して実行します。
また、Aggregation ProxyとUser Dispatcherが同じOC4Jコンテナにデプロイされ、同じJVMを使用することにも注意してください。また、すべてのOC4Jインスタンスは(Presenceノードの場合と同様に)同一のOracle Application Server内で実行します。
ここまで、Presenceの大規模デプロイの一般的なレイアウトとコンポーネントについて説明しました。この項では、システムのインストール方法について説明します。
必要な手順を簡単に説明するため、図5-7に示すネットワークを例として使用します。
このネットワークは3つのPSノードで構成され、それらがPresenceクラスタを形成しています。XDMクラスタは2つのXDMSノードで構成され、アドレスが192.168.0.30のデータベースにアクセスしています。両方のクラスタは同じ物理ロード・バランサを共有しています。ロード・バランサによりネットワークが外部ネットワークと内部ネットワークに分けられていないことに注意してください。このため、ロード・バランサのIPアドレスは192.168.0.150のみです。
管理しやすくするために、1つの管理ノードがネットワークに追加されています。他のすべてのノードとインスタンスの構成はこのノードを介して実行されます。
2つのクラスタについて詳しく説明します。まず、すでに説明した3つのPresenceノードで構成されるPresenceクラスタがあります。図5-8に、Presenceクラスタの詳細な図を示します。各Presenceノードには、1つのUser Dispatcherがデプロイされ、3つのPSインスタンスがあります。これら4つのコンポーネントはそれぞれが独自のOC4Jインスタンスで実行されていますが、細部は図を簡略化するために省いています。
図5-8に、XDMクラスタの詳しい図を示します。この例では、3つのXDMSインスタンスが実行しており、1つのUser Dispatcherと1つのAggregation Proxyが対応しています。「XDMノード」で説明したように、Aggregation ProxyとUser Dispatcherは同一のOC4Jインスタンスで実行されますが、3つのXDMSインスタンスはそれぞれ独自のOC4Jで実行されます。これらすべてのOC4Jインスタンス(4つのインスタンス)は、同じOracle Application Server内で実行されます。
最終システムにインストールされるすべてのノード(Presenceノード、XDMノードまたは管理ノード)では、同じ基本インストールが行われます(つまり、すべてがOracle Application Server 10.1.3.4を実行します)。したがって、次の項ではOracle Application Serverのインストールおよび設定方法について詳しく説明します。最初にOracle Application Server 10.1.3.2をインストールしてから、10.1.3.4パッチ・セットを適用します。主な手順は次のとおりです。
インストールするノードが管理ノードでないかぎり、「このインスタンスでOracle Enterprise Manager 10g ASControlを起動する」チェック・ボックスを選択しないでください。ASControlはシステム内の1つのノードのみで実行します。管理ノードに配置されます。システムのその他のすべてのノード(PSノードおよびXDMSノード)は管理ノードを介して制御されます。
AS 10.1.3.2のインストールが完了したら、続けて次の手順を実行し、AS 10.1.3.4パッチ・セットをインストールします。
Oracle Application Server Controlを使用して、クラスタ内のすべてのノードを構成および管理することができます。クラスタに1つの管理ノードを配置すると、システムの操作を容易に行うことができ、変更した構成をすべてのノードですぐに有効にすることができます。
この管理ノードをインストールするには、Oracle Application Serverを1つのノードにインストールし(サンプル・ネットワークでは、このノードは192.168.0.100で実行)、Application Server Controlの実行を有効にします。「このインスタンスでOracle Enterprise Manager 10g ASControlを起動する」チェック・ボックスを選択してください。管理ノードのインストールに必要な手順はこれですべてです。
システムのすべてのノードは、同じ検出アドレスを使用するように構成する必要があります。このサンプルでは、マルチキャスト・アドレス235.0.0.1:6789を使用しています。このアドレスをシステムのすべてのノードで使用する必要があります。
また、管理ノードはsetupLinux.tar.gzファイル(解凍済)を含む必要があります。これにより、後でデプロイする.earファイルをあらかじめ管理ノードに配置でき、デプロイの準備が整います。
次の手順は、Presenceノードをインストールするために実行する必要があります。1つのPresenceクラスタには多数のPresenceノードが含まれるため、次の各手順はノードごとに繰り返す必要があります。
実行する手順は次のとおりです。
各PresenceノードはOracle Application Server上で実行するため、最初にOracle Application Serverをインストールする必要があります。必要な手順は「Oracle Application Server 10.1.3.4のインストール」で説明していますが、これは管理ノードではないため、「このインスタンスでOracle Enterprise Manager 10g ASControlを起動する」チェック・ボックスを選択しないようにしてください。
検出アドレスについては、管理ノードで選択したアドレスと同じものを選択してください。サンプル・ネットワークでは、管理ノードに選択されている検出アドレスは235.0.0.1:6789です。ここでもこのアドレスを使用します。
次の手順に従ってUser Dispatcherをインストールします。
インストーラによって、Oracle Application Serverで実行するocmsという名前のOC4Jインスタンスが作成されます。このインスタンスにデプロイされるアプリケーションはUser Dispatcherのみです。
作成するインスタンスの数は使用可能なメモリーによって変わります。新しいインスタンスを設定するたびに2.5GBのメモリーが消費されます。使用可能なメモリーに収まる最大限のインスタンスを作成することをお薦めします。オペレーティング・システムのためにメモリーを残しておく必要があることに注意してください。
最終的なチューニングを後から実行してシステム・パフォーマンスを最適化することができます。
続行する前に、$ORACLE_HOME/opmn/bin/opmnctl stopallと入力して、実行中のインスタンスを停止します。
$ORACLE_HOME/binのcreateinstanceコマンドを使用してOC4Jインスタンスを追加作成します。次に例を示します。
cd $ORACLE_HOME/bin ./createinstance -instanceName ps1 -groupName presence -httpPort 8901 -defaultAdminPass
ここで、ps1はインスタンスの名前、グループの名前はpresenceです。グループが存在しない場合は作成されます。
-httpPort 8901によってポート番号が指定されます。管理しやすくするために、連続した使用可能ポート番号を使用することをお薦めします。サンプル・ネットワークでは、8901、8902および8903を、それぞれOC4Jインスタンスps1、ps2およびps3に対して使用します。
ここでは、-defaultAdminPassによってパスワードの設定が省略されています。これは、インスタンスのパスワード設定を省略するようにcreateinstanceに指定します。後から別のコマンドを発行して、このインスタンスのパスワードを設定します。このオプションを含めないと、createinstanceによって、パスワードを入力するように求められます。作成するインスタンスが少数の場合はこの方法を利用できますが、インスタンス作成のスクリプトを実行する場合は-defaultAdminPassを使用した方が効率がよくなります。
作成したインスタンスにパスワードを設定するには、次のコマンドを実行します。
cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../<instance-name> -jar jazn.jar -activateadmin <password>.
たとえば、ps1インスタンスのパスワードをmyPassword1に設定するには、次のように実行します。
cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../ps1 -jar jazn.jar -activateadmin myPassword1
これら2つのコマンドを、十分なインスタンスを作成するために必要な回数繰り返します。サンプル・ネットワークでは、3つのPresenceインスタンスにそれぞれ対応する3つのOC4Jインスタンスps1、ps2およびps3を作成するために、これらのコマンドを次のように3回実行する必要があります。
cd $ORACLE_HOME/bin ./createinstance -instanceName ps1 -groupName presence -httpPort 8901 -defaultAdminPass cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../ps1 -jar jazn.jar -activateadmin myPassword1 cd $ORACLE_HOME/bin ./createinstance -instanceName ps2 -groupName presence -httpPort 8902 -defaultAdminPass cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../ps2 -jar jazn.jar -activateadmin myPassword1 cd $ORACLE_HOME/bin ./createinstance -instanceName ps3 -groupName presence -httpPort 8903 -defaultAdminPass cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../ps3 -jar jazn.jar -activateadmin myPassword1
前述の手順では、実際のPresenceサーバーがデプロイされるOC4Jインスタンスを新たに作成する方法について説明しました。デプロイする前に、Sipサーブレット・コンテナを取得するようにそれらの新しいインスタンスを構成することも必要です。必要なjarは、User DispatcherをインストールしたときにすでにOracle Application Serverにインストールされています。このため、実行する必要があるのは、各ps Xインスタンスが共有ライブラリからSipサーブレット・コンテナjarを取得するように構成することだけです。また、適切な起動とロギングのために新しいOC4Jインスタンスを構成する必要もあります。すべての新しいOC4Jインスタンスに対して実行する必要がある全手順は次のとおりです。
boot.xmlファイルを編集します。
j2ee-logging.xmlファイルを編集する必要があります。
$ORACLE_HOME/opmn.xmlファイルを編集します。
xcap configディレクトリを追加します。
Sipサーブレット・コンテナに必要なjarが含まれる共有ライブラリを取得するようにインスタンスを構成します。このためには、OCMSインストーラによって作成されたocmsインスタンスからboot.xmlを次のようにコピーします。
cp $ORACLE_HOME/j2ee/ocms/config/boot.xml $ORACLE_HOME/j2ee/<instance name>/config/
これで、ocmsインスタンスの適切に構成されたboot.xmlが別のインスタンスにコピーされます。この手順を新たに作成したすべてのインスタンスについて繰り返します。サンプル・ネットワークでは、<instance name>をps1、ps2およびps3で置き換えてこのコマンドを3回発行し、boot.xmlを3つのOC4Jインスタンスにコピーします。
共有ライブラリをロードするためにboot.xmlファイルをコピーしたのと同様に、ロギングのための構成ファイルをコピーすることができます。ocmsのconfigディレクトリにあるj2ee-logging.xmlファイルをすべてのインスタンスにコピーします。
cp $ORACLE_HOME/j2ee/ocms/config/j2ee-logging.xml $ORACLE_HOME/j2ee/<instance name>/
config/
サンプル・ネットワークでは、<instance name>をps1、ps2およびps3で置き換えてこのコマンドを3回発行し、j2ee-logging.xmlを3つのOC4Jインスタンスにコピーします。
JVMパラメータを構成して、Sipサーブレット・コンテナがロードされるようにインスタンスの起動と停止を設定します。これには、opmn.xmlファイルを編集して、すべてのPresenceのOC4Jインスタンス(サンプル・ネットワークではps1、ps2およびps3)およびocmsインスタンスについて起動および停止のパラメータを設定します。
起動パラメータ:
<data id="java-options" value="-server -Xmx2500M -Xms2500M -Xloggc:/<instance name>/
sdp/logs/gc.ps1.log -XX:+PrintGCDetails -XX:NewRatio=3 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -Dhttp.maxFileInfoCacheEntries=-1 -Djava.security.policy=$ORACLE_HOME/j2ee/
<instance name>/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false -DopmnPingInterval=1 -Doracle.hooks=oracle.sdp.sipservletcontainer.SipServletContainerOc4j;oracle.sdp.
sipservletcontainer.deployer.Oc4jApplicationHook "/>
停止パラメータ:
<data id="java-options" value="-Djava.security.policy=$ORACLE_HOME/j2ee/
<instance name>/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false -Doracle.hooks=oracle.sdp.sipservletcontainer.SipServletContainerOc4j;oracle.sdp.
sipservletcontainer.deployer.Oc4jApplicationHook"/>
これらのパラメータの意味は次のとおりです。
-Xmx2500M: 最大JVMメモリーを2.5GBに設定します。
-Xms2500M: 最小JVMメモリーを2.5GBに設定します。
-XX:+PrintGCDetails: コレクション・アクティビティのロギングを有効にします。
-XX:NewRatio=3: ヒープの新世代と旧世代の比率を1:3に設定します(つまり、エデン領域とサバイバ領域の合計サイズが合計ヒープ・サイズの4分の1になります)。
-XX:+UseConcMarkSweepGC: 同時マークアンドスイープ・ガベージ・コレクタ(同時ロー・ポーズ・コレクタとも呼ばれる)を有効にします。
-XX:+UseParNewGC: パラレル・スレッドを使用します。
-XX:PermSize=128m: 永続世代の初期サイズを128MBに設定します。
-XX:MaxPermSize=128m: 永続世代の最大サイズを128MBに設定します。
-Xss128k: 各スレッドのstatサイズを128KBに設定します。
-Dhttp.maxFileCacheEntries=-1: Oracle Application ServerにバンドルされているHTTPサーバーでのキャッシングを無効にします。このリリースでは、Presenceサーバーの良好なパフォーマンスを得るためにキャッシングを無効にする必要があります。
-Doracle.hooks=oracle.sdp.sipservletcontainer.SipServletContainerOc4j;oracle.sdp.
sipservletcontainer.deployer.Oc4jApplicationHook: OC4JでSipコンテナをロードできるようにします。
起動および停止パラメータの設定が終了したので、次にSipサーブレット・コンテナが正しいポートでリスニングするように構成する必要があります。デフォルトでは、Sipサーブレット・コンテナは、SIPをポート5060、SIPSを5061でリスニングします。ファイル$ORACLE_HOME/opmn/conf/opmn.xmlでは、OCMSインストーラによって作成されたocmsインスタンスが次のようにこれらのデフォルト値で構成されています。
<port id="sip" range="5060"/> <port id="sips" range="5061"/>
ocmsインスタンスのこれらの値はそのままにしておく必要があります。User Dispatcherはこれらのポートで受信トラフィックをリスニングするためです。Presenceノードのために作成した他のOC4Jインスタンスについては、ポート競合を避けるためにそれぞれに別のポートを構成する必要があります。管理しやすくするために、連続した使用可能ポートを使用することをお薦めします。サンプル・ネットワークでは、Presenceインスタンスに5062から始まるポートを割り当てています。構成は次のようになります。
ps1
<port id="sip" range="5062"/> <port id="sips" range="5063"/>
ps2
<port id="sip" range="5064"/> <port id="sips" range="5065"/>
ps3
<port id="sip" range="5066"/> <port id="sips" range="5067"/>
デフォルトでは、Sipサーブレット・コンテナはIPアドレス127.0.0.1でリスニングします。このアドレスを、このマシンの外部からアドレス指定できるIPアドレスに変更する必要があります。前述の手順で、コンテナをロードするようにOracle Application Serverを構成しましたが、実際のSipサーブレット・コンテナの構成ファイルは取得していません。デフォルトの構成ファイルを生成するには、Oracle Application Serverを起動してから停止する必要があります。デフォルトの構成ファイルが生成されたら、デプロイに合せてファイルを編集することができます。
Oracle Application Serverを起動するには次のようにします。
$ORACLE_HOME/opmn/bin/opmnctl startall
起動して実行したら、次のように停止します。
$ORACLE_HOME/opmn/bin/opmnctl stopall
sdpという名前の新しい構成ディレクトリが、$ORACLE_HOME/j2ee/<instance name>/に作成されています。各インスタンスのOCMSの構成に関連するすべての情報がここにあります。各インスタンスには
config/sdp/SipServletContainer.xmlという名前のファイルがあります。各インスタンスについてこのファイルを編集し、IPAddress属性を127.0.0.1からSipサーブレット・コンテナがリスニングするIPアドレスに変更する必要があります。ただし、このファイルはこのマシンのすべてのSipサーブレット・コンテナで同じにする必要があるため、それぞれを手動で編集する必要はありません。ocmsディレクトリにあるファイルをコピーして再利用します。コマンドは次のとおりです。
cp $ORACLE_HOME/j2ee/ocms/config/sdp/SipServletContainer.xml $ORACLE_HOME/j2ee/
<instance name>/config/sdp/
<instance-name>をPresenceのOC4Jインスタンスの名前で置き換えます。サンプル・ネットワークでは、このコマンドを3回(ps1、ps2およびps3に対して1回ずつ)実行します。これでSipサーブレット・コンテナがすべてのインスタンスに対して構成されたため、サーバーを起動することができます。Oracle Application ServerですべてのOC4Jインスタンスを起動するには、次のようにします。
$ORACLE_HOME/opmn/bin/opmnctl startall
ua-profileイベント・パッケージはPresenceノードで明示的には使用されませんが、存在するように構成する必要があります。このため、xcap構成ファイルをすべてのPresence OC4Jインスタンスにコピーしてください。これを行うには、xcapディレクトリを各インスタンスのsdp構成ディレクトリ$ORACLE_HOME/j2ee/にコピーします。サンプル・ネットワークでは、xcapディレクトリを次のディレクトリにコピーする必要があります。
<instance-name>/config/sdp/
$ORACLE_HOME/j2ee/ps1/config/sdp/ $ORACLE_HOME/j2ee/ps2/config/sdp/ $ORACLE_HOME/j2ee/ps3/config/sdp/
xcapディレクトリは、OCMSインストーラを抽出したディレクトリにあります。たとえば、インストーラをディレクトリOCMS_INSTALLERに抽出した場合、xcapディレクトリは次の場所にあります。
OCMS_ INSTALLER/Disk1/stage/Components/oracle.sdp/10.1.3.4.0/1/DataFiles/Expanded/Shiphome/
shiphome-archive/shiphome-archive/xcapconf/conf
次のように、springbeans.xmlをocmsインスタンスのsdp構成ディレクトリからすべてのPresenceインスタンスのsdp構成ディレクトリにコピーします。
cp $ORACLE_HOME/j2ee/ocms/config/sdp/springbeans.xml $ORACLE_HOME/j2ee/
<instance name>/config/sdp/
サンプル・ネットワークでは、<instance-name>をps1、ps3およびps3でそれぞれ置き換えて、このコマンドを3回実行します。
インストールを続行する前に、ログを調べてこれまでの操作が正常に処理されたことを確認します。また、netstatコマンドを発行して、サーバーが正しいポートでリスニングしていることも確認できます。
ログ・ファイル: ログ・ファイルを定期的に監視することも必要です。構成に問題がある場合にはログ・ファイルによって明らかになります。確認する必要がある主なログ・ファイルは
2つです。1つ目は、$ORACLE_HOME/opmn/logsにある各インスタンスのコンソール出力です。通常、Presenceノードの場合は次のようなファイル名になります。
presence~<instance-name>~default_group~1.log
ocmsインスタンスに対するファイルと、opmnそのもののログ・ファイルもあります。常にこれらのファイルをよく注意してください。異常が発生する大半のケースでは、これらのログ・ファイルによって潜在的な問題に関する十分な情報が得られるためです。
もう1つの重要なログ・ファイルは、Sipサーブレット・コンテナそのものによって生成されるログです。各インスタンス(たとえばps1)にはsdpログ・ディレクトリがあり、trace.logファイルが含まれます。このファイルにもよく注意してください。このファイルはocmsインスタンスに対しても存在します。すべてのインスタンスのすべてのtrace.logファイルを確認するようにしてください。
opmnctl: opmnctlツールは、サーバーの起動と停止に使用されます。このツールでは、実行中のインスタンスのステータスも表示されます。基本コマンドは次のとおりです。
$ORACLE_HOME/opmn/bin/opmnctl status
すべてのプロセスと、それらが実行しているかどうかが表示されます。一般的な出力を次に示します。
Processes in Instance: priv5.priv5 -------------------- ias-component | process-type | pid | status -------------------- OC4JGroup:presence | OC4J:ps3 | 4868 | Alive OC4JGroup:presence | OC4J:ps2 | 4869 | Alive OC4JGroup:presence | OC4J:ps1 | 4867 | Alive OC4JGroup:default_group | OC4J:ocms | 4866 | Alive OC4JGroup:default_group | OC4J:home | 4865 | Alive ASG | ASG | N/A | Down
この出力は、ps1〜ps3がこのマシンで実行していることを示します。ocmsインスタンスも起動して実行しています。User Dispatcherがこのインスタンスで実行されていることに注意してください。opmnctlを使用して、各インスタンスがリスニングしているすべてのポートを表示することもできます。このためには、次の例のようにスイッチ-lをopmnctlに指定します。
$ORACLE_HOME/opmn/bin/opmnctl status -l
これにより、表5-1のような出力が表示されます。この表の出力は一部省略されています。通常は、プロセスID、起動時刻、その他の情報が含まれます。
すべての構成が適切な場合は、ocmsがSIPポート5060、ps1が5062などのようにリスニングしていることが表示されます。
Oracle Enterprise Managerでグループ・ビューを使用し、アプリケーションをそのグループのすべてのインスタンスにデプロイします。デプロイ時にはアプリケーションの名前としてpresenceを使用することをお薦めします。デプロイが終了したら、すべてのインスタンスで次の項目を構成する必要があります。
各OC4J Presenceノード・インスタンスについて、PresenceアプリケーションMbeanに移動し、次の属性の値を設定します。
- PIDFManipulationXCAPUri - sip:<xdmsHostIP>;transport=TCP;lr - PresRulesXCAPUri - sip:<xdmsHostIP>;transport=TCP;lr
サンプル・ネットワークでは、XDMSプールが192.168.0.150:5062のロード・バランサ上にあるため、すべてのPresenceインスタンス(ps1、ps2およびps3)に対して設定は次のようになります。
PIDFManipulaitonXCAPUri - sip:192.168.0.150:5062;transport=TCP;lr PresRulesXCAPUri - sip:192.168.0.150:5062;transport=TCP;lr
各OC4J Presenceノード・インスタンスについて、PresenceアプリケーションのUserAgentFactoryService MBeanに移動し、ポートの競合を避けるために、マシン上のPresenceインスタンスそれぞれについてPort属性の値を一意に設定します。管理しやすくするために、連続した使用可能ポートを使用することをお薦めします。サンプル・ネットワークでは、インスタンスps1、ps2およびps3に対して5070、5071および5072をそれぞれ使用しています。
各OC4J Presenceノード・インスタンスについて、PackageManager MBeanに移動し、JGroupsBroadcastEnabled - trueのように属性の値を設定します。
JGroups構成でデフォルト値を使用するようにJgroupXMLConfigPathの値は空にしておきます。デフォルトのJGroups構成では、次の値が使用されます。
デプロイ内のすべてのPresenceインスタンスにSIPトラフィックをルーティングできるようにUser Dispatcherを構成します。User Dispatcherが存在するマシン上のすべてのPresenceインスタンスと、デプロイ内の他のマシンのすべてのPresenceインスタンスにSIPトラフィックを送るように、すべてのUser Dispatcherを構成する必要があります。つまり、各Persenceノード(Persenceマシン)のUser Dispatcherは、他のノードのすべてのPresenceインスタンスを認識する必要があります。User DispatcherがSIPトラフィックをすべてのPresenceサーバーにルーティングできるように構成するには、次の手順を実行します。
sip:<ip-address>:<port>;transport=tcp;lr
サンプル・ネットワークには3つのPresenceノード(マシン)があり、それぞれに3つのPresenceサーバーがあります。Presenceサーバーは合計9つです。各User DispatcherがSIPトラフィックを9つのPresenceサーバーにルーティングするように構成する必要があります。各User DispatcherのPersenceプールに次の内容を追加します。
sip:192.168.0.10:5062;transport=tcp;lr sip:192.168.0.10:5064;transport=tcp;lr sip:192.168.0.10:5066;transport=tcp;lr sip:192.168.0.11:5062;transport=tcp;lr sip:192.168.0.11:5064;transport=tcp;lr sip:192.168.0.11:5066;transport=tcp;lr sip:192.168.0.12:5062;transport=tcp;lr sip:192.168.0.12:5064;transport=tcp;lr sip:192.168.0.12:5066;transport=tcp;lr
ここでは、インストールしたコンポーネント同士が共存して適切に稼働できるように、チューニングする方法について説明します。
インストールが終了したら、不要にリソースを消費しないようにWebCenterインスタンスを無効にします。これには、$ORACLE_HOME/opmn/conf/にあるopmn.xmlファイルを編集します。サンプルの<process-type id="OC4J_WebCenter" module-id="OC4J" status="disabled">のように、ステータスをenabledからdisabledに変更します。変更を有効にするために、次のようにサーバーを再起動します。
$ORACLE_HOME/opmn/bin/opmnctl stopall
停止した後で再び起動します。
$ORACLE_HOME/opmn/bin/opmnctl startall
すべてのインストールが終了したら、管理ノードを除くすべてのノードでホームOC4Jインスタンスを停止します。管理ノードは、Enterprise Managerコンソールにログインして、デプロイ全体の構成を表示または変更するために使用します。ホーム・インスタンスを停止するには、すべてのPresenceノードのopmn.xmlファイルを編集して、WebCenterインスタンスの場合と同じ方法でホーム・インスタンスを無効にします。ホームが必要になるのは、createinstanceコマンドを使用して新しいインスタンスを作成するときのみです。
XDMノードのインストールはPresenceノードのインストールと似ています。どちらのタイプのノードにもUser Dispatcherがデプロイされ、その他にPresenceアプリケーションのearファイルがデプロイされたX個のインスタンスが実行しています。違いは、XDMノードにはAggregationProxyとSubscriber Data Servicesもデプロイされている点です。また、User DispatcherとXDMSアプリケーションの構成がわずかに異なります。
XDMノードをインストールする手順は次のとおりです。
最初にOracle Application ServerをXDMSノードにインストールする必要があります。
次にOracle Application Serverパッチを適用する必要があります。
次の手順に従ってUser Dispatcherをインストールします。
インストーラによって、Oracle Application Serverで実行するocmsという名前のOC4Jインスタンスがもう1つ作成されます。このインスタンスにデプロイされるアプリケーションは、User Dispatcher、Subscriber Data ServicesおよびAggregation Proxyです。
$ORACLE_HOME/binのcreateinstanceコマンドを使用してOC4Jインスタンスを追加作成します。次に例を示します。
cd $ORACLE_HOME/bin ./createinstance -instanceName xdms1 -groupName xdms -httpPort 8901 -defaultAdminPass
ここで、xdms1はインスタンスの名前、グループの名前はxdmsです。グループが存在しない場合は作成されます。
-httpPort 8901によってポート番号が指定されます。管理しやすくするために、連続した使用可能ポート番号を使用することをお薦めします。サンプル・ネットワークでは、8901、8902および8903をそれぞれOC4Jインスタンスxdms1、xdms2およびxdms3に対して使用します。
ここでは、-defaultAdminPassによってパスワードの設定が省略されています。これは、インスタンスのパスワード設定を省略するようにcreateinstanceに指定します。後から別のコマンドを発行して、このインスタンスのパスワードを設定します。このオプションを含めないと、createinstanceによって、パスワードを入力するように求められます。作成するインスタンスが少数の場合はこの方法を利用できますが、インスタンス作成のスクリプトを実行する場合は-defaultAdminPassを使用した方が効率がよくなります。
作成したインスタンスにパスワードを設定するには、次のコマンドを実行します。
cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../<instance-name> -jar jazn.jar -activateadmin <password>.
たとえば、xdmsインスタンスのパスワードをmyPassword1に設定するには、次のように実行します。
cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../xdms1 -jar jazn.jar -activateadmin myPassword1
これら2つのコマンドを、十分なインスタンスを作成するために必要な回数繰り返します。サンプル・ネットワークでは、3つのXDMSインスタンスにそれぞれ対応する3つのOC4Jインスタンスxdms1、xdms2およびxdms3を作成するために、これらのコマンドを次のように
3回実行する必要があります。
cd $ORACLE_HOME/bin ./createinstance -instanceName xdms1 -groupName xdms -httpPort 8901 -defaultAdminPass cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../xdms1 -jar jazn.jar -activateadmin myPassword1 cd $ORACLE_HOME/bin ./createinstance -instanceName xdms2 -groupName xdms -httpPort 8902 -defaultAdminPass cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../xdms2 -jar jazn.jar -activateadmin myPassword1 cd $ORACLE_HOME/bin ./createinstance -instanceName xdms3 -groupName xdms -httpPort 8903 -defaultAdminPass cd $ORACLE_HOME/j2ee/home java -Doracle.j2ee.home=../xdms3 -jar jazn.jar -activateadmin myPassword1
前述の手順では、実際のXDMSサーバーがデプロイされるOC4Jインスタンスを新たに作成する方法について説明しました。デプロイする前に、Sipサーブレット・コンテナを取得するようにそれらの新しいインスタンスを構成することも必要です。必要なjarは、User DispatcherをインストールしたときにすでにOracle Application Serverにインストールされています。このため、実行する必要があるのは、xdmsXインスタンスそれぞれが共有ライブラリからSipサーブレット・コンテナjarを取得するように構成することだけです。また、適切な起動とロギングのために新しいOC4Jインスタンスを構成する必要もあります。すべての新しいOC4Jインスタンスに対して実行する必要がある全手順は次のとおりです。
boot.xmlファイルを編集します。
j2ee-logging.xmlファイルを編集する必要があります。
$ORACLE_HOME/opmn.xmlファイルを編集します。
xcap configディレクトリを追加します。
$ORACLE_HOME/opmn/bin/opmnctl stopall
Sipサーブレット・コンテナに必要なjarが含まれる共有ライブラリを取得するようにインスタンスを構成します。このためには、OCMSインストーラによって作成されたocmsインスタンスからboot.xmlを次のようにコピーします。
cp $ORACLE_HOME/j2ee/ocms/config/boot.xml $ORACLE_HOME/j2ee/<instance name>/config/
これで、ocmsインスタンスの適切に構成されたboot.xmlが別のインスタンスにコピーされます。この手順を新たに作成したすべてのインスタンスについて繰り返します。サンプル・ネットワークでは、<instance name>をxdms1、xdms2およびxdms3で置き換えてこのコマンドを3回発行し、boot.xmlを3つのOC4Jインスタンスにコピーします。
共有ライブラリをロードするためにboot.xmlファイルをコピーしたのと同様に、ロギングのための構成ファイルをコピーすることができます。ocmsのconfigディレクトリにあるj2ee-logging.xmlファイルをすべてのインスタンスにコピーします。
cp $ORACLE_HOME/j2ee/ocms/config/j2ee-logging.xml $ORACLE_HOME/j2ee/
<instance name>/config/
サンプル・ネットワークでは、<instance name>をxdms1、xdms2およびxdms3で置き換えてこのコマンドを3回発行し、j2ee-logging.xmlを3つのOC4Jインスタンスにコピーします。
JVMパラメータを構成して、Sipサーブレット・コンテナがロードされるようにインスタンスの起動と停止を設定します。これには、opmn.xmlファイルを編集して、すべてのPresenceのOC4Jインスタンス(サンプル・ネットワークではxdms1、xdms2およびxdms3)およびocmsインスタンスについて起動および停止のパラメータを設定します。
起動パラメータ:
<data id="java-options" value="-server -Xmx2500M -Xms2500M -Xloggc:/home/sdp/logs/gc.xdms1.log -XX:+PrintGCDetails -XX:NewRatio=3 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:PermSize=128m -XX:MaxPermSize=128m -Xss128k -Dhttp.maxFileInfoCacheEntries=-1 -Djava.security.policy=$ORACLE_HOME/
j2ee/home/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false -DopmnPingInterval=1 -Doracle.hooks=oracle.sdp.sipservletcontainer.SipServletContainerOc4j;oracle.sdp.sipser vletcontainer.deployer.Oc4jApplicationHook "/>
停止パラメータ:
<data id="java-options" value="-Djava.security.policy=$ORACLE_HOME/
j2ee/home/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false -Doracle.hooks=oracle.sdp.sipservletcontainer.SipServletContainerOc4j;oracle.sdp.sipser vletcontainer.deployer.Oc4jApplicationHook"/>
これらのパラメータの意味は次のとおりです。
-Xmx2500M: 最大JVMメモリーを2.5GBに設定します。
-Xms2500M: 最小JVMメモリーを2.5GBに設定します。
-XX:+PrintGCDetails: コレクション・アクティビティのロギングを有効にします。
-XX:NewRatio=3: ヒープの新世代と旧世代の比率を1:3に設定します(つまり、エデン領域とサバイバ領域の合計サイズが合計ヒープ・サイズの4分の1になります)。
-XX:+UseConcMarkSweepGC: 同時マークアンドスイープ・ガベージ・コレクタ(同時ロー・ポーズ・コレクタとも呼ばれる)を有効にします。
-XX:+UseParNewGC: パラレル・スレッドを使用します。
-XX:PermSize=128m: 永続世代の初期サイズを128MBに設定します。
-XX:MaxPermSize=128m: 永続世代の最大サイズを128MBに設定します。
-Xss128k: 各スレッドのstatサイズを128KBに設定します。
-Dhttp.maxFileCacheEntries=-1: Oracle Application ServerにバンドルされているHTTPサーバーでのキャッシングを無効にします。このリリースでは、Presenceサーバーの良好なパフォーマンスを得るためにキャッシングを無効にする必要があります。
-Doracle.hooks=oracle.sdp.sipservletcontainer.SipServletContainerOc4j;oracle.sdp.
sipservletcontainer.deployer.Oc4jApplicationHook: OC4JでSipコンテナをロードできるようにします。
起動および停止パラメータの設定が終了したので、次にSipサーブレット・コンテナが正しいポートでリスニングするように構成する必要があります。デフォルトでは、Sipサーブレット・コンテナは、SIPをポート5060、SIPSを5061でリスニングします。ファイル$ORACLE_HOME/opmn/conf/opmn.xmlでは、OCMSインストーラによって作成されたocmsインスタンスが次のようにこれらのデフォルト値で構成されています。
<port id="sip" range="5060"/> <port id="sips" range="5061"/>
ocmsインスタンスのこれらの値はそのままにしておく必要があります。User Dispatcherはこれらのポートで受信トラフィックをリスニングするためです。Presenceノードのために作成した他のOC4Jインスタンスについては、ポート競合を避けるためにそれぞれに別のポートを構成する必要があります。管理しやすくするために、連続した使用可能ポートを使用することをお薦めします。サンプル・ネットワークでは、Presenceインスタンスに5062から始まるポートを割り当てています。構成は次のようになります。
ps1
<port id="sip" range="5062"/> <port id="sips" range="5063"/>
ps2
<port id="sip" range="5064"/> <port id="sips" range="5065"/>
ps3
<port id="sip" range="5066"/> <port id="sips" range="5067"/>
デフォルトでは、Sipサーブレット・コンテナはIPアドレス127.0.0.1でリスニングします。このアドレスを、このマシンの外部からアドレス指定できるIPアドレスに変更する必要があります。前述の手順で、コンテナをロードするようにOracle Application Serverを構成しましたが、実際のSipサーブレット・コンテナの構成ファイルは取得していません。デフォルトの構成ファイルを生成するには、Oracle Application Serverを起動してから停止する必要があります。デフォルトの構成ファイルが生成されたら、デプロイに合せてファイルを編集することができます。
Oracle Application Serverを起動するには次のようにします。
$ORACLE_HOME/opmn/bin/opmnctl startall
起動して実行したら、次のように停止します。
$ORACLE_HOME/opmn/bin/opmnctl stopall
sdpという名前の新しい構成ディレクトリが、$ORACLE_HOME/j2ee/<instance name>に作成されています。各インスタンスのOCMSの構成に関連するすべての情報がここにあります。各インスタンスには
/config/sdp/SipServletContainer.xmlという名前のファイルがあります。各インスタンスについてこのファイルを編集し、IPAddress属性を127.0.0.1からSipサーブレット・コンテナがリスニングするIPアドレスに変更する必要があります。ただし、このファイルはこのマシンのすべてのSipサーブレット・コンテナで同じにする必要があるため、それぞれを手動で編集する必要はありません。ocmsディレクトリにあるファイルをコピーして再利用します。コマンドは次のとおりです。
cp $ORACLE_HOME/j2ee/ocms/config/sdp/SipServletContainer.xml $ORACLE_HOME/j2ee/
<instance name>/config/sdp/
<instance-name>をPresenceのOC4Jインスタンスの名前で置き換えます。サンプル・ネットワークでは、このコマンドを3回(xdms1、xdms2およびxdms3に対して1回ずつ)実行します。これでSipサーブレット・コンテナがすべてのインスタンスに対して構成されたため、サーバーを起動することができます。Oracle Application ServerですべてのOC4Jインスタンスを起動するには、次のようにします。
$ORACLE_HOME/opmn/bin/opmnctl startall
ua-profileイベント・パッケージはPresenceノードで明示的には使用されませんが、存在するように構成する必要があります。このため、xcap構成ファイルをすべてのPresence OC4Jインスタンスにコピーしてください。これを行うには、xcapディレクトリを各インスタンスのsdp構成ディレクトリ$ORACLE_HOME/j2ee/<instance-name>/config/sdp/にコピーします。サンプル・ネットワークでは、xcapディレクトリを次のディレクトリにコピーする必要があります。
$ORACLE_HOME/j2ee/xdms1/config/sdp/ $ORACLE_HOME/j2ee/xdms2/config/sdp/ $ORACLE_HOME/j2ee/xdms3/config/sdp/
xcapディレクトリは、OCMSインストーラを抽出したディレクトリにあります。たとえば、インストーラをディレクトリOCMS_INSTALLERに抽出した場合、xcapディレクトリは次の場所にあります。
OCMS_ INSTALLER/Disk1/stage/Components/oracle.sdp/10.1.3.4.0/1/DataFiles/Expanded/Shiphome/
shiphome-archive/xcapconf/conf
各XDMSノードのAggregation Proxyが、同じノード上のUser Dispatcherを指すように構成する必要があります。次の手順に従ってAggregation Proxyを構成します。
XCAPRootが同じノードのUser Dispatcherのコンテキスト・ルートになるように変更します。User Dispatcherコンテキスト・ノードのデフォルト値はuserdispatcherです。これを変更していないかぎり、XCAPRoot属性の値を/userdispatcherに設定します。XCAPHostやXCAPPortなど他の属性を変更する必要はありません。これらはインストーラによって適切に設定されます。
次のように、springbeans.xmlをocmsインスタンスのsdp構成ディレクトリからすべてのPresenceインスタンスのsdp構成ディレクトリにコピーします。
cp $ORACLE_HOME/j2ee/ocms/config/sdp/springbeans.xml $ORACLE_HOME/j2ee/<instance name>/
config/sdp/
サンプル・ネットワークでは、<instance-name>をxdms1、xdms3およびxdms3でそれぞれ置き換えて、このコマンドを3回実行します。
インストールを続行する前に、ログを調べてこれまでの操作が正常に処理されたことを確認します。また、netstatコマンドを発行して、サーバーが正しいポートでリスニングしていることも確認できます。
ログ・ファイル: ログ・ファイルを定期的に監視することも必要です。構成に問題がある場合にはログ・ファイルによって明らかになります。確認する必要がある主なログ・ファイルは
2つです。1つ目は、$ORACLE_HOME/opmn/logsにある各インスタンスのコンソール出力です。通常、xdmsノードの場合は次のようなファイル名になります。
xdms~<instance-name>~default_group~1.log
ocmsインスタンスに対するファイルと、opmnそのもののログ・ファイルもあります。常にこれらのファイルをよく注意してください。異常が発生する大半のケースでは、これらのログ・ファイルによって潜在的な問題に関する十分な情報が得られるためです。
もう1つの重要なログ・ファイルは、Sipサーブレット・コンテナそのものによって生成されるログです。各インスタンス(たとえばxdms1)にはsdpログ・ディレクトリがあり、trace.logファイルが含まれます。このファイルにもよく注意してください。このファイルはocmsインスタンスに対しても存在します。すべてのインスタンスのすべてのtrace.logファイルを確認するようにしてください。
opmnctl: opmnctlツールは、サーバーの起動と停止に使用されます。このツールでは、実行中のインスタンスのステータスも表示されます。基本コマンドは次のとおりです。
$ORACLE_HOME/opmn/bin/opmnctl status
すべてのプロセスと、それらが実行しているかどうかが表示されます。一般的な出力を次に示します。
Processes in Instance: priv5.priv5 -------------------- ias-component | process-type | pid | status -------------------- OC4JGroup:xdms | OC4J:xdms3 | 4868 | Alive OC4JGroup:xdms | OC4J:xdms2 | 4869 | Alive OC4JGroup:xdms | OC4J:xdms1 | 4867 | Alive OC4JGroup:default_group | OC4J:ocms | 4866 | Alive OC4JGroup:default_group | OC4J:home | 4865 | Alive ASG | ASG | N/A | Down
この出力は、xdms1〜xdms3がこのマシンで実行していることを示します。ocmsインスタンスも起動して実行しています。User Dispatcherがこのインスタンスで実行されていることに注意してください。opmnctlを使用して、各インスタンスがリスニングしているすべてのポートを表示することもできます。このためには、次の例のようにスイッチ-lをopmnctlに指定します。
$ORACLE_HOME/opmn/bin/opmnctl status -l
これにより、表5-1のような出力が表示されます。この表の出力は一部省略されています。通常は、プロセスID、起動時刻、その他の情報が含まれます。
すべての構成が適切な場合は、ocmsがSIPポート5060、xdms1が5062などのようにリスニングしていることが表示されます。
XDMSインスタンスの接続プールとデータソースを作成します。ユーザー・プレゼンス・ルールとPIDFドキュメントはOracle Database(サンプル・ネットワークでは192.168.0.30)に格納されていることに注意してください。これらのドキュメントにアクセスできるようにXDMSノードを構成する必要があります。次のプロパティを使用して接続プールとデータソースを設定します。
SDP XDMS Oracle Connection Pool
oracle.jdbc.pool.OracleDataSource
@//<db-hostname>:<db-port>/<db-name>
oc4jadmin
myPassword1
SDP_ORASDPXDMS
myDBPassword1
OcmsXdmsDs
ユーザー名とパスワードは、それらの資格証明でOracle Databaseにアクセスできるものであればデプロイに合せて変更できます。接続プールとデータソースを作成するには、管理ノードで次のコマンドを実行します。
java -jar ORACLE_HOME/j2ee/home/admin_client.jar deployer:clusterj:opmn://<management-host-ip-address> <oc4j-username> <admin_pwd> -addDataSourceConnectionPool -applicationName <name> -name <connection pool name> -name <connection pool name> -factoryClass <factory class> -dbPassword <db password> -dbUser <db username> -url <url> java -jar ORACLE_HOME/j2ee/home/admin_client.jar deployer:cluster:opmn://<management-host-ip-address>/xdms <oc4j-username> <password> -addManagedDataSource -applicationName default -name "<data-source-name>" -jndiLocation java:jdbc/<data-source-name> -connectionPoolName "<connection-pool-name>"
サンプル・ネットワークでは、Oracle Databaseはホスト192.168.0.30のポート1521にあります。データベース名はorcl11g、管理ノードは192.168.0.100にあります。サンプル・ネットワークを前述のように構成する場合は、次のコマンドを管理ノードで実行して、XDMSのJDBCデータソースを作成します。
java -jar admin_client.jar deployer:cluster:opmn://192.168.0.100/xdms oc4jadmin myPassword1 -addDataSourceConnectionPool -applicationName default -name "SDP XDMS Oracle Connection Pool" -factoryClass oracle.jdbc.pool.OracleDataSource -dbUser
SDP_ORASDPXDMS -dbPassword myDBPassword1 -url jdbc:oracle:thin:@//192.168.0.30:1521/orcl11g java -jar admin_client.jar deployer:cluster:opmn://192.168.0.100/xdms oc4jadmin myPassword1 -addManagedDataSource -applicationName default -name "OcmsXdmsDs" -jndiLocation java:jdbc/OcmsXdmsDs -connectionPoolName "SDP XDMS Oracle Connection Pool"
データソースまたは接続プール(あるいは両方)を後から削除する必要がある場合は、次のコマンドを発行します。
java -jar admin_client.jar deployer:cluster:opmn://<management-host-ip-address>/
xdms <oc4j-username> <oc4j-password> -removeManagedDataSource -name "<data-source-name>" java -jar admin_client.jar deployer:cluster:opmn://<management-host-ip-address>/
xdms <oc4j-username> <oc4j-password> -removeDataSourceConnectionPool -name "<connection-pool-name>"
サンプル・ネットワークでは、データソースと接続プールを削除するためのコマンドはそれぞれ次のようになります。
java -jar admin_client.jar deployer:cluster:opmn://192.168.0.100/xdms oc4jadmin myPassword1 -removeManagedDataSource -name "OcmsXdmsDs" java -jar admin_client.jar deployer:cluster:opmn://192.168.0.100/xdms oc4jadmin myPassword1 -removeDataSourceConnectionPool -name "SDP XDMS OracleConnection Pool"
Oracle Enterprise Managerでグループ・ビューを使用し、Presenceアプリケーションの.earファイルをグループのすべてのインスタンスにデプロイします(PresenceとXDMSの両方で同じ.earファイルを使用します)。デプロイ時にはアプリケーションの名前としてxdmsを使用することをお薦めします。デプロイが終了したら、すべてのインスタンスで次の項目を構成する必要があります。
各OC4J XDMSノード・インスタンスについて、「XDMS」→「XCAPConfig」アプリケーションMBeanに移動し、次の属性の値を設定します。
- PublicXCAPRootUrl - http://<node-ip>:<node-http-port>/services - PublicContentServerRootUrl - http://<node-ip>:<node-http-port>/contentserver
ここで、node-ipはXDMSインスタンスが存在するマシンのIPアドレス、node-http-portはXDMSサーバーが実行しているOC4JインスタンスのHTTPポートです。これは、OC4Jインスタンスをcreateinstanceコマンドを使用して作成するときに、-httpPort XXXXオプションを使用して指定する値です。
サンプル・ネットワークでは、1つのXDMSノードに3つのXDMSインスタンスがあります。このため、ホスト192.168.0.20のXDMSインスタンスについては次のように値を設定します。
xdms1:
PublicXCAPRootUrl - http://192.168.0.20:8091/sevices PublicContentServerRootUrl - http://192.168.0.20:8091/contentserver
xdms2:
PublicXCAPRootUrl - http://192.168.0.20:8092/sevices PublicContentServerRootUrl - http://192.168.0.20:8092/contentserver
xdms3:
PublicXCAPRootUrl - http://192.168.0.20:8093/sevices PublicContentServerRootUrl - http://192.168.0.20:8093/contentserver
サンプル・ネットワークにおいて192.168.0.21にある2番目のXDMSノード(マシン)の設定は、前の例と似ていますが、属性のIPアドレスが192.168.0.20ではなく192.168.0.21になります。
各OC4J XDMSノード・インスタンスについて、XDMSアプリケーションのUserAgentFactoryService MBeanに移動し、ポートの競合を避けるために、マシン上のXDMSインスタンスそれぞれについてPort属性の値を一意に設定します。管理しやすくするために、連続した使用可能ポートを使用することをお薦めします。サンプル・ネットワークでは、インスタンスxdms1、xdms2およびxdms3に対して5070、5071および5072をそれぞれ使用しています。
各OC4J XDMSノード・インスタンスについて、PackageManager MBeanに移動し、JGroupsBroadcastEnabled - trueのように属性の値を設定します。
XDMSサーバーとPresenceサーバーが同じポートおよびアドレスでJGroupsの通知をリスニングしないようにします。このようにしないと、エラーが発生します。PresenceサーバーではデフォルトのJGroups構成を使用したため、XDMSサーバーでは異なる構成を使用する必要があります。このためには、XDMSサーバー・パッケージ・マネージャが認識するように、JGroups構成ファイルへのパスを指定します。最小の構成ファイルの例を次に示します。
<config> <UDP bind_addr="[host-ip-address]" mcast_addr="[multicast-address]"
mcast_port="[multicast-port]" ip_ttl="1"/> </config> replacing the variables as follows: [host-ip-address] - the IP address of the host running the XDMS server [multicast-address] - the multicast address on which all participants in the group will listen for messages. [multicast-port] - the multicast port on which all participants in the group will listen for messages.
すべてのノードのすべてのXDMSサーバー・インスタンスで、multicast-addressおよびmulticast-portの値が同じになるようにしてください。また、通常、同一ホスト上のXDMSサーバーのhost-ip-addressは同じになります。ただし、XDMSサーバーのmulticast-address:multicast-portの組合せは、Presenceサーバーとは異なる必要があります。Presenceサーバーでは、デフォルト構成値(230.0.0.1:7426)をmulticast-host:multicast-portで使用したことに注意してください。場所を選択してこのファイルを保存し、EventPackageManager MbeanのJGroupXMLConfigPath属性がこのファイルを指すように編集します。
JGroupXMLConfigPath - <absolute path to the jgroups XML configuration file>
サンプル・ネットワークでは、192.168.0.20のホストで次のJGroups構成ファイルを使用します。
<config> <UDP bind_addr="192.168.0.20" mcast_addr="234.0.0.1" mcast_port="1234" ip_ttl="1"/> </config>
このノード上のすべてのXDMSインスタンスの構成は同じです。したがって、このファイルを$ORACLE_HOME/j2ee/ocms/config/sdp/jgroups.xmlに保存し、各XDMSインスタンスxdms1、xdms2およびxdms3についてEventPackageManager Mbeanを次の設定になるように編集します。
JGroupBroadcastEnabled - true JGroupXMLConfigPath - <path-to-ORACLE_HOME>/j2ee/ocms/config/sdp/jgroups.xml
192.168.0.21のXDMSホストも、ホストIPアドレスを適切に置き換えて同じ方法で構成します。
次の構成手順を実行します。
orasdpxdms.create.oracle.sqlおよびxcapservice.create.oracle.sqlファイルをデータベースが実行しているマシンにコピーします。これらのファイルは、<installer files extraction location>/Disk1/stage/Components/
oracle.sdp/10.1.3.4.0/1/DataFiles/Expanded/DBFiles/にあります。
bash$ sqlplus / as sysdbaのように実行します。
sqlplus> @orasdpxdms.create.oracle.sql PREFIX DATADIR PASSWORD
ここで、PREFIXはスキーマとユーザーに使用する接頭辞、DATADIRは作成したデータベース・ファイルが存在するパス、PASSWORDは作成されるユーザーのパスワードです。
次に例を示します。
sqlplus> @orasdpxdms.create.oracle.sql TEST "C:¥oraexe¥oradata¥XE" myPassword1
これにより、データベース・ファイルがC:¥oraexe¥oradata¥XEに作成されます。スキーマ名とユーザー名はTESTで始まるようになり、ユーザーのパスワードはmyPassword1になります。
sqlplus> @xcapservice.create.oracle.sql PREFIX
この場合のPREFIXは、orasdpxdms.create.oracle.sqlファイルの実行時の指定と同じにする必要があります。
次の構成手順を実行します。
$ORACLE_HOME/sdp/sash/sbinに移動します。
xdms-create-default-appusage.txtを作成します。
xcap appusage create applicationUsage=pres-rules configurationFilename=
presrules_au.xml xcap appusage create applicationUsage=resource-lists configurationFilename=resource-lists_au.xml xcap appusage create applicationUsage=pidf-manipulation configurationFilename=pidfmanipulation_au.xml
- bash$ sash -a presenceapplication --username oc4jadmin --password PASSWORD --file xdms-create-default-appusage.txt
ここで、PASSWORDはoc4jadminのパスワードです。
次のようにsashにログオンします。
bash$ sash -a presenceapplication --username oc4jadmin --password PASSWORD
sashプロンプトで次のように入力します。
sash# xcap appusage list
構成が正しい場合は、これによってresource-lists、pidf-manipulationおよびpres-rulesという3つの値が返されます。
デプロイ内のすべてのXDMSインスタンスにSIPトラフィックをルーティングできるようにUser Dispatcherを構成します。User Dispatcherが存在するマシン上のすべてのPresenceインスタンスと、デプロイ内の他のマシンのすべてのXDMSインスタンスにSIPトラフィックを送るように、すべてのUser Dispatcherを構成する必要があります。つまり、各XDMSノード(XDMSマシン)のUser Dispatcherは、他のノードのすべてのXDMSインスタンスを認識する必要があります。User DispatcherがSIPトラフィックをすべてのXDMSサーバーにルーティングできるように構成するには、次の手順を実行します。
sip:<ip-address>:<port>;transport=tcp;lr
サンプル・ネットワークには2つのXDMSノード(マシン)があり、それぞれに3つのXDMSサーバーがあります。XDMSサーバーは合計6つです。各User DispatcherがSIPトラフィックを6つのXDMSサーバーにルーティングするように構成する必要があります。各User Dispatcherのxdms sipプールに次の内容を追加します。
sip:192.168.0.20:5062;transport=tcp;lr sip:192.168.0.20:5064;transport=tcp;lr sip:192.168.0.20:5066;transport=tcp;lr sip:192.168.0.21:5062;transport=tcp;lr sip:192.168.0.21:5064;transport=tcp;lr sip:192.168.0.21:5066;transport=tcp;lr
「xdms-http-pool」をクリックし、「サーバー」を選択します。
http://<ip-address>:<port>/services
サンプル・ネットワークには2つのXDMSノード(マシン)があり、それぞれに3つのXDMSサーバーがあります。XDMSサーバーは合計6つです。各User DispatcherがHTTPトラフィックを6つのXDMSサーバーにルーティングするように構成する必要があります。各User Dispatcherのxdms sipプールに次の内容を追加します。
http://192.168.0.20:8901/services/ http://192.168.0.20:8902/services/ http://192.168.0.20:8903/services/ http://192.168.0.21:8901/services/ http://192.168.0.21:8902/services/ http://192.168.0.21:8903/services/
ここでは、インストールしたコンポーネント同士が共存して適切に稼働できるように、チューニングする方法について説明します。
User Dispatcherを除くすべてのPresenceインスタンスとXDMSインスタンスについて、OverloadPolicy.xmlのSipSessionTableMaxSize属性を400000に変更します。OverloadPolicy.xmlは$ORACLE_HOME/j2ee/にあります。
<instance-name>/config/sdp
インストールが終了したら、不要にリソースを消費しないようにWebCenterインスタンスを無効にします。これには、$ORACLE_HOME/opmn/conf/にあるopmn.xmlファイルを編集します。サンプルの<process-type id="OC4J_WebCenter" module-id="OC4J" status="disabled">のように、ステータスをenabledからdisabledに変更します。変更を有効にするために、次のようにサーバーを再起動します。
$ORACLE_HOME/opmn/bin/opmnctl stopall
停止した後で再び起動します。
$ORACLE_HOME/opmn/bin/opmnctl startall
すべてのインストールが終了したら、管理ノードを除くすべてのノードでホームOC4Jインスタンスを停止します。管理ノードは、Enterprise Managerコンソールにログインして、デプロイ全体の構成を表示または変更するために使用します。ホーム・インスタンスを停止するには、すべてのPresenceノードのopmn.xmlファイルを編集して、WebCenterインスタンスの場合と同じ方法でホーム・インスタンスを無効にします。ホームが必要になるのは、createinstanceコマンドを使用して新しいインスタンスを作成するときのみです。
パフォーマンスを向上させるためにASGインスタンスを停止します。
外部からの観点では、ネットワーク全体は1つのノードのように見えます。これは、1つ以上のロード・バランサをPresenceクラスタとXDMクラスタの前面に配置することで実現します。ここでは、サンプル・ネットワークを使用して、F5のBigIPロード・バランサを設定する方法について説明します。
全体的な視点で考えると、SIPトラフィック用に2つのプール、XCAPトラフィック用に1つのプールを作成する必要が生じます。1つのSIPプールにはシステムのすべてのPresenceノードが含まれ、もう1つのプールにはすべてのXDMノードが含まれます。XCAPトラフィックのプールにはXDMノードのリストのみが含まれます。XDMノードのみがXCAPトラフィックを処理するためです。
外部クライアントはこれらのプールには直接接続せず、仮想サーバーに接続します。この仮想サーバーには特定のプールが含まれます。外部クライアントが認識するのはこの仮想サーバーであり、これによって、システム全体が1つのマシンのように見えます。
BigIPのすべての構成は、Webベースの管理インタフェースで行います。機能や構成オプションの詳細は、BigIPのドキュメントを参照してください。
新しいプールを作成するには、「Local Traffic」→「Virtual Servers」→「Pools」を選択して「Pool」ページにナビゲートします。新しいプールを作成する一般的な手順は次のとおりです。
サンプル・ネットワークを使用する場合は、最初のプール、すなわちPresence用のSIPプールを作成するために次の情報を入力します。
これで、Presenceのプールが作成されました。同じ方法で、XDMネットワークに送信されるSIPトラフィックのためにもう1つのプールを次のように作成できます。
XCAPトラフィックのプールは他の2つのプールと同じです。このプールは、SIPトラフィックではなくHTTPトラフィック(XCAPはHTTP上で送信される)をディスパッチしますが、概念は同じです。
IPアドレス: 192.168.0.20、ポート: 80
IPアドレス: 192.168.0.21、ポート: 80
これでサンプル・ネットワークに必要な3つのプールが作成されました。次の手順は、各プールに対応する仮想サーバーの構成です。
仮想サーバー(VS)は外部クライアントが操作するためのものです。クライアントが特定のVSに接続すると、そのVSがリクエストをいずれかのプールにプロキシ処理し、プールがメンバーの1つにリクエストをディスパッチします。サンプル・ネットワークでは、3つのプールそれぞれに対応するVSを1つずつ作成します。新しいVSを作成する一般的な手順を次に示します。仮想サーバーは「Local Traffic」に表示されます。
次に作成するVSは、XDMクラスタに送られるSIPトラフィックに対するVSです。
仮想サーバー(VS)は外部クライアントが操作するためのものです。クライアントが特定のVSに接続すると、そのVSがリクエストをいずれかのプールにプロキシ処理し、プールがメンバーの1つにリクエストをディスパッチします。サンプル・ネットワークでは、3つのプールそれぞれに対応するVSを1つずつ作成します。新しいVSを作成する一般的な手順を次に示します。仮想サーバーは「Local Traffic」に表示されます。
これで、F5 BipIPロード・バランサの構成が完了します。様々なオプションの詳細は、BigIPのドキュメントを参照してください。
|
![]() Copyright © 2006, 2008 Oracle Corporation. All Rights Reserved. |
|