WebLogic Server における Web サーバ プラグインの使い方
|
|
以下の節では、Apache HTTP Server プラグインをインストールしてコンフィグレーションする方法を説明します。
Apache HTTP Server プラグインは、Apache HTTP サーバから WebLogic Server クラスタまたはインスタンスへリクエストをプロキシします。このプラグインは、WebLogic Server の動的な機能を必要とするロード バランシングやリクエストを WebLogic Server が処理できるようにすることによって Apache を拡張します。プラグインのコンフィグレーション ファイルで WebLogicHost および WebLogicPort パラメータを使用して、対象の WebLogic Server インスタンスを指定します。対象として WebLogic Server クラスタまたはクラスタ化されていないサーバのグループを指定するには、WebLogicCluster パラメータを使用します。プラグイン パラメータの設定の詳細については、「Web サーバ プラグインのパラメータ」を参照してください。
このプラグインは、Apache サーバが静的ページを提供している環境で使用されることを想定しています。ドキュメント ツリーの他の部分 (HTTP サーブレットや JavaServer Pages によって最も適切な状態で生成される動的ページ) は、別のプロセス (おそらく別のホスト) で動作している WebLogic Server に委託されます。それでも、エンド ユーザ (ブラウザ) では、WebLogic Server に委託される HTTP リクエストは同じソースから来ているものと認識されます。
HTTP トンネリング (企業のファイアウォールを経由した HTTP リクエストおよび応答のアクセスを提供する技術) はこのプラグインを通じて機能できます。「httpd.conf ファイルの編集」を参照してください。
Apache HTTP Server プラグインは、Apache HTTP サーバ内で Apache モジュールとして機能します。Apache モジュールは起動時に Apache サーバによってロードされ、特定の HTTP リクエストがそこに委託されます。Apache モジュールは、HTTP サーブレットと似ていますが、プラットフォームにネイティブなコードで記述されています。
Apache HTTP Server のバージョン 1.3.x では、以降のバージョンにはない WebLogic Server プラグインに影響の及ぶ制限事項があります。
Apache HTTP Server プラグインのバージョン 1.3.x は、リクエストごとにソケットを作成し、応答を読み込んでからソケットを閉じます。Apache HTTP サーバは多重処理されるため、WebLogic Server と Apache HTTP Server プラグインの間では接続プールとキープアライブ接続はサポートされていません。
Apache HTTP Server はマルチプロセス アーキテクチャであり、プラグインの状態は複数の子プロセス間で同期されません。次のような問題が発生する可能性があります。
DynamicServerList がすべてのプラグイン プロセスで最新の状態になっていないために、アクセスできない WebLogic Server インスタンスにプラグインがリクエストをディスパッチする場合があります。 DynamicServerList=ON は単一の Apache サーバ (httpd デーモン プロセス) では機能しますが、StartServers=5 のように複数のサーバの場合、すべての httpd インスタンスが WebLogic Server インスタンスへの接続を試行するまで、動的サーバ リストはすべての httpd インスタンスにわたって更新されません。それぞれが独立したプロセスであるためです。動的サーバ リストにこのような遅延があると、Apache httpd プロセスは、別の httpd プロセスが応答不能としてマークしたサーバにアクセスする可能性があります。そのような試行があった場合にのみ、サーバ リストはプロキシ内で更新されます。この動作を望まない場合は、解決策として DynamicServerList を OFF に設定できます。
このような矛盾を一時的に修正するには、Apache サーバを再起動するか HUP 信号 (kill -HUP) を送信して、すべてのプラグイン プロセスを更新します。
この問題を回避するには、Apache 2.0.x にアップグレードし、マルチスレッドおよびシングルプロセス モデルの mpm_worker_module を使用するように Apache をコンフィグレーションします。このモジュールの httpd.conf コンフィグレーションの例は次のとおりです。
<IfModule worker.c>
StartServers 1
MaxClients 75
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
ServerLimit 3
</IfModule>
このモジュールの詳細については、「Apache MPM worker」を参照してください。
Apache HTTP Server プラグインのバージョン 2.0 は、WebLogic Server との接続の再利用可能なプールを使用してパフォーマンスを向上させます。このプラグインは、同じクライアントからの後続リクエストにプール内の同じ接続を再利用することで、WebLogic Server との間で HTTP 1.1 キープアライブ接続を実装します。接続が 30 秒 (またはユーザ定義の時間) を超えて非アクティブな場合、その接続は閉じて、プールに返されます。この機能は、必要に応じて無効にできます。
Apache HTTP Server プラグインは、Linux、Solaris、AIX、Windows、および HPUX11 の各プラットフォームでサポートされています。プラグインはすべてのリリースのすべてのオペレーティング システムでサポートされているわけではありません。Apache の特定のバージョンのプラットフォーム サポートについては、『WebLogic Server 8.1の サポート対象のコンフィグレーション』の「サポート対象の Web サーバ、ブラウザ、およびファイアウォール」を参照してください。
Apache HTTP Server プラグインは、Apache HTTP サーバで Apache モジュールとしてインストールします。モジュールは、静的リンク モジュール (Apache バージョン 1.3.x の場合のみ) または動的共有オブジェクト (DSO) としてコンパイルし、Apache にリンクできます。
使用するモジュールのタイプを選択するときは以下の点を考慮してください。
Apache プラグインは、Solaris、Linux、Windows、AIX、および HPUX11 プラットフォーム用の共有オブジェクト (.so) として配布されます。WebLogic では、プラットフォーム、クライアントと Apache の間での SSL の使用と不使用、および SSL 暗号化の強度 (128 ビット バージョンは、128 ビット バージョンの WebLogic Server をインストールする場合にのみインストールされる) に応じて、さまざまなバージョンの共有オブジェクト ファイルが提供されます。
表 2-1 に、さまざまなプラットフォームの共有オブジェクト ファイルを格納している WebLogic Server インストールのディレクトリを示します (WL_HOME は WebLogic Platform の最上位のインストール ディレクトリです)。
表 2-2 は、各バージョンの Apache HTTP サーバと暗号化強度に対応する WebLogic Server Apache プラグイン モジュールを示します。
|
|
|
|
|
次の表を基準に適切なバージョンのプラグイン共有オブジェクトを選択してください。
Apache HTTP Server プラグインを動的共有オブジェクトとしてインストールするには、次の操作を行います。
Apache HTTP Server プラグインは、Apache 動的共有オブジェクト (DSO) として Apache HTTP サーバにインストールされます。Apache の DSO サポートは、mod_wl.so のロード前に有効にする必要のある mod_so.c というモジュールに基づいています。 Apache で提供されるスクリプトを使用して Apache HTTP サーバをインストールした場合、mod_so.c はすでに有効になっているはずです。以下のコマンドを実行して、mod_so.c が有効であることを確認します。
APACHE_HOME\bin\apache -l
APACHE_HOME は、Apache HTTP サーバをインストールしたディレクトリです。
このコマンドでは、有効なすべてのモジュールのリストが表示されます。mod_so.c がリストにない場合は、次のオプションがコンフィグレーションされるように、Apache HTTP サーバを再構築する必要があります。
...
--enable-module=so
--enable-rule=SHARED_CORE
...
http://httpd.apache.org/docs/dso.html の「Apache 1.3 Dynamic Shared Object (DSO) Support」を参照してください。
weblogic_module をアクティブにします。Perl がインストールされていないと、この Perl スクリプトは実行できません。perlAPACHE_HOME\bin\apxs -i -a -n weblogic mod_wl.so
このコマンドでは、mod_wl.so ファイルが APACHE_HOME\libexec ディレクトリにコピーされます。さらに、httpd.conf ファイルに weblogic_module に関する指示が 2 行追加され、このモジュールがアクティブ化されます。Apache 1.x サーバの APACHE_HOME/conf/httpd.conf ファイルに以下の行が追加されていることを確認してください。
LoadModule weblogic_module libexec/mod_wl.so
AddModule mod_weblogic.c
Apache ユーティリティの apxs (APache eXtenSion) の詳細については、「http://httpd.apache.org/docs/programs/apxs.html」を参照してください。
mod_wl_20.so ファイルを APACHE_HOME\modules ディレクトリにコピーし、APACHE_HOME/conf/httpd.conf ファイルに次の行を手作業で追加します。LoadModule weblogic_module modules/mod_wl_20.so
httpd.conf で Apache HTTP Server プラグインの追加パラメータを定義します。Apache HTTP Server プラグインは、「Web サーバ プラグインの一般的なパラメータ」にリストされているパラメータを認識します。
/weblogic/」を設定してプラグインをテストします。この設定では、WebLogic Server でデフォルト Web アプリケーションとして定義されている、デフォルトの WebLogic Server HTML ページ、ウェルカム ファイル、またはデフォルト サーブレットが開くはずです。次に例を示します。 http://myApacheserver.com/weblogic/
Apache HTTP Server プラグインを静的リンク モジュールとしてインストールするには、次の操作を行います。
tar -xvf apache_1.3.x.tar
各ライブラリ ファイルは、プラットフォームおよび SSL 暗号化の強度 (128 ビット バージョンは、128 ビット バージョンの WebLogic Server をインストールする場合のみインストールされる) に応じて別々のバージョンとして配布されます。ライブラリ ファイルは、WebLogic Server の以下のディレクトリに配置されています。
|
|
次の表を基準として適切な共有オブジェクトを選択してください。
libweblogic.a (128 ビットのセキュリティを使用する場合は libweblogic128.a) をリンク ライブラリ ファイルの格納されている同じディレクトリから src\modules\weblogic にコピーします。configure --activate-module=src\modules\weblogic\libweblogic.a
128 ビットの暗号化を使用する場合は、Apache 1.3 のホーム ディレクトリから次のコマンドを (1 行で) 実行します。
configure--activate-module=
src\modules\weblogic\libweblogic128.a
make
make install
Apache HTTP サーバにプラグインをインストールしたら、WebLogic Server Apache プラグインのコンフィグレーションと、プラグインを使用するための Apache サーバのコンフィグレーションを行います。この節では、Apache の httpd.conf ファイルを編集して、プラグイン用の WebLogic Server ライブラリを Apache モジュールとしてロードするように Apache サーバに通知し、そのモジュールによって処理するアプリケーション リクエストを指定する方法を説明します。
Apache HTTP サーバの httpd.conf ファイルを編集し、Apache HTTP Server プラグインをコンフィグレーションします。
この節では、httpd.conf ファイルを編集して、WebLogic Server Apache プラグインを使用し、パスまたは MIME タイプに基づいてリクエストをプロキシし、HTTP トンネリングを有効にし、その他の WebLogic Server プラグインのパラメータを使用するように Apache サーバをコンフィグレーションする方法について説明します。
このファイルは、APACHE_HOME\conf\httpd.conf にあります (APACHE_HOME は Apache HTTP サーバのルート ディレクトリ)。「Apache HTTP Server httpd.conf ファイルのテンプレート」のサンプルの httpd.conf ファイルを参照してください。
apxs ユーティリティを実行したときに、以下の 2 行が httpd.conf ファイルに追加されていることを確認します。または、手動で追加します。LoadModule weblogic_module libexec\mod_wl.so
AddModule mod_weblogic.c
httpd.conf ファイルに手作業で追加します。LoadModule weblogic_module modules\mod_wl_20.so
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 サーバ プラグインの一般的なパラメータ」を参照)。
<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 プラグインの動作を修正するには、以下のいずれかでパラメータを定義します。
For Apache 1.x,APACHE_HOME\bin\apachect1 configtest
For Apache 2.0.x,APACHE_HOME\bin\Apache -t
/weblogic/」を設定してプラグインをテストします。この設定では、WebLogic Server でデフォルト Web アプリケーションとして定義されている、デフォルトの WebLogic Server HTML ページ、ウェルカム ファイル、またはデフォルト サーブレットが開くはずです。 次に例を示します。 http://myApacheserver.com/weblogic/
格納済みのさまざまなコンフィグレーションの間で素早く切り替えられるように、別々のコンフィグレーション ファイルを複数用意する場合は、weblogic.conf という独立したコンフィグレーション ファイルでパラメータを定義し、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 ディレクティブを介してアクセスされるので、ファイルでパラメータを定義することはできません。 したがって、SSL と weblogic.conf ファイルの両方を使用することはできません。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 agarwalp02:8005,agarwalp02: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
WLLogFilec:/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 1.3 の httpd.conf ファイルのサンプルを紹介します。このサンプルをテンプレートとして使用し、ユーザの環境およびサーバに合うように変更できます。# で始まる行はコメントです。
Apache HTTP サーバでは大文字と小文字は区別されません。
####################################################
APACHE-HOME/conf/httpd.conf file
####################################################
LoadModule weblogic_module libexec/mod_wl.so
AddModule mod_weblogic.c
<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 アプリケーションの web.xml デプロイメント記述子ファイルで clientCertProxy を True に設定します。クラスタを使用する場合は、必要に応じて、Administration Console でクラスタ全体の [クライアント証明書プロキシを有効化] 属性を true に設定します。このパラメータは、ロード バランサや SSL アクセラレータなどのサード パーティ製のプロキシ サーバで、双方向 SSL 認証を有効にする場合にも使用できます。clientCertProxy 属性の詳細については、『WebLogic Server Web アプリケーションの開発』の「context-param」を参照してください。
clientCertProxy を設定したら、接続フィルタを使用して、Apache プラグインが動作しているマシンからの接続のみを WebLogic Server が受け入れるようにします。『WebLogic Security プログラマーズ ガイド』の「ネットワーク接続フィルタの使い方」を参照してください。 詳細については、『WebLogic Security サービスの開発』の「ID アサーション プロバイダ」を参照してください。
セキュア ソケット レイヤ (SSL) プロトコルを使用すると、Apache HTTP Server プラグインと WebLogic Server の間で接続を保護できます。SSL プロトコルは、Apache HTTP Server プラグインと WebLogic Server の間でやり取りされるデータに機密性と整合性をもたらします。weblogic.conf ファイルを使用する場合は、SSL を使用できません (「httpd.conf ファイルへの weblogic.conf ファイルのインクルード」を参照)。
Apache HTTP Server プラグインは、SSL プロトコルを使用して Apache HTTP Server プラグインと WebLogic Server の間の接続が保護されるかどうかを、(通常はブラウザによって) HTTP リクエストで指定される転送プロトコル (http または https) では判断しません。
HTTP クライアントと Apache HTTP サーバ間では相互 SSL を使用できますが、Apache HTTP サーバと WebLogic Server 間では一方向の SSL が使用されます。
注意 : Red Hat Apache 2.0.x で <Location> タグを使用するとコア ダンプが発生します。 パスまたは MIME タイプに基づいてリクエストをプロキシする場合は、<Location> タグではなく MATCH 式を使用してください。
Apache HTTP Server プラグインと WebLogic Server の間で SSL プロトコルを使用するには、次の手順を行います。
httpd.conf ファイルの WebLogicPort パラメータを、手順 2 でコンフィグレーションした WebLogic Server の SSL リスン ポートに設定します。httpd.conf ファイルで設定します。プラグインに関してコンフィグレーション可能な SSL パラメータのリストについては、「Web サーバ プラグインの SSL パラメータ」を参照してください。以下に、SSL を使用するように Apache プラグインをコンフィグレーションする場合に発生する可能性のある確認済みの問題を示します。
* 詳細を確認し、「Base 64 X509」オプションを使用するファイルにこの証明書を
* ファイルを保存します。ファイル名は、たとえば「MyWeblogicCAToTrust.cer」のようにします (これ
<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>
modssl、および Apache を再ビルドしてください。./Configure solaris-sparcv8-gcc -fexceptions
--prefix=/home/egross/solaris/ssl shared
make
make install
modssl および Apache をビルドする場合cd ..
cd mod_ssl-2.8.12-1.3.27
export LD_LIBRARY_PATH=/home/egross/solaris/ssl/lib
./configure "--with-apache=../apache_1.3.27"
"--with-ssl=/home/egross/solaris/ssl" "--prefix=/usr/local/apache_so"
"--enable-rule=SHARED_CORE" "--enable-shared=ssl" "--enable-module=so" "$@"
cd ../apache_1.3.27
make
make install
WebLogic Server に接続するときに、Apache HTTP Server プラグインは複数のコンフィグレーション パラメータを使用して WebLogic Server ホストへの接続の待ち時間と、接続確立後の応答の待ち時間を判断します。接続できないか、応答がない場合、このプラグインはクラスタ内の別の WebLogic Server インスタンスに接続してリクエストを送信しようとします。接続が失敗するか、クラスタ内のどの WebLogic Server からも応答がない場合は、エラー メッセージが送信されます。
図 2-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 を設定できます。設定しない場合、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 にはセッションが最初に確立された特定のサーバ インスタンス (プライマリ サーバ) への参照と元のセッションがレプリケートされる追加サーバ (セカンダリ サーバ) への参照が含まれています。クッキーが含まれているリクエストは、プライマリ サーバに接続しようとします。その試行が失敗すると、リクエストはセカンダリ サーバに転送されます。プライマリ サーバとセカンダリ サーバが両方とも失敗すると、セッションが失われて、プラグインは動的クラスタ リストの別のサーバにあらためて接続しようとします。 「図 2-1 接続のフェイルオーバ」を参照してください。
注意 : POST データが 64K を超える場合、プラグインは、セッション ID を取得するための POST データの解析を行いません。したがって、セッション ID を POST データに格納した場合、プラグインはリクエストを正しいプライマリまたはセカンダリ サーバにルーティングできないので、セッション データが失われる可能性があります。
プラグインによって送出される HTTP エラー コードは、状況に応じて異なります。以下の状況では、HTTP エラー コード 500 が返されます。
httpd.conf ファイルに WebLogicCluster または WebLogicPort が指定されていない。httpd.conf ファイルに指定されている WebLogicHost パラメータを解決できない。httpd.conf ファイルの WebLogicPort で指定されているポート番号が 65535 を超えている。PathTrim プロパティの適用時にリクエストの解析に失敗した。POST データの読み込みでエラーが発生した。POST データの書き込みが失敗した。POST データの読み込みでエラーが発生した。POST がタイムアウトした。trustedCAFile パラメータなしで指定された。
|
|
|