Nginx-Lastausgleich mit Sitzungen

Nginx-Lastausgleich mit Sitzungen

Ich habe gesehen, dass das Einrichten des Lastenausgleichs mit nginxziemlich einfachund ich würde es gerne ausprobieren. Meine einzige Sorge betrifft die Sitzungen: Wie kann ich die Vorteile von nginx nutzen, um alle nachfolgenden Anrufe von einem Client an denselben Server umzuleiten und so eine Sitzungsbindung zu erreichen?

Danke

Antwort1

Verwenden Sie die Anweisung „ip_hash“.

Antwort2

Alternativ können Sie sich ansehenNginx Sticky-Modul

Beim Umgang mit mehreren Backend-Servern ist es manchmal sinnvoll, dass ein Client (Browser) immer vom selben Backend-Server bedient wird (beispielsweise zur Erhaltung der Sitzungsdauer).

Die Verwendung einer Persistenz per IP (mit dem Upstream-Modul ip_hash) ist möglicherweise keine gute Idee, da es Situationen geben könnte, in denen viele verschiedene Browser mit derselben IP-Adresse (hinter Proxys) kommen und das Lastausgleichssystem nicht fair wäre.

Durch die Verwendung eines Cookies zum Verfolgen des Upstream-Servers wird jeder Browser einzigartig.

Wenn das Sticky-Modul nicht angewendet werden kann, wechselt es zurück zum klassischen Round Robin Upstream oder gibt ein „Bad Gateway“ zurück (abhängig vom no_fallback-Flag).

Das Sticky-Modul kann nicht angewendet werden, wenn der Browser keine Cookies unterstützt

Antwort3

ip_hash ist die Lastausgleichsregel von nginx für die Sitzung. Der nginx-Server muss jedoch die echte IP erhalten. Wenn Sie Squid als Frontserver verwenden, erhält der nginx-Server die IP von Squid. Als Nächstes muss nginx den echten Server anleiten. Wenn es nach dem nginx-Server andere Lastausgleichsserver gibt, wird die Sitzung nicht an denselben echten Server gesendet.

verwandte Informationen