
Lassen Sie den Load Balancer SSL/TLS-verschlüsselte Daten an die Server weiterleiten. Ich frage mich, wie ein Handshake verarbeitet wird, wenn eine neue HTTPS-Verbindung zu einem Client hergestellt wird: Handshake ist eine zustandsbehaftete Kommunikation. Um beispielsweise die fertige Nachricht des Clients zu überprüfen, muss der Server alle Handshake-Nachrichten kennen, die bisher zwischen Server (Farm) und Client ausgetauscht wurden. Daher gibt es - soweit ich das sehe - drei Möglichkeiten:
SSL/TLS-Daten werden in einem Cache gespeichert, der von allen Servern gemeinsam genutzt wird
Der Inhalt der Handshake-Nachrichten wird auf alle Server repliziert.
Der Load Balancer leitet alle Handshake-Nachrichten vom Client an denselben Server weiter.
Frage: Welches Szenario wird in einer solchen Umgebung typischerweise verwendet? Gibt es weitere Richtlinien für den Umgang mit Handshakes, die ich übersehen habe?
Hinzugefügt:Ich werde mit der Behauptung konfrontiert, dass meine Frage ein Duplikat ist, und mir wird gesagt, ich solle meine Frage bearbeiten, um zu erklären, warum sie sich vonLastenausgleich und HTTPS-Strategien. Hier ist also mein Vergleich zwischen meiner Frage und der anderen Frage:
a) Ich habe drei Optionen zum Umgang mit dem https-Status in einer Lastausgleichsumgebung herausgefunden und gefragt, welche davon (oder vielleicht andere) in der Praxis verwendet werden.
b) In der anderen Frage verwendet der OP Option 3 („derselbe Server“), d. h. alle Anfragen mit derselben IP werden an denselben Server weitergeleitet. Da die meisten seiner Clients jedoch dieselbe IP verwenden, funktioniert lb nicht gut und der OP fragt nach einem Ausweg. Viereinhalb von fünf Antworten enthalten Vorschläge, die im Wesentlichen die obige Option 3 beibehalten. Einen Teil einer Antwort dort („DNS für Zielserver“) habe ich nicht verstanden.
Die Frage ist also, ob die Optionen 1 („SSL-Cache“) und 2 („Replikation von SSL-Hanshake-Daten“) in der Praxis verwendet werden. Der Artikelhttp://wtarreau.blogspot.de/2006/11/making-applications-scalable-with-load.htmlscheint Option 1 zu bevorzugen (siehe „4. Dedizierte SSL-Cache-Farm“).
Antwort1
Wenn HTTPS in allen Teilen des Setups erforderlich ist, ist es einfacher/praktikabler, den Handshake zwischen Client und lb durchzuführen und dann einen separaten Satz Zertifikate zwischen lb und Servern zu haben.
SSL-Passthrough ist möglich und wird von einigen CDNs angeboten. Soweit ich weiß, wird der gesamte Datenverkehr so weitergeleitet, wie er ist, aber ein Lastenausgleich ist dadurch nicht möglich.
Damit dies funktioniert, benötigen Sie eine Sitzungshaftung auf LB-Ebene.
Antwort2
Sie können SSL-Pass-Through über TCP-Stream-Proxys in Nginx durchführen
https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/