Oracle® Fusion Middleware Oracle WebLogic Serverプロキシ・プラグインの使用 12c (12.1.3) E56226-05 |
|
前 |
次 |
この章では、Oracle HTTP ServerからOracle WebLogic Serverへのリクエストのプロキシ用のプラグインである、Oracle WebLogic Serverプロキシ・プラグイン(mod_wl_ohs)の構成方法を説明します。Oracle WebLogic Serverプロキシ・プラグインは、Oracle HTTP Server 12.1.3のインストールに含まれています。別途ダウンロードしてインストールする必要はありません。
注意: Oracle WebLogic Serverプロキシ・プラグインには、Apache HTTP Server用のプラグインと同じ機能が用意されています。 |
Oracle WebLogic Serverプロキシ・プラグインは、Fusion Middleware Controlを使用するか、mod_wl_ohs.conf構成ファイルを手動で編集することで構成できます。
この章には次のトピックが含まれます:
Oracle HTTP Server用Oracle WebLogic Serverプロキシ・プラグインは、WebSocketアプリケーションのフロントエンドとなることができるようになりました。
Oracle WebLogic Serverプロキシ・プラグインを構成する前に、次のことを行ってください。
Oracle WebLogic Serverがインストールされ、ドメインが作成されており、Oracle WebLogic Serverの管理コンソールにアクセスできることを確認します。Oracle HTTP ServerとWebLogic Serverは、同一ドメインにインストールすることも、別ドメインインストールすることもできます。
Fusion Middleware Controlがインストールされており、Enterprise Managerコンソールにアクセスできることを確認します。これは、Fusion Middleware Controlに用意されているグラフィカル・インタフェースを使用してOracle WebLogic Serverプロキシ・プラグインを構成する場合に必要になります。
構成をテストできるようにするには、必要なJavaアプリケーションがOracle WebLogic Server (単一の管理対象サーバーまたはクラスタ)にデプロイされており、アクセス可能であることを確認します。
バックエンドのOracle WebLogic Serverインスタンスがバージョン10.3.4以降の場合は、「WebLogicプラグインの有効化」パラメータを設定する必要があります。
Oracle WebLogic Server管理コンソールにログインします。
「ドメイン構造」ペインで「環境」ノードを開きます。
Oracle HTTP Serverからリクエストをプロキシするサーバー・インスタンスがクラスタにある場合は、「クラスタ」を選択します。
それ以外の場合は、「サーバー」を選択します。
Oracle HTTP Serverからリクエストをプロキシするサーバーまたはクラスタを選択します。
「構成」→「一般」タブが表示されます。
下にスクロールして「詳細」セクションを開き、「WebLogicプラグインの有効化」ドロップダウン・リストから「はい」を選択します。WebLogicプラグインをWebLogic Serverと使用する場合には、「はい」を選択する必要があります。詳細は、第2.2.1項「「WebLogicプラグインの有効化」パラメータの理解」を参照してください。
手順2で「サーバー」を選択した場合は、Oracle HTTP Serverからのリクエストをプロキシするその他のサーバーに対して手順3と4を繰り返します。
「保存」をクリックします。
変更内容を有効にするには、サーバー・インスタンスを再起動する必要があります。
「WebLogicプラグインの有効化」ドロップダウン・リストには次の値が含まれます。
はい: WebLogicプラグインをWebLogic Serverと使用する場合には、「はい」を選択する必要があります。サーバーで「はい」に設定すると、このサーバーで独自のWL-Proxy-Client-IP
ヘッダーを使用することを指定することになります。サーバー・インスタンスがプロキシ・プラグインからリクエストを受信する場合は、設定することをお薦めします。
クラスタで「はい」に設定すると、クラスタがプロキシ・プラグインまたはHttpClusterServlet
からのリクエストを受信することを指定することになります。getRemoteAddr
を呼び出すと、Webサーバーではなく、独自のWL-Proxy-Client-IP
ヘッダーからブラウザ・クライアントのアドレスが戻されます。
いいえ: サーバーまたはクラスタで「いいえ」を選択すると、config.xml
ファイルのweblogic-plugin-enabled
パラメータが無効になります(weblogic-plugin-enabled=false
)。
継承: サーバー・ページの「WebLogicプラグインの有効化」で「継承」を選択すると、サーバーはクラスタの「WebLogicプラグインの有効化」に選択した値を継承します。クラスタ・ページの「WebLogicプラグインの有効化」で「継承」を選択すると、クラスタはドメインの「WebLogicプラグインの有効化」に選択した値を継承します。
Fusion Middleware Controlを使用してmod_wl_ohsモジュールを構成するには、次の手順を実行します。
第2.2項で示された前提条件を満たしていることを確認します。
「Oracle HTTP Server」メニューから「管理」を選択します。
「管理」メニューで「mod_wl_ohs構成」を選択します。「mod_wl_ohs構成」ページが表示されます。
次の表に示す構成設定を指定します。
フィールド | 説明 |
---|---|
WebLogicクラスタ | ロード・バランシングに使用可能なOracle WebLogic Serverのリスト。サーバーまたはクラスタのリストは、host:portエントリのリストです。クラスタとシングル・サーバーを組み合せて指定した場合、このパラメータに対して返される動的リストには、クラスタ化されたサーバーのみが含まれます。
適切なクラスタかどうかがわからない場合は、検索アイコンをクリックして、関連付けられたすべてのクラスタのリストを表示できます。詳細は、第2.3.1項「検索機能の使用」を参照してください。 このモジュールは、すべての使用可能なサーバーの間の単純なラウンドロビンを実行します。このプロパティで指定したサーバー・リストが、サーバーとモジュールが保持する動的サーバー・リストの開始点となります。Oracle WebLogic Serverとこのモジュールの連携により、新しいクラスタ・メンバー、障害が発生したクラスタ・メンバーおよびリカバリしたクラスタ・メンバーを反映して、サーバー・リストが自動更新されます。動的クラスタ・リストは、「動的サーバー・リストをオン」チェック・ボックスの選択を解除することで使用不可にできます。このモジュールはCookie、URLエンコード済セッション、またはPOSTデータに格納されたセッションを含むHTTPリクエストを、Cookieを作成したクラスタ内のサーバーに送信します。 注意: 「WebLogicクラスタ」と「WebLogicホスト」は相互排他的なフィールドのため、一方のみを指定してください。両方のフィールドに値を指定した場合は、「WebLogicクラスタ」が優先されます。 |
WebLogicホスト | HTTPリクエストが転送される、Oracle WebLogic Serverホスト(またはOracle WebLogic Serverに定義されている仮想ホスト名)。WebLogicクラスタを使用している場合は、「WebLogicホスト」 ではなく「WebLogicクラスタ」 パラメータを使用します。
適切なサーバーかどうかがわからない場合は、検索アイコンをクリックして、関連付けられたすべてのクラスタのリストを表示できます。詳細は、第2.3.1項「検索機能の使用」を参照してください。 注意: 「WebLogicホスト」と「WebLogicクラスタ」は相互排他的なフィールドのため、一方のみを指定してください。両方のフィールドに値を指定した場合は、「WebLogicクラスタ」が優先されます。 |
WebLogicポート | Oracle WebLogic Serverホストがモジュール(または他のサーバー)からの接続リクエストをリスニングするポート。(モジュールとOracle WebLogic Serverの間でSSLを使用している場合、このパラメータをSSLリスニング・ポートに設定します。) |
動的サーバー・リストをオン | オフ | オフに設定すると、モジュールはプロキシ設定されたロード・バランシング・リクエストに使用される動的クラスタ・リストを無視し、WebLogicクラスタ・パラメータで指定された静的リストのみを使用します。通常は、このパラメータをオンに設定してください。
このパラメータをオフに設定した場合、次のような影響があります。
|
エラー・ページ | WebサーバーでリクエストをOracle WebLogic Serverに転送できない場合に表示されるよう、独自のエラー・ページを作成できます。 |
WebLogic一時ディレクトリ | ポスト・データ・ファイル用の_wl_proxyディレクトリの場所を指定します。 |
パスまたはMIMEタイプの除外 | このパラメータを使用すると、特定のリクエストをプロキシ処理から除外できます。
このパラメータは、グローバルに定義することも、「場所」タグ・レベルでローカルに定義することもできます。このプロパティをローカルに定義した場合、グローバルなプロパティがオーバーライドされるのではなく、2つのパラメータの集合が定義されます。 |
一致式 | このリージョンは、式のオーバーライド指定に使用します。たとえば、MIMEタイプでプロキシしている場合には、次のように入力できます。
*.jsp WebLogicHost=myHost|paramName=value 次の構文を使用することで、「一致式」の新しいパラメータを定義できます。 *.jsp PathPrepend=/test PathTrim=/foo |
ロケーション | この表は、ロケーションのオーバーライドを指定するために使用します。この後の手順6を参照してください。 |
必要に応じて、「一致式」フィールドに、式のオーバーライドを追加します。
必要に応じて、「ロケーション」表に、ロケーションのオーバーライドを追加します。このための手順は、次のとおりです。
「行の追加」をクリックして新規行を作成します。
関連付けられているディレクティブが有効になる、ベースURIを入力します。
「WebLogicクラスタ」、「WebLogicホスト」および「WebLogicポート」フィールドにすべて入力します。「自動入力」をクリックすることで、これらのフィールドに自動入力できます(第2.3.2項「自動入力機能の使用」を参照)。
RFCの仕様に従う、「パスの切捨て」フィールドのURLの汎用構文は次のとおりです。
[PROTOCOL]://[HOSTNAME]:{PORT}/{PATH}/{FILENAME};{PATH_PARAMS}/{QUERY_STRING}...
「パスの切捨て」は、リクエストがWebLogic Serverに転送される前に、モジュールによって元のURLの{PATH}/{FILENAME}部分から切り捨てられる文字列を指定します。たとえば、URLが次のとおりだとします。
http://myWeb.server.com/weblogic/foo
このURLは、解析のためにモジュールに渡されます。また「パスの切捨て」がURLをWebLogic Serverに渡す前に/weblogic
を切り捨てるように設定されている場合、WebLogic Serverには次のURLが転送されます。
http://myWeb.server.com:7002/foo
注意: 既存のサード・パーティ製サーバーを変更し、初めてこのモジュールを使用してWebLogic Serverにリクエストをプロキシする場合は、/fooへのアプリケーション・パスをweblogic/fooを含むよう変更する必要があります。「パスの切捨て」と「パスの付加」を併用することで、このパスを変更できます。 |
RFCの仕様に従う、「パスの付加」フィールドのURLの汎用構文は次のとおりです。
[PROTOCOL]://[HOSTNAME]:{PORT}/{PATH}/{FILENAME};{PATH_PARAMS}/{QUERY_STRING}...
「パスの付加」は、「パスの切捨て」の値が切り捨てられてからリクエストがWebLogic Serverに転送されるまでの間に、モジュールによって元のURLの{PATH}部分の先頭に付加されるパスを指定します。
注意: ファイル名を付加する必要がある場合は、「パスの付加」ではなくDefaultFileName モジュール・パラメータを使用してください。 |
再度「行の追加」をクリックして、新しい行を保存します。
設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverメニューで「制御」→「起動」を選択し、Oracle HTTP Serverを再起動します。
mod_wl_ohsモジュール構成が保存され、「mod_wl_ohs構成」ページに表示されます。
検索アイコンをクリックすることで、選択したOracle HTTP Serverインスタンスで使用可能なクラスタまたはサーバーのリストを表示できます。検索機能を使用する手順は、次のとおりです。
「WebLogicクラスタ」または「WebLogicホスト」の検索アイコンをクリックします。「WebLogicクラスタの選択」または「WebLogic Serverの選択」ダイアログ・ボックスが表示されます。
使用するクラスタまたはサーバーを選択して、「OK」をクリックします。
選択したクラスタまたはサーバーの名前が、該当するフィールドに表示されます。
「自動入力」ボタンを使用することで、指定したベースUIRLに対する有効なWebLogic Serverおよびエンドポイントの場所をOracle WebLogic Serverプロキシ・プラグインの「構成」画面の「ロケーション」表に簡単に追加できます。このための手順は、次のとおりです。
「追加」をクリックして、新しいロケーションを追加します。
「ロケーション」フィールドにロケーション名を入力します。
「自動入力」をクリックします。
同一名の場所のデータは更新され、新しい場所は表に追加されます。
Oracle WebLogic Serverプロキシ・プラグインを手動で構成するには、mod_wl_ohs.confファイルにディレクティブを指定します。
第2.2項で示された前提条件を満たしていることを確認します。
次のディレクトリに配置されているmod_wl_ohs.confファイルをテキスト・エディタで開きます。
DOMAIN_HOME/config/fmwconfig/components/OHS/instances/componentName
<IfModule weblogic_module>
要素を見つけます。
次に示すように、構成ファイルの<IfModule weblogic_module>
要素内にディレクティブを追加します。
注意: 事前定義済の<IfModule weblogic_module> 要素内でディレクティブを指定することをお薦めします。
事前定義済の |
単一のOracle WebLogic Serverインスタンス上で実行されるアプリケーションにリクエストを転送するには、その宛先サーバーの詳細を<location>
要素内で指定します。
構文:
<IfModule weblogic_module> <Location path> WLSRequest On WebLogicHost host WeblogicPort port </Location> </IfModule>
例:
次のように構成すると、Oracle HTTP Serverのリスニング・ポートで受信された/myapp1
URIのリクエストは、リスニング・ポートlocalhost:7001
のOracle WebLogic Serverの/myapp1
に転送されます。
<IfModule weblogic_module> <Location /myapp1> WLSRequest On WebLogicHost localhost WeblogicPort 7001 </Location> </IfModule>
Oracle WebLogic Serverインスタンスのクラスタ上で実行されているアプリケーションにリクエストを転送するには、その宛先クラスタの詳細を新しい<location>
要素内で指定します。
構文:
<IfModule weblogic_module>
<Location path>
WLSRequest On
WebLogicCluster host:port,host:port
,...
</Location>
</IfModule>
例:
次のように構成すると、Oracle HTTP Serverリスニング・ポートで受信された/myapp2
URIのリクエストは、リスニング・ポートlocalhost:8002
およびlocalhost:8003
の管理対象サーバーを含むOracle WebLogic Serverクラスタ/myapp2
へ転送されます。
<IfModule weblogic_module> <Location /myapp2> WLSRequest On WebLogicCluster localhost:8002,localhost:8003 </Location> </IfModule>
単一のOracle WebLogic Serverインスタンス上で実行されているアプリケーションとクラスタ上で実行されている別のアプリケーションなど、複数の宛先を構成するには、各宛先を個別の<location>
子要素内で指定する必要があります。次の構文で示すように、<IfModule weblogic_module>
要素内のすべての<location>
子要素は同じレベルに存在する必要があります。
<IfModule weblogic_module>
#For an application running on a single server instance
<Location path1>
WLSRequest On
WebLogicHost host
WeblogicPort port
</Location>
#For an application running on a cluster
<Location path2>
WLSRequest On
WebLogicCluster host:port,host:port
,...
</Location>
</IfModule>
たとえばOracle HTTP Serverの高可用性デプロイメントを有効にするため、Oracle WebLogic Serverプロキシ・プラグインを管理対象サーバーにリンクできるように構成するには、mod_wl_ohs.confを次のように編集します。
<IfModule mod_weblogic.c> WebLogicCluster apphost1.mycompany.com:7050, apphost2.mycompany.com:7050 MatchExpression *.jsp </IfModule> <Location /weblogic> WLSRequest On WebLogicCluster apphost1.mycompany.com:7050,apphost2.com:7050 DefaultFileName index.jsp </Location>
注意: SSL終端を使用しており、リクエストをWebLogicにルーティングする場合は、さらに次の構成が必要です。WebLogicコンソールで、ドメイン、クラスタまたは管理対象サーバーのレベルで「WebLogicプラグインの有効化」を「true」に設定する必要があります。 WebLogic管理対象サーバーにリクエストを送信するLocationブロックに、次の行のどちらかを追加することも必要です。 WLProxySSL ON WLProxySSLPassThrough ON (使用するパラメータの決定には、第7.2項「Webサーバー・プラグインのSSLパラメータ」を参照してください。) 次にその例を示します。 <Location /weblogic> WLSRequest On WebLogicCluster apphost1.mycompany.com:7050,apphost2.com:7050 WLProxySSL On WLProxySSLPassThrough ON DefaultFileName index.jsp </Location> WebLogicプラグインを有効化した後、管理サーバーを再起動します。 詳細は、『Oracle HTTP Serverの管理』のSSLリクエストの終了に関する項を参照してください。 |
この例は、Oracle WebLogic管理対象サーバーにリクエストをルーティングする2つの方法を示しています。
<ifModule>
ブロックでは、*.jspで終わるすべてのリクエストがApphost1およびApphost2上にあるWebLogic管理対象サーバーのクラスタに送信されます。
<Location>
ブロックでは、/weblogic
で始まるURLのすべてのリクエストがApphost1およびApphost2上にあるWebLogic管理対象サーバーのクラスタに送信されます。
Oracle HTTP ServerとOracle WebLogic Serverとの間の一方向SSLおよび双方向SSLをサポートするようOracle WebLogic Serverプロキシ・プラグインを構成する方法の詳細は、プラグインでのSSLの使用を参照してください。
mod_wl_ohs.confファイル内で指定できるその他のディレクティブの詳細は、第7章「Webサーバー・プラグインのパラメータ」を参照してください。
『Oracle HTTP Serverの管理』のOracle HTTP Serverの起動に関する項で説明されているいずれかの方法でOracle HTTP Serverを再起動します。
Oracle WebLogic Serverプロキシ・プラグイン用のWebLogic Serverプラグイン・ログは、現在はWeb Serverのエラー・ログ・メカニズムの一部となっています。簡単に識別できるよう、次の例のように先頭にweblogic:
というリファレンスが付いています。
[Fri Dec 27 12:09:14 2013] [debug] ap_proxy.cpp(143): [client 192.168.1.123]
weblogic: INFO: SSL is configured, referer:@ https://example.com/app/fileUploadAction.do
ディレクティブWLLogFileおよびDebugは非推奨です。構成がこれらのいずれかを使用すると、次の注意メッセージがコンソールのログ・ファイルに表示されます。
The WLLogFile directive is ignored. The web server log file is used instead. The Debug directive is ignored. The web server log level is used instead.
プラグイン・ログを有効にするには:
OraLogModeをODL-textに設定した場合は、OraLogSeverityをTRACE:32に設定します。これらのログは、OraLogDirディレクトリに表示されます(instance-name.log)。これはデフォルトの設定です。
OraLogModeをapacheに設定した場合は、LogLevelをdebugに設定します。ディレクティブErrorLogは、エラーの記録先となるファイルを示します。
Oracle HTTP Serverのログの管理方法の詳細は、Oracle HTTP Serverのログの管理に関する項を参照してください。
この項では、Oracle WebLogic Serverプロキシ・プラグインの使用時に発生する可能性のある一般的な問題とその解決方法について説明します。次のトピックが含まれます:
Oracle WebLogic Serverプロキシ・プラグインにより、バックエンドのWebLogic Serverサーバーやクラスタにリクエストがルーティングされます。WebLogic Serverでは、同一クライアントからの後続リクエストが同一WLSサーバーにルーティングされるようにセッションを維持します。ただし、様々な原因によってOracle WebLogic Serverプロキシ・プラグインでWLSサーバーとの通信が不可能になった場合には、次のようなことが起こります。
リクエストが単一のWebLogic Serverインスタンスにルーティングされると、Oracle WebLogic Serverプロキシ・プラグインは、ConnectTimeoutSecsとConnectRetrySecsの比で指定されている最大再試行回数まで、同じWebLogic Serverインスタンスへの接続の試行を継続します。すべての試みが失敗すると、クライアントにHTTP 503エラー・メッセージが返されます。
リクエストがWebLogicクラスタにルーティングされると、現在のWebLogic Serverサーバーはbadとしてマークされ、そのリクエストは次に使用可能なWebLogic Serverサーバーにルーティングされます。すべての試みが失敗すると、クライアントにHTTP 503エラー・メッセージが返されます。
HTTP 503エラー・メッセージが送信されるほか、レスポンスとしてHTTPクライアントで次のメッセージが表示されます。
Failure of Web Server bridge: No backend server available for connection: timed out after xx seconds or idempotent set to OFF or method not idempotent.
ストレス条件下では、いくつかのリクエストが失敗し、エラー・ログ・ファイルに次のエラーが記録される場合があります。
weblogic: Trying GET /uri at backend host 'xx.xx.xx.xx/port; got exception 'CONNECTION_REFUSED [os error=xxx, line xxxx of URL.cpp]: apr_socket_connect call failed with error=xxx, host=xx.xx.xx.xx, port=xxxx'
第6.4.2項「Connection_Refusedエラーを減らすためのヒント」で説明されているように、WLSサーバーのバックログ接続数が最大許容値に達した可能性があります。
解決するには、第6.4.2項「Connection_Refusedエラーを減らすためのヒント」で説明されている手順に従ってください。
ストレス条件下では、いくつかのリクエストが失敗し、エラー・ログ・ファイルに次のエラーが記録される場合があります。
weblogic: *******Exception type [NO_RESOURCES] (apr_socket_connect call failed with error=70007, host=xx.xx.xx.xx, port=xxxx) raised at line xxxx of URL.cpp
これは通常、WLSサーバーがビジー状態でOracle WebLogic Serverプロキシ・プラグインからの接続リクエストに応答できない場合に発生します。WLSocketTimeoutSecs
の値を大きくすることで解決される場合があります。これにより、Oracle WebLogic Serverプロキシ・プラグインでの、接続リクエストに対するWLSサーバーからのレスポンスを待機する時間は長くなります。