Apache HTTP Server tiene un módulo que nos permite el balanceo de carga. Vamos a ver de qué manera se usa.
Introducción
Apache HTTP Server tiene varios módulos con los cuales se pueden hacer muchas cosas como, por ejemplo, sobreescribir la dirección URL, usar seguridad mediante SSL o balancear la carga entre varias máquinas. El balanceo de carga consiste en que nosotros usamos una única dirección URL e internamente se redirige el tráfico a diferentes máquinas que contienen, cada una, la misma página Web.
Nota: En este ejemplo usaremos dos páginas Web diferentes únicamente a modo de demostración del balanceo.
Requisitos previos
Es necesario:
- Tener instalado y funcionando un Apache HTTP Server.
- Disponer de varias localizaciones con dos páginas Web.
Sobre las localizaciones: Podrían ser máquinas independientes, cada una con su dirección URL. En nuestro caso, tendremos dos páginas Web, casi idénticas, situadas, respectivamente, en:
/var/www/html/webpage-1/index.html
y en:
/var/www/html/webpage-2/index.html
Es importante que en esos ficheros el contenido sea diferente, porque de otra manera no podremos apreciar el balanceo.
Ejemplo de ficheros:
webpage-1/index.html
<html> <head> <title>First Web page</title> </head> <body> <h1>This is the first Web page.</h2> </body> </html>
webpage-2/index.html
<html> <head> <title>Second Web page</title> </head> <body> <h1>This is the second Web page.</h2> </body> </html>
Instalación
El módulo de balanceo se llama “proxy_balancer” y para instalarlo hay que introducir estos comandos:
a2enmod proxy a2enmod proxy_http a2enmod lbmethod_bytraffic a2enmod proxy_balancer
Como podemos ver, es necesario instalar otros módulos previamente.
Configuración
Por regla general, casi todo el mundo configura Apache en el siguiente fichero:
/etc/apache2/apache2.conf
Personalmente yo prefiero configurar las cosas por separado porque así hay menos distracciones. Para configurar los módulos se usan los ficheros específicos, que están situados en la carpeta:
/etc/apache2/mods-enabled
Editamos el fichero
/etc/apache2/mods-enabled/proxy_balancer.conf
y lo dejamos así:
<IfModule mod_proxy_balancer.c> <Proxy "balancer://myset"> BalancerMember "http://localhost/webpage-1/index.html" BalancerMember "http://localhost/webpage-2/index.html" Order deny,allow Allow from all ProxySet lbmethod=byrequests </Proxy> ProxyPreserveHost On <Location "/"> ProxyPass "balancer://myset/" ProxyPassReverse "balancer://myset/" </Location> </IfModule> vim: syntax=apache ts=4 sw=4 sts=4 sr noet
De esta manera:
- BalanceMember indica las localizaciones sobre las que balancear.
- ProxySet lbmethod indica, en este caso, que cada petición tiene que hacerla a una localización diferente.
- Location “/” indica que, cuando carguemos la página http://localhost/ se ejecutará el balanceo.
Prueba
Reiniciamos el servidor para que lea la nueva configuración con:
service apache2 restart
Cargamos la página inicial de nuestro Apache HTTP Server:
http://localhost/
Y veremos que cada vez que recarguemos la página el contenido de la página cambia.
So, what do you think ?