¿Qué algoritmo es fácil de implementar en un proyecto sobre equilibrio de carga en la computación en la nube? ¿Cuáles son algunas ideas nuevas? ¿Cómo puedo comenzar con mi proyecto?

He trabajado en un par de proyectos relacionados con equilibradores de carga. Los proyectos involucraron proporcionar alta disponibilidad y equilibrar la carga para aplicaciones web de alto tráfico. Uno de ellos era una aplicación web para un sitio del mercado de valores y otro era un sitio de compras superior. Ambos fueron alojados en la nube con autoescalado en su lugar.

Básicamente, solían ser equilibradores de carga basados ​​en HA Proxy o Redhat’s Piranha cuidadosamente configurados para manejar la carga y reaccionar de manera inteligente en casos de sobrevoltaje.


Imagen cortesía: http://www.rackspace.com

Además de los equilibradores de carga, también utilizamos mecanismos de Message Queue Server, así como clústeres GlusterFS o DRBD y Lsyncd para mantener constantemente la replicación de la base de código en todos los nodos. En cuanto a la base de datos, utilizamos una replicación cíclica Master-Master que involucra Mysql.

En lo que respecta a los algoritmos de equilibrio de carga, he encontrado que el round robin ponderado es el mejor. Sin embargo, todo depende del tráfico y del tipo de aplicaciones que aloje. En algunos casos, sería seguro usar el algoritmo ‘less-connections-first’, mientras que en otros es simplemente bueno ir con un simple round-robin.

A continuación se presentan algunos extractos de un documento técnico de IBM sobre los tipos de equilibrio de carga de Algo y su interpretación.

Algoritmos para tomar decisiones de equilibrio de carga
Los grupos de equilibrador de carga utilizan algoritmos para tomar decisiones de equilibrio de carga. La decisión determina a qué servidor remoto reenviar una nueva conexión.
Los grupos de equilibrador de carga admiten algoritmos ponderados y no ponderados:

  • Primero vivo
  • Picadillo
  • Menos conexiones
  • Round robin
  • Menos conexiones ponderadas
  • Robin ponderado

Un algoritmo ponderado usa el peso (o preferencia) para ayudar a determinar qué servidor recibe la próxima solicitud. Un servidor con un peso mayor recibe más tráfico que uno con un peso menor. El porcentaje de tráfico que se envía a cada servidor es aproximadamente igual a su peso dividido por el peso acumulado de todos los servidores del grupo.
Un algoritmo no ponderado supone que la capacidad de todos los servidores del grupo es equivalente. Aunque los algoritmos no ponderados suelen ser más rápidos que los algoritmos ponderados, algunos algoritmos no ponderados, como el algoritmo hash, podrían enviar más tráfico a algunos servidores. Si hay servidores con diferentes capacidades en el grupo, el procesamiento no puede optimizar las capacidades de todos los servidores.
Primero vivo
El primer algoritmo vivo utiliza el concepto de un servidor primario y servidores de respaldo.

  • El servidor primario es el primer servidor en la lista de miembros.
  • Un servidor de respaldo es cualquier servidor posterior en la lista de miembros.

Cuando el servidor primario está en buen estado, el servicio DataPower® reenvía todas las conexiones a este servidor. Cuando el servidor primario está en cuarentena o convaleciente, el servicio DataPower reenvía las conexiones al siguiente servidor de la lista.
Picadillo
El algoritmo hash utiliza la dirección IP del cliente o el valor de un encabezado HTTP como base para la selección del servidor.
Cuando use un encabezado HTTP, use la propiedad Encabezado de hash del equilibrador de carga para identificar el encabezado a leer. Esta propiedad solo está disponible para servicios de Proxy de servicio web y puerta de enlace de múltiples protocolos. Además, esta propiedad está disponible solo en la pestaña Principal en la vista de objeto.
Con el algoritmo hash, el mismo cliente sirve al mismo cliente. Use este algoritmo para aplicaciones que requieren el almacenamiento de información del estado del lado del servidor, como las cookies.
Menos conexiones
El algoritmo de menos conexiones mantiene un registro de las conexiones activas del servidor y reenvía una nueva conexión al servidor con el menor número de conexiones activas.
Round robin
El algoritmo round robin mantiene una lista de servidores y reenvía una nueva conexión al siguiente servidor en la lista de miembros.
Menos conexiones ponderadas
El algoritmo ponderado de menos conexiones mantiene una lista ponderada de servidores de aplicaciones con su número de conexiones activas y reenvía una nueva conexión a un servidor de aplicaciones en función de una combinación de su proporción con el peso (o preferencia) y el número de conexiones activas.
Este algoritmo usa más tiempos de cálculo que el algoritmo de menor conexión. Sin embargo, el cálculo adicional resulta en la distribución del tráfico de manera más eficiente al servidor que es más capaz de manejar la solicitud.
Este algoritmo se aplica a los servidores de aplicaciones, no a los servidores de autenticación o autorización, y requiere la función Opción para la optimización de aplicaciones.
Robin ponderado
El algoritmo ponderado round robin mantiene una lista ponderada de servidores y reenvía nuevas conexiones en proporción al peso (o preferencia) de cada servidor.
Este algoritmo usa más tiempos de cálculo que el algoritmo round robin. Sin embargo, el cálculo adicional resulta en la distribución del tráfico de manera más eficiente al servidor que es más capaz de manejar la solicitud.

Dicho esto, estoy abierto a consultas y proporciono soporte de administración del servidor si eso funciona para usted. Déjame un mensaje personal en caso de que tengas más preguntas al respecto.