Saltar al contenido

LoadBalancer con Apache

En el post anterior comentaba como usar mod_proxy con lighttpd, aunque no tiene mucho que ver con este tema, el punto es siempre la «disponibilidad».
Antes de empezar lanzo la pregunta, como creen uds. que funcionan las grandes web site que existen dentro de lo que conocemos como internet?…o como manejan los diferentes web servers la cantidad de usuarios que visitan una web?, antes estas interrogantes puedo decir que, existen soluciones a niveles de hardware y software para realizar lo que se conoce como «Balanceo de Carga».
Y que es un Balanceo de Carga, bueno a grandes rasgos implica que, la web cuando tenga una cierta cantidad de visitas supongamos 10000, el usuario 10001 será redireccionado a otro server, para no saturar el web site principal.

Este mecanismo de «balanceo» se puede realizar con Apache mediante las siguientes configuraciones…
El escenario: Deseamos que nuestra apicación web que tiene un promedio de 5000 visitas por día esté balanceada por medio de otros 2 servidores más, para que, de esta manera se pueda garantizar la disponibilidad de la aplicación web, lo que se conoce como «disponibilidad 24x7x365.

Lo que necesitamos:

 

3 servidores con O.S CentOS + 3 ips publicas + registro de nombres en un DNS + Apache 2.x + Php7.x

 

Manos a la obra:

1.- Instalar apache+php en los 3 servidores centOS 7.X, tomando como repositorios adicionales: webtatic o powerstack, yo usaré el repositorio remi de la siguiente manera:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

2.- Asumiendo lo sgt:

Server A – 192.168.0.90 (www.webtest.com)  – Gateway – Aqui no va la web ojo !

Server B -192.168.0.91(web1.webtest.com) – web replicada

Server C – 192.168.0.92 (web2.webtest.com) – web replicada

3.- Comencemos las configuraciones para los servidores Server B y C, en /etc/httpd/conf.d/, vamos a crear el archivo balancer.conf con el sgt contenido:

RewriteEngine On
RewriteRule .* – [CO=BALANCEID:balancer.http1:192.168.0.91]

RewriteEngine On
RewriteRule .* – [CO=BALANCEID:balancer.http2:192.168.0.92]

Obs: Pueden usar también el hostname de esta forma:

RewriteRule .* – [CO=BALANCEID:balancer.http1:.web1.webtest.com]

4.- Ahora nos dirigimos al server principal (Server A), en /etc/httpd/conf.d vamos a crear el archivo virtual.conf agregamos lo sgt:

NameVirtualHost *

<VirtualHost *>

ServerName www.example.com

ServerAlias example.com

DocumentRoot /var/www/html

ProxyRequests Off

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass /balancer-manager !

ProxyPass / balancer://mycluster/ stickysession=BALANCEID nofailover=On

ProxyPassReverse / http://192.168.0.91/

ProxyPassReverse / http://192.168.0.92/

<Proxy balancer://mycluster>

BalancerMember http://192.168.0.91  route=http1

BalancerMember http://192.168.0.92  route=http2

ProxySet lbmethod=byrequests

</Proxy>

<Location /balancer-manager>

SetHandler balancer-manager

Order deny,allow

Allow from all

</Location>

</VirtualHost>

Obs: Pueden usar los hostname de los server también de esta forma:

ProxyPassReverse / http://web1.webtest.com/
BalancerMember http://web1.webtest.com route=http1


Y listo, ya tenemos nuestra web: webtest.com balanceada, ahora simplemente nos queda entrar al «dashboard» para poder visualizar el balanceo:http://webtest.com/balancer-manager, la cual nos mostrará la actividad de los nodos y como reciben carga… les pongo una pantalla del mismo:

Y listo!!! ya lo tenemos implementado, espero que les sea de utilidad…

Los Leo !!!!

Publicado enLinux

Los comentarios están cerrados.