Balanceando la carga entre servidores
Si después de leer el artículo anterior te has convencido de aplicar una estrategia de escalado horizontal para permitir crecer a tu aplicación, has configurado un nuevo servidor físico o virtual y los has conseguido conectar en red, te habrás dado cuenta de que para poner la maquinaria en marcha falta un elemento importantísimo, el protagonista del post anterior: el balanceador de carga (Load Balancer).
Antes de introducir este nuevo componente en tu arquitectura y dejar que se haga amigo del resto, vamos a comentar la función que va a desempeñar, qué tipos de balanceadores existen y cual es la tendencia en la actualidad.
Tipos de balanceadores de carga
En el primer nivel de clasificación podemos distinguir dos clases de balanceadores de carga: hardware (físicos) y software.
Hardware Load Balancer
Los balanceadores de carga físicos son componentes hardware especializados en la distribución de tráfico (carga) de las aplicaciones entre los servidores a los que está conectado. Estos potentes aparatos están diseñados para cubrir únicamente esta función, tienen software (firmware) propietario, y son tan eficientes como costosos. (Modelos como los de la gama LTM de F5 oscilan entre los $10,000 y $30,000). Por este motivo y por las ventajas que ofrecen los balanceadores de carga por software, sólo en casos muy específicos (y en ámbitos puramente empresariales) hay que elegir este tipo de balanceadores. En el 95% restante de los casos es recomendable balancear por software.
- Pero Arturo… ¿por qué? Me sobra el dinero y quiero comprarme uno de estos cacharros enrackables para fardar en el CPD donde tengo montada toda mi arquitectura hardware.
- Antes de hacer checkout lee el siguiente apartado.
Software Load Balancer
Este tipo de balanceadores de carga vienen en formato binario, es decir que no son físicos y realizan su trabajo como procesos dentro de los propios servidores. La función que desempeñan es esencialmente idéntica a la de un balanceador físico, pero las ventajas que a priori parecen poco llamativas los convierten en la mejor opción de su familia. Hay que distinguir, dentro de este tipo de balanceadores de carga, dos subtipos: balanceadores virtuales y balanceadores por software, aunque el nombre es algo ambigüo, no son iguales. El balanceador virtual es una representación “virtualizada” de un balanceador de carga físico, como cuando emulamos una vieja consola o virtualizamos un servidor físico en Virtualbox, mientras que el balanceador por software es el programa encargado de la distribución de carga entre las aplicaciones que conectan con él, independientemente de en qué hardware esté ejecutando. En este artículo nos referiremos a este último cuando hablamos de balanceador de carga por software (Software Load Balancer).
¿Por qué elegir un Balanceador de Carga por Software?
Básicamente son cuatro grandes ventajas las que hacen que en la mayoría de los casos este tipo de balanceadores sea la elección correcta:
- Ejecuta sobre hardware genérico, común, que no necesita ser sofisticado, conocido como “commodity hardware” en inglés.
- Disponible e instalable de modo sencillo (a modo de instalador software)
- Flexibilidad: Ejecutan en cualquier entorno (Commodity hardware, hypervisor, cloud…. el mismo software en cualquier entorno)
- Escalabilidad: Se ajusta a nuestras necesidades a un precio más barato, en un pico de tráfico/carga se puede escalar para absorberlo con un despliegue casi instantáneo.
¿Cuál es el mejor balanceador de carga?
Dentro de los balanceadores de carga por software, hay diferentes opciones por las que elegir dependiendo del sistema que queramos balancear y de los requisitos del negocio. A continuación, varios ejemplos de los más conocidos:
HAProxy: Gratuito, quizás el más complicado de instalar y configurar. Es open source, actualizan su repositorio con frecuencia y ofrece buenas prestaciones. Recomendable para usuarios avanzados en entornos linux.
Zen Load Balancer: Comercial, se trata de un balanceador de carga virtual, preparado para configurar con VMWare y con versión gratuita “community edition”. La versión “enterprise” cuesta alrededor de 750€.
Y, como no, el rey de los servicios web en la nube, Amazon, cuenta con su propio servicio de balanceamiento llamado Elastic Load Balancing, el cual es una solución muy efectiva que dota de una capa extra de seguridad, un incremento de disponibilidad y un acoplamiento perfecto con sus servicios de virtualización Amazon EC2.