フェイルオーバーをサポートするためのロード・バランサの構成

複数のEssbaseインスタンスをインストールし、フェイルオーバーをサポートするように構成するつもりである場合は、フロントエンドのロード・バランサが必要です。

ロード・バランサとして検討できるオプションの1つに、Oracle HTTP Serverがあげられます。なぜなら、Oracle HTTP ServerはWebLogicと統合され、Oracle Fusion MiddlewareのWebサービスを提供するためです。

もう1つのオプションは、Apache HTTPD Serverです。

ノート:

/aps/SmartViewというURLを使用してSmart View経由で接続する場合は、このURLを変更する必要があります。新しいEssbase Smart View接続URLへのリダイレクトを参照してください。あるいは、Webサーバーで新規URLへのリダイレクトを構成できます。Oracle HTTP Server (OHS)またはApache HTTPD Serverを使用する場合は、このトピックの説明に従って、Oracle HTTP Server構成の変更時にURLをリダイレクトします。

Oracle HTTP ServerまたはApache HTTPD Server

  1. まず、Apache HTTPD ServerまたはOracle HTTP Serverをインストールおよび構成します
  2. 次に、Oracle HTTP Serverインストール環境のOHSドメイン・ルート下でmod_wl_ohs.confファイルを見つけます。

    例:

    <OHS>/oracle/user_projects/domains/SOHSDomain/config/fmwconfig/components/OHS/ohs1/mod_wl_ohs.conf

    (OHSはOracle HTTP Serverインストールのホームの場所です)

  3. mod_wl_ohs.confに適切な「weblogic_module」エントリを挿入します。easeasconsoleの場所のエントリを含める必要はありません。ただし、Essbase Administration Servicesを使用するようにホスト1でEssbaseが構成されている場合を除きます。
    <IfModule weblogic_module> 
    ConnectTimeoutSecs 10
    ConnectRetrySecs 2
    DebugConfigInfo ON
    WLSocketTimeoutSecs 2
    WLIOTimeoutSecs 300
    Idempotent ON
    FileCaching ON
    KeepAliveSecs 20
    KeepAliveEnabled ON
    DynamicServerList ON
    WLProxySSL OFF
    </IfModule>
    <Location /essbase>
    SetHandler weblogic-handler
    WebLogicCluster hostname:managed_server_port
    Debug ALL
    KeepAliveSecs 20
    KeepAliveEnabled ON
    DebugConfigInfo ON
    </Location>
    
    <Location /eas>
    SetHandler weblogic-handler
    WebLogicCluster hostname:eas_managed_server_port
    Debug ALL
    KeepAliveSecs 20
    KeepAliveEnabled ON
    DebugConfigInfo ON
    </Location>
    
    <Location /easconsole>
    SetHandler weblogic-handler
    WebLogicCluster hostname:eas_managed_server_port
    Debug ALL
    KeepAliveSecs 20
    KeepAliveEnabled ON
    DebugConfigInfo ON
    </Location>
    
  4. mod_wl_ohs.confに挿入したテキストを次のように編集します。
    1. <Location /Essbase>を編集して、hostnameをホスト1のホスト名に置き換え、managed_server_portをホスト1のEssbase WebLogic管理対象サーバー・ポートに置き換えます。コンマ区切りの形式を使用して、クラスタに含める予定の追加のEssbase管理対象サーバー・ノードをそれぞれ追加します。

      例:

      たとえば、Essbaseホスト1がhostname1:managed_server_port1で実行され、ホスト2がhostname2:managed_server_port2で実行されているとします。

      これらのサーバーをコンマ区切りの形式で指定するには、次のように入力します(スペースは追加しないでください)。

      hostname1:managed_server_port1,hostname2:managed_server_port2

      どのホスト名にもhttpまたはhttpsの接頭辞を追加しないでください。

    2. <Location /eas>を編集して、hostnameをホスト1のホスト名に置き換え、eas_managed_server_portをホスト1のEssbase Administration Services WebLogic管理対象サーバー・ポートに置き換えます。
    3. <Location /easconsole>を編集して、hostnameをホスト1のホスト名に置き換え、eas_managed_server_portをホスト1のEssbase Administration Services WebLogic管理対象サーバー・ポートに置き換えます。
  5. 構成を保存します。
  6. Oracle HTTP Serverを再起動します。
    1. Oracle HTTP Serverを停止する手順は、次のとおりです。
      1. OHSドメイン・ルート下のbinディレクトリに移動します。

        cd ./user_projects/domains/SOHSDomain/bin/
      2. 次のスクリプトを実行してOHSサーバー・コンポーネントを停止します。

        ./stopComponent.sh ohs1
      3. バックグラウンドで、次のスクリプトを実行してノード・マネージャを停止します。

        nohup ./stopNodeManager.sh &
      4. パスワードの入力を求めるプロンプトで、インストール時に入力したパスワードを入力します。
    2. Oracle HTTP Serverを起動するには:
      1. OHSドメイン・ルート下のbinディレクトリに移動します。

        cd ./user_projects/domains/SOHSDomain/bin/
      2. バックグラウンドで、次のスクリプトを実行してノード・マネージャを起動します。

        nohup ./startNodeManager.sh &
      3. 次のスクリプトを実行してOHSサーバー・コンポーネントを起動します。

        ./startComponent.sh ohs1
      4. パスワードの入力を求めるプロンプトで、インストール時に入力したパスワードを入力します。

    Oracle HTTP ServerのSSL構成については、mod_wl_ohsの構成を参照してください。

Apache HTTPD Serverを使用したSSLオフロードのサンプル・コード

ここでは、Apache HTTPD Serverを使用したSSLオフロードのサンプルHTTP構成を示します。この構成では、EssbaseへのHTTPSオフロードにSSLのデフォルト・ポート443 (または選択した別のポート)を使用しています。


#
# Macro file for the Essbase proxy settings
#

<Macro EssbaseProxy $TargetUrl>
ProxyPreserveHost On
ProxyPassReverse  / $TargetUrl/
ProxyErrorOverride Off

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} ^.+$ [NC]
RewriteRule ^/$                      
%{HTTP:X-Forwarded-Proto}://%{HTTP_HOST}/essbase/jet/ [L,R]
RewriteCond %{HTTPS} on
RewriteRule ^/$                       https://%{HTTP_HOST}/essbase/jet/ [L,R]RewriteRule ^/$                       http://%{HTTP_HOST}/essbase/jet/ [L,R]

RewriteCond %{HTTP:X-Forwarded-Proto} ^.+$ [NC]
RewriteRule ^/essbase(/)?$            
%{HTTP:X-Forwarded-Proto}://%{HTTP_HOST}/essbase/jet/ [L,R]
RewriteCond %{HTTPS} on
RewriteRule ^/essbase(/)?$            https://%{HTTP_HOST}/essbase/jet/ [L,R]RewriteRule ^/essbase(/)?$            http://%{HTTP_HOST}/essbase/jet/ [L,R]

# jsession redirect issue
RewriteCond %{HTTP:X-Forwarded-Proto} ^.+$ [NC]
RewriteRule ^/essbase/jet(;.*)?$      
%{HTTP:X-Forwarded-Proto}://%{HTTP_HOST}/essbase/jet/ [L,R]
RewriteCond %{HTTPS} on
RewriteRule ^/essbase/jet(;.*)?$      https://%{HTTP_HOST}/essbase/jet/ [L,R]RewriteRule ^/essbase/jet(;.*)?$      http://%{HTTP_HOST}/essbase/jet/ [L,R]

# Logout url
RewriteCond %{HTTP:X-Forwarded-Proto} ^.+$ [NC]
RewriteRule ^/essbase/jet/logout.html
%{HTTP:X-Forwarded-Proto}://%{HTTP_HOST}/essbase/jet/ [L,R]
RewriteCond %{HTTPS} on
RewriteRule ^/essbase/jet/logout.html https://%{HTTP_HOST}/essbase/jet/ [L,R]RewriteRule ^/essbase/jet/logout.html http://%{HTTP_HOST}/essbase/jet/ [L,R]

# Support redirect_uri logout for virtual hosts
RewriteCond %{QUERY_STRING} ^logout=$
RewriteCond %{HTTP:X-Forwarded-Proto} ^.+$ [NC]
RewriteRule ^/essbase/redirect_uri$
%{HTTP:X-Forwarded-Proto}://%{HTTP_HOST}/essbase/redirect_uri?logout=%{HTTP:X-Forwarded-Proto}://%{HTTP:X-Forwarded-Host}/essbase/jet/logout.html [L,R]
RewriteCond %{QUERY_STRING} ^logout=$
RewriteCond %{HTTPS} on
RewriteRule ^/essbase/redirect_uri$
https://%{HTTP_HOST}/essbase/redirect_uri?logout=https://%{HTTP_HOST}/essbase/jet/logout.html [L,R]
RewriteCond %{QUERY_STRING} ^logout=$
RewriteRule ^/essbase/redirect_uri$
http://%{HTTP_HOST}/essbase/redirect_uri?logout=http://%{HTTP_HOST}/essbase/jet/logout.html [L,R]

# Set weblogic specific headers
<If "%{HTTP:X-Forwarded-Proto} == 'https' || %{HTTPS} == 'on'">
  RequestHeader set WL-Proxy-SSL "true"
  RequestHeader set IS_SSL       "ssl"
</If>

<Location "/">
   Options -Indexes
   SetOutputFilter DEFLATE
   SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
</Location>

<Location "/essbase">
   ProxyPass "$TargetUrl/essbase"
</Location>

<Location "/essbase/redirect_uri">
   ProxyPass "!"
</Location>

<Location "/weblogic/ready">
   ProxyPass "$TargetUrl/weblogic/ready"
</Location>

</Macro>