Oracle® Fusion Middleware Oracle WebLogic Serverプロキシ・プラグイン12.1.2の使用 12c (12.1.2) E47983-03 |
|
![]() 前 |
![]() 次 |
この章では、Oracle HTTP ServerからOracle WebLogic Serverにリクエストをプロキシするために使用するWebLogicプロキシ・プラグイン(mod_wl_ohs)の構成方法について説明します。WebLogicプロキシ・プラグインはOracle HTTP Server 12.1.2のインストールに含まれています。これを別途ダウンロードしてインストールする必要はありません。
注意: WebLogicプロキシ・プラグインが提供する機能は、Apache HTTP Server用のプラグインのそれと似ています。 |
WebLogicプロキシ・プラグインは、Fusion Middleware Controlを使用するかmod_wl_ohs.conf構成ファイルを手動で編集することで構成できます。
この章の内容は次のとおりです。
WebLogicプロキシ・プラグインの構成を開始する前に、次のことを行います。
Oracle WebLogic Serverがインストール済であり、ドメインが作成されており、Oracle WebLogic Serverの管理コンソールにアクセスできることを確認してください。
Fusion Middleware Controlがインストール済であり、Enterprise Managerコンソールにアクセスできることを確認してください。これは、Fusion Middleware Control提供のグラフィカル・インタフェースを使用してWebLogicプロキシ・プラグインを構成する際に必要となります。
構成を検証するには、必要なJavaアプリケーションが単一の管理対象Oracle WebLogic Serverまたはクラスタにデプロイされており、アクセス可能であることを確認してください。
バックエンドのOracle WebLogic Serverのインスタンスが10.3.4以降の場合、「WebLogicプラグインの有効化」パラメータを設定する必要があります。
Oracle WebLogic Serverの管理コンソールにログインします。
「ドメイン構造」ペインで、「環境」ノードを展開します。
Oracle HTTP Serverからリクエストをプロキシするサーバー・インスタンスがクラスタにある場合、「クラスタ」を選択します。
その他の場合は、「サーバー」を選択します。
Oracle HTTP Serverからリクエストをプロキシするサーバーまたはクラスタを選択します。
「構成: 一般」タブが表示されます。
「詳細」セクションまでスクロール・ダウンし、セクションを展開して「WebLogicプラグインの有効化」チェックボックスを選択します。
ステップ2で「サーバー」を選択した場合、Oracle HTTP Serverからリクエストをプロキシする他のサーバーに対してステップ3および4を繰り返します。
「保存」をクリックします。
サーバー・インスタンスを再起動したら変更が適用されます。
Fusion Middleware Controlを使用してmod_wl_ohsモジュールを構成するには、次を実行します。
2.1項に記載されている前提条件を満たしていることを確認してください。
Oracle HTTP Serverメニューで「管理」を選択します。
「管理」メニューでmod_wl_ohs構成を選択します。「mod_wl_ohs構成」ページが表示されます。
次の表に示す構成設定を指定します。
フィールド | 説明 |
---|---|
WebLogicクラスタ |
ロード・バランシング用に使用できるWebLogic Serverの一覧。サーバーまたはクラスタのリストは、「ホスト:ポート」エントリのリストです。複数のクラスタと単一サーバーの組合せを指定すると、このパラメータに戻される動的リストは、クラスタ化されたサーバーのみを戻します。 適切なクラスタかどうかが不明な場合は、検索アイコンをクリックしてすべての関連クラスタのリストを確認できます。詳細は、第2.2.1項「検索機能の使用」を参照してください。 モジュールは、すべての利用可能なサーバー間で単純なラウンドロビンを行います。このプロパティで指定するサーバー・リストは、サーバーとモジュールが保持する動的サーバー・リストの起点になります。新しく追加されたり、障害が発生したり、障害から回復したクラスタ・メンバーがあると、Oracle WebLogic Serverとこのモジュールは連携して自動的にサーバー・リストを自動的に更新します。動的クラスタ・リストの使用を無効にするには、「動的サーバー・リストをオン」フィールドを無効にします。モジュールは、Cookie、URLエンコードされたセッション、またはPOSTデータに格納されたセッションを含むHTTPリクエストを、最初にCookieを作成したクラスタ内のサーバーに転送します。 注意: 「WebLogicクラスタ」と「WebLogicホスト」は相互排他的フィールドであるため、どちらか1つのみを指定してください。両方のフィールドに値を指定した場合は、「WebLogicクラスタ」が優先されます。 |
WebLogicホスト |
HTTPリクエストの転送先のOracle WebLogic Serverホスト(またはOracle WebLogic Serverで定義された仮想ホスト名)。WebLogicクラスタを使用している場合は、 適切なサーバーかどうかが不明な場合は、検索アイコンをクリックしてすべての関連クラスタのリストを確認できます。詳細は、第2.2.1項「検索機能の使用」を参照してください。 注意: 「WebLogicホスト」と「WebLogicクラスタ」は相互排他的フィールドであるため、どちらか1つのみを指定してください。両方のフィールドに値を指定した場合は、「WebLogicクラスタ」が優先されます。 |
WebLogicポート |
モジュール(または他のサーバー)からの接続リクエストをOracle WebLogic Serverホストがリスニングするポート。(モジュールおよびOracle WebLogic Serverの間でSSLを使用している場合、このパラメータをSSLのリスニング・ポートに設定します。) |
動的サーバー・リストをオン | オフ |
「オフ」に設定すると、モジュールからプロキシされるリクエストをロード・バランシングするために使用される動的クラスタ・リストが無視され、「WebLogicクラスタ」パラメータで指定された静的リストのみが使用されます。通常、このパラメータはオンに設定する必要があります。 このパラメータをオフに設定すると、いくつかの影響があります。
|
エラー・ページ |
WebサーバーがリクエストをOracle WebLogic Serverに転送できなかった場合に表示される、ユーザー独自のエラー・ページを作成できます。 |
WebLogic一時ディレクトリ |
POSTデータ・ファイルの_wl_proxyディレクトリの場所を指定します。 |
パスまたはMIMEタイプの除外 |
このパラメータを使用すると、特定のリクエストをプロキシ処理から除外できます。 このパラメータは、Locationタグ・レベルでローカルに定義することも、グローバルに定義することもできます。このプロパティをローカルに定義した場合、グローバルなプロパティはオーバーライドされず、2つのパラメータの結合が定義されます。 |
一致式 |
この領域では、式のオーバーライドを指定します。たとえば、MIMEタイプでプロキシする場合は、次のように入力します。 *.jsp WebLogicHost=myHost|paramName=value 次の構文を使用して、一致式の新しいパラメータを定義できます。 *.jsp PathPrepend=/test PathTrim=/foo |
場所 |
この表は、場所のオーバーライドの指定に使用します。次のステップ6を参照してください。 |
必要に応じて、「一致式」フィールドに式のオーバーライドを追加します。
必要に応じて、「場所」表に場所のオーバーライドを追加します。これを行うには:
「行の追加」をクリックして、新しい行を作成します。
関連するディレクティブが有効になる基本URIを入力します。
「WebLogicクラスタ」、「WebLogicホスト」および「WebLogicポート」の各フィールドに値を入力します。自動入力をクリックしてこれらの値を自動的に入力できます(第2.2.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を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}の部分の先頭に付加されるパスを指定します。
注意: ファイル名を末尾に追加する必要がある場合は、「パスの付加」ではなく、 |
新規の行を保存するには「行の追加」を再度クリックします。
設定が正しければ、「適用」をクリックして変更を適用します。設定が正しくないか、変更を適用しない場合は、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動するには、Oracle HTTP Serverメニューから「制御」を選択し、「起動」を選択します。
mod_wl_ohsモジュールの構成が保存され、「mod_wl_ohs構成」ページに表示されます。
検索アイコンをクリックすると、選択したOracle HTTP Serverインスタンスで使用可能なクラスタまたはサーバーのリストを表示できます。検索機能を使用するには、次のことを行います。
「WebLogicクラスタ」または「WebLogicホスト」の検索アイコンをクリックします。「WebLogicクラスタの選択」または「WebLogic Serverの選択」ダイアログ・ボックスが表示されます。
使用するクラスタまたはサーバーを選択して、「OK」をクリックします。
選択したクラスタまたはサーバーの名前が、該当するフィールドに表示されます。
自動入力ボタンを使用すると、指定したベースURLの有効なWebLogic Serverとエンドポイントの位置を、WebLogicプロキシ・プラグインの「構成」画面の「ロケーション」表に簡単に追加できます。これを行うには:
「追加」をクリックして、新しい場所を追加します。
「場所」フィールドに場所名を入力します。
自動入力をクリックします。
同じ名前の場所のデータが更新され、新しい場所が表に追加されます。
WebLogicプロキシ・プラグインを手動で構成するには、mod_wl_ohs.confファイルでディレクティブを指定します。
2.1項に記載されている前提条件を満たしていることを確認してください。
次のディレクトリに配置されているmod_wl_ohs.confファイルをテキスト・エディタで開きます。
DOMAIN_HOME/config/fmwconfig/components/OHS/instances/componentName
<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へのリクエストはOracle WebLogic Serverのリスニング・ポートlocalhost:7001
の/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 path1>
WLSRequest On
WebLogicCluster host:port,host:port
,...
</Location>
</IfModule>
Oracle HTTP Serverの高可用性デプロイメントを有効にする目的などでWebLogicプロキシ・プラグインを管理対象サーバーにリンクできるように構成するには、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 例: <Location /weblogic> WLSRequest On WebLogicCluster apphost1.mycompany.com:7050,apphost2.com:7050 WLProxySSL On WLProxySSLPassThrough ON DefaultFileName index.jsp </Location> WebLogicプラグインを有効にした後に、管理サーバーを再起動する必要があります。 |
次の例は、Oracle WebLogic管理対象サーバーにリクエストをルーティングする2種類の方法を示しています。
<ifModule>
ブロックは、Apphost1およびApphost2にあるWebLogic管理対象サーバー・クラスタに*.jspで終わるリクエストを送信します。
<Location>
ブロックは、Apphost1およびApphost2にあるWebLogic管理対象サーバー・クラスタに、/weblogic
で始まるURLを持つリクエストを送信します。
Oracle HTTP ServerとOracle WebLogic Server間の一方向SSLおよび双方向SSLをサポートするようにWebLogicプロキシ・プラグインを構成する方法の詳細は、「プラグインでのSSLの使用」を参照してください。
mod_wl_ohs.confファイルで指定できるその他のディレクティブの詳細は、第7章「Webサーバー・プラグインのパラメータ」を参照してください。
『Oracle HTTP Serverの管理』のOracle HTTP Serverの起動に関する項で説明されているいずれかの方法でOracle HTTP Serverを再起動します。
WebLogicプロキシ・プラグインの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テキストに設定した場合、OraLogSeverityをTRACE:32に設定します。これらのログは、OraLogDirディレクトリに表示されます(instance-name.log
)。これがデフォルトです。
OraLogModeをapacheに設定した場合、LogLevelをdebugに設定します。ErrorLogディレクティブは、エラー・ログの出力先ファイルを示します。
Oracle HTTP Serverログの管理方法の詳細は、「Oracle HTTP Serverログの管理」を参照してください。
この項では、WebLogicプロキシ・プラグインの使用時に発生する可能性のある一般的な問題とその解決方法について説明します。内容は次のとおりです。
WebLogicプロキシ・プラグインは、バックエンドWLSサーバー/クラスタにリクエストをルーティングします。WLSはセッションは、同じクライアントからの後続のリクエストが同じWLSサーバーにルーティングされるように接続を維持します。しかし、様々な原因でWebLogicプロキシ・プラグインがWLSサーバーと通信できなくなった場合には次のことが起きます。
リクエストが単一のWebLogic Serverインスタンスにルーティングされた場合は、WebLogicプロキシ・プラグインは、ConnectTimeoutSecsとConnectRetrySecsの比によって規定される最大再試行回数に従って、その同じWebLogic Serverインスタンスへの接続を試行し続けます。すべての試行が失敗すると、HTTP 503エラー・メッセージがクライアントに戻されます。
リクエストがWebLogicクラスタにルーティングされた場合は、現在のWLSサーバーが「bad」とマークされ、そのリクエストは次に使用可能なWLSサーバーにルーティングされます。すべての試行が失敗すると、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サーバーがビジー状態でWebLogicプロキシ・プラグインからの接続リクエストにレスポンスできない場合に発生します。WLSocketTimeoutSecs
により高い値を設定することで解決する場合があります。これにより、WebLogicプロキシ・プラグインが接続リクエストに対するWLSサーバーからのレスポンスを待機する時間が長くなります。