L4-Balancing mit IPvs: RST-Pakete verwerfen – Failover

L4-Balancing mit IPvs: RST-Pakete verwerfen – Failover

Ich habe einen L4-IPVs-Load Balancer mit L7-Envoy-Balancern eingerichtet. Nehmen wir an, einer meiner L4-Balancer fällt aus und dank konsistentem Hashing wird der Datenverkehr, der jetzt (dank BGP) von einem anderen L4-Balancer verarbeitet wird, an denselben L7-Knoten weitergeleitet.

Dies sollte problemlos funktionieren und ist meines Erachtens eine gängige Konfiguration.

Das Problem liegt bei lang andauernden Verbindungen. Wenn ein neuer L4-Knoten den Datenverkehr empfängt (nur Daten – ACK/PUSH-Pakete) und kein SYN-Paket vom Knoten empfangen wurde, sendet der Knoten einfach ein RST-Paket an den Client, das die Verbindung beendet. Das Bild unten veranschaulicht dies.

Dies sollte nicht passieren und meine Frage ist, ob es eine Möglichkeit gibt (eine Sysctl-Konfiguration oder so etwas), die den Grund dafür ermittelt. Ich weiß, dass ich RST-Pakete möglicherweise mit iptables löschen kann, aber das klingt nicht richtig.

Bildbeschreibung hier eingeben

Antwort1

Es gibt tatsächlich eine Sysctl-Variable net.ipv4.vs.sloppy_tcpfür dieses spezielle Problem (https://lore.kernel.org/patchwork/patch/386081/?fbclid=IwAR17t0jEvRSlvZFch1Lz_CDMjYOzUluuNGQmiyKequZK1Vq4kI75vezWEGs), das dieses Problem löst.

Der große Dank geht an Patric Shuff, der mir geholfen hat, das herauszufinden (tolle Präsentation zu diesem Thema -https://www.usenix.org/conference/lisa16/conference-program/presentation/shuff).

verwandte Informationen