El equilibrio de carga es el proceso de distribuir uniformemente la carga de la red entre varios servidores. Ayuda a escalar la demanda durante las horas pico de tráfico al ayudar a distribuir el trabajo de manera uniforme. El servidor puede estar presente en una nube o en un centro de datos o en las instalaciones. Puede ser un servidor físico o uno virtual. Algunas de las funciones principales de un balanceador de carga (LB) son:

  • Enruta los datos de manera eficiente
  • Evita la sobrecarga del servidor
  • Realiza controles de salud para los servidores.
  • Proporciona nuevas instancias de servidor ante un gran tráfico

Tipos de algoritmos de equilibrio de carga

En el modelo OSI de siete capas, el equilibrio de carga se produce desde las capas 4 (capa de transporte) a 7 (capa de aplicación).

Los diferentes tipos de algoritmos LB son efectivos para distribuir el tráfico de red en función de cómo se ve la distribución del tráfico, es decir, si se trata de tráfico de capa de red o tráfico de capa de aplicación.

  • LB enruta el tráfico de la capa de red según el puerto TCP, las direcciones IP, etc.
  • El tráfico de la capa de aplicación se enruta en función de varios atributos adicionales, como el encabezado HTTP, SSL, e incluso proporciona capacidades de cambio de contenido a los LB.

Algoritmos de capa de red

Round Robin

La carga de tráfico se distribuye al primer servidor disponible y luego ese servidor se coloca en la cola. Si los servidores son idénticos y no hay conexiones persistentes, este algoritmo puede resultar eficaz. Hay dos tipos principales de algoritmos por turnos:

  • round-robin con peso Si los servidores no tienen la misma capacidad, este algoritmo se puede utilizar para distribuir la carga. Se pueden asignar algunos pesos o parámetros de eficiencia a todos los servidores de un grupo y, en base a eso, de manera cíclica similar, se distribuye la carga.
  • round-robin dinámico Los pesos que se asignan a un servidor para identificar su capacidad también se pueden calcular en tiempo de ejecución. El round robin dinámico ayuda a enviar las solicitudes a un servidor según el peso del tiempo de ejecución.

Algoritmo de menos conexiones (least-connection)

Este algoritmo calcula el número de conexiones activas por servidor durante un tiempo determinado y dirige el tráfico entrante al servidor con la menor cantidad de conexiones. Esto es muy útil en los escenarios donde se requiere una conexión persistente.

Algoritmo de menos conexiones con peso (Weighted east-connection)

Esto es similar al algoritmo de conexiones mínimas anterior, pero aparte del número de conexiones activas a un servidor, también tiene en cuenta la capacidad del servidor.

Algoritmo de menor tiempo de respuesta (least-response-time)

De nuevo, esto es similar al algoritmo de conexiones mínimas, pero también considera el tiempo de respuesta de los servidores. La solicitud se envía al servidor con el menor tiempo de respuesta.

Algoritmo de Hashing

Los diferentes parámetros de solicitud se utilizan para determinar dónde se enviará la solicitud. Los diferentes tipos de algoritmos basados en esto son:

  • Hash de fuente/destino Las direcciones IP de origen y destino se combinan para determinar el servidor que atenderá la solicitud. En caso de una conexión interrumpida, la misma solicitud se puede redirigir al mismo servidor al volver a intentarlo.
  • Hash de url La URL de solicitud se usa para realizar un hash, y este método ayuda a reducir la duplicación de cachés del servidor al evitar almacenar el mismo objeto de solicitud en muchas cachés.

Miscelaneos

También hay algunos otros algoritmos, que son los siguientes:

  • Menor ancho de banda El balanceador de carga selecciona el servidor con el menor consumo de ancho de banda en los últimos 14 minutos.
  • Menor cantidad de paquetes De manera similar a lo anterior, el equilibrador de carga elige el servidor que está transmitiendo la menor cantidad de paquetes para redirigir el tráfico.
  • Carga personalizada El equilibrador de carga selecciona el servidor en función de la carga actual en él, que puede determinarse por memoria, uso de la unidad de procesamiento, tiempo de respuesta, número de solicitudes, etc.

Algoritmos de capa de aplicación

En esta capa, el tráfico se puede distribuir según el contenido de la solicitud; por lo tanto, los LB pueden tomar una decisión mucho más informada. La respuesta del servidor también se puede rastrear, ya que ha viajado desde el servidor, y esto ayuda a determinar la carga del servidor de manera mucho más efectiva.


Uno de los algoritmos más importantes utilizados en esta capa es el algoritmo de solicitud menos pendiente. Este algoritmo dirige el tráfico de solicitudes HTTP pendientes al servidor más disponible. Este algoritmo es útil para ajustar el pico repentino en las solicitudes al monitorear la carga del servidor.

Conclusión

Estos son algunos de los algoritmos de equilibrio de carga conocidos y, al seleccionar el algoritmo más deseable, es necesario considerar una serie de factores, por ejemplo, alto tráfico o picos repentinos. Una buena selección de algoritmos ayuda a mantener la confiabilidad y el rendimiento de cualquier aplicación. Por lo tanto, comprenderlos bien resultará útil al diseñar sistemas distribuidos a gran escala.