Balanceador de carga o load balancer: qué es y cuál es su función

12min

En la disciplina de despliegue de aplicaciones los administradores de sistemas deben asegurarse que los servicios funcionan con un buen rendimiento y son tolerantes a fallos. Una de las herramientas principales para conseguir este objetivo son los balanceadores de carga.

Índice

¿Qué es un balanceador de carga o load balancer?

Un balanceador de carga, o load balancer en inglés, es un sistema que permite distribuir el tráfico de solicitudes de clientes entre diversos servidores de una misma aplicación o servicio web.

Básicamente recibe las solicitudes de los clientes y se encarga de distribuirlas entre un cluster de servidores, de modo que esa solicitud pueda ser atendida de manera correcta, asegurando también que se eviten posibles fallos en algunos de los servidores, ya sea por caídas de sistema o tráfico excesivo.

Son altamente recomendables en las aplicaciones modernas que requieren alta disponibilidad y un rendimiento optimizado.

Función principal de un balanceador de carga

Dentro de las funciones de los balanceadores de carga podemos destacar las siguientes:

Distribución eficiente del tráfico de red

Lo más importante que realiza un balanceador de carga es distribuir el tráfico entre los distintos servidores que atienden las solicitudes de una aplicación online.

El balanceador es un elemento indispensable para orquestar los servidores y asegurarse de que los clientes sean atendidos de la mejor manera. Además también permite que se pueda realizar una correcta escalabilidad de las aplicaciones, poniendo de manera intermedia un balanceador que podrá dirigirse el tráfico entre más o menos servidores, según sea necesario.

Garantizar la disponibilidad y alta redundancia

Pero además de distribuir la carga entre los servidores, también se encargan de asegurar que las aplicaciones se encuentren siempre disponibles. Esto lo consigue distribuyendo la carga hacia servidores que sabe que están funcionando correctamente, evitando dirigir el tráfico hacia servidores que puedan estar inactivos por cualquier motivo.

Por supuesto, esto lo consigue hacer sin intervención del usuario, de modo que es transparente para el cliente.

Mejora del rendimiento de las aplicaciones

Los balanceadores de carga permiten mejorar el rendimiento de las aplicaciones ya que mantienen los servidores más descongestionados. Esto hace que las aplicaciones puedan funcionar de manera más optimizada, mejorando la experiencia de usuario.

Protección contra sobrecargas y caídas

Gracias a su capacidad de dirigir el tráfico hacia los nuevos activos también consigue evitar posibles sobrecargas del sistema o incluso caídas completas de las aplicaciones, debidas a un tráfico excesivo.

Tipos de balanceadores de carga según su funcionamiento

Dentro de la función de balanceo de carga podemos encontrar diversos tipos de balanceadores atendiendo a su funcionamiento. Vamos a repasar los tipos más importantes.

Balanceadores de carga por hardware

Podemos encontrar balanceadores de carga que funcionan mediante un hardware, dedicado exclusivamente a esta función. Este tipo de balanceadores hardware son capaces de ofrecer unas prestaciones muy elevadas pero también son más costosos y ofrecen una menor flexibilidad que otras alternativas que vamos a ver a continuación.

Balanceadores de carga por software

Mucho más frecuente es encontrar balanceadores de carga que funcionan mediante un software específico instalado en un servidor. Este tipo de balanceador de carga es bastante más económico, puesto que cualquier servidor sencillo es capaz de realizar esta función. Simplemente requiere un software instalado capaz de distribuir la carga.

Otra cosa interesante de este tipo de balanceadores es que el software se configura de manera bastante sencilla, mejorando de manera notable la flexibilidad e incluso la capacidad de alterar su comportamiento de manera dinámica.

Balanceadores de carga en la nube

Otra opción también muy frecuente y muy accesible es la posibilidad de utilizar un balanceador de carga que ofrezca a una empresa de servicios en la nube.  Esta opción es muy sencilla de configurar, y además bastante económica, ya que no requiere un servidor específico para realizar esta tarea. Por contra, a veces los servicios de balanceo de carga ofrecidos en la nube pueden tener menores capacidades de configuración y personalización.

Balanceadores de carga híbridos

Dentro del panorama de los balanceadores de carga también pueden haber alternativas híbridas, que combinan varias de los enfoques comentados anteriormente.

Algoritmos más comunes para el balanceo de carga

Otra cosa que debes entender cuando necesites configurar tus sistemas de balanceo de carga son los algoritmos disponibles para organizar la distribución de las solicitudes. Vamos a ver cuáles son estos algoritmos o estrategias más frecuentes.

Round robin

La estrategia de balanceo round robin funciona de una manera muy simple, ya que distribución de la carga se dirige hacia el siguiente servidor de una lista rotativa. Que la lista sea rotativa significa que, cuando llegamos al final se comienza otra vez por el primer servidor de la lista. El funcionamiento es especialmente simple pero permite que la carga se distribuya de una manera más o menos pareja.

Least connections

El algoritmo least connections consiste en enviar el tráfico hacia el servidor que en esos momentos mantenga un menor número de conexiones activas. También es una buena estrategia, especialmente cuando las cargas no son uniformes.

IP Hash

Los balanceadores de carga se usan generalmente en modelos de aplicaciones stateless (sin estado) como las API REST. Esto quiere decir que la mayoría de las veces no le importa el cliente que está realizando la solicitud, redirigiendo el tráfico a cualquier servidor en cada conexión.

Sin embargo, en el caso de que requieran mantener la sesión activa es posible utilizar algunas estrategias como IP hash, que permite usar la IP del usuario para enviarlo a un servidor en concreto donde esté su sesión activa.

Weighted round robin

Una variación del algoritmo round robin consiste en asignar peso a los distintos servidores, de modo que el sistema de balanceo de carga sea capaz de dar más prioridad a unos que a otros, enviando más tráfico a aquellos servidores que son capaces de asumirlo de una manera fiable, generalmente porque tengan una configuración más potente.

Ventajas de implementar un balanceador de carga o load balancer

En los pasos anteriores explicamos las principales funciones de los load balancer, adelantando algunas de sus principales ventajas, pero vamos a repasarlas ahora con mayor detalle.

Escalabilidad horizontal sencilla

Lo más importante que nos puede ofrecer un balanceador de carga es la posibilidad de escalar de manera sencilla los servidores que atienden una aplicación. El tipo de escalabilidad que nos proporciona es horizontal, ya que nos permite agregar más nodos o servidores al mismo nivel de los que ya teníamos un mismo conjunto en el cluster.

Mejora en la experiencia del usuario

Como hemos dicho antes, los balanceadores de carga nos permiten mejorar el rendimiento de las aplicaciones, gracias a la distribución del tráfico entre más servidores disponibles. Responder a los usuarios sin saturar una misma máquina, impacta en la experiencia de usuario, ya que generalmente se podrán resolver y responder las solicitudes en un menor tiempo.

Reducción de puntos únicos de fallo

También es muy importante la tolerancia a fallos, ya que un único punto de fallo no provocará la caída del sistema completo. Esto es algo fundamental para las aplicaciones que requieren alta disponibilidad.

Optimización del uso de recursos del servidor

Otra cosa interesante es que los balanceadores de carga nos permiten distribuir de una manera equitativa y bien gestionada los recursos que contamos para atender solicitudes. Con todo, podemos sacar el mejor beneficio de la infraestructura por la que contemos.

Casos de uso de los balanceadores de carga

Dentro del panorama actual algunos de los casos de uso de los balanceadores de carga más frecuentes son los siguientes.

Aplicaciones web de alto tráfico

Si tenemos una página web que requiere atender un alto volumen de tráfico es importante contar con un balanceador de carga que permita dirigir los usuarios entre diversos servidores. Por ejemplo, puede ser especialmente adecuado el uso de balanceadores en sitios web de periódicos importantes, redes sociales o sitios de comercio electrónico que reciban mucho tráfico.

Servicios en la nube y SaaS

Las aplicaciones de Software como Servicio (SaaS) son otro claro ejemplo donde los balanceadores de carga son especialmente deseables. Este tipo de servicios requieren atender a una gran cantidad de usuarios y los sistemas de balanceo de tráfico nos permiten distribuirlos de manera sencilla, atendiendo también a factores como su localización geográfica.

Infraestructuras críticas y financieras

También es ideal para infraestructuras críticas que requieran una alta disponibilidad por ejemplo en instituciones financieras o plataformas de pagos electrónicos, donde cualquier pequeña caída pueda suponer pérdidas cuantiosas para numerosos clientes. incluso la pérdida de reputación online.

Juegos online y streaming

Otro tipo de servicios que requiere alta disponibilidad y la gestión de altas demandas de tráfico son los sitios de juegos online o las plataformas de contenido por streaming. En ellos se usan los balanceadores de carga de manera intensiva para garantizar el servicio para todos sus usuarios de una manera estable y fluida.

Componentes clave de un load balancer

Aparte del propio balanceador de carga para sistemas en los cuales queramos implementar este tipo de medidas es necesario contar con diversos componentes clave que vamos a enumerar a continuación.

Servidores backend

Los servidores backend son el corazón de las aplicaciones y servicios web. Son los servidores que realmente atienden las solicitudes, una vez que el balanceador de carga las direcciona a ellos. En los servidores backend se instalan las aplicaciones que tienen que ofrecer el servicio y es el balanceador de carga el que distribuye el tráfico de manera uniforme entre ellos.

Health checks (verificación de estado)

Este componente asegura que los servidores backend están funcionando correctamente a lo largo del tiempo. Para ello, los health checks realizan comprobaciones sobre la disponibilidad de cada servidor, de modo que el balanceador de carga pueda saber si alguno está fallando. Con ello se evita la redirección del tráfico hacia un servidor que no está activo en un momento dado.

Reglas de enrutamiento y políticas

En las estrategias de balanceo de carga también se pueden definir diversas reglas de enrutamiento, ya sea dependiendo de la carga de los servidores, la localización geográfica de las solicitudes o las sesiones abiertas por los usuarios en determinados servidores.

Certificados SSL y terminación de SSL

En muchas ocasiones los balanceadores de carga también se encargan de gestionar el cifrado de las comunicaciones, utilizando protocolo HTTPS a través de los correspondientes certificados SSL.

Esto facilita la gestión del certificado de manera centralizada y elimina la necesidad de realizar cálculos de procesamiento para descifrar las solicitudes o cifrar las respuestas en cada uno de los servidores backend.

Cómo implementar un balanceador de carga en tu infraestructura

Implementar un balanceador de carga depende mucho del tipo de infraestructura que vayas a utilizar, pudiendo ser una tarea tan simple como configurar unos formularios en un servicio cloud o la instalación de hardware o software específico junto con su configuración en infraestructuras dedicadas.

De todos modos, en líneas generales estos son algunos de los pasos que tendrás que realizar.

Evaluar necesidades y tráfico esperado

Lo primero que tendrás que hacer para conseguir elegir de manera correcta tu balanceador de carga es un análisis de las necesidades de tu aplicación. Por ejemplo, te interesará evaluar el volumen de tráfico esperado, el tipo de aplicación y las necesidades de disponibilidad que pueda requerir. En este punto necesitarás dimensionar los niveles de redundancia, la seguridad requerida y otros factores importantes para tu proyecto.

Seleccionar el tipo de balanceador adecuado

Luego tendrás que seleccionar el tipo de balanceador de carga que se ajusta a tus necesidades, o también a los conocimientos técnicos que poseas para poder instalarlo y configurarlo. Aquí lo más sencillo es acudir a una solución cloud pero dependiendo del tipo de aplicación a veces está alternativa puede no ser suficientemente adecuada para los requisitos técnicos que debas cubrir.

Configuración inicial y pruebas

Una vez tengas una solución tendrás que realizar la configuración del sistema, estableciendo la lista de los servidores que tienes en el cluster así como las políticas de balanceo que quieras aplicar, o las configuraciones de certificados de seguridad.

Posteriormente tendrás que realizar las correspondientes pruebas de carga para comprobar si el sistema responde adecuadamente a la distribución de las solicitudes, aplicando distintos escenarios que cubran de manera general los niveles de tráfico que estimes recibir.

Monitoreo y ajustes continuos

No te debes olvidar de establecer algún sistema de monitorización para el balanceador de carga que te permita estar al tanto de posibles problemas que pueden surgir a lo largo del tiempo. También es ideal contar con sistemas de alertas que puedan informar a los administradores del sistema ante cualquier circunstancia anómala.  A lo largo del tiempo surgirán necesidades que requerirán tu intervención, de manera que mantengas el sistema de balanceo de carga lo más fino posible o lo ajustes a las necesidades de tráfico que vayan surgiendo.

Fernando Fuentes

Productos relacionados: