Balanceo de Carga con Apache 2

En este tutorial, se verá la configuración de balanceo de carga haciendo uso de Apache 2, el ejemplo se realiza sobre el Sistema Operativo Debian 9 y se asume que el lector tiene conocimientos básicos de Linux.

El balanceo de carga permite la distribución de peticiones que pueda recibir un servidor a varios servidores encargados de atender esas peticiones. Gracias al balanceo de carga se logra atender más peticiones en la misma cantidad de tiempo, por ejemplo google que pese al elevado número de usuarios que tiene en su buscador, responde muy rápido a las consultas realizadas. Esto se logra gracias a los servidores que tiene distribuidos para atender las consultas de los usuarios y el balanceo de carga que se hace para distribuir las peticiones a los diferentes servidores.

Principales algoritmos de balanceo de carga:

  • Round-Robin.- Este algoritmo consiste en distribuir de manera equitativa las solicitudes a los diferentes servidores.
  • Weighted Round-Robin.- Similar al anterior pero con la base de ponderadores que establecen la capacidad por servidor de procesar información, esto considerando que un servidor más rápido podría soportar el doble de procesamiento.
  • Least Connection.- Este algoritmo asigna peticiones al servidor que tiene menos conexiones activas.
  • Weighted Least Connection.- Similar al anterior pero con la base de un ponderador que establece la capacidad por servidor de procesar información.
  • Fastest.- Se determina el servidor que está tardando menor tiempo en responder y se le asigna la petición.

El balanceo de carga se lo puede realizar a partir del DNS o internamente a traves de un proxy inverso. Como se establece en el título se desarrollará un ejemplo con el segundo caso haciendo uso de Apache 2.

Así mismo el algoritmo utilizado será Round-Robin.

Para instalar apache 2 en debian se puede utilzar la siguiente instrucción.

  1. sudo apt install apache2

Con los pasos anteriores en la consola de comandos, se tendrá instalado apache2 y publicando el contenido por el puerto 80.

Para usarlo con balanceo de carga es necesario habilitar los siguientes módulos.

  1. sudo a2enmod proxy
  2. sudo a2enmod proxy_balancer
  3. sudo a2enmod proxy_http
  4. sudo a2enmod lbmethod_byrequests

Para hacer efectivos los cambios es necesario reiniciar el servicio.

  1. systemctl restart apache2

Editar el archivo de configuración:

  1. sudo nano /etc/apache2/sites-available/000-default.conf

El comando anterior abrirá un editor de texto con el archivo de configuración en el que se deberá agregar las siguientes líneas dentro de VirtualHost:

  1. ...
  2. <Proxy balancer://mycluster>
  3. BalancerMember http://servidor1.com
  4. BalancerMember http://servidor2.com
  5. ProxySet lbmethod=byrequests
  6. </Proxy>
  7. ...

La configuración anterior le dice a Apache que mediante el algoritmo Round-Robin se distribuirá la carga entre los servidores: servidor1.com y servidor2.com

Para habilitar el balanceo de carga adicionar las siguientes líneas:

  1. <Location /balancer-manager>
  2. SetHandler balancer-manager
  3. </Location>
  4. ProxyPass /balancer-manager !
  5. Proxypass / balancer://mycluster/

Finalmente reiniciar el servicio.

  1. sudo service apache2 restart
© ADSIB 2019 Bolivia