AuftaktWir alle wissen, dass nginx ein hervorragender Reverse-Proxy-Dienst ist. Wer nginx verwendet hat, sollte auch Upstream kennen. Der Upstream-Knoten wird im Allgemeinen in HTTP-Knotenklammern platziert. Die Liste der Server, deren Last ausgeglichen werden muss, wird normalerweise im Upstream konfiguriert. Die gebräuchlichsten Verwendungszwecke sind wie folgt: #Benutzer, niemand, niemand. #Arbeitsprozesse 2; #pid /nginx/pid/nginx.pid; Fehlerprotokoll Protokoll/Fehlerprotokoll Debuggen; Ereignisse { … } http { … Upstream-Testserver { Server 192.168.1.5:8080; Server 192.168.1.6:8080; … } Server { … Standort / { … Proxy-Passwort http://Testserver; } } } Wie aus der Struktur ersichtlich ist, wird diese Konfiguration häufig verwendet, hauptsächlich zum Umgang mit HTTP-Reverse-Proxys. Aber wenn wir das TCP des Backend-Dienstes proxyen möchten, wird das von Nginx unterstützt? Beispielsweise lautet die Antwort bei MySQL, Redis usw. ja. Tatsächlich unterstützt nginx auch den Lastausgleich von TCP/UDP. Worüber ich als nächstes sprechen möchte, ist das Stream-Modul von nginx. Durch Konfigurieren des Streams können solche Anforderungen erfüllt werden. Hier wird eher empfohlen, nginx hauptsächlich für HTTP-Reverse-Proxys zu verwenden. HauptartikelDer TCP/UDP-Lastausgleich von Nginx wird durch Anwendung des Stream-Proxy-Moduls (ngx_stream_proxy_module) und des Stream-Upstream-Moduls (ngx_stream_upstream_module) implementiert. Sowohl der TCP-Lastausgleich von Nginx als auch LVS sind vierschichtige Lastausgleichsanwendungen. Der Unterschied besteht darin, dass LVS im Linux-Kernel platziert ist, während Nginx auf Benutzerebene ausgeführt wird. Der auf Nginx basierende TCP-Lastausgleich kann eine flexiblere Verwaltung und Kontrolle des Benutzerzugriffs erreichen. Nachdem wir nun die grundlegenden Konzepte verstanden haben, schauen wir uns ein konkretes Konfigurationsbeispiel an: Arbeitsprozesse 4; Arbeiter_rlimit_nofile 40000; Ereignisse { Arbeiterverbindungen 8192; } Strom { Upstream meine_Server { am wenigsten_Verbindung; # Wenn innerhalb von 5 Sekunden 3 Fehler auftreten, wird die Verbindung zum Server für 5 Sekunden getrennt Server <IP_SERVER_1>:3306 max_fails=3 Fail_Timeout=5s; Server <IP_SERVER_2>:3306 max_fails=3 Fail_Timeout=5s; Server <IP_SERVER_3>:3306 max_fails=3 Fail_Timeout=5s; } Server { hören Sie 3306; proxy_connect_timeout 5s; # Das Timeout für die Herstellung einer Verbindung mit dem Proxy-Server beträgt 5 s proxy_timeout 10s; # Das maximale Timeout zum Abrufen der Antwort vom Proxyserver beträgt 10 s proxy_next_upstream on; # Wenn der Proxy-Server einen Fehler zurückgibt oder eine Zeitüberschreitung auftritt, wird die Client-Verbindungsanforderung, die keine Antwort zurückgegeben hat, an den nächsten Server im Upstream weitergeleitet proxy_next_upstream_tries 3; # Weiterleitungsversuchsanforderungen werden bis zu dreimal weitergeleitet proxy_next_upstream_timeout 10s; # Das Gesamtzeitlimit für Versuche beträgt 10 Sekunden proxy_socket_keepalive on; # Aktivieren Sie die Option SO_KEEPALIVE zur Heartbeat-Erkennung proxy_pass my_servers; } } Mehr Erklärung
Hinweis: Wenn Ihre Konfiguration des Steam-Moduls ungültig ist, überprüfen Sie bitte, ob die von Ihnen verwendete Version Stream unterstützt. Wenn das Modul nicht integriert ist, müssen Sie beim Kompilieren den Parameter --with-stream angeben, um es so zu kompilieren, dass es Stream-Proxy unterstützt. Dies ist das Ende dieses Artikels über den Nginx-Stream-Konfigurationsproxy (Nginx TCP/UDP-Lastausgleich). Weitere relevante Inhalte zum Nginx-Stream-Konfigurationsproxy finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Einige allgemeine Eigenschaften von CSS
>>: So wählen Sie alle untergeordneten Elemente aus und fügen ihnen in CSS Stile hinzu
In diesem Artikel wird der spezifische JavaScript...
Wirkung html <div Klasse="sp-container&qu...
Lassen Sie mich kurz das Funktionsszenario erklär...
Wie können wir beim Beenden eines laufenden Conta...
Hintergrund Während des Projektentwicklungsprozes...
Inhaltsverzeichnis Was ist asynchron? Warum brauc...
Ich bin vor kurzem in ein neues Unternehmen einge...
Teil 1: Grundlagen 1. Im Gegensatz zu Pseudoklass...
Fügen Sie einfach den folgenden Code hinzu, um die...
1. Führen Sie Schriftarten aus, öffnen Sie den Sc...
1. Einleitung Die EXPLAIN-Anweisung liefert Infor...
Was bedeutet Linux-CD? Unter Linux bedeutet cd „V...
Dieser Artikel beschreibt die MySQL-Transaktionsv...
MySQL ist eine kostenlose relationale Datenbank m...
Inhaltsverzeichnis Überblick Die Rolle des Revers...