Oracle HTTP Serverのモジュール 6-21 例
例 例
例D この構成では、次のようにマウントが行われます。
■ URI /applicationA/で始まるすべてのリクエストおよびすべてのJSPページが、oc4j_
instance_Aにマウントされます。このインスタンスでは、すべてのOC4Jプロセスが
OPMNによって管理されます。この構成では、mod_oc4jをOPMNとともに使用する 必要があります。
■ URI /applicationB/で始まるすべてのリクエストが、oc4j_instance_Bにマウントされま
す。このインスタンスでは、すべてのOC4JプロセスがOPMNによって管理されます。
この構成では、mod_oc4jをOPMNとともに使用する必要があります。
1. oc4j.confファイルに次のように入力します。
Oc4JMount /applicationA/* oc4j_instance_A Oc4JMount /applicationB/* oc4j_instance_B Oc4JMount /j2ee/*
Oc4JMount /*.jsp oc4j_instance_A
mod_oprocmgr
このOracleモジュールでは、プロセス管理およびロード・バランシング・サービスがJServ
プロセスに提供されます。このモジュールはJServの従来型ユーザー用です。JServは、
Oracle HTTP Server構成ではデフォルトで無効化されています。OC4Jとmod_oc4j(デフォ
ルトで有効化)を使用することをお薦めします。
JServ にプロセス管理とロード・バランシングを提供するための にプロセス管理とロード・バランシングを提供するための にプロセス管理とロード・バランシングを提供するための にプロセス管理とロード・バランシングを提供するための mod_
oprocmgr の構成 の構成 の構成 の構成
この項では、mod_oprocmgrの構成方法を説明します。この項でモジュールと機能の説明に 使用する用語の定義は、次のとおりです。
mod_oprocmgr
mod_oprocmgrは、プロセスの起動、停止および障害検出(新規プロセスの起動による置
換)を行って、プロセスにロード・バランシング・サービスを提供します。また、JServか らのHTTPリクエストを通じてトポロジ管理情報を取得し、この情報に基づいてジョブを実 行します。
Group
リクエストの通信量が分散されるJServプロセスのセット。
サーブレット・コンテナ・プロセス サーブレット・コンテナ・プロセス サーブレット・コンテナ・プロセス サーブレット・コンテナ・プロセス
JServなどのサーブレット・コンテナを実行するJVMインスタンス。
mod_oprocmgr
mod_oprocmgr と と と と mod_jserv の動作 の動作 の動作 の動作
mod_oprocmgrは、プロセスの自動起動、障害検出、再起動およびロード・バランシングな
どのインフラストラクチャ機能を提供します。これらの機能は、ApJServManualディレク ティブのモードautoによって有効化されます。
mod_jservから提供される構成情報に基づいて、mod_oprocmgrは指定された数のJServプ
ロセスを起動し、Oracle HTTP Serverの存続期間中にJServプロセスを管理します。
mod_oprocmgr と と と と mod_jserv を使用するメリット を使用するメリット を使用するメリット を使用するメリット
mod_oprocmgrにより、JServの機能と管理がいくつかの点で拡張されます。
プロセス管理 プロセス管理 プロセス管理 プロセス管理
ApJServManualディレクティブのモードがoffの場合、自動的に起動して管理できるJServ
プロセスは1つのみです。2番目以降のJServプロセスは手動で起動、モニターおよび停止 する必要があります。
ApJServManualディレクティブのモードがautoの場合は、任意の数のJServプロセスを自
動的に起動できます。これらのプロセスの状態はmod_oprocmgrにより絶えずモニターさ れ、必要に応じて中断されて再起動されます。必要な場合は、JServプロセスを手動で起動 することもできます。
構成 構成 構成 構成
ApJServManualディレクティブのonまたはoffモードを使用して複数のJServプロセスを
構成する操作は複雑で、エラーが発生しやすくなります。たとえば、10個のプロセスのバラ ンス構成には、32個のディレクティブと10個のjserv.propertiesファイルが必要です。
新規のautoモードで複数のJServプロセスを構成する作業の方が簡潔です。たとえば、10 個のプロセスのバランス構成には、3つのディレクティブを使用するのみで済みます。
プロセス管理用の プロセス管理用の プロセス管理用の
プロセス管理用の mod_jserv の構成 の構成 の構成 の構成
すでにmod_jservの構成ディレクティブをよく理解している場合、mod_oprocmgrの構成プ
ロセスは簡単です。構成ファイルを次に示します。
httpd.conf の変更 の変更 の変更 の変更
mod_oprocmgr
Oracle HTTP Serverのモジュール 6-23 ProcNode my-sun.us.oracle.com 7777
<IfDefine SSL>
ProcNode my-sun.us.oracle.com 80 </IfDefine>
<Location /oprocmgr-service>
SetHandler oprocmgr-service </Location>
</IfModule>
また、1つ以上の非SSLポートを指定する必要があります。セキュアな(つまり、SSL接続 のみを受け入れる)Webサイトの場合は、追加の非SSLポートを提供する必要があります。
そのためには、次のディレクティブを追加します。ポートとアドレスは実際の値に置き換え てください。
Listen <port>
<VirtualHost _default_:port>
SSLEngine Off <Location />
order deny, allow deny from all
allow from <IP address 1 of local node>
allow from <IP address 2 of local node>
allow from <IP address 3 of local node>
</Location>
</VirtualHost>
LoadModuleセクションで、mod_oprocmgrがmod_ossoの後にロードされることを確認し
ます。「check usrid」ステージのmod_oprocmgrのコールバック・ファンクションは、
mod_ossoのコールバック・ファンクションの前に起動する必要があります。
jserv.properties の変更 の変更 の変更 の変更
JServがバインドされるポートを、次のファイル内で指定します。
$ORACLE_HOME/Apache/Jserv/etc/jserv.properties(UNIXの場合)
%ORACLE_HOME%¥Apache¥Jserv¥conf¥jserv.properties(Windowsの場合)
例を次に示します。
port=8007
ポートを指定しない場合、JServプロセスではそのプロセスのポートが自動的に選択されま
す。JServプロセスにポートを自動的に選択させる場合は、次のようにportディレクティブ
を設定します。このディレクティブ全体を省略すると、エラーが発生します。
port=
mod_oprocmgr
次の例のように、値をカンマで区切って複数のポートを指定できます。ポートの範囲
(9000-9010)が有効な値であることに注意してください。
port=8007,9000-9010,8010
jserv.conf の変更 の変更 の変更 の変更
mod_oprocmgrとmod_jservを使用するには、JServ構成ファイル内でディレクティブを次
のように変更する必要があります。このファイルは次の場所にあります。
$ORACLE_HOME/Apache/Jserv/etc/jserv.conf(UNIXの場合)
%ORACLE_HOME%¥Apache¥Jserv¥conf¥jserv.conf(Windowsの場合)
ApJServManual このディレクティブは、インフラストラクチャ機能を起動するモードautoを
受け入れます(このモードでは、mod_oprocmgrによってプロセスが管理されます)。構文 は、次のとおりです。
ApJServManual auto
モードをonまたはoffに設定して、標準のJServ機能も使用できます。
ApJServGroup このディレクティブでは、mod_jservを管理するプロセス管理のグループを
定義します。mod_jservを使用した場合、このディレクティブによってApJServBalance、
ApJServHost、ApJServRouteおよびApJServShmFileディレクティブが置き換えられます。
管理対象となるすべてのJServプロセスは1つのグループに属す必要があり、グループごと
に固有のApJServGroupディレクティブがあります。JServプロセスが1つしかない場合は、
そのプロセスのみを含むグループを定義する必要があります。グループ内の各プロセスの相 違点はリスニング・ポートのみであるため、そのグループにダイレクトされたリクエストは プロセス間で均等に分散されます。
ApJServGroupディレクティブは、グループ名、プロセス数、ノードの重みおよびプロパ
ティ・ファイルという4つの引数を取ります。次の例では、グループ名はmygroup、プロ セス数は1、ノードの重みは1で、JServプロセスの起動に使用されるプロパティ・ファイル のフルパスは次のとおりです。
$ORACLE_HOME/Apache/JServ/etc/jserv.properties
ApJServGroup mygroup 1 1 /private2/up_1022/Apache/Jserv/etc/jserv.properties
mod_oprocmgr
Oracle HTTP Serverのモジュール 6-25 ApJServGroupMount このディレクティブでは、マウント・ポイントを定義してプロセス・グ ループとゾーンにマップします。次の例では、マウント・ポイントは/servlets、グループは
mygroup、ゾーンはrootです。標準的なJServ構成の場合と同様に、ルーティングにはバラ
ンス・プロトコルが使用されていることに注意してください。
ApJServGroupMount /servlets balance://mygroup/root
このディレクティブを、構成ファイル内でApJServGroupディレクティブの後に置きます。
ApJServGroupSecretKey このディレクティブでは、JServでクライアントの認証に必要な秘密
鍵を指定します。このディレクティブは、次のようにすると無効化できます。
ApJServGroupSecretKey disabled
アクティブにすると、このディレクティブは1つまたは2つの引数を取ります。次の例で は、グループ引数とファイル名引数を指定しており、グループmygroupにファイル名
mysecretkeyが適用されます。
ApJServGroupSecretKey mygroup /usr/local/apache/jserv/mysecretkey
指定できるファイル名引数は、次のように1つのみです。グループが指定されていないた め、秘密鍵のファイル名はすべてのグループに適用されます。
ApJServGroupSecretKey /usr/local/apache/jserv/mysecretkey
引数が1つの構文を使用するディレクティブと、引数が2つの構文を使用するディレクティ ブは、併用できません。引数が2つの構文を使用する場合、固有の秘密鍵を持たないグルー プのデフォルトは「disabled」です。
このディレクティブを、構成ファイル内でApJServGroupディレクティブの後に置きます。
警告 警告 警告
警告: ApJServSecretKeyに指定する秘密鍵ファイル内の鍵値は、に指定する秘密鍵ファイル内の鍵値は、に指定する秘密鍵ファイル内の鍵値は、に指定する秘密鍵ファイル内の鍵値は、
jserv.propertiesファイル内のファイル内のファイル内のファイル内のsecurity.secretKeyディレクティブで指定しディレクティブで指定しディレクティブで指定しディレクティブで指定し たものと同じにする必要があります。鍵値が異なる場合、障害検出メカニ たものと同じにする必要があります。鍵値が異なる場合、障害検出メカニ たものと同じにする必要があります。鍵値が異なる場合、障害検出メカニ たものと同じにする必要があります。鍵値が異なる場合、障害検出メカニ ズムは、すべてのサーブレット・コンテナ・プロセスが障害を起こしたと ズムは、すべてのサーブレット・コンテナ・プロセスが障害を起こしたと ズムは、すべてのサーブレット・コンテナ・プロセスが障害を起こしたと ズムは、すべてのサーブレット・コンテナ・プロセスが障害を起こしたと 判断してそれらを排除し、新規プロセスを起動してすべてのプロセスを置 判断してそれらを排除し、新規プロセスを起動してすべてのプロセスを置 判断してそれらを排除し、新規プロセスを起動してすべてのプロセスを置 判断してそれらを排除し、新規プロセスを起動してすべてのプロセスを置 き換えます(このサイクルが無限に繰り返されます)。
き換えます(このサイクルが無限に繰り返されます)。 き換えます(このサイクルが無限に繰り返されます)。 き換えます(このサイクルが無限に繰り返されます)。