3 Apache HTTP Server用Oracle WebLogic Serverプロキシ・プラグインの構成
Apache HTTP Server用Oracle WebLogic Serverプロキシ・プラグインを構成するには、この項に含まれる情報を読むことをお薦めします。
この項には次のトピックが含まれます:
- Oracle WebLogic Serverプロキシ・プラグインの構成
httpd.conf
ファイルを編集して、パスまたはMIMEタイプによってリクエストをプロキシし、HTTPトンネリングを有効にし、他のOracle WebLogic Serverプロキシ・プラグイン・パラメータを使用するようにします。 - Oracle WebLogic Serverプロキシ・プラグインのDMSメトリックの理解
Oracle WebLogic Serverプロキシ・プラグインのパフォーマンス・メトリックは、Oracle Dynamic Monitoring Service (DMS)を介して提供されます。たとえば、プロキシされたリクエストの数、失敗したリクエストの数およびその他の特定のメトリックをフェッチできます。 - 共通の構成タスク
Oracleが提供するプロキシ・プラグインを構成するために、すべてのWebサーバーに共通するタスクがあります。 - Apache HTTP Serverの非推奨ディレクティブ
WLLogFile
およびDebug
ディレクティブは非推奨です。構成でこれらのディレクティブが使用されている場合は、起動時に注意書きが表示されます。
Oracle WebLogic Serverプロキシ・プラグインの構成
httpd.conf
ファイルを編集して、パスまたはMIMEタイプによってリクエストをプロキシし、HTTPトンネリングを有効にし、他のOracle WebLogic Serverプロキシ・プラグイン・パラメータを使用するようにします。
この項には次のトピックが含まれます:
httpd.confファイルの構成
Oracle WebLogic Serverプロキシ・プラグインを構成するには、Apache HTTP Serverインストールでhttpd.conf
ファイルを編集します。次のタスクを実行します。
タスク1: MIMEリクエストの構成
リクエストは、MIMEタイプまたはパス、あるいはその両方によってプロキシできます。テキスト・エディタでhttpd.conf
ファイルを開き、次のステップを実行します:
ノート:
MIMEタイプおよびパスによるプロキシの両方を有効にした場合は、パスによるプロキシがMIMEタイプによるプロキシより優先されます。MIMEタイプによるプロキシ・リクエストの構成
httpd.conf
ファイルでMIMEタイプによるMIMEリクエストを構成するには、MatchExpression
行を<IfModule>
ブロックに追加します:
- クラスタ化されていないOracle WebLogic Serverの場合:
MatchExpression
ディレクティブを使用してWebLogicHost
およびWebLogicPort
パラメータを定義します。次の例では、クラスタ化されていないOracle WebLogic Serverでは、MIMEタイプ.jsp
のすべてのファイルがプロキシされることを指定します:<IfModule mod_weblogic.c> WebLogicHost my-weblogic.server.com WebLogicPort 7001 MatchExpression *.jsp </IfModule>
複数のMatchExpression
を使用することもできます。たとえば:<IfModule mod_weblogic.c> WebLogicHost my-weblogic.server.com WebLogicPort 7001 MatchExpression *.jsp MatchExpression *.xyz </IfModule>
- Oracle WebLogic Serverのクラスタの場合:
MatchExpression
ディレクティブを使用してWebLogicClusterパラメータを定義します。次の例では、クラスタ化されたOracle WebLogic Serverでは、MIMEタイプ.jsp
のすべてのファイルがプロキシされることを指定します:<IfModule mod_weblogic.c> WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001 MatchExpression *.jsp </IfModule>
「MatchExpression」を参照してください。
親トピック: タスク1: MIMEリクエストの構成
パスによるプロキシ・リクエストの構成
httpd.conf
ファイルでパスによるMIMEリクエストを構成するには、<Location>
タグ内にPathTrim
パラメータを構成します。PathTrim
パラメータは、リクエストがOracle WebLogic Serverインスタンスに渡される前にURLの先頭から切り捨てられる文字列を指定します。「PathTrim」を参照してください。
Location
ブロックは、URLに/weblogic
を含むすべてのリクエストをプロキシします:<Location /weblogic>
WLSRequest On
PathTrim /weblogic
</Location>
<Location>
ディレクティブは、囲まれたディレクティブの範囲をURLによって制限します。「Apache Location Directive」を参照してください。
親トピック: タスク1: MIMEリクエストの構成
タスク2: Oracle WebLogic Serverプロキシ・プラグインのその他パラメータの定義
Apache HTTP Server用のOracle WebLogic Serverプロキシ・プラグインの追加パラメータを定義します。
Apache HTTP Server用Oracle WebLogic Serverプロキシ・プラグインは、「Oracle WebLogic Serverプロキシ・プラグインの一般パラメータ」にリストされているパラメータを認識します。Apache HTTP Server用Oracle WebLogic Serverプロキシ・プラグインの動作を変更するには、次のどちらかでパラメータを定義します:
- パスによるプロキシに適用するパラメータの場合、
<Location>
ブロック - MIMEタイプによるプロキシに適用するパラメータの場合、グローバルまたは仮想ホスト・スコープ
親トピック: httpd.confファイルの構成
タスク3: HTTPトンネリングの有効化(省略可)
T3プロトコルのHTTPトンネリングを有効にするには、<Location>
ブロックを構成します。
T3プロトコルおよびweblogic.jar
を使用している場合にHTTPトンネリングを有効にするには、次の<Location>
ブロックをhttpd.conf
ファイルに追加します:
<Location /bea_wls_internal>
WLSRequest On
</Location>
親トピック: httpd.confファイルの構成
タスク4: Webサービスのアトミック・トランザクションの有効化(省略可)
<Location>
ブロックを構成することで有効にできます。<wls-wsat>パラメータが、パスによるプロキシに適用されます。オプションで、Apache HTTP Server用のOracle WebLogic Serverプロキシ・プラグインの動作を変更するパラメータを定義できます。
<Location /wls-wsat> WLSRequest On </Location>
WebLogic Webサービスは、IBM WebSphere、JBoss、Microsoft .NETなどの外部トランザクション処理システムとの相互運用性を実現します。Webサービスのアトミック・トランザクション(WS-AtomicTransaction)の詳細は、https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-txを参照してください。
親トピック: httpd.confファイルの構成
LocationブロックまたはVirtualHostブロック内へのWebLogicプロパティの配置
<IfModule>
を使用しないようにした場合は、かわりにWebLogicプロパティを直接Location
ブロック内または<VirtualHost>
ブロック内に配置できます。次に示す<Location>
ブロックと<VirtualHost>
ブロックの例を参考にしてください。
<Location /weblogic>
WLSRequest On
WebLogicHost myweblogic.server.com
WebLogicPort 7001
</Location>
<Location /weblogic>
WLSRequest On
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
</Location>
<VirtualHost apachehost:80>
WLSRequest On
WebLogicServer weblogic.server.com
WebLogicPort 7001
</VirtualHost>
例: Oracle WebLogic Serverプロキシ・プラグインの構成
この例では、バックエンドOracle WebLogic ServerにリクエストをプロキシするようにOracle WebLogic Serverプロキシ・プラグインをすばやく設定するための基本的な手順を示します。
weblogic.confファイルのhttpd.confファイルへのインクルード
複数の別個の構成ファイルを保持するには、httpd.conf
ファイルの<IfModule>
ブロックでApache HTTP ServerのInclude
ディレクティブを使用して、weblogic.conf
という別個の構成ファイルにパラメータを定義できます。
<IfModule mod_weblogic.c> # Config file for Oracle WebLogic Server that defines the parameters Include conf/weblogic.conf </IfModule>
weblogic.conf
ファイルの構文は、httpd.conf
ファイルの構文と同じです。
次の項では、weblogic.conf
ファイルの作成方法を説明し、weblogic.conf
ファイルのサンプルを示します:
weblogic.confファイルを作成するためのルール
weblogic.conf
ファイルの作成時には、次のルールとベスト・プラクティスに注意してください。
- パラメータをそれぞれ新しい行に入力します。パラメータとその値の間に
=
を挿入しないでください。たとえば:PARAM_1 value1 PARAM_2 value2 PARAM_3 value3
- リクエストが、
<IfModule>
ブロックのMatchExpression
で指定されたMIMEタイプとLocation
ブロックで指定されたパスの両方に一致する場合は、<Location>
ブロックで指定された動作が優先されます。 - Apache HTTPサーバーの
<VirtualHost>
ブロックを使用する場合は、<VirtualHost>
ブロック内に仮想ホストのすべての構成パラメータ(MatchExpression
など)を含める必要があります(http://httpd.apache.org/docs/vhosts/
のApache仮想ホストに関するドキュメントを参照)。 <Files>
ブロックではなくMatchExpression
文を使用する必要があります
weblogic.conf
ファイルのサンプルを次に示します:
<IfModule mod_weblogic.c>
WebLogicCluster johndoe02:8005,johndoe:8006
WLTempDir "/tmp"
DebugConfigInfo ON
KeepAliveEnabled ON
KeepAliveSecs 15
</IfModule>
/jurl/*
に一致するすべてのリクエストは、/tmp/jurl
にPOSTデータ・ファイルを持ち、リクエストをmyCluster
およびポート7001にリバース・プロキシします。<Location /jurl> WLSRequest On WebLogicCluster myCluster:7001 WLTempDir "/tmp/jurl" </Location>
/web/*
に一致するすべてのリクエストは、/tmp/web
にPOSTデータ・ファイルを持ち、リクエストをmyhostおよびポート8001にリバース・プロキシします。<Location /web> WLSRequest On PathTrim /web WebLogicHost myhost WebLogicPort 8001 WLTempDir "/tmp/web" </Location>
/foo/*
に一致するすべてのリクエストでは、POSTデータ・ファイルが/tmp/foo
に書き込まれ、リクエストがmyhost02
およびポート8090
にリバース・プロキシされます。<Location /foo> WLSRequest On WebLogicHost myhost02 WebLogicPort 8090 WLTempDir "/tmp/foo" PathTrim /foo </Location>
weblogic.conf構成ファイルのサンプル
次に示すweblogic.conf
ファイルの例は、環境およびサーバーに合せて変更できるテンプレートとして使用できます。#
で始まる行はコメントです。
例3-1 WebLogicクラスタの使用
# These parameters are common for all URLs which are
# directed to the current module. If you want to override
# these parameters for each URL, you can set them again in
# the <Location> or <Files> blocks.
<IfModule mod_weblogic.c>
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
ErrorPage http://myerrorpage.mydomain.com
MatchExpression *.jsp
</IfModule>
####################################################
この例で、ファイル名のパターン、HTTPリクエストの転送先となるOracle WebLogic Serverホストおよびその他の様々なパラメータを示すためのMatchExpression
パラメータ構文は、次のとおりです:
MatchExpression [filename pattern] [WebLogicHost=host] | [paramName=value]
次の例の最初のMatchExpressionパラメータでは、ファイル名のパターン*.jsp
を指定してから、1つのWebLogicHost
を指定します。パイプ記号の後に続くparamName=value
の組合せでは、Oracle WebLogic Serverで接続リクエストをリスニングするポートを指定し、デバッグ・オプションを有効にします。2行目のMatchExpression
では、ファイル名のパターン*.html
を指定し、WebLogicクラスタのホストおよびそれらのポートを特定します。パイプ記号の後に続くparamName=value
の組合せでは、クラスタのエラー・ページを指定しています。
例3-2 複数のWebLogicクラスタの使用
# These parameters are common for all URLs which are
# directed to the current module. If you want to override
# these parameters for each URL, you can set them again in
# the <Location> or <Files> blocks.
<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>
例3-3 WebLogicクラスタなし
# These parameters are common for all URLs which are
# directed to the current module. If you want to override
# these parameters for each URL, you can set them again in
# the <Location> or <Files> blocks.
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
MatchExpression *.jsp
</IfModule>
例3-4 複数の名前ベースの仮想ホストの構成
# VirtualHost1 = localhost:80
<VirtualHost 127.0.0.1:80>
DocumentRoot "/test/VirtualHost1"
ServerName localhost:80
<IfModule mod_weblogic.c>
#... WLS parameter ...
WebLogicCluster localhost:7101,localhost:7201
# Example: MatchExpression *.jsp <some additional parameter>
MatchExpression *.jsp PathPrepend=/test2
</IfModule>
</VirtualHost>
# VirtualHost2 = 127.0.0.2:80
<VirtualHost 127.0.0.2:80>
DocumentRoot "/test/VirtualHost1"
ServerName 127.0.0.2:80
<IfModule mod_weblogic.c>
#... WLS parameter ...
WebLogicCluster localhost:7101,localhost:7201
# Example: MatchExpression *.jsp <some additional parameter>
MatchExpression *.jsp PathPrepend=/test2
#... WLS parameter ...
</IfModule>
</VirtualHost>
ServerName
には一意の値を定義する必要があり、そうでない場合は、一部のプロキシ・プラグイン・パラメータが予想どおりに機能しません。
例3-5 HTTP/2プロトコルが構成されている場合
LoadModule weblogic_module modules/mod_wl_24.so
Listen 4455
<VirtualHost *:4455>
ServerName vh1.com
WLSSLWallet /scratch/user/temp/server
SecureProxy ON
WLProtocol http/2
<Location /myApp>
SetHandler weblogic-handler
WebLogicCluster ns1.example.com:7011,ns2.example.com:7011,ns3.example.com:7011
</Location>
<Location /myApp2>
WebLogicHost example.com
SetHandler weblogic-handler
WebLogicPort 7025
</Location>
</VirtualHost>
Apache HTTPサーバーのhttpd.confファイルのテンプレート
この項には、Apache HTTP Serverのhttpd.conf
ファイルのサンプルが記載されています。このサンプルをテンプレートとして使用し、ご使用の環境およびサーバーに合せて変更できます。#で始まる行はコメントです。
ノート:
Apache HTTPサーバーでは大文字と小文字が区別されません。
Apache HTTPサーバーのhttpd.confファイルのサンプル
#################################################### # APACHE-HOME/conf/httpd.conf file #################################################### LoadModule weblogic_module /home/myhome/weblogic-plugins-12.2.1/lib/mod_wl_24.so <Location /weblogic> WLSRequest On PathTrim /weblogic ErrorPage http://myerrorpage1.mydomain.com </Location> <Location /servletimages> WLSRequest On 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>
WebSocketプロキシ構成について
Apache HTTP Server 2.4.x用Oracle WebLogic Server 14.1.1.0.0プロキシ・プラグインは、WebSocket接続アップグレード・リクエストを処理し、Oracle WebLogic Server 14c (14.1.1.0.0)以降でホストされているWebSocketアプリケーションに効果的にプロキシできます。
- Apache HTTP Server内で
mod_reqtimeout
モジュールを使用する場合は、WebSocket接続を考慮し、構成されているclient timeout
値を適切に設定します。 mod_reqtimeout
モジュールのHTTPリクエストのデフォルト・タイムアウト値は、Apache HTTP Server 2.2と2.4の間で変更されました。この変更により、WebSocket接続が切断される場合があります。したがって、適切なclient timeout
値を使用する必要があります。- サービス拒否攻撃などの悪意のある攻撃を回避するには、WebSocket接続に適切な
client timeout
値を構成する必要があります。
ノート:
WebSocketはHTTP/2ではサポートされていません。ログ・ファイルの検証
weblogic
を使用して参照を簡単に識別できます:[weblogic:debug] [pid 6571:tid 139894556022528] ApacheProxy.cpp(875): [client 10.184.61.77:53634] <657114316705052> =========New Request: [GET /weblogic/index.html HTTP/1.1] ======
LogLevel
をdebugに設定します。ログは、Apache WebサーバーのErrorLog
ディレクティブが指すファイルに含まれています。config file name: httpd.conf
setting: LogLevel debug
また、wl_exportwallet_log
という名前の新しいログ・ファイルは、Webサーバーのログ・ファイルが存在するファイル・システム・パスに作成されます。Apache Webサーバー・プロセスの場合、このファイルは$SERVER_ROOT/logs/
にあります。
Webサーバー構成で使用されるOracleウォレットは、OpenSSL APIがOracleウォレットに存在するキーおよび証明書にアクセスできるように、ファイル・システム上のPEM形式のファイルにエクスポートする必要があります。これは、export_wallet
という個別のプロセスをメインWebサーバー・プロセスからフォークすることで行われます。export_wallet
プロセスは、Webサーバーのログではなく、wl_exportwallet_log
に書き込みます。
Oracle WebLogic Serverプロキシ・プラグインのDMSメトリックの理解
返されるDMSメトリックについては、「DMS状態メトリック」、「DMSイベント・メトリック」および「DMS PhaseEventメトリック」で説明しています。
この項には次のトピックが含まれます:
Oracle WebLogic Serverプロキシ・プラグインのDMSメトリックの構成
Oracle WebLogic Serverプロキシ・プラグインのDMSメトリックを構成するには、次のコードをhttpd.conf
ファイルに追加します:
# Add the following LoadModule only if it is not already present
# Use mod_wl_24.so for Apache 2.4
LoadModule weblogic_module $PLUGINS_HOME/mod_wl_24.so
<Location /metrics>
SetHandler dms-handler
</Location>
Oracle WebLogic Serverプロキシ・プラグインのパフォーマンス・メトリックの表示
次のURLを使用して名前のメトリックを表示できます:
http://
apachehost:apacheport
/metrics
ここで、apachehost
は、Apacheサーバーのホスト名、apacheport
はポート番号です。
Oracle WebLogic Serverプロキシ・プラグインから得られるメトリックは、/WebLogicProxy [type=WebLogicProxy]
セクションにあります。
DMS状態メトリック
状態メトリックは、システムのステータス情報や、イベントに関連付けられていないメトリックを追跡します。状態メトリックの詳細は、表3-1を参照してください。
表3-1 Oracle WebLogic Serverプロキシ・プラグイン・モジュールの状態メトリック
メトリック名 | 説明 |
---|---|
|
拒否された( |
|
正常に処理できなかったリクエストの数。エラーについては、イベント・メトリックを参照してください。 |
|
|
|
|
|
リクエストが再試行された回数。リクエストは、通常、失敗すると再試行されます(構成により異なる)。これまでにリクエストが再試行された場合、このメトリックは増分します(リクエストが再試行された回数に関係なく、リクエストごとに1回)。 |
|
処理に成功したリクエストの数。リクエストの処理が成功した場合(Oracle WebLogic Serverにプロキシされてレスポンスがクライアントに返される)、このメトリックは増分します。 |
|
現在アクティブなWebSocketアップグレード・リクエストの数。 |
|
終了したWebSocketアップグレード・リクエストの数。WebSocketセッションを(なんらかの理由で)終了する場合、このメトリックが更新されます。 |
|
アクティブの可能性がある同時WebSocketリクエストの最大数。
|
|
この値を定義するには、次のように、アクティブなWebSocketsの数( ( |
|
作成されたWebSocketアップグレード・リクエストの数。リクエストURIがWebSocketアップグレード・リクエストの場合、このメトリックは増分します。 |
|
正常に完了したWebSocketアップグレード・リクエストの数。Oracle WebLogic Serverが |
DMSイベント・メトリック
DMSイベント・メトリックは、システム・イベントをカウントします。DMSイベントは、継続時間の短いシステム・イベントや、イベントの継続時間よりもイベントの発生が重要な場合のイベントを追跡します。イベント・メトリックの詳細は、表3-2を参照してください。
表3-2 Oracle WebLogic Serverプロキシ・プラグイン・モジュールのイベント・メトリック。
メトリック名 | 説明 |
---|---|
|
|
|
|
|
他のエラーの数。たとえば、 |
|
|
|
|
|
|
|
|
|
|
|
クライアントにより終了したWebSocketアップグレード・リクエストの数。クライアントがWebSocketアップグレード・リクエストを送信してクライアントが接続を終了する場合、このメトリックは更新されます。 |
|
エラーが原因で終了したWebSocketセッションの数。WebSocket接続が終了する原因となるエラーがある場合、このメトリックは更新されます。 |
|
WebSocketアップグレード・リクエストが拒否された回数。WebSocketアップグレード・リクエストのレスポンスは |
|
サーバーにより終了したWebSocketアップグレード・リクエストの数。Oracle WebLogic ServerがWebSocket通信の終了を開始する場合、このメトリックは更新されます。たとえば、リクエストのアップグレード後のタイムアウトまたは通信なし(デフォルトで5分)など。 |
DMS PhaseEventメトリック
DMS PhaseEventメトリックは、コード内の特定セクションの開始から終了までにかかる時間を測定します。PhaseEventは、あるメソッドまたはコード・ブロックの時間を追跡します。フェーズ・イベントごとに、「アクティブな件数」、「完了した件数」、「合計時間」、「最小時間」、「最大時間」、「平均時間」の値が含まれます。PhaseEventメトリックの詳細は、表3-3を参照してください。
表3-3 Oracle WebLogic Serverプロキシ・プラグイン・モジュールのPhaseEventメトリック
メトリック名 | 説明 |
---|---|
|
進行中のWebSocket通信。「WebSocketアップグレードの成功」から「WebSocket接続の終了」までのフェーズ(時間) |
|
「Oracle WebLogic Serverへのリクエストの送信」から「レスポンスの待機中」までのフェーズ(時間)。 |
共通の構成タスク
Oracleが提供するプロキシ・プラグインを構成するために、すべてのWebサーバーに共通するタスクがあります。
この項には次のトピックが含まれます:
- プロキシ・プラグインでのIPv6の構成
Oracle WebLogic Server 14.1.1.0.0プロキシ・プラグインは、IPv6をサポートしています。具体的には、WebLogicHost
およびWebLogicCluster
構成パラメータがIPv6アドレスをサポートするようになりました。 - 接続エラーとクラスタリング・フェイルオーバーの理解
プロキシ・プラグインがOracle WebLogic Serverへの接続を試行すると、プロキシ・プラグインは複数の構成パラメータを使用して、Oracle WebLogic Serverホストへの接続を待機する時間、および接続が確立された後、プロキシ・プラグインがレスポンスを待機する時間を決定します。 - WebSocketアップグレード・リクエストのスループットを高めるためのApache HTTP Serverのチューニング
Oracle WebLogic Server 14c (14.1.1.0.0)では、WebSocketアプリケーションのデプロイがサポートされます。Apache HTTP Server 2.4.x用Oracle WebLogic Server 14.1.1.0.0プロキシ・プラグインは、WebSocket接続アップグレード・リクエストを処理し、Oracle WebLogic Server 14c (14.1.1.0.0)以降でホストされているWebSocketアプリケーションに効果的にプロキシできるようになりました。
プロキシ・プラグインでのIPv6の構成
WebLogicHost
およびWebLogicCluster
構成パラメータがIPv6アドレスをサポートするようになりました。「WebLogicCluster」および「WebLogicHost」を参照してください。
たとえば:
<IfModule mod_weblogic.c> WebLogicHost [a:b:c:d:e:f] WebLogicPort 7002 ... </IfModule>
または
<IfModule mod_weblogic.c> WebLogicCluster [a:b:c:d:e:f]:<port>, [g:h:i:j:k:l]:<port> .... </IfModule>
IPv6アドレスにマップされているホスト名を使用することもできます。
<IfModule mod_weblogic.c>
#hostname1 is mapped to IPv6 address in /etc/hosts file
WebLogicHost hostname1
WebLogicPort 7002
...
</IfModule>
/etc/hosts
ファイルのサンプル・エントリ: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
::1 hostname1
ノート:
Windows 2008以降、DNSサーバーは、IPv4アドレスよりもIPv6アドレスを優先して返します。IPv4を使用してWindows 2008以降のシステムに接続している場合は、最初にリンクローカルIPv6アドレス形式が試みられ、それによって遅延が顕著となり、パフォーマンスが低下する可能性があります。IPv4アドレス形式を使用するには、構成ファイルでかわりのIPアドレスを使用するようシステムを構成するか、IPv4アドレスをetc/hosts
ファイルに追加します。
また、構成ファイルでDynamicServerList
プロパティをOFF
に設定すると、IPv6を使用したパフォーマンスも向上します。OFF
に設定すると、プロキシ・プラグインはプロキシ・プラグインからプロキシされたロード・バランシング・リクエストに使用される動的クラスタ・リストを無視し、WebLogicClusterパラメータで指定された静的リストを使用します。
親トピック: 共通の構成タスク
接続エラーとクラスタリング・フェイルオーバーの理解
プロキシ・プラグインがOracle WebLogic Serverへの接続を試行すると、プロキシ・プラグインは複数の構成パラメータを使用して、Oracle WebLogic Serverホストへの接続を待機する時間、および接続が確立された後、プロキシ・プラグインがレスポンスを待機する時間を決定します。
プロキシ・プラグインが接続できない場合、またはレスポンスを受信しない場合、プロキシ・プラグインは、クラスタ内の他のOracle WebLogic Serverインスタンスに接続してリクエストを送信しようとします。接続が失敗した場合、またはクラスタ内のどのOracle WebLogic Serverからもレスポンスがない場合、エラー・メッセージが送信されます。プロキシ・プラグインによるフェイルオーバーの処理方法の図については、図3-1を参照してください。
この項には次のトピックが含まれます:
- 接続障害についての考えられる原因
- CONNECTION_REFUSEDエラーを減らすためのヒント
- クラスタ化されていない単一のOracle WebLogic Serverでのフェイルオーバー
- 動的サーバー・リスト
- フェイルオーバー、CookieおよびHTTPセッション
- ファイアウォールとロード・ディレクタを使用する場合のフェイルオーバー動作
親トピック: 共通の構成タスク
接続障害についての考えられる原因
Oracle WebLogic Serverホストが接続リクエストに応答しない場合、次のような問題がある可能性があります:
- ホスト・マシンの物理的な問題(電源停止、ハードウェアの故障、オペレーティング・システムのクラッシュなど)。
- ネットワークの問題。
- その他のサーバー障害。
Oracle WebLogic Serverインスタンスが応答しない場合、次のような問題がある可能性があります:
- Oracle WebLogic Serverが実行されていないか、使用できません。
- サーバーのハング。
- データベースの問題。
- アプリケーション固有の障害。
親トピック: 接続エラーとクラスタリング・フェイルオーバーの理解
CONNECTION_REFUSEDエラーを減らすためのヒント
負荷がかかると、プロキシ・プラグインはバックエンドのOracle WebLogic ServerインスタンスからCONNECTION_REFUSEDエラーを受け取ることがあります。CONNECTION_REFUSEDエラーを減らすには、チューニングに関する次のヒントに従ってください。
- Oracle WebLogic Serverドメインの構成で
AcceptBackLog
設定を増やします。 - 待機時間を短くします。この設定は、使用するオペレーティング・システムに応じて異なります。たとえば、Linuxでは、
/etc/sysctl.conf
ファイルでnet.ipv4.tcp_fin_timeout
パラメータを低い値に設定します。 - マシン上でオープン・ファイル・ディスクリプタの制限値を大きくします。この制限は、オペレーティング・システムによって異なります。limit (.csh)またはulimit (.sh)ディレクティブを使用して、制限値を大きくするスクリプトを作成できます。
親トピック: 接続エラーとクラスタリング・フェイルオーバーの理解
クラスタ化されていない単一のOracle WebLogic Serverでのフェイルオーバー
単一のOracle WebLogic Serverインスタンスのみを実行する場合、プロキシ・プラグインはWebLogicHost
パラメータで定義されたサーバーへの接続のみを試行します。失敗すると、HTTP 503エラー・メッセージが返されます。プロキシ・プラグインは、ConnectTimeoutSecs
とConnectRetrySecs
の比率で指定されている最大再試行回数まで、同じOracle WebLogic Serverインスタンスへの接続を試行し続けます。
親トピック: 接続エラーとクラスタリング・フェイルオーバーの理解
動的サーバー・リスト
WebLogicCluster
パラメータは、クラスタ化されたバックエンド・サーバーのリストにプロキシしたり、クラスタ化されていない管理対象サーバー・インスタンスのロード・バランシングを実行するために必要となります。
クラスタ化された管理対象サーバーへのプロキシの場合、WebLogicCluster
パラメータを使用してOracle WebLogic Serverのリストを指定すると、プロキシ・プラグインはそのリストをクラスタのメンバー間のロード・バランシングの開始点として使用します。最初のリクエストがそれらのサーバーの1つにルーティングされた後、クラスタ内のサーバーの更新されたリストを含む動的サーバー・リストが返されます。
更新されたリストでは、クラスタ内の新しいサーバーが追加され、停止されたサーバー、一時停止されたサーバー、クラスタ・メンバーではなくなったサーバーおよびリクエストに応答しなかったサーバーは削除されます。この機能は、DynamicServerList
を使用して制御可能です。たとえば、この機能を無効にするには、DynamicServerList
をOFF
に設定します。
DynamicServerList ON
は、推奨されるパフォーマンス・チューニング・パラメータです。クラスタのメンバーが保守のために一時的に停止されている場合や、管理者が別のメンバーを追加することを決定し、Webサーバーの再起動が必要ない場合などに役立ちます。
ノート:
DynamicServerList
がON
に設定されており、WebLogicCluster
で指定されたバックエンドOracle WebLogic Serverのリストがクラスタ内にない場合、動作は未定義になります。
親トピック: 接続エラーとクラスタリング・フェイルオーバーの理解
フェイルオーバー、CookieおよびHTTPセッション
リクエストに、CookieやPOSTデータに格納されているかURLでエンコードされたセッション情報が含まれている場合、そのセッションIDには、セッションが最初に確立された特定のサーバー・インスタンス(プライマリ・サーバーと呼ばれる)への参照が含まれています。Cookieが含まれるリクエストは、プライマリ・サーバーへの接続を試みます。その試行が失敗した場合、プロキシ・プラグインはリスト内の次に使用可能なサーバーへの接続をラウンドロビン方式で試行します。そのサーバーが元のセカンダリ・サーバーからセッションを取得し、そのサーバー自体が同一セッションの新しいプライマリ・サーバーになります。図3-1を参照してください。
ノート:
POSTデータが64Kより大きい場合、プロキシ・プラグインはPOSTデータを解析してセッションIDを取得しません。したがって、セッションIDをPOSTデータに格納すると、プロキシ・プラグインはリクエストを正しいプライマリまたはセカンダリ・サーバーにルーティングできないため、セッションデータが失われる可能性があります。
この図の赤色のループに許容されている最大試行回数はConnectTimeoutSecs/ConnectRetrySecs
の値と等しくなります。
親トピック: 接続エラーとクラスタリング・フェイルオーバーの理解
ファイアウォールとロード・ディレクタを使用する場合のフェイルオーバー動作
ファイアウォールとロード・ディレクタを組み合せて使用する一部の構成では、Oracle WebLogic Serverのプライマリ・インスタンスが使用できない場合、いずれか1つのサーバー(ファイアウォールまたはロード・ディレクタ)がリクエストを受け入れ、正常な接続を返します。Oracle WebLogic Serverのプライマリ・インスタンス(使用不可)へのリクエストの送信が試行された後、リクエストは「接続リセット」としてプロキシ・プラグインに戻されます。
ファイアウォールの組合せ(ロード・ダイレクタの有無にかかわらず)を介して実行されるリクエストは、Oracle WebLogic Serverによって処理されます。つまり、接続リセットのレスポンスはOracle WebLogic Serverのセカンダリ・インスタンスにフェイルオーバーします。このような構成では、接続リセットのレスポンスがフェイルオーバーするため、サーブレットは多重呼出し不変である必要があります。そうでない場合は、トランザクションの処理が重複する可能性があります。
親トピック: 接続エラーとクラスタリング・フェイルオーバーの理解
WebSocketアップグレード・リクエストのスループットを高めるためのApache HTTP Serverのチューニング
Oracle WebLogic Server 14c (14.1.1.0.0)では、WebSocketアプリケーションのデプロイがサポートされます。Apache HTTP Server 2.4.x用Oracle WebLogic Server 14.1.1.0.0プロキシ・プラグインは、WebSocket接続アップグレード・リクエストを処理し、Oracle WebLogic Server 14c (14.1.1.0.0)以降でホストされているWebSocketアプリケーションに効果的にプロキシできるようになりました。
このサポートが追加されたことで、新しい構成パラメータであるWLMaxWebSocketClientsが導入されています。
WLMaxWebSocketClientsパラメータは、任意の時点でのアクティブなWebSocket接続の数を制限します。このパラメータに設定できる最大値は、ThreadsPerChildの75% (Windowsの場合)またはMaxRequestWorkersの75% (Windows以外の場合)となります。したがって、WebSocket接続アップグレード・リクエストが最大になるようにHTTPサーバーをチューニングするには、MaxRequestWorkers/ThreadsPerChildをWebSocket接続も考慮した値に設定します。また、WLMaxWebSocketClientsがMaxRequestWorkers/ThreadsPerChildの75%に設定されていることを確認します。
親トピック: 共通の構成タスク
Apache HTTPサーバーの非推奨ディレクティブ
WLLogFile
およびDebug
ディレクティブは非推奨です。構成でこれらのディレクティブが使用されている場合は、起動時に注意書きが表示されます。
[Thu May 14 23:22:19 2015] [warn] weblogic: The Debug directive is ignored. The web server log level is used instead.
ログファイルの詳細は、「ログ・ファイルの検証」を参照してください。