¿Qué es el balanceo de carga?

Introducción

El equilibrio de carga es un componente clave de infraestructuras altamente disponibles comúnmente utilizado para mejorar el rendimiento y la confiabilidad de sitios web, aplicaciones, bases de datos y otros servicios al distribuir la carga de trabajo entre varios servidores.

A web infrastructure with no load balancing might look something like the following:

En este ejemplo, el usuario se conecta directamente al servidor web, en yourdomain.com. Si este único servidor web falla, el usuario ya no podrá acceder al sitio web. Además, si muchos usuarios intentan acceder al servidor simultáneamente y no puede manejar la carga, pueden experimentar tiempos de carga lentos o incluso no poder conectarse en absoluto.

Este único punto de falla puede mitigarse introduciendo un balanceador de carga y al menos un servidor web adicional en el backend. Normalmente, todos los servidores de backend suministrarán contenido idéntico para que los usuarios reciban un contenido consistente independientemente de qué servidor responda.

En el ejemplo ilustrado anteriormente, el usuario accede al balanceador de carga, que reenvía la solicitud del usuario a un servidor de backend, que luego responde directamente a la solicitud del usuario. En este escenario, el único punto de falla ahora es el propio balanceador de carga. Esto puede mitigarse introduciendo un segundo balanceador de carga, pero antes de discutir eso, exploremos cómo funcionan los balanceadores de carga.

¿Qué tipo de tráfico pueden manejar los balanceadores de carga?

Los administradores de balanceadores de carga crean reglas de reenvío para cuatro tipos principales de tráfico:

  • HTTP — El balanceo estándar de HTTP dirige las solicitudes en función de los mecanismos estándar de HTTP. El balanceador de carga establece las cabeceras X-Forwarded-For, X-Forwarded-Proto y X-Forwarded-Port para proporcionar a los backends información sobre la solicitud original.
  • HTTPS — El balanceo de HTTPS funciona de la misma manera que el balanceo de HTTP, con la adición de cifrado. El cifrado se maneja de dos maneras: ya sea con reenvío de SSL, que mantiene el cifrado hasta el backend, o con terminación de SSL, que coloca la carga de descifrado en el balanceador de carga pero envía el tráfico sin cifrar al backend.
  • TCP — Para aplicaciones que no utilizan HTTP o HTTPS, también se puede balancear el tráfico TCP. Por ejemplo, el tráfico hacia un clúster de bases de datos podría distribuirse entre todos los servidores.
  • UDP — Más recientemente, algunos balanceadores de carga han agregado soporte para equilibrar los protocolos principales de Internet como DNS y syslogd que utilizan UDP.

Estas reglas de reenvío definirán el protocolo y el puerto en el propio balanceador de carga y los asignarán al protocolo y puerto que el balanceador de carga utilizará para enrutar el tráfico en el backend.

¿Cómo elige el balanceador de carga el servidor backend?

Los balanceadores de carga eligen a qué servidor enviar una solicitud basándose en una combinación de dos factores. Primero se asegurarán de que cualquier servidor que puedan elegir esté respondiendo adecuadamente a las solicitudes y luego utilizarán una regla preconfigurada para seleccionar entre ese grupo saludable.

Pruebas de salud

Los balanceadores de carga solo deben enviar tráfico a servidores backend “saludables”. Para monitorear la salud de un servidor backend, las pruebas de salud intentan conectarse regularmente a los servidores backend utilizando el protocolo y el puerto definidos por las reglas de reenvío para asegurarse de que los servidores estén escuchando. Si un servidor falla una prueba de salud y, por lo tanto, no puede atender solicitudes, se eliminará automáticamente del grupo y el tráfico no se enviará a él hasta que vuelva a responder a las pruebas de salud.

Algoritmos de balanceo de carga

El algoritmo de equilibrio de carga que se utiliza determina cuál de los servidores saludables en el backend será seleccionado. Algunos de los algoritmos comúnmente utilizados son:

Round Robin — Round Robin significa que los servidores serán seleccionados secuencialmente. El equilibrador de carga seleccionará el primer servidor en su lista para la primera solicitud, luego avanzará por la lista en orden, comenzando de nuevo en la parte superior cuando llegue al final.

Menos Conexiones — Menos Conexiones significa que el equilibrador de carga seleccionará el servidor con menos conexiones y se recomienda cuando el tráfico resulta en sesiones más largas.

Origen — Con el algoritmo de Origen, el equilibrador de carga seleccionará qué servidor utilizar en función de un hash de la dirección IP de origen de la solicitud, como la dirección IP del visitante. Este método garantiza que un usuario en particular se conectará consistentemente al mismo servidor.

Los algoritmos disponibles para los administradores varían según la tecnología de equilibrio de carga específica en uso.

¿Cómo manejan los equilibradores de carga el estado?

Algunas aplicaciones requieren que un usuario continúe conectándose al mismo servidor backend. Un algoritmo de Origen crea una afinidad basada en la información de la dirección IP del cliente. Otra forma de lograr esto a nivel de la aplicación web es a través de sesiones pegajosas, donde el equilibrador de carga establece una cookie y todas las solicitudes de esa sesión se dirigen al mismo servidor físico.

Balanceadores de carga redundantes

Para eliminar el balanceador de carga como un único punto de fallo, se puede conectar un segundo balanceador de carga al primero para formar un clúster, donde cada uno monitorea la salud de los demás. Cada uno es igualmente capaz de detectar fallos y recuperarse.

En caso de que falle el balanceador de carga principal, DNS debe dirigir a los usuarios hacia el segundo balanceador de carga. Debido a que los cambios de DNS pueden tardar un tiempo considerable en propagarse en Internet y para que este cambio automático sea efectivo, muchos administradores utilizarán sistemas que permitan la remediación flexible de direcciones IP, como IPs reservadas. La remediación de direcciones IP bajo demanda elimina los problemas de propagación y almacenamiento en caché inherentes a los cambios de DNS al proporcionar una dirección IP estática que puede ser fácilmente remapeada cuando sea necesario. El nombre de dominio puede permanecer asociado con la misma dirección IP, mientras que la dirección IP misma se mueve entre servidores.

Así es como podría lucir una infraestructura altamente disponible utilizando IPs reservadas:

Conclusión

En este artículo, hemos dado una visión general de los conceptos de balanceador de carga y cómo funcionan en general. Para obtener más información sobre tecnologías específicas de balanceo de carga, podría ser útil consultar:

Servicio de Balanceo de Carga de DigitalOcean

HAProxy

Nginx

Source:
https://www.digitalocean.com/community/tutorials/what-is-load-balancing