プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Serverプロキシ・プラグインの使用
12c (12.1.3)
E56226-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

2 Oracle HTTP Server用プラグインの構成

この章では、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構成ファイルを手動で編集することで構成できます。

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

2.1 サポート・ノート

Oracle HTTP Server用Oracle WebLogic Serverプロキシ・プラグインは、WebSocketアプリケーションのフロントエンドとなることができるようになりました。

2.2 プラグインの構成の前提条件

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プラグインの有効化」パラメータを設定する必要があります。

    1. Oracle WebLogic Server管理コンソールにログインします。

    2. 「ドメイン構造」ペインで「環境」ノードを開きます。

      • Oracle HTTP Serverからリクエストをプロキシするサーバー・インスタンスがクラスタにある場合は、「クラスタ」を選択します。

      • それ以外の場合は、「サーバー」を選択します。

    3. Oracle HTTP Serverからリクエストをプロキシするサーバーまたはクラスタを選択します。

      「構成」→「一般」タブが表示されます。

    4. 下にスクロールして「詳細」セクションを開き、「WebLogicプラグインの有効化」ドロップダウン・リストから「はい」を選択します。WebLogicプラグインをWebLogic Serverと使用する場合には、「はい」を選択する必要があります。詳細は、第2.2.1項「「WebLogicプラグインの有効化」パラメータの理解」を参照してください。

    5. 手順2「サーバー」を選択した場合は、Oracle HTTP Serverからのリクエストをプロキシするその他のサーバーに対して手順34を繰り返します。

    6. 「保存」をクリックします。

    変更内容を有効にするには、サーバー・インスタンスを再起動する必要があります。

2.2.1 「WebLogicプラグインの有効化」パラメータの理解

「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プラグインの有効化」に選択した値を継承します。

2.3 「Fusion Middleware Controlを使用したプラグインの構成」

Fusion Middleware Controlを使用してmod_wl_ohsモジュールを構成するには、次の手順を実行します。

  1. 第2.2項で示された前提条件を満たしていることを確認します。

  2. 「Oracle HTTP Server」メニューから「管理」を選択します。

  3. 「管理」メニューで「mod_wl_ohs構成」を選択します。「mod_wl_ohs構成」ページが表示されます。

    mod_wl_ohs.gifの説明が続きます
    図「mod_wl_ohs.gif」の説明

  4. 次の表に示す構成設定を指定します。

    フィールド 説明
    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クラスタ・パラメータで指定された静的リストのみを使用します。通常は、このパラメータをオンに設定してください。

    このパラメータをオフに設定した場合、次のような影響があります。

    • 静的リスト内の1つ以上のサーバーが失敗した場合、モジュールは終了したサーバーへの接続を試行し無駄な時間を費やすことがあるため、パフォーマンスが低下します。

    • クラスタに新しいサーバーを追加した場合、このパラメータを再定義しないかぎりモジュールは新しいサーバーへリクエストをプロキシ設定できません。Oracle WebLogic Serverは、新しいサーバーがクラスタの一部になると、これらのサーバーを動的サーバー・リストへ自動的に追加します。

    エラー・ページ WebサーバーでリクエストをOracle WebLogic Serverに転送できない場合に表示されるよう、独自のエラー・ページを作成できます。
    WebLogic一時ディレクトリ ポスト・データ・ファイル用の_wl_proxyディレクトリの場所を指定します。
    パスまたはMIMEタイプの除外 このパラメータを使用すると、特定のリクエストをプロキシ処理から除外できます。

    このパラメータは、グローバルに定義することも、「場所」タグ・レベルでローカルに定義することもできます。このプロパティをローカルに定義した場合、グローバルなプロパティがオーバーライドされるのではなく、2つのパラメータの集合が定義されます。

    一致式 このリージョンは、式のオーバーライド指定に使用します。たとえば、MIMEタイプでプロキシしている場合には、次のように入力できます。
    *.jsp WebLogicHost=myHost|paramName=value
    

    次の構文を使用することで、「一致式」の新しいパラメータを定義できます。

    *.jsp PathPrepend=/test PathTrim=/foo
    
    ロケーション この表は、ロケーションのオーバーライドを指定するために使用します。この後の手順6を参照してください。

  5. 必要に応じて、「一致式」フィールドに、式のオーバーライドを追加します。

  6. 必要に応じて、「ロケーション」表に、ロケーションのオーバーライドを追加します。このための手順は、次のとおりです。

    1. 「行の追加」をクリックして新規行を作成します。

    2. 関連付けられているディレクティブが有効になる、ベースURIを入力します。

    3. 「WebLogicクラスタ」「WebLogicホスト」および「WebLogicポート」フィールドにすべて入力します。「自動入力」をクリックすることで、これらのフィールドに自動入力できます(第2.3.2項「自動入力機能の使用」を参照)。

    4. 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を含むよう変更する必要があります。「パスの切捨て」と「パスの付加」を併用することで、このパスを変更できます。

    5. RFCの仕様に従う、「パスの付加」フィールドのURLの汎用構文は次のとおりです。

      [PROTOCOL]://[HOSTNAME]:{PORT}/{PATH}/{FILENAME};{PATH_PARAMS}/{QUERY_STRING}...
      

      「パスの付加」は、「パスの切捨て」の値が切り捨てられてからリクエストがWebLogic Serverに転送されるまでの間に、モジュールによって元のURLの{PATH}部分の先頭に付加されるパスを指定します。


      注意:

      ファイル名を付加する必要がある場合は、「パスの付加」ではなくDefaultFileNameモジュール・パラメータを使用してください。

    6. 再度「行の追加」をクリックして、新しい行を保存します。

  7. 設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。

  8. Oracle HTTP Serverメニューで「制御」「起動」を選択し、Oracle HTTP Serverを再起動します。

mod_wl_ohsモジュール構成が保存され、「mod_wl_ohs構成」ページに表示されます。

2.3.1 検索機能の使用

検索アイコン拡大鏡をクリックすることで、選択したOracle HTTP Serverインスタンスで使用可能なクラスタまたはサーバーのリストを表示できます。検索機能を使用する手順は、次のとおりです。

  1. 「WebLogicクラスタ」または「WebLogicホスト」の検索アイコンをクリックします。「WebLogicクラスタの選択」または「WebLogic Serverの選択」ダイアログ・ボックスが表示されます。

  2. 使用するクラスタまたはサーバーを選択して、「OK」をクリックします。

選択したクラスタまたはサーバーの名前が、該当するフィールドに表示されます。

2.3.2 自動入力機能の使用

「自動入力」ボタンを使用することで、指定したベースUIRLに対する有効なWebLogic Serverおよびエンドポイントの場所をOracle WebLogic Serverプロキシ・プラグインの「構成」画面の「ロケーション」表に簡単に追加できます。このための手順は、次のとおりです。

  1. 「追加」をクリックして、新しいロケーションを追加します。

  2. 「ロケーション」フィールドにロケーション名を入力します。

  3. 「自動入力」をクリックします。

同一名の場所のデータは更新され、新しい場所は表に追加されます。

2.4 手動でのプラグインの構成

Oracle WebLogic Serverプロキシ・プラグインを手動で構成するには、mod_wl_ohs.confファイルにディレクティブを指定します。

  1. 第2.2項で示された前提条件を満たしていることを確認します。

  2. 次のディレクトリに配置されているmod_wl_ohs.confファイルをテキスト・エディタで開きます。

    DOMAIN_HOME/config/fmwconfig/components/OHS/instances/componentName

  3. <IfModule weblogic_module>要素を見つけます。

  4. 次に示すように、構成ファイルの<IfModule weblogic_module>要素内にディレクティブを追加します。


    注意:

    事前定義済の<IfModule weblogic_module>要素内でディレクティブを指定することをお薦めします。

    事前定義済の<IfModule weblogic_module>要素の外や、追加された<IfModule weblogic_module>要素内、またはmod_wl_ohs.conf以外の構成ファイル内でディレクティブを指定した場合、Oracle WebLogic Serverプロキシ・プラグインは機能したとしても、Fusion Middleware Controlで表示されるモジュールの構成状態は、mod_wl_ohs.conf構成ファイル内で指定したディレクティブと矛盾する可能性があります。


    • 単一の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サーバー・プラグインのパラメータ」を参照してください。

  5. 『Oracle HTTP Serverの管理』のOracle HTTP Serverの起動に関する項で説明されているいずれかの方法でOracle HTTP Serverを再起動します。

2.5 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のログの管理に関する項を参照してください。

2.6 Oracle WebLogic Serverプロキシ・プラグインの実装に関するトラブルシューティング

この項では、Oracle WebLogic Serverプロキシ・プラグインの使用時に発生する可能性のある一般的な問題とその解決方法について説明します。次のトピックが含まれます:

2.6.1 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.

2.6.2 CONNECTION_REFUSEDエラー

ストレス条件下では、いくつかのリクエストが失敗し、エラー・ログ・ファイルに次のエラーが記録される場合があります。

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エラーを減らすためのヒント」で説明されている手順に従ってください。

2.6.3 NO_RESOURCESエラー

ストレス条件下では、いくつかのリクエストが失敗し、エラー・ログ・ファイルに次のエラーが記録される場合があります。

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サーバーからのレスポンスを待機する時間は長くなります。