Balanceadores de Carga
Dentro de la arquitectura web necesitamos cumplir con dos condiciones si queremos que nuestra arquitectura sea suficientemente sólida: Alta Disponibilidad y Alto Rendimiento, en esta entrada veremos cómo cumplir con estos dos principios.
La alta disponibilidad trata de conseguir que un servicio tenga el máximo posible de tiempo de disponibilidad, es decir, que el servicio esté activo y sin caídas.
El alto rendimiento trata de poder aceptar al número máximo de peticiones posible, para dividir el tráfico entre distintos servidores que sean capaces de soportar todo el tráfico necesario.
Para cumplir estas dos condiciones veremos una solución que permite resolver este problema, el balanceo de carga.
En un balanceo de carga anteponemos un servidor a aquellos servidores que vayan a servir las páginas web de nuestra arquitectura, en el caso de que sea un API Rest, funcionaría de una manera similar.
Este servidor aceptará todo el tráfico que provenga de Internet y repartirá el tráfico entre los distintos servidores que manejen estas peticiones, utilizando algún algoritmo, Round Robin por ejemplo. De esta manera cumpliremos la primera condición, el alto rendimiento.
Siempre que necesitemos gestionar más peticiones, siempre podremos añadir más servidores web que sean capaces de procesar estas peticiones, modificando la configuración del balanceador para que reparta este tráfico.
¿Pero que pasaría si un servidor se cayera?
El balanceador cada cierto tiempo, comprueba si los servidores están activos, para saber si puede seguir mandándole peticiones que resolver. Si alguno de ellos cayera repartiría el tráfico entre el resto de servidores. Esto significa que los servidores restantes deberán ser suficientes para manejar dicho tráfico.
¿Pero que pasaría si este Balanceador se cayera?
Para resolver la Alta disponibilidad del balanceador, se haría colocando al mismo nivel dos balanceadores, que comunicados entre sí, con HeartBeat por ejemplo, por si alguno se ellos se cayera el otro cogería el testigo y manejaría todas la peticiones, asumiendo la Virtual IP del otro balanceador.
¿Para qué tipo de servicios se utilizan este tipo de balanceadores?
Cualquier servidor web, API Rest, o BBDD dispone de sistemas acoplables que permiten realizar este tipo de balanceos. Por ejemplo HAProxy es un software que permite hacer esta función con multitud de protocolos distintos.
Comments