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
Dieser Artikel erläutert anhand eines konkreten B...
Inhaltsverzeichnis 1. MySQL aus einer Makroperspe...
Dieser Artikel stellt ein interessantes Pseudoele...
1. Bereiten Sie zunächst die MySQL- und Eclipse-U...
In diesem Artikel finden Sie das Installations-Tu...
GitHub-Adresse, Sie können es mit einem Stern mar...
1. Suchen Sie das entsprechende NodeJS-Paket unte...
Die folgenden HTML-Tags umfassen grundsätzlich all...
Upgrade-Hintergrund: Um die Sicherheitslücke in d...
In diesem Artikel analysieren wir als Beispiel die...
Inhaltsverzeichnis Gemeinsame Funktionen von Linu...
Gegeben: Ein Array [1,8,5,4,3,9,2], schreiben Sie...
Inhaltsverzeichnis Vorwort 1. Startup-Management ...
Inhaltsverzeichnis 1. Steuern Sie die Anzeige und...