Wir versuchen, eine Architektur zu entwerfen, die mehr als 64.000 Websockets verarbeiten kann.
Wir haben es zuerst mit Amazon ELB versucht, aber sein Design erlaubt keinen unerwarteten Anstieg des Datenverkehrs oder des Websockets. (Zeitüberschreitung im TCP-Modus der Websockets unerwartet)
Mit HAProxy gelten diese Grenzwerte nicht, wir sind jedoch auf ~ 64.000 Websockets beschränkt, die zwischen HA und den Back-End-Servern verwaltet werden.
Mehrere Lösungen, die mir in den Sinn kamen:
- Mehrere HAProxy-Instanzen, Lastausgleich mit DNS (Route53 hat eine gewichtete Option)
- Zwei HAProxy-Instanzen mit Keepalived und mehreren internen IP-Adressen (nicht sicher, ob dies möglich ist)
Gibt es einen besseren Weg, dies zu tun?
Antworten:
Wenn Ihr 64k-Limit auf Quellports zurückzuführen ist, können Sie Folgendes tun (ein wenig hacky, aber es war derzeit bei SE für Websockets (wir haben ungefähr 0,5 Millionen gleichzeitig mit HAProxy):
Auch mehrere Instanzen sind mit keepalived möglich. Machen Sie einfach so etwas wie Round-Robin-DNS über mehrere IPs. Stellen Sie einfach sicher, dass die IPs immer von aktiven Load Balancern erfasst werden, da DNS selbst Ihnen keinen Load Balancing bietet (es gibt auch hier mehr Optionen, diese ist einfach).
quelle
source 0.0.0.0 usesrc client
in der Backend-Konfiguration von haproxy die Transparenz der Proxy-Quelle verwenden. Auf diese Weise werden srcIP: srcPORT die tatsächlichen Client-IPs / Ports sein (nicht die internen IPs der Haproxy-Maschine) - auch für die Protokollierung geeignet.Sie können mehrere HAproxy-Systeme einrichten, die dieselben IPs mit Anycast und BGP oder einem anderen Border-Routing-Protokoll verwenden. Auf diese Weise sind alle HAproxy-Systeme aktiv. Wenn einer dieser Fehler auftritt, beenden Sie die Werbung für die BGP-Route auf diesem System und der Empfang von Datenverkehr wird in ca. 30 Sekunden eingestellt. Diese werden an andere verfügbare Systeme weitergegeben, die dieselbe Reichweite bewerben.
Überprüfen Sie beispielsweise diese URL, um ein solches Layout einzurichten
quelle