Equilibrio de carga para escalabilidad y alta disponibilidad con WebRTC y SIP
Equilibrar la carga de un clúster de instancias activas en función de reglas predefinidas (como los turnos rotativos, la afinidad o la latencia, etc.) es un patrón de diseño muy popularizado por la naturaleza sin estado de las solicitudes HTTP. De hecho, el equilibrio de carga es una opción viable si hay muchos componentes de aplicaciones RTC.
El equilibrador de carga actúa como un proxy inverso o punto de entrada para realizar solicitudes a la aplicación deseada, que a su vez está configurada para ejecutarse en varios nodos activos simultáneamente. En un momento dado, el equilibrador de carga dirige la solicitud de un usuario a uno de los nodos activos del clúster definido. Los equilibradores de carga realizan una comprobación de estado en los nodos de su clúster de destino y no envían una solicitud entrante a un nodo que no supere esta comprobación. Por lo tanto, gracias al equilibrio de carga, se logra un nivel fundamental de alta disponibilidad. Además, dado que un equilibrador de carga realiza comprobaciones de estado activas y pasivas en todos los nodos del clúster a intervalos de menos de un segundo, el tiempo de conmutación por error es casi instantáneo.
La decisión sobre a qué nodo debe dirigirse se basa en las reglas del sistema que están definidas en el equilibrador de carga, que incluyen:
-
Turno rotativo
-
Afinidad de sesión o IP, que garantiza que varias solicitudes dentro de una sesión o desde la misma IP se envíen al mismo nodo del clúster
-
Basada en latencia
-
Basada en carga