Configurare un load balancer per supportare il failover

Se si prevede di installare e configurare più istanze di Essbase, per supportare il failover è necessario un load balancer front-end.

Un'opzione da considerare per un load balancer è Oracle HTTP Server, poiché è integrato con WebLogic e fornisce servizi Web per Oracle Fusion Middleware.

Un'altra opzione è il server HTTPD Apache.

Nota

Se ci si connette tramite Smart View, utilizzando l'URL /aps/SmartView, è necessario modificare l'URL. Fare riferimento alla sezione Reindirizza a nuovo URL connessione Smart View Essbase. In alternativa, è possibile configurare il reindirizzamento al nuovo URL sul server Web. Se si utilizza Oracle HTTP Server (OHS) o Apache HTTPD Server, reindirizzare l'URL durante la modifica della configurazione di Oracle HTTP Server, come descritto in questo argomento.

Oracle HTTP Server o Apache HTTPD Server

  1. Installare e configurare Oracle HTTP Server o Apache HTTPD Server. Vedere Installa Oracle HTTP Server.
  2. Individuare quindi il file mod_wl_ohs.conf nella root del dominio OHS nell'installazione di Oracle HTTP Server.

    Esempio:

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

    (dove OHS è la posizione home dell'installazione di Oracle HTTP Server).

  3. Inserire le voci weblogic_module appropriate in mod_wl_ohs.conf.
    <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>
    
    
  4. Modificare <Location /Essbase> e sostituire hostname con il nome host Host 1 e managed_server_port con la porta del server gestito WebLogic Essbase dell'host 1. Utilizzando un formato CSV (Comma-Separated Format), aggiungere ogni nodo server gestito Essbase aggiuntivo che si prevede di includere nel cluster.

    Esempio:

    Si supponga che l'host Essbase 1 venga eseguito su hostname1:managed_server_port1 e l'host 2 venga eseguito su hostname2:managed_server_port2.

    Per specificare i server in formato separato da virgole, digitare (senza spazi aggiunti):

    hostname1:managed_server_port1,hostname2:managed_server_port2

    Non aggiungere il prefisso http o https a nessun nome host.

  5. Salvare la configurazione.
  6. Riavviare Oracle HTTP Server.
    1. Per arrestare Oracle HTTP Server, procedere come segue:
      1. Passare alla directory bin sotto la radice del dominio OHS.

        cd ./user_projects/domains/SOHSDomain/bin/
      2. Eseguire lo script per arrestare il componente server OHS.

        ./stopComponent.sh ohs1
      3. In background, eseguire lo script per arrestare Node Manager.

        nohup ./stopNodeManager.sh &
      4. Al prompt della password, immettere la password immessa durante l'installazione.
    2. Per avviare Oracle HTTP Server, procedere come segue:
      1. Passare alla directory bin sotto la radice del dominio OHS.

        cd ./user_projects/domains/SOHSDomain/bin/
      2. In background, eseguire lo script per avviare Node Manager.

        nohup ./startNodeManager.sh &
      3. Eseguire lo script per avviare il componente server OHS.

        ./startComponent.sh ohs1
      4. Al prompt della password, immettere la password immessa durante l'installazione.

    Per la configurazione SSL di Oracle HTTP Server, vedere Configura mod_wl_ohs.

Codice di esempio per l'offload SSL mediante il server HTTPD Apache

Di seguito è riportata una configurazione HTTP di esempio dell'offload SSL mediante Apache HTTPD Server, che utilizza la porta predefinita SSL 443 (o qualsiasi altra porta selezionata) per il reindirizzamento dell'offload HTTPS a Essbase.


#
# 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>