Balanceo de cargas con WebSphere

<< Click to Display Table of Contents >>

Navigation:  Bizagi Engine > Administración del Sistema Bizagi > Configuración del servidor Bizagi > Configuración de Bizagi Engine JEE > Configuración de la arquitectura del sistema > Configuración del balanceo de cargas >

Balanceo de cargas con WebSphere

applies_JEE

La siguiente sección ilustra un ejemplo donde se configura balanceo de cargas para el servidor de Bizagi.

Este ejemplo aplica para la edición Enterprise JEE donde se utiliza configuración de WebSphere en clúster y el balanceo de cargas a través de Apache HTTP Server.

Por lo tanto y antes de continuar, asegúrese de haber configurado su clúster de WebSphere como se describe en Configuración de WebSphere en clúster.

 

 

Tenga en cuenta que Bizagi soporta tanto balanceadores en hardware o software, y se recomienda el uso de un balanceador de cargas por hardware (p.e F5). Para más información sobre las directrices del balanceo de cargas, consulte Configurar el balanceo de cargas.

 

 

Ejemplo

Para ilustrar la configuración de un balanceo de cargas, en esta sección se describen los cambios que se deben realizar utilizando los servicios de Apache HTTP Server.

Por lo tanto, en el siguiente ejemplo se parte del uso de un servidor Web con una instancia de Apache HTTP Server.

 

La descarga de este servidor se puede hacer directamente desde la página oficial de Apache HTTP Server donde se selecciona la última versión disponible de acuerdo a su plataforma.

En este ejemplo, se toma la versión 2.2 de Apache (httpd-2.2).

La ruta donde se instala Apache HTTP Server será referenciada a partir de este momento como <APACHE_HOME>.

 

SettingBizagiInternet00_InstallingApache

 

 

Configurar el balanceador para que contemple los múltiples nodos del clúster.

En nuestro ejemplo que utiliza Apache HTTP Server y WebSphere, se especifica que nodos hacen parte de la solución al editar el archivo de configuración <APACHE_HOME>\conf\httpd.conf

 

Para ello, asegúrese de tener habilitados los Experto requeridos como se describe a continuación.

 

Incluya las siguientes líneas (o revise que estén habilitadas y no comentareadas).

Para el manejo de balanceo de cargas:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule headers_module modules/mod_headers.so

LoadModule deflate_module modules/mod_deflate.so

 

 

Incluya la siguiente configuración del módulo deflate para utilizar la compresión HTTP y las optimizaciones en tráfico y desempeño de su aplicación (especialmente para dispositivos móviles):

# Method 1: Only compress specified content type

<Location />

<IfModule mod_deflate.c>

# compress content with type html, text, and css

AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript text/json application/javascript text/xml

<IfModule mod_headers.c>

# properly handle requests coming from behind proxies

Header append Vary User-Agent

</IfModule>

</IfModule>

</Location>

# deflate.log, log compression ratio on each request

#<IfModule mod_deflate.c>

# DeflateFilterNote Input instream

# DeflateFilterNote Output outstream

# DeflateFilterNote Ratio ratio

# LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate

# CustomLog logs/deflate.log deflate

#</IfModule>

# Properly handle old browsers that do not support compression

<IfModule mod_deflate.c>

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4\.0[678] no-gzip

BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

</IfModule>

 

Adicione las siguientes líneas dentro de la definición del VirtualHost, de la siguiente manera:

<VirtualHost *:80>

 ProxyRequests OFF

 ServerName [Servidor_Balanceador]:[Puerto_Balanceador]

 Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

 <Proxy balancer://[Nombre_cluster]>

   BalancerMember http://[Nombre_Nodo1]:[Puerto1] route=1

   BalancerMember http://[Nombre_Nodo2]:[Puerto2] route=2

   Order Deny,Allow

   Deny from none

   Allow from all

   ProxySet lbmethod=byrequests

   ProxySet stickysession=ROUTEID

 </Proxy>

 <Location /balancer-manager>

   SetHandler balancer-manager

   Order deny,allow

   Allow from localhost

 </Location>

 ProxyPass /balancer-manager !

 ProxyPass /BizAgi-war/ balancer://[Nombre_cluster]/BizAgi-war/

 ProxyPassReverse /BizAgi-war/ http://[Nombre_Nodo1]:[Puerto1] route=1

 ProxyPassReverse /BizAgi-war/ http://[Nombre_Nodo2]:[Puerto2] route=2

</VirtualHost>

 

Considere:

[Servidor_Balanceador]: Nombre del servidor (o IP) que ejerce el balanceo (en este ejemplo será el servidor local que tiene instalado Apache).

[Puerto_Balanceador]: Número de puerto sobre el cual atiende el servicio balanceador.

[Nombre_cluster]: Nombre del servidor (o IP) que representa el clúster.

[Nombre_Nodo1]: Nombre del servidor (o IP) donde se encuentra el Nodo1 que hace parte del clúster.

[Puerto1]: Número de puerto sobre el cual atiende el servicio del Nodo1.

[Nombre_Nodo2]: Nombre del servidor (o IP) donde se encuentra el Nodo2 que hace parte del clúster.

[Puerto2]: Número de puerto sobre el cual atiende el servicio del Nodo2.

Nótese que la línea BalancerMember http://[Nombre_NodoN]:[PuertoN] route=N deberá agregarse para cada miembro del clúster involucrado en el balanceo, al igual que la línea ProxyPassReverse /BizAgi-war/ http://[Nombre_NodoN]:[PuertoN] route=N.

 

En el siguiente ejemplo vemos que se tiene balanceo de cargas para 2 servidores: MyServer01 y MyServer02 (por el puerto 9082 y 9083 respectivamente).

La definición completa del VirtualHost en Apache de este ejemplo es:

<VirtualHost *:80>

 ProxyRequests OFF

 ServerName MyApacheServer:80

 Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

 <Proxy balancer://WASCluster>

   BalancerMember http://MyServer01:9082 route=1

   BalancerMember http://MyServer02:9083 route=2

   Order Deny,Allow

   Deny from none

   Allow from all

   ProxySet lbmethod=byrequests

   ProxySet stickysession=ROUTEID

 </Proxy>

 <Location /balancer-manager>

   SetHandler balancer-manager

   Order deny,allow

   Allow from localhost

 </Location>

 ProxyPass /balancer-manager !

 ProxyPass /BizAgi-war/ balancer://WASCluster/BizAgi-war/

 ProxyPassReverse /BizAgi-war/ http://MyServer01:9082/BizAgi-war/

 ProxyPassReverse /BizAgi-war/ http://MyServer02:9083/BizAgi-war/

</VirtualHost>

 

 

note_pin

Bizagi soporta cualquier algoritmo que se configure para el balanceo de cargas (esta configuración se realiza de manera independiente), y se requiere que se habilite el uso de sesiones pegajosas (sticky sessions) como se observa en la línea

ProxySet stickysession=ROUTEID

 

Una vez haya editado la información, guarde los cambios y cierre el archivo.

 

Verificar la configuración

Para revisar que el balanceador de Apache esté operacional y que los nodos involucrados estén listos para atender las peticiones, ingrese la siguiente URL en un navegador:

http://[Servidor_Balanceador]/balancer-manager

Allí se verá el status de los nodos:

 

 

LoadBalance_WebSphere03

 

Configurar el Servidor de Aplicaciones JEE para soportar el balanceo

Asegúrese que el Servidor de Aplicaciones JEE soporte el balanceo de cargas en la aplicación.

Esto puede implicar la instalación de algunos plug-ins dependiendo del Servidor de Aplicaciones JEE y su versión.

En este ejemplo de WebSphere usando Apache HTTP Server, realice lo siguiente:

 

Acceda a la Consola de administración, y vaya a la sección de Servidores (Servers) y expanda el item de tipos de servidores (Server types).

Dé clic sobre Web servers y sobre el botón Nuevo (New) para registrar el servidor Web que balancea las cargas.

 

LoadBalance_WebSphere01

 

Ingrese la siguiente información:

oSelect node: Seleccione el primer nodo de su clúster.

oServer name: Ingrese un nombre para identificar el servidor.

Ingrese ApacheLoadBalancer.

oType: Seleccione Apache HTTP Server de la lista desplegable.

 

Dé clic en Siguiente (Next).

 

En la selección de plantillas, puede dejar los valores por defecto y dar clic en Siguiente (Next).

En la siguiente ventana de definición de ubicación, ingrese la siguiente información:

oPort (Puerto):  Ingrese el valor del puerto por el cual atiende el servidor Web que balancea cargas.

Para nuestro ejemplo con Apache HTTP Server, el puerto es 80.

oPlug-in installation location (Ubicación de la ruta de instalación del plug-in): Ingrese cualquier ubicación en disco para la instalación del plug-in que no contenga espacios.

Puede aceptar la ruta por defecto.

oApplication mapping to the Web server (Aplicación que se mapea en el servidor Web): Seleccione All de la lista desplegable.

 

LoadBalance_WebSphere02

 

Dé clic en Siguiente (Next).

Verifique en el resumen de la configuración que la información sea la correcta y dé clic en Finalizar (Finish) .

 

 

De regreso en la lista de Web servers, marque la casilla del recientemente creado y dé clic en el botón de Generar plug-in (Generate plug-in).

Una vez se complete la acción, dé clic sobre el botón de propagar los cambios (Propagate plug-in):

 

LoadBalance_WebSphere03

 

Con ello, esta configuración aplicará a todos los nodos del clúster.

Finalmente, asegúrese de dar clic en Guardar (Save) para aplicar los cambios.