Mi situación es que actualmente escribimos una aplicación en línea que usa Node.js en el lado del servidor con el oyente WebSocket. Tenemos dos partes diferentes: una sirve páginas y usa node.js y express + ejs, otra es una aplicación completamente diferente que solo incluye la biblioteca socket.io para websockets. Así que aquí llegamos a esta cuestión de la escalabilidad de la parte websockets.¿Equilibrio de carga basado en cookies para WebSockets?
Una de las soluciones que hemos encontrado es utilizar redis y compartir información de sockets entre servidores, pero debido a la arquitectura requerirá compartir mucha otra información, lo que generará una sobrecarga enorme en los servidores.
Después de esta introducción, mi pregunta es: ¿es posible usar el equilibrio de carga basado en cookies para websockets? Entonces, digamos que cada conexión desde el usuario con el servidor de cookie = servidor1 siempre será reenviada al servidor1 y cada conexión con el servidor de cookies = servidor2 será fw a servidor2 y la conexión sin tal cookie será de menor a menor servidor.
ACTUALIZACIÓN: como dice una 'respuesta', sí, sé que esto existe. Simplemente no recuerdo que ese nombre es una sesión pegajosa. Pero la pregunta es: ¿funcionará eso para websockets? ¿Hay alguna posible complicación?
Esta es una pregunta que también estoy muy interesada, solo que no veo el problema con el balanceo de carga de las conexiones entrantes de los navegadores (solo llegará a uno de los servidores y se quedará con él), Estoy más interesado en cómo presionas a esos servidores desde tu back-end. Por ejemplo, tengo el servidor back-end que hace el trabajo real y luego envía mensajes al servidor websockets a través de un socket: ¿cómo sé a cuál presionar si tengo un clúster? Mi idea actual es mantener la lista de todas las conexiones abiertas en algún lugar de la base de datos central, sin estar seguro de si es la mejor manera de hacerlo. – KOHb
@KOHb No tengo ningún back-end adicional detrás de los servidores de socket. Entonces es mucho más simple en mi caso. Pero por lo que dices, probaré el servidor Redis para este propósito. – AlexKey