Balanceamiento de carga mediante Apache con mod_proxy
Hola amigos:
Después de mucho investigar, preguntar y estudiar pude montar un sistema con balanceo de carga con apache con front-end y glassfish 3.1 como servidores de aplicaciones. Les explico como lo hice. Debo indicarles que acá utilizo http, mediante el puerto 80. Https, lo dejaré para otra ocasión.
He aquí los pasos que seguí:
Explicación del módulo Proxy para balanceo de carga
La idea es implementar una solución que tenga como front-end un apache donde lleguen las peticiones de utilización de otras aplicaciones que se encontrarán en servidores de aplicaciones que estarán como rear end, o sea, atrás con otra IP.
Para esta implementación previamente se debe haber cargado el Centos con al menos los siguientes módulos cargados.
1.- Para el balanceamiento de carga sin SSL, se debe hacer lo siguiente:
a) Configurar archivo httpd.conf del apache
Este archivo se encuentra en /etc/httpd/conf/. El contiene las principales directivas de configuración . Para ello se debe verificar entre otras cosas lo siguiente:
Que se encuentren dentro de este archivo cargados los siguientes módulos:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
De la misma forma si se encuentra cargado el módulo
LoadModule deflate_module modules/mod_deflate.so
Este debe ser deshabilitado mediante (#) a su inicio.
También en la línea 256, es conveniente descomentar el ServerName y poner su nombre o IP.
También se debe descomentar algunas líneas respecto al Proxy quedando de la siguiente manera:
#ProxyRequests On
#
# Order deny,allow
Deny from all
Allow from all
#
# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
#
#ProxyVia On
#
# To enable a cache of proxied content, uncomment the following lines.
# See for more details.
#
#
# CacheEnable disk /
# CacheRoot "/var/cache/mod_proxy"
#
#
# End of proxy directives.
Con estos cambios, se está en condiciones de poder configurar el balanceamiento y el redericcionamiento, el que se puede hace en este mismo archivo (al final) o en otro que debe quedar en el subdirectorio (/etc/httpd/conf.d) y que también debe quedar con extensión .conf)
En mi caso creé un archivo denominado prueba.txt, donde puse lo siguinte:
# Se marcan las conexiones con una cookie con el nombre del servidor donde van
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
# Configuracion balancearod
#Se marcan los servidores con el routeid
BalancerMember loadfactor=1 route=server1
ProxySet stickysession=ROUTEID
ServerName 192.152.18.128
# CustomLog /var/log/httpd/prueba.log
ErrorLog /var/log/httpd/error-prueba.log
### Ejemplo de configuracion para administracion de nodos
SetHandler balancer-manager
# Order Deny,Allow
# Deny from all
Allow from all
###
ProxyPass / balancer://cluster/
# stickysession=JSESSIONID|jsessionid nofailover=on scolonpathdelim=on
# ProxyPassReverse / balancer://cluster/
ProxyPassReverse /balanceo/
ProxyPreserveHost on
CustomLog /var/log/httpd/acces-https-prueba.log combined
ErrorLog /var/log/httpd/error-https.log
### En el caso que quieran redireccio
#Redirect Permanent /
Con ese archivo debe funcionar el asunto, en este caso indica que la aplicación que se llama balanceo (que se encuentra instalada en la ip 192.168.152.131) será accesada mediante la IP 192.168.152.128. En el lugar donde dice BalancerMember, se puede agregar otras IP pero con la misma configuración y la misma aplicación cargada para que pueda ser ejecutada a través de APACHE.
También debo agregar que durante un tiempo no funcionó la aplicación la cual daba el siguiente error:
(13)Permission denied: proxy: HTTP: attempt to connect to 192.168.152.131:8080 (192.168.152.131) failed
Este error se solucionó utilizando una info entregada por el sitio web
.
Suerte
- EsteroYoli's blog
- Inicie sesión o regístrese para enviar comentarios
Por si sirve de algo, el
Por si sirve de algo, el siguiente paso es que los Tomcat de detras estén también conectados para tener session-failover. Sobre ese particular escribí hace un tiempo:
Siempre es bueno
Recibir información que nos puede ayudar.
Gracias.