¿Qué es un balanceador de carga?

http://www.exponentegeek.com/2010/06/26/%C2%BFque-es-un-balanceador-de-carga

Cuando montamos servidores donde alojamos páginas con mucho tráfico, puede darse la situación que la máquina se colapse y deje de responder a peticiones nuevas, o en el peor de los casos deje de responder para todo el mundo.

Al acceder a una página web por ejemplo, estamos realizando una conexión a un servidor y pidiéndole una serie de datos, esto es lo que se considera una petición. Por lo tanto las peticiones llevan asociadas una carga de procesador y de memoria RAM por parte del servidor al que nos conectamos. Cuantas más peticiones, más uso de procesador y de memoria RAM, así que si queda muy poco espacio en RAM y el procesador está al máximo de porcentaje de uso se dice que el servidor tiene sobrecarga, o lo que es lo mismo, la página nos tarda mucho en cargar.

Hay diversas maneras de llegar al punto de sobrecargar un servidor:

  • La más común, es por un tráfico excesivo de visitas. Hay mucha gente pidiendo datos al servidor y este no da abasto.
  • También, es posible que el servidor esté dedicado a otras cosas aparte de servir páginas webs y dentro del uso que ya de por si tiene el servidor web se le suma lo que esté haciendo y no pueda con todo.
  • La peor forma es por un ataque de denegación de servicio. Si no sabéis muy bien lo que es el enlace a la wikipedia lo explica bastante bien.

Para evitar este tipo de situaciones, se crean varias máquinas idénticas, de manera que funcionen exactamente igual, por continuar con el ejemplo, sirviendo exactamente la misma página web. Y otro servidor conectado a estos servidores réplicas y al router que haga un balanceo de la carga. La función de este servidor es, por orden:

  1. Recibir las peticiones para servir la página web.
  2. Mirar que servidor réplica está con menos carga.
  3. Enviar al servidor con menos carga la petición para que se encargue del resto.
Balanceo de carga entre servidoresBalanceo de carga entre servidores

Este servidor es el llamado balanceador de carga. Con esto evitamos en gran medida el tener un solo servidor al máximo de su capacidad de carga y logramos distribuir ese trabajo en los otros servidores réplicas para así lograr la velocidad máxima posible sirviendo páginas. Incluso, si por alguna razón uno de los servidores réplica tiene una avería y deja de funcionar, la página web seguiría siendo accesible, ya que el balanceador de carga se encargaría de dar la petición a alguno de los otros servidores.

Si os interesa el tema, Forat ha creado una muy buena guía Balanceo de carga entre servidores bajo Linux Debian: Introducción, Hardware, Sistema Operativo, Puente de red o Bridge y acceso remoto via SSH, Balanceo de carga con PEN y Posibles usos.

Antes de concluir la entrada, me gustaría puntualizar que todo lo aquí explicado, incluso el manual de Forat (menos algunos puntos sobre hardware) puede aplicarse tanto a un entorno con servidores físicos o a un solo servidor con, a su vez, otros tantos servidores virtualizados formando este esquema. (si no sabes que es eso de la virtualización, puedes leerte una entrada que hice hace algún tiempo explicándolo)