
BALANCEADOR DE CARGA EN APACHE
Un balanceador de carga es como un 'director de tráfico' para tus servidores. Distribuye las solicitudes de los usuarios de manera uniforme, evitando que un solo servidor se sobrecargue permitiendo que el sitio web esté siempre disponible, y ser capaz de servir todas las peticiones a la máxima velocidad posible.
Los balanceadores de carga aseguran que el tráfico web no se concentre en un sólo servidor, el cual eventualmente acaba saturándose debido a las miles de peticiones que recibe de los diferentes clientes. A su vez, esa saturación desemboca en extrema lentitud de los sitios web o simplemente, que el mismo no se encuentre disponible y nos devuelva un error. De hecho, el papel de balanceador de carga lo puede cumplir un servidor web en sí. En vez de estar invirtiendo constantemente en la adquisición de un sólo servidor de cada vez mayor capacidad, se podría optar por dos o más servidores de prestaciones idénticos con el fin de balancear el tráfico en cada uno de ellos.
Para crear un balanceador de carga en apache hay que habilitar ciertos módulos de apache y y luego crear el balanceador de carga.
En mi caso he tenido que habilitar los siguientes módulos de Apache:
- mod_lbmethod_bybusyness
- mod_lbmethod_byrequests
- mod_lbmethod_bytraffic
- mod_lbmethod_heartbeat
- mod_proxy
- mod_proxy_ajp
- mod_proxy_balancer
- mod_proxy_html
- mod_proxy_http
- mod_xml2enc
NOTA: Yo esta prueba lo he hecho en Windows con Xampp. Haace una copia de la configuracón de los ficheros de Apache por si acaso. Al principio cuando habilitaba los módulos que me decían las páginas donde consultaba me daba error al reinicar aoache, me daba error por dependencias. Así que recomiendo que os guardeis dicha configuración para poder volver atrás./p>
Una vez habilitados los módulos necesarios hay que crear el balanceador de carga, yo lo tengo configurado en el fichero de apache donde se crean los virtual hosts. Ahora entenderéis el porque.
Antes de configurar el balanceador de carga voy a poner el virtual host de dos sitios que he creado para poder probar en local:
<VirtualHost *:80>
DocumentRoot C:\balanceador\balanceador1
ServerName balanceador1.local
ErrorLog "logs/balanceador1.log"
CustomLog "logs/balanceador1.log" common
<Directory "C:\xampp\balanceador\balanceador1">
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\balanceador\balanceador2"
ServerName balanceador2.local
ErrorLog "logs/balanceador2.log"
CustomLog "logs/balanceador1.log" common
<Directory "C:\xampp\balanceador\balanceador2">
Options All
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
He creado dos sites balanceador1 y balanceador2, que contienen un fichero index.php que pone echo 'balanceador1' y echo 'balanceador2' respectivamente para cuando se ejecute el balanceador sepa en que "servidor" balanceado está. Luego hay que añadir esto al fichero hosts: 127.0.0.1 balanceador1 y 127.0.0.1 balanceador2
Código para crear el balanceador:
<VirtualHost *>
ServerName balanceador.local
# Dejamos la configuración del VirtualHost como estaba
# sólo hay que añadir las siguiente directivas: Proxy y ProxyPass
<Proxy balancer://mycluster>
# Server 1
BalancerMember http://balanceador1.local
# Server 2
BalancerMember http://balanceador2.local
ProxySet lbmethod=bybusyness
</Proxy>
ProxyPass / balancer://mycluster/
</VirtualHost>
Como se puede ver en ProxySet lbmethod se ha añadido bybusyness. Los lib method pueden ser:
- bybusyness: Método de balanceo basado en la carga de los servidores backend. Módulo mod_lbmethod_bybusyness
- byrequests: Método de balanceo de carga basado en la cantidad de solicitudes. Módulo mod_lbmethod_byrequests
- bytraffic: Método de balanceo basado en la cantidad de tráfico transferido.. Módulo mod_lbmethod_bytraffic
- heartbeat: étodo de balanceo que usa latidos (heartbeat) para seleccionar el backend. Módulo mod_lbmethod_heartbeat
Para ver en funcionamiento el balanceador-de-carga hay que poner la url: http://balanceador.local
Mostrará en que "servidor" de balanceo está: balanceador1 obalanceador2, en el caso de este ejemplo.
Para gestionar el balanceador de carga se dispone de un balance manager.
La configuración de apache se encuentra en el fichero httpd.conf.
Para poder ver este gestor hay que introducir la url definida en el ejemplo anterior para el balanceador de carga, añadiendo balancer-manager: http://balanceador.local/balancer-manager (en mi caso lo he hecho en el fichero httpd-vhosts.conf que está incluido en el fichero httpd.conf) Compartir en twitter