![]() ![]() ![]() ![]() |
以下の節では、Apache HTTP Server プラグインをインストールしてコンフィグレーションする方法を説明します。
Apache HTTP Server プラグインを使用すると、Apache HTTP サーバから WebLogic Server にリクエストをプロキシできます。このプラグインは、WebLogic Server の動的な機能を必要とするリクエストを WebLogic Server が処理できるようにすることによって Apache を拡張します。
このプラグインは、Apache サーバが静的ページを提供している環境で使用されることを想定しています。ドキュメント ツリーの他の部分 (HTTP サーブレットや JavaServer Pages によって最も適切な状態で生成される動的ページ) は、別のプロセス (おそらく別のホスト) で動作している WebLogic Server に委託されます。それでも、エンド ユーザ (ブラウザ) では、WebLogic Server に委託される HTTP リクエストは同じソースから来ているものと認識されます。
HTTP トンネリング (企業のファイアウォールを経由した HTTP リクエストおよび応答のアクセスを可能にする技術) もこのプラグインを介して動作するため、非ブラウザ クライアントに WebLogic Server サービスへのアクセスを提供できます。
Apache HTTP Server プラグインは、Apache HTTP サーバ内で Apache モジュールとして機能します。Apache モジュールは起動時に Apache サーバによってロードされ、特定の HTTP リクエストがそこに委託されます。Apache モジュールは、HTTP サーブレットと似ていますが、プラットフォームにネイティブなコードで記述されています。
Apache HTTP Server プラグインがサポートされるコンフィグレーションについては、(http://www.oracle.com/technology/software/products/ias/files/fusion_certification.html
) を参照してください。
注意 : | Apache 2.0 プラグインは、WebLogic Server 10.0 のリリースで非推奨になりました。 |
Apache HTTP Server プラグインのバージョン 2.0 は、WebLogic Server との接続の再利用可能なプールを使用してパフォーマンスを向上させます。このプラグインは、同じクライアントからの後続リクエストにプール内の同じ接続を再利用することで、WebLogic Server との間で HTTP 1.1 キープアライブ接続を実装します。接続が 30 秒 (またはユーザ定義の時間) を超えて非アクティブな場合、その接続は閉じて、プールに返されます。この機能は、必要に応じて無効にできます。詳細については、「KeepAliveEnabled」を参照してください。
プラグインは指定されたコンフィグレーションに基づいてリクエストを WebLogic Server にプロキシします。リクエストは、リクエストの URL (または URL の一部) に基づいてプロキシできます。この方法は、パスに基づくプロキシです。要求されたファイルの MIME タイプに基づいてリクエストをプロキシすることもできます。また、これらの 2 つの方法を組み合わせて使用することも可能です。リクエストが両方の基準に一致する場合、そのリクエストはパスに基づいてプロキシされます。リクエストの種類ごとに、プラグインの補足的な動作を定義する追加パラメータを指定することもできます。詳細については、「Apache HTTP Server プラグインのコンフィグレーション」を参照してください。
このドキュメントでは Apache 2.0 について言及していますが、同じ手順を適用し、表 3-2 に示すライブラリで Apache 2.2 を使用することができます。
Apache HTTP Server プラグインは、AIX、Linux、Solaris、Windows、および HPUX11 の各プラットフォームでサポートされています。Apache の特定のバージョンのサポートについては、(http://www.oracle.com/technology/software/products/ias/files/fusion_certification.html
) を参照してください。
Apache HTTP Server プラグインは、インストールされている Apache HTTP Server の Apache モジュールとしてインストールし、動的共有オブジェクト (DSO) としてリンクできます。
DSO は、実行時にサーバに動的にロードされるライブラリとしてコンパイルされるので、Apache を再コンパイルしなくてもインストールできます。
Apache プラグインは、Solaris、Linux、AIX、Windows、および HPUX11 プラットフォーム用の共有オブジェクト (.so
) として配布されます。WLS 10.3 のインストールには、Apache HTTP Server プラグインは含まれていません。Apache HTTP Server プラグインは別の zip ファイルで提供されており、このファイルは Oracle のダウンロード サイトおよびサポート サイトから入手可能です。このプラグインには、以下のセキュリティ アドバイザリで説明されている問題の修正も含まれています。
http://www.oracle.com/technology/deploy/security/alerts/alert_cve2008-3257.html
zip ファイルをダウンロードしたら、ディスク上の任意のディレクトリに解凍します。
表 3-1 に、指定したディレクトリに zip ファイルを解凍すると作成されるディレクトリを示します。これらのディレクトリには、さまざまなプラットフォームに対応する共有オブジェクトが含まれています。
表 3-2 には、各バージョンの Apache HTTP サーバと暗号化強度に対応する WebLogic Server Apache プラグイン モジュールを示します。
solaris/sparc/largefile1
|
|||
export EXTRA_LDFLAGS="-lstd -lstream -lCsup -lm -lcl -ldld -lpthread" |
次の表から適切なバージョンのプラグイン共有オブジェクトを選択します。
Apache HTTP Server プラグインを動的共有オブジェクトとしてインストールするには、次の操作を行います。
注意 : | ディレクトリの選択を行う前に、「Apache 2.0 におけるサイズの大きなファイルのサポート」を参照してください。 |
mod_so.c
モジュールが有効になっていることを確認します。
Apache HTTP Server プラグインは、動的共有オブジェクト (DSO) として Apache HTTP サーバにインストールされます。Apache の DSO サポートは、mod_wl_20.so のロード前に有効にする必要のある mod_so.c
というモジュールに基づいています。Apache で提供されるスクリプトを使用して Apache HTTP サーバをインストールした場合、mod_so.c
はすでに有効になっているはずです。以下のコマンドを実行して、mod_so.c
が有効であることを確認します。
APACHE_HOME
\bin\apachectl -l
APACHE_HOME
は、Apache HTTP サーバをインストールしたディレクトリです。
このコマンドでは、有効なすべてのモジュールのリストが表示されます。mod_so.c
がリストにない場合は、次のオプションがコンフィグレーションされるように、Apache HTTP サーバを再構築する必要があります。
...
--enable-module=so
--enable-rule=SHARED_CORE
...
Apache 2.0 の「動的共有オブジェクト (DSO) サポート」(http://httpd.apache.org/docs/2.0/dso.html
) を参照してください。
mod_wl_20.so
ファイルを APACHE_HOME
\modules
ディレクトリにコピーし、APACHE_HOME
/conf/httpd.conf ファイルに次の行を手作業で追加します。LoadModule weblogic_module modules/mod_wl_20.so
Apache HTTP Server プラグインは、「Web サーバ プラグインの一般的なパラメータ」にリストされているパラメータを認識します。Apache HTTP Server プラグインの動作を修正するには、以下のパラメータを定義します。
APACHE_HOME
\conf\httpd.conf ファイルの構文を検証します。 APACHE_HOME\bin\apachectl -t
このコマンドの出力では、httpd.conf
ファイルのエラーが示されるか、次のメッセージが返されます。
Syntax OK
/weblogic/
」を設定してプラグインをテストします。この設定では、WebLogic Server でデフォルト Web アプリケーションとして定義されている、デフォルトの WebLogic Server HTML ページ、ウェルカム ファイル、またはデフォルト サーブレットが開くはずです。次に例を示します。 http://myApacheserver.com/weblogic/
オペレーティング システムによっては (Solaris や Linux の一部のバージョンなど)、付属の Apache 2.0 が以下のフラグを指定してコンパイルされている場合があります。
-D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64
これらのコンパイル フラグにより、2GB 以上のファイルのサポートが可能になります。このような Apache 2.0 Web サーバ上で WebLogic Web サーバ プラグインを使用する場合は、同じコンパイル フラグを指定してコンパイルしたプラグインを使用する必要があります。こうしたプラグインは、使用しているオペレーティング システムの largefile
サブディレクトリにあります。例えば、以下の場所にあります。
C:\bea\wlserver_10.3\server\plugin\solaris\sparc\largefile
注意 : | Apache 2.2 では、2GB 以上のサイズのファイルをサポートするのに特別なコンパイル フラグは必要ありません。したがって、Apache 2.2 を実行している場合は、特別にコンパイルされた Web サーバ プラグインを使う必要はありません。 |
Apache HTTP サーバにプラグインをインストールしたら、WebLogic Server Apache プラグインのコンフィグレーションと、プラグインを使用するためのサーバのコンフィグレーションを行います。この節では、Apache の httpd.conf
ファイルを編集して、プラグイン用の WebLogic Server ライブラリを Apache モジュールとしてロードするように Apache サーバに通知し、そのモジュールで処理するアプリケーション リクエストを指定する方法を説明します。
Apache HTTP サーバの httpd.conf
ファイルを編集し、Apache HTTP Server プラグインをコンフィグレーションします。
この節では、httpd.conf
ファイルを編集して、WebLogic Server Apache プラグインを使用し、パスまたは MIME タイプに基づいてリクエストをプロキシし、HTTP トンネリングを有効にし、その他の WebLogic Server プラグインのパラメータを使用するようにサーバをコンフィグレーションする方法について説明します。
httpd.conf
ファイルを開きます。
このファイルは、APACHE_HOME
\conf\httpd.conf
にあります (APACHE_HOME
は Apache HTTP サーバのルート ディレクトリ)。「境界認証の設定」のサンプルの httpd.conf
ファイルを参照してください。
httpd.conf
ファイルに次の行を手作業で追加します。LoadModule weblogic_module modules\mod_wl_20.so
IfModule
ブロックを追加します。
クラスタ化されていない WebLogic Server の場合
WebLogicHost および WebLogicPort パラメータ
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
</IfModule>
MatchExpression
行を IfModule
ブロックに追加します。プロキシする基準として MIME タイプとパスの両方を指定した場合、パスを基準としたプロキシが MIME タイプに優先します。
たとえば、クラスタ化されていない WebLogic Server に対する次の IfModule
ブロックでは、MIME タイプが .jsp
であるすべてのファイルがプロキシされます。
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
MatchExpression *.jsp
</IfModule>
次のように、複数の MatchExpressions
を使用することもできます。
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001MatchExpression *.jsp
MatchExpression *.xyz
</IfModule>
MIME タイプを基準に WebLogic Server のクラスタにリクエストをプロキシする場合は、WebLogicHost
および WebLogicPort
パラメータの代わりに WebLogicCluster
パラメータを使用します。次に例を示します。
<IfModule mod_weblogic.c>
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001MatchExpression *.jsp
MatchExpression *.xyz
</IfModule>
Location
ブロックおよび SetHandler
文を使用します。SetHandler
は、Apache HTTP Server プラグイン モジュールのハンドラを指定します。たとえば、次の Location ブロックでは、URL に /weblogic
の含まれるすべてのリクエストがプロキシされます。<Location /weblogic>
SetHandler weblogic-handler
PathTrim /weblogic
</Location>
PathTrim パラメータには、WebLogic Server インスタンスにリクエストを渡す前に URL の先頭から切り取る文字列を指定します (「Web サーバ プラグインの一般的なパラメータ」を参照)。
weblogic.jar
を使用する場合に HTTP トンネリングを有効にするには、次の Location ブロックを httpd.conf
ファイルに追加します。<Location /HTTPClnt>
SetHandler weblogic-handler
</Location>
wlclient.jar
で使用される唯一のプロトコル) を使用する場合に HTTP トンネリングを有効にするには、次の Location ブロックを httpd.conf
ファイルに追加します。<Location /iiop>
SetHandler weblogic-handler
</Location>
Apache HTTP Server プラグインは、「Web サーバ プラグインの一般的なパラメータ」にリストされているパラメータを認識します。Apache HTTP Server プラグインの動作を修正するには、以下のいずれかでパラメータを定義します。
別個のコンフィグレーション ファイルを複数用意する場合は、httpd.conf
ファイルの IfModule
ブロックの Apache Include ディレクティブを使用して、weblogic.conf
という独立したコンフィグレーション ファイルでパラメータを定義できます。
<IfModule mod_weblogic.c>
# パラメータを定義する WebLogic Server 用コンフィグレーション ファイル
Include conf/weblogic.conf
</IfModule>
weblogic.conf
ファイルの構文は、httpd.conf
ファイルの構文と同じです。
この節では、weblogic.conf
ファイルの作成方法を説明し、サンプルの weblogic.conf
ファイルをインクルードします。
weblogic.conf
ファイルを作成する際には、以下の点に注意します。
weblogic.conf
ファイルは Apache Include
ディレクティブを介してアクセスされるため、ファイルでパラメータを定義することはできない。 PARAM_1 value1
PARAM_2 value2
PARAM_3 value3
IfModule
ブロックの MatchExpression
で指定された MIME タイプと Location
ブロックで指定されたパスの両方にリクエストが一致する場合は、Location
ブロックで指定された動作が優先する。CookieName
パラメータは、IfModule
ブロックで定義する必要がある。 <VirtualHost>
ブロックを使用する場合は、各仮想ホストのすべてのコンフィグレーション パラメータ (MatchExpression
など) をその <VirtualHost>
ブロックに配置する必要がある (「Apache バーチャルホスト説明書」を参照)。<IfModule mod_weblogic.c>
WebLogicCluster johndoe02:8005,johndoe:8006
Debug ON
WLLogFile c:/tmp/global_proxy.log
WLTempDir "c:/myTemp"
DebugConfigInfo On
KeepAliveEnabled ON
KeepAliveSecs 15
</IfModule>
<Location /jurl>
SetHandler weblogic-handler
WebLogicCluster agarwalp01:7001
</Location>
<Location /web>
SetHandler weblogic-handler
PathTrim /web
Debug OFF
WLLogFile c:/tmp/web_log.log
</Location>
<Location /foo>
SetHandler weblogic-handler
PathTrim /foo
Debug ERR
WLLogFile c:/tmp/foo_proxy.log
</Location>
<files>
ブロックではなく MatchExpression
文を使用することを推奨。
次の weblogic.conf
ファイルの例をテンプレートとして使用して、ユーザの環境およびサーバに合うように変更できます。# で始まる行はコメントです。
# このパラメータは、現在のモジュールに転送される
# すべての URL で共通。URL ごとにパラメータを
# オーバーライドする場合は、<Location> ブロック
# または <Files> ブロックで設定できる (WebLogicHost、
# WebLogicPort、WebLogicCluster、CookieName は除く)
<IfModule mod_weblogic.c>
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
ErrorPage http://myerrorpage.mydomain.com
MatchExpression *.jsp
</IfModule>
####################################################
この例で、ファイル名のパターン、HTTP リクエストの転送先となる WebLogic Server ホスト、およびその他のパラメータを表す MatchExpression
パラメータの構文は次のとおりです。
MatchExpression [filename pattern] [WebLogicHost=host] | [paramName=value]
最初の MatchExpression
パラメータではファイル名パターン *.jsp
を指定してから、1 つの WebLogicHost
名を指定しています。パイプ記号に続いて、paramName=value
の組み合わせで WebLogic Server が接続リクエストをリスンするポートを指定し、さらに Debug オプションを有効にするよう指定しています。2 番目の MatchExpression
では、ファイル名パターン *.http
と、WebLogicCluster
ホストおよびそのポートを指定しています。パイプ記号に続いて、paramName=value
の組み合わせでは、クラスタのエラー ページを指定しています。
# このパラメータは、現在のモジュールに転送される
# すべての URL で共通。URL ごとにパラメータを
# オーバーライドする場合は、<Location> ブロック
# または <Files> ブロックで設定できる (WebLogicHost、
# WebLogicPort、WebLogicCluster、CookieName は除く)
<IfModule mod_weblogic.c>
MatchExpression *.jsp WebLogicHost=myHost|WebLogicPort=7001|Debug=ON
MatchExpression *.html WebLogicCluster=myHost1:7282,myHost2:7283|ErrorPage=
http://www.xyz.com/error.html
</IfModule>
# このパラメータは、現在のモジュールに転送される
# すべての URL で共通。URL ごとにパラメータを
# オーバーライドする場合は、<Location> ブロック
# または <Files> ブロックで設定できる (WebLogicHost、
# WebLogicPort、WebLogicCluster、CookieName は除く)
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
MatchExpression *.jsp
</IfModule>
# VirtualHost1 = localhost:80
<VirtualHost 127.0.0.1:80>
DocumentRoot "C:/test/VirtualHost1"
ServerName localhost:80 <IfModule mod_weblogic.c>
#... WLS パラメータ ...
WebLogicCluster localhost:7101,localhost:7201
# 例 : MatchExpression *.jsp <追加のパラメータ>
MatchExpression *.jsp PathPrepend=/test2
</IfModule>
</VirtualHost>
# VirtualHost2 = 127.0.0.2:80
<VirtualHost 127.0.0.2:80>
DocumentRoot "C:/test/VirtualHost1"
ServerName 127.0.0.2:80
<IfModule mod_weblogic.c>
#... WLS パラメータ ...
WebLogicCluster localhost:7101,localhost:7201
# 例 : MatchExpression *.jsp <追加のパラメータ>
MatchExpression *.jsp PathPrepend=/test2
#... WLS パラメータ ...
</IfModule>
</VirtualHost> <IfModule mod_weblogic.c>
「ServerName」にはユニークな値を定義する必要があります。ユニークでない場合、一部のプラグイン パラメータが想定通りに機能しません。
この節では、Apache 2.0 の httpd.conf
ファイルのサンプルを紹介します。このサンプルをテンプレートとして使用し、ユーザの環境およびサーバに合うように変更できます。# で始まる行はコメントです。
Apache HTTP サーバでは大文字と小文字は区別されません。
####################################################
APACHE-HOME/conf/httpd.conf file
####################################################
LoadModule weblogic_module libexec/mod_wl_20.so
<Location /weblogic>
SetHandler weblogic-handler
PathTrim /weblogic
ErrorPage http://myerrorpage1.mydomain.com
</Location>
<Location /servletimages>
SetHandler weblogic-handler
PathTrim /something
ErrorPage http://myerrorpage1.mydomain.com
</Location>
<IfModule mod_weblogic.c>
MatchExpression *.jsp
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
ErrorPage http://myerrorpage.mydomain.com
</IfModule>
Apache プラグインを介してアクセスされる WebLogic Server アプリケーションを保護するには、境界認証を使用します。
WebLogic ID アサーション プロバイダは、WebLogic Server アプリケーションにアクセスする外部システム (Apache HTTP Server プラグインを介して WebLogic Server アプリケーションにアクセスするユーザを含む) のトークンを認証します。次のように、プラグインを保護する ID アサーション プロバイダを作成します。
web.xml
デプロイメント記述子ファイルで clientCertProxy
を True に設定します。クラスタを使用する場合、必要であれば、Administration Console の [クラスタ|コンフィグレーション|全般] タブで、クラスタ全体に対して [クライアント証明書プロキシを有効化
] 属性を true に設定します。clientCertProxy
属性は、サード パーティ製のプロキシ サーバ (ロード バランサ、SSL アクセラレータなど) で双方向の SSL 認証を有効にするために使用できます。clientCertProxy
属性の詳細については、『WebLogic Server Web アプリケーション、サーブレット、JSP の開発』「context-param」を参照してください。clientCertProxy
を設定したら、接続フィルタを使用して、Apache プラグインが動作しているマシンからの接続のみを WebLogic Server が受け入れるようにします。『WebLogic Security プログラマーズ ガイド』の「ネットワーク接続フィルタの使い方」を参照してください。
キーストアから別の信頼性のある CA ファイルを取得するには、エリアス名を変更します。
キーストアの信頼された CA ファイルをすべて表示するには、次のコマンドを使用します。
keytool -list -keystore DemoTrust.jks
詳細については、『WebLogic Server セキュリティ プロバイダの開発』の「ID アサーション プロバイダ」を参照してください。
セキュア ソケット レイヤ (SSL) プロトコルを使用すると、Apache HTTP Server プラグインと WebLogic Server の間で接続を保護できます。SSL プロトコルは、Apache HTTP Server プラグインと WebLogic Server の間でやり取りされるデータに機密性と整合性をもたらします。
Apache HTTP Server プラグインは、SSL プロトコルを使用して Apache HTTP Server プラグインと WebLogic Server の間の接続が保護されるかどうかを、(通常はブラウザによって) HTTP リクエストで指定される転送プロトコル (http
または https
) では判断しません。
HTTP クライアントと Apache HTTP サーバ間では相互 SSL を使用できますが、Apache HTTP サーバと WebLogic Server 間では一方向の SSL が使用されます。
Apache HTTP Server プラグインと WebLogic Server の間で SSL プロトコルを使用するには、次の手順を行います。
httpd.conf
ファイルの WebLogicPort
パラメータを、手順 2 でコンフィグレーションした WebLogic Server の SSL リスン ポートに設定します。httpd.conf
ファイルの SecureProxy
パラメータを ON
に設定します。httpd.conf
ファイルで設定します。プラグインに関してコンフィグレーション可能な SSL パラメータのリストについては、「Web サーバ プラグインの SSL パラメータ」を参照してください。
SSL を使用するように Apache プラグインをコンフィグレーションする際は、以下の確認済みの問題が発生します。
<Location>
タグの内部でコンフィグレーションする必要がある。 <Location /weblogic>
SetHandler weblogic-handler
</Location>
<IfModule mod_weblogic.c>
WebLogicHost localhost
WebLogicPort 7001
PathTrim /weblogic
</IfModule>
<Location /weblogic>
SetHandler weblogic-handler
PathTrim /weblogic
</Location>
Include
ディレクティブは Apache SSL では機能しない。パラメータはすべて httpd.conf
ファイルで直接コンフィグレーションする必要があります。SSL を使用する際には次のコンフィグレーションは使用しないでください。 <IfModule mod_weblogic.c>
MatchExpression *.jsp
Include weblogic.conf
</IfModule>
WebLogic Server に接続するときに、Apache HTTP Server プラグインは複数のコンフィグレーション パラメータを使用して WebLogic Server ホストへの接続の待ち時間と、接続確立後の応答の待ち時間を判断します。接続できないか、応答がない場合、このプラグインはクラスタ内の別の WebLogic Server インスタンスに接続してリクエストを送信しようとします。接続が失敗するか、クラスタ内のどの WebLogic Server からも応答がない場合は、エラー メッセージが送信されます。
図 3-1 は、プラグインがどのようにフェイルオーバを処理するのかを示しています。
WebLogic Server ホストが接続リクエストに応答しない場合、以下の問題が考えられます。
すべての WebLogic Server インスタンスが応答しない場合、以下の問題が考えられます。
大きな負荷がかかっていると、Apache プラグインはバックエンドの WebLogic Server インスタンスから CONNECTION_REFUSED エラーを受け取ることがあります。チューニングに関する以下のヒントを参考にすると、CONNECTION_REFUSED エラーを減らすことができます。
AcceptBackLog
設定を増やす。httpd.conf
ファイルの KeepAlive
ディレクティブを On に設定する。次に例を示します。 # KeepAlive: 永続的な接続 (接続ごとに複数の
# リクエスト) を許可するかどうか。無効にするには「Off」を指定する
#
KeepAlive On
http://httpd.apache.org/docs-project/ の Apache HTTP Server 2.0 ドキュメントを参照してください。
TcpTimedWaitDelay
をより小さな値に設定する。Windows NT で TIME_WAIT 間隔を設定するには、HKEY_LOCAL_MACHINE
の次のレジストリ キーを編集します。 SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpTimedWaitDelay
このキーが存在していない場合、DWORD 値として作成します。数字は待機する秒数で、値として 30 ~ 240 を設定できます。設定しない場合、Windows NT では、240 秒が TIME_WAIT
としてデフォルト設定されます。
HKEY_LOCAL_MACHINE
の次のレジストリ キーを編集して TcpTimedWaitDelay
の値を小さくする。 SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
tcp_time_wait_interval
設定を 1 秒に減らす。$ndd /dev/tcp
param name to set - tcp_time_wait_interval
value=1000
limit
(.csh
) または ulimit
(.sh
) ディレクティブを使用して、制限値を増やすスクリプトを作成できます。次に例を示します。#!/bin/sh
ulimit -S -n 100
exec httpd
WebLogic Server のインスタンスが 1 つだけ動作している場合、プラグインは WebLogicHost パラメータで定義されているサーバにのみ接続しようとします。その試行が失敗すると、HTTP 503
エラー メッセージが返されます。プラグインは、ConnectTimeoutSecs を超えるまでその同じ WebLogic Server インスタンスへの接続を試み続けます。
httpd.conf
または weblogic.conf
ファイルで WebLogicCluster
パラメータを使用して WebLogic Server のリストを指定すると、プラグインではクラスタ メンバー間でのロード バランシングの起点としてそのリストが使用されます。最初のリクエストがそれらのサーバの 1 つに転送された後に、クラスタ内のサーバの更新されたリストを格納する動的サーバ リストが返されます。更新されたリストではクラスタ内の新しいサーバが追加され、すでにクラスタから外れているか、リクエストに応答できなかったサーバが削除されます。このリストは、クラスタで変更が行われたときに HTTP 応答によって自動的に更新されます。
リクエストがクッキー、POST データ、または URL エンコーディングを通じてセッション情報を格納している場合、そのセッション ID にはセッションが最初に確立された特定のサーバ インスタンス (プライマリ サーバ) への参照と元のセッションがレプリケートされる追加サーバ (セカンダリ サーバ) への参照が含まれています。クッキーが含まれているリクエストは、プライマリ サーバに接続しようとします。その試行が失敗すると、リクエストはセカンダリ サーバに転送されます。プライマリ サーバとセカンダリ サーバが両方とも失敗すると、セッションが失われて、プラグインは動的クラスタ リストの別のサーバにあらためて接続しようとします。図 3-1 を参照してください。
注意 : | POST データが 64K を超える場合、プラグインは、セッション ID を取得するための POST データの解析を行いません。したがって、セッション ID を POST データに格納した場合、プラグインはリクエストを正しいプライマリまたはセカンダリ サーバにルーティングできないので、セッション データが失われるおそれがあります。 |
上図の赤で示すループ内での最大再試行回数は、ConnectTimeoutSecs/ConnectRetrySecs
で計算されます。
![]() ![]() ![]() |