3 Apache HTTP Server用Oracle WebLogic Serverプロキシ・プラグインの構成

Apache HTTP Server用Oracle WebLogic Serverプロキシ・プラグインを構成するには、この項に含まれる情報を読むことをお薦めします。

この項には次のトピックが含まれます:

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」を参照してください。

パスによるプロキシ・リクエストの構成

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」を参照してください。

タスク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タイプによるプロキシに適用するパラメータの場合、グローバルまたは仮想ホスト・スコープ
タスク3: HTTPトンネリングの有効化(省略可)

T3プロトコルのHTTPトンネリングを有効にするには、<Location>ブロックを構成します。

T3プロトコルおよびweblogic.jarを使用している場合にHTTPトンネリングを有効にするには、次の<Location>ブロックをhttpd.confファイルに追加します:

<Location /bea_wls_internal>
 WLSRequest On
</Location>
タスク4: Webサービスのアトミック・トランザクションの有効化(省略可)
Webサービスのアトミック・トランザクション(WS-AT)は、<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を参照してください。

タスク5: 構成の検証と適用

次のステップに従い、httpd.conf構成を検証してApache HTTP Serverに適用します。

  1. 次のコマンドを実行して、httpd.confファイルの構文を確認します(UNIX/Linux):
    > APACHE_HOME/bin/apachectl -t

    httpd.confファイルにエラーがある場合はこのコマンドの出力でエラーが表示され、それ以外の場合は次のような結果が戻されます。

    Syntax OK
  2. Apache HTTP Serverを起動します(UNIX/Linuxの場合):
    > APACHE_HOME/bin/apachectl start
  3. ブラウザからhttp://apache-host:apache-port/mywebapp/my.jspにリクエストを送信します。レスポンスを確認します。

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プロキシ・プラグインをすばやく設定するための基本的な手順を示します。

  1. $APACHE_HOME/conf/httpd.confファイルのコピーを作成します。
  2. ファイルを編集し、次のコードを追加します。
    ... 
    LoadModule weblogic_module /home/myhome/weblogic-plugins-12.2.1/lib/mod_wl_24.so
    
    <IfModule mod_weblogic.c>
      WebLogicHost wls-host
      WebLogicPort wls-port
    </IfModule>
    
    <Location /mywebapp>
      WLSRequest On
    </Location>
    ...
    
  3. 次のコマンドを使用して、LD_LIBRARY_PATH$PLUGINS_HOME/libを含めます:
    $ export LD_LIBRARY_PATH=/home/myhome/weblogic-plugin-14.1.1.0.0/lib:$LD_LIBRARY_PATH

    ノート:

    'lib'の内容をAPACHE_HOME/libにコピーするか、APACHE_HOME/bin/apachectlを編集してLD_LIBRARY_PATHを更新しても、LD_LIBRARY_PATHを更新できます。

  4. 次のコマンドを使用して、プロキシ・プラグインのzipファイルが解凍されるディレクトリを指すようにPLUGINS_HOMEを設定します:
    export PLUGINS_HOME=/home/myhome/weblogic-plugins-14.1.1.0.0/
  5. 次のコマンドを使用して、OpenSSLライブラリを含むパスをLD_LIBRARY_PATHに含めます:
    export LD_LIBRARY_PATH=/home/myhome/openssl_installation/lib:$LD_LIBRARY_PATH
  6. プロンプトで、次のコマンドを入力してApache HTTPサーバーを起動します。
    $ ${APACHE_HOME}/bin/apachectl start
  7. ブラウザからhttp://apache-host:apache-port/mywebapp/my.jspにリクエストを送信し、レスポンスを確認します。

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アプリケーションに効果的にプロキシできます。

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ではサポートされていません。

ログ・ファイルの検証

Oracle WebLogic Serverプロキシ・プラグイン・ログは、Apache HTTP Serverエラー・ログの一部になりました。接頭辞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] ======
プロキシ・プラグイン・ログを有効にするには、Apache Webサーバー・ディレクティブLogLeveldebugに設定します。ログは、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メトリックの理解

Oracle WebLogic Serverプロキシ・プラグインのパフォーマンス・メトリックは、Oracle Dynamic Monitoring Service (DMS)を介して提供されます。たとえば、プロキシされたリクエストの数、失敗したリクエストの数およびその他の特定のメトリックをフェッチできます。Oracle WebLogic Server 14.1.1.0.0プロキシ・プラグインの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プロキシ・プラグイン・モジュールの状態メトリック

メトリック名 説明

totalDeclines

拒否された(mod_wl_24で処理されない)リクエストの合計数。この数は、構成されていないリクエストまたはプロキシ・プラグインによって拒否されたリクエスト(たとえば、カスタムHTTPメソッドはプロキシ・プラグインによって常に拒否される)を示します

totalErrors

正常に処理できなかったリクエストの数。エラーについては、イベント・メトリックを参照してください。

totalHandled

mod_wl_24プロキシ・プラグインによって処理されたリクエストの合計数。

totalRequests

mod_wl_24によって受信されたリクエストの合計数。この数には、プロキシ・プラグインを対象とするすべてのリクエストと、どのモジュールも対象としない(構成されていない)リクエストが含まれます。

totalRetries

リクエストが再試行された回数。リクエストは、通常、失敗すると再試行されます(構成により異なる)。これまでにリクエストが再試行された場合、このメトリックは増分します(リクエストが再試行された回数に関係なく、リクエストごとに1回)。

totalSuccess

処理に成功したリクエストの数。リクエストの処理が成功した場合(Oracle WebLogic Serverにプロキシされてレスポンスがクライアントに返される)、このメトリックは増分します。

websocketActive

現在アクティブなWebSocketアップグレード・リクエストの数。

websocketClose

終了したWebSocketアップグレード・リクエストの数。WebSocketセッションを(なんらかの理由で)終了する場合、このメトリックが更新されます。

websocketMax

アクティブの可能性がある同時WebSocketリクエストの最大数。

WLMaxWebSocketClientsパラメータを構成する場合、次の値よりも低くなります。

  • 構成値または
  • MaxRequestWorkersの値の0.75 (Apache 2.4)

WLMaxWebSocketClientsパラメータが構成されていない場合、値はMaxRequestWorkersの値の0.5になります(Apache 2.4)。

WLMaxWebSocketClientsパラメータの詳細は、「WebSocketアップグレード・リクエストのスループットを高めるためのApache HTTP Serverのチューニング」を参照してください。

websocketPercent

この値を定義するには、次のように、アクティブなWebSocketsの数(websocketActive)を同時WebSocketリクエストの最大数(websocketMax)で除算した値に100を掛けます。

(websocketActive/webocketMax)*100

websocketRequests

作成されたWebSocketアップグレード・リクエストの数。リクエストURIがWebSocketアップグレード・リクエストの場合、このメトリックは増分します。

websocketSuccess

正常に完了したWebSocketアップグレード・リクエストの数。Oracle WebLogic Serverが「101 プロトコルの切替え中」でWebSocketアップグレード・リクエストに応答する場合、このメトリックは更新されます。

DMSイベント・メトリック

DMSイベント・メトリックは、システム・イベントをカウントします。DMSイベントは、継続時間の短いシステム・イベントや、イベントの継続時間よりもイベントの発生が重要な場合のイベントを追跡します。イベント・メトリックの詳細は、表3-2を参照してください。

表3-2 Oracle WebLogic Serverプロキシ・プラグイン・モジュールのイベント・メトリック。

メトリック名 説明

errConnRefused

CONNECTION_REFUSEDエラーの数。構成されたWebLogicHostまたはWebLogicPortに到達できないか、リスニングしない回数を表します。

errNoResources

NO_RESOURCESエラーの数この例外が発生するシナリオの1つは、SSLがプロキシ・プラグインで構成されているが、対応するSSL構成が管理対象サーバーに定義されていない場合です。

errOthers

他のエラーの数。たとえば、POSTデータ・サイズは、MaxPostSizeの値よりも大きくなります。

errReadClient

READ_ERROR_FROM_CLIENTエラーの数。プロキシ・プラグインがクライアント(ブラウザ)から読み取れなかった回数を示します。

errReadServer

READ_ERROR_FROM_SERVERエラーの数。読取り操作がOracle WebLogic Serverで正常に行われなかった回数を表します。

errReadTimeout

READ_TIMEOUTエラーの数。たとえば、WLIOTimeoutSecs内でOracle WebLogic Serverが応答しない場合などがあります。

errWriteClient

WRITE_ERROR_TO_CLIENTエラーの数。プロキシ・プラグインがクライアントに書き込めなかった回数を示します。これは、クライアントがリクエストを送信してもレスポンスの受信前に接続を終了する場合に表示されます。

errWriteWLS

WRITE_ERROR_TO_SERVERエラーの数。プロキシ・プラグインがOracle WebLogic Serverに書き込めなかった回数を示します。

wsClientClose

クライアントにより終了したWebSocketアップグレード・リクエストの数。クライアントがWebSocketアップグレード・リクエストを送信してクライアントが接続を終了する場合、このメトリックは更新されます。

wsErrorClose

エラーが原因で終了したWebSocketセッションの数。WebSocket接続が終了する原因となるエラーがある場合、このメトリックは更新されます。

wsNoUpgrade

WebSocketアップグレード・リクエストが拒否された回数。WebSocketアップグレード・リクエストのレスポンスは「101 プロトコルの切替え中」ではありません。これは、WebSockets (Oracle WebLogic Serverバージョン12.1.2以前)をサポートしないOracle WebLogic Serverにアップグレード・リクエストが送信される場合に発生します。

wsServerClose

サーバーにより終了したWebSocketアップグレード・リクエストの数。Oracle WebLogic ServerがWebSocket通信の終了を開始する場合、このメトリックは更新されます。たとえば、リクエストのアップグレード後のタイムアウトまたは通信なし(デフォルトで5分)など。

DMS PhaseEventメトリック

DMS PhaseEventメトリックは、コード内の特定セクションの開始から終了までにかかる時間を測定します。PhaseEventは、あるメソッドまたはコード・ブロックの時間を追跡します。フェーズ・イベントごとに、「アクティブな件数」、「完了した件数」、「合計時間」、「最小時間」、「最大時間」、「平均時間」の値が含まれます。PhaseEventメトリックの詳細は、表3-3を参照してください。

表3-3 Oracle WebLogic Serverプロキシ・プラグイン・モジュールのPhaseEventメトリック

メトリック名 説明

websocketPhase

進行中のWebSocket通信。「WebSocketアップグレードの成功」から「WebSocket接続の終了」までのフェーズ(時間)

wlsWait

「Oracle WebLogic Serverへのリクエストの送信」から「レスポンスの待機中」までのフェーズ(時間)。

共通の構成タスク

Oracleが提供するプロキシ・プラグインを構成するために、すべてのWebサーバーに共通するタスクがあります。

この項には次のトピックが含まれます:

プロキシ・プラグインでのIPv6の構成

Oracle WebLogic Server 14.1.1.0.0プロキシ・プラグインは、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を参照してください。

この項には次のトピックが含まれます:

接続障害についての考えられる原因

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エラー・メッセージが返されます。プロキシ・プラグインは、ConnectTimeoutSecsConnectRetrySecsの比率で指定されている最大再試行回数まで、同じOracle WebLogic Serverインスタンスへの接続を試行し続けます。

動的サーバー・リスト

WebLogicClusterパラメータは、クラスタ化されたバックエンド・サーバーのリストにプロキシしたり、クラスタ化されていない管理対象サーバー・インスタンスのロード・バランシングを実行するために必要となります。

クラスタ化された管理対象サーバーへのプロキシの場合、WebLogicClusterパラメータを使用してOracle WebLogic Serverのリストを指定すると、プロキシ・プラグインはそのリストをクラスタのメンバー間のロード・バランシングの開始点として使用します。最初のリクエストがそれらのサーバーの1つにルーティングされた後、クラスタ内のサーバーの更新されたリストを含む動的サーバー・リストが返されます。

更新されたリストでは、クラスタ内の新しいサーバーが追加され、停止されたサーバー、一時停止されたサーバー、クラスタ・メンバーではなくなったサーバーおよびリクエストに応答しなかったサーバーは削除されます。この機能は、DynamicServerListを使用して制御可能です。たとえば、この機能を無効にするには、DynamicServerListOFFに設定します。

DynamicServerList ONは、推奨されるパフォーマンス・チューニング・パラメータです。クラスタのメンバーが保守のために一時的に停止されている場合や、管理者が別のメンバーを追加することを決定し、Webサーバーの再起動が必要ない場合などに役立ちます。

ノート:

DynamicServerListONに設定されており、WebLogicClusterで指定されたバックエンドOracle WebLogic Serverのリストがクラスタ内にない場合、動作は未定義になります。

フェイルオーバー、CookieおよびHTTPセッション

リクエストに、CookieやPOSTデータに格納されているかURLでエンコードされたセッション情報が含まれている場合、そのセッションIDには、セッションが最初に確立された特定のサーバー・インスタンス(プライマリ・サーバーと呼ばれる)への参照が含まれています。Cookieが含まれるリクエストは、プライマリ・サーバーへの接続を試みます。その試行が失敗した場合、プロキシ・プラグインはリスト内の次に使用可能なサーバーへの接続をラウンドロビン方式で試行します。そのサーバーが元のセカンダリ・サーバーからセッションを取得し、そのサーバー自体が同一セッションの新しいプライマリ・サーバーになります。図3-1を参照してください。

ノート:

POSTデータが64Kより大きい場合、プロキシ・プラグインはPOSTデータを解析してセッションIDを取得しません。したがって、セッションIDをPOSTデータに格納すると、プロキシ・プラグインはリクエストを正しいプライマリまたはセカンダリ・サーバーにルーティングできないため、セッションデータが失われる可能性があります。

図3-1 接続フェイルオーバー

図3-1の説明が続きます。
「図3-1 接続フェイルオーバー」の説明」

この図の赤色のループに許容されている最大試行回数は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接続も考慮した値に設定します。また、WLMaxWebSocketClientsMaxRequestWorkers/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.

ログファイルの詳細は、「ログ・ファイルの検証」を参照してください。