Skalierung von Socket.IO auf mehreren Servern

8

Ich habe auf der Suche nach Hilfe gesucht, um einen Multi-Server-Cluster für eine Node.js Socket.IO-Installation einzurichten. Das ist es was ich versuche zu tun:

  • Haben Sie 1 VIP in einem F5 Loadbalancer, der auf n der Anzahl der Knotenserver mit Express und Socket.IO
  • zeigt
  • Lassen Sie den Client über io.connect mit diesem einen VIP verbinden und filtern Sie ihn dann auf einen der Server hinter dem Loadbalancer.
  • Wenn eine Nachricht auf einem dieser Server ausgegeben wird, wird sie an alle Benutzer gesendet, die auf dieses Ereignis warten und sich über die anderen Server verbinden.

Zum Beispiel - wenn wir Server A, Server B und Server C hinter LB1 (F5) haben und Benutzer A mit Server A verbunden ist, ist Benutzer B mit Server B verbunden und Benutzer C ist mit Server C verbunden.

In einem "Chat" -Szenario - im Grunde, wenn eine Nachricht von Server A an message -Ereignis gesendet wird - sollten Server B und C die Nachricht auch an ihren verbundenen Client senden. Ich habe gelesen, dass dies mit socket-io.redis möglich ist, aber es braucht eine Redis-Box - auf welchem ​​Server sollte das installiert werden? Wenn alle Server mit derselben Redis-Box verbunden sind - funktioniert das automatisch?

%Vor%

Jede Hilfe wäre sehr dankbar, danke!

    
gregavola 13.06.2015, 18:04
quelle

1 Antwort

4

Die Antwort auf diese Frage lautet, dass Sie einen einzelnen Redis-Server einrichten müssen, der sich entweder außerhalb Ihres SocketIO-Clusters befindet - und alle Knoten damit verbinden.

Dann fügst du das einfach oben in deinen Code ein und es funktioniert einfach magisch ohne irgendwelche Probleme.

%Vor%     
gregavola 14.06.2015, 15:35
quelle

Tags und Links