Ich versuche, den besten Weg zum Lastausgleich lang laufender TCP-Verbindungen für das folgende Szenario zu finden:
Wir haben mehrere Server hinter einem redundanten Satz von Firewalls und Clients stellen lang laufende (normalerweise 10-15 Stunden) TCP-Verbindungen zu unseren Backend-Servern her.
Derzeit wird der "Lastausgleich" über einen clientseitigen Round-Robin-Ansatz abgewickelt, um eine Liste von IP-Adressen zu durchsuchen, die alle an unseren Firewalls gespeichert sind und entsprechend den Back-End-Servern NAT-fähig sind.
Ich möchte mich von diesem Ansatz lösen und nur eine öffentliche IP-Adresse und einen separaten Load Balancer haben, der den Zustand / die Last der Server überprüfen und die eingehenden Clientverbindungsanforderungen entsprechend verteilen kann.
Ein Problem hierbei ist, dass jeder Client 3 Socket-Verbindungen an 3 verschiedenen Ports herstellt und ich es vorziehen würde, wenn diese Verbindungen "klebrig" wären, sodass alle diese 3 Verbindungsanforderungen an denselben Backend-Server gesendet werden.
Ich habe mir zB HAProxy angesehen, bin mir aber nicht sicher, ob es wirklich für mein Szenario geeignet ist. Wir haben eine relativ niedrige Verbindungsanzahl (~ 300 Clients * 3 Socket-Verbindungen für jede). Normalerweise sehen wir für jeden Socket ein kontinuierliches Datenübertragungsvolumen von ~ 15 KB / s.
Jede Eingabe hierzu wird sehr geschätzt!
Vielen Dank,
Tom