suchen
HeimBetrieb und InstandhaltungNginxWie Nginx ngx_http_upstream_module verwendet, um die Lastausgleichsfunktion zu implementieren

    Einführung in den Lastausgleich

    Was ist Lastausgleich?

    Unter Lastausgleich (Load Balance) versteht man den Ausgleich und die Verteilung der Last (Arbeitsaufgaben, Zugriffsanfragen) auf mehrere Betriebseinheiten (Server, Komponenten) umzusetzen.

    Warum Lastausgleich erforderlich ist

    Wenn ein einzelner Webserver direkt mit Benutzern konfrontiert ist, kann er eine große Anzahl gleichzeitiger Anforderungen übertragen, und es kann schwierig sein, einen einzelnen Server zu laden. Wir müssen mehrere Webserver verwenden, um einen Cluster zu bilden Verwenden Sie die Nginx-Lastausgleichsfunktion. Verteilen Sie Anforderungen an verschiedene Back-End-Server, um eine Verteilung des Lastverkehrs zu erreichen, die Gesamtleistung zu verbessern und die Funktionen zur Systemwiederherstellung zu verbessern.

    • Was ist der Unterschied zwischen Lastausgleich und Proxy?

    Ein Proxy besteht darin, einen Server basierend auf der URI-Planung zu vertreten und ihn für Anwendungsknoten mit unterschiedlichen Funktionen einzuplanen.

    Beim Lastausgleich werden Clientanforderungen an eine Reihe von Proxys weitergeleitet Upstream-Ressourcenpools über Proxy_Pass

    • Um Lastausgleichsszenarien zu implementieren

    Zur Implementierung der Lastausgleichsfunktion sind zwei Module erforderlich:

    • proxy_pass: Proxy-Modul

    • Upstream: virtueller Ressourcenpool

    Beispiel: eine offizielle Lastausgleichsanzeige

    upstream backend {
        server backend1.example.com       weight=5;
        server backend2.example.com:8080;
        server unix:/tmp/backend3;
    
        server backup1.example.com:8080   backup;
        server backup2.example.com:8080   backup;
    }
    
    server {
        location / {
            proxy_pass http://backend;
        }
    }

    Beispiel: Vervollständigen Sie selbst ein kleines Beispiel

    upstream node {
        server 192.168.10.3:80;
        server 192.168.10.4:80;
    }
    server {
        listen 80;
        server_name www.yyang.com;
        location / {
            proxy_pass http://node;
            include prxoy_params;
        }
    }

    Lastausgleichsplanungsalgorithmus

    Abfrageplanung

    der Reihe nach nacheinander auf verschiedene Backend-Knoten verteilt, was auch der Standardalgorithmus ist . (Einfach ausgedrückt ist es 1:1:1)

    Gewichtete Abfrage
    Angesichts der unterschiedlichen Leistung verschiedener Server werden den Knoten unterschiedliche Gewichte zugewiesen, sodass sie die entsprechende Anzahl an Gewichtsanforderungen erhalten

    server 192.168.10.3:80 weight=3;
    server 192.168.10.4:80 weight=1;

    Das obige Beispiel Das bedeutet, dass alle vier Anfragen drei Anfragen für 10.3 und einer Anfrage für 10.4 zugeordnet werden und der Zyklus weitergeht.

    ip_hash

    Führen Sie entsprechend der vom Benutzer angeforderten IP eine Hash-Operation für die IP durch und weisen Sie die Anforderung basierend auf dem berechneten Wert einem bestimmten Knoten im Backend zur Verarbeitung zu.

    Der Wertebereich sind die ersten drei 8 Bits der IPv4-Adresse oder die gesamte Adresse von IPv6 als Hash-Schlüssel, wodurch sichergestellt wird, dass die IP von einem Client immer an denselben Server weitergeleitet wird, es sei denn, der sekundäre Server ist nicht verfügbar. Einfach ausgedrückt sind die ersten drei Zahlensätze von 172.16.20.1 und 172.16.20.2 gleich (alle 172.16.20). Eine große Anzahl von Anfragen von derselben IP führt zu übermäßigem Datenverkehr auf einem bestimmten Knoten. Wenn ein Knoten vorübergehend offline ist, wird empfohlen, den Down-Status zu verwenden gleichzeitig.

    ip_hash;
    server 192.168.10.3:80;
    server 192.168.10.4:80;

    Konsistenter Hash



    Um die oben genannten Probleme zu vermeiden, wurde ein konsistentes Hashing mit der Modulo-Methode entwickelt, das jedoch nicht die Anzahl der Serverknoten moduliert, sondern Modulo 2 hoch 32 . Der Hash-Funktionswert ist 0~2^32-1 . (Bildet einen virtuellen Ring und Benutzeranfragen werden an im Uhrzeigersinn benachbarte Knoten gesendet.)

    Es gibt ein Problem: Wenn weniger Back-End-Knoten vorhanden sind, kann dies zu einer Datenverzerrung führen. Daher führt konsistentes Hashing einen virtuellen Knotenmechanismus ein, d. h. z Jeder Server berechnet mehrere Hashes und platziert einen virtuellen Knoten an jedem Ort des berechneten Ergebnisses.

    Was sollen wir tun, wenn wir ip_hash verwenden möchten, die Berechnungsformel jedoch einen konsistenten Hash verwendet?

    hash $remote_addr consistent;
    server 192.168.10.3:80;
    server 192.168.10.4:80;

    url_hash

    nimmt das Hash-Modulo basierend auf der URL des Benutzers und weist die Anfrage basierend auf dem Vorgangswert einem bestimmten Backend-Server zu.

    1. Der Benutzer fordert Nginx-Lastausgleich an, und über den URL-Algorithmus wird die Anforderung an Cache1 geplant

    2. Cache1 hat keine Daten, er ruft die Daten vom Backend ab, gibt die Daten zurück und speichert die Daten im Cache

    3 . Wenn andere Benutzer auf dieselbe URL zugreifen, wird der Server weiterhin für den Cache1-Knoten geplant. 4.cache1 gibt die Daten direkt zurück Für diesen Server geplant.

    hash $request_uri consistent;
    server 192.168.10.3:80;
    server 192.168.10.4:80;

    Backup


    Standby-Knoten, dieser Knoten wird unter normalen Umständen nicht eingeplant; wenn der Knoten wiederhergestellt wird, wird er weiterhin in den Standby-Zustand versetzt.

    least_conn;
    server 192.168.10.3:80;
    server 192.168.10.4:80;

    max_conns

    wird verwendet, um die maximale Anzahl der von jedem Backend-Knoten empfangenen TCP-Verbindungen zu begrenzen. Wenn das Limit überschritten wird, wird ein Fehler ausgegeben.

    server 192.168.10.3:80 down;
    server 192.168.10.4:80;

    Einer kann 10 verbinden. Zwei können 20 verbinden. Wenn es 20 überschreitet, tritt ein Fehler auf.

    keepalived

    aktiviert das Caching mit dem Backend-Server, also lange Links, um den Website-Durchsatz zu verbessern.

    Diese Funktion ist standardmäßig nicht aktiviert. Wenn eine Anfrage vorliegt, wird eine Verbindung hergestellt, aufrechterhalten und geschlossen. Wenn jedoch alle Verbindungen zwischengespeichert sind, werden andere Systemressourcen belegt Leerlauf, daher kann der Keepalived-Parameter verwendet werden.

    server 192.168.10.3:80;
    server 192.168.10.4:80;
    server 192.168.10.5:80 backup;

    max_fails und fail_timeout

    max_fails=2:服务器通信失败两次,认为服务器不可用
    fail_timeout=5s:服务器通信失败后,每5秒探测一次服务器是否恢复正常。
    在fail_timeout设定时间内,与服务器连接失败次数达到max_fails数量,则认为服务器不可用。
    如果不设置的话默认是探测一次,间隔10s。

    server 192.168.10.3:80 max_fails=2 fail_timeout=5s;
    server 192.168.10.4:80 max_fails=2 fail_timeout=5s;

    Das obige ist der detaillierte Inhalt vonWie Nginx ngx_http_upstream_module verwendet, um die Lastausgleichsfunktion zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme
    Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
    Der ultimative Showdown: Nginx vs. ApacheDer ultimative Showdown: Nginx vs. ApacheApr 18, 2025 am 12:02 AM

    Nginx eignet sich zum Umgang mit hohen gleichzeitigen Anforderungen, während Apache für Szenarien geeignet ist, in denen komplexe Konfigurationen und funktionale Erweiterungen erforderlich sind. 1.Nginx nimmt eine ereignisorientierte, nicht blockierende Architektur an und eignet sich für Umgebungen mit hoher Konsequenz. 2. Apache übernimmt Prozess- oder Threadmodell, um ein reiches Modul -Ökosystem bereitzustellen, das für komplexe Konfigurationsanforderungen geeignet ist.

    Nginx in Aktion: Beispiele und reale AnwendungenNginx in Aktion: Beispiele und reale AnwendungenApr 17, 2025 am 12:18 AM

    NGINX kann verwendet werden, um die Leistung, Sicherheit und Skalierbarkeit der Website zu verbessern. 1) Als Reverse Proxy und Load Balancer kann Nginx Back-End-Dienste optimieren und den Verkehr teilen. 2) Durch ereignisgesteuerte und asynchrone Architektur verarbeitet Nginx effizient hohe gleichzeitige Verbindungen. 3) Konfigurationsdateien ermöglichen eine flexible Definition von Regeln wie statischer Dateiservice und Ladeausgleich. 4) Optimierungsvorschläge umfassen die Aktivierung der GZIP -Komprimierung, die Verwendung von Cache und das Einstellen des Arbeitsprozesses.

    Nginx -Einheit: Unterstützung verschiedener ProgrammiersprachenNginx -Einheit: Unterstützung verschiedener ProgrammiersprachenApr 16, 2025 am 12:15 AM

    NginxUnit unterstützt mehrere Programmiersprachen und wird durch modulares Design implementiert. 1. Ladesprachmodul: Laden Sie das entsprechende Modul gemäß der Konfigurationsdatei. 2. Anwendungsstart: Führen Sie den Anwendungscode aus, wenn die aufrufende Sprache ausgeführt wird. 3. Anforderungsverarbeitung: Leiten Sie die Anfrage an die Anwendungsinstanz weiter. 4. Antwortrückgabe: Gibt die verarbeitete Antwort an den Client zurück.

    Wählen Sie zwischen Nginx und Apache: Die richtige Passform für Ihre AnforderungenWählen Sie zwischen Nginx und Apache: Die richtige Passform für Ihre AnforderungenApr 15, 2025 am 12:04 AM

    Nginx und Apache haben ihre eigenen Vor- und Nachteile und eignen sich für verschiedene Szenarien. 1.Nginx ist für hohe Parallelitäts- und geringe Ressourcenverbrauchsszenarien geeignet. 2. Apache eignet sich für Szenarien, in denen komplexe Konfigurationen und reichhaltige Module erforderlich sind. Durch den Vergleich ihrer Kernfunktionen, Leistungsunterschiede und Best Practices können Sie die Serversoftware auswählen, die Ihren Anforderungen am besten entspricht.

    So starten Sie NginxSo starten Sie NginxApr 14, 2025 pm 01:06 PM

    Frage: Wie starte ich Nginx? Antwort: Installieren Sie Nginx Startup Nginx -Verifizierung Nginx Is Nginx Start Erkunden

    So überprüfen Sie, ob Nginx gestartet wirdSo überprüfen Sie, ob Nginx gestartet wirdApr 14, 2025 pm 01:03 PM

    So bestätigen Sie, ob Nginx gestartet wird: 1. Verwenden Sie die Befehlszeile: SystemCTL Status Nginx (Linux/Unix), Netstat -ano | FindStr 80 (Windows); 2. Überprüfen Sie, ob Port 80 geöffnet ist; 3. Überprüfen Sie die Nginx -Startmeldung im Systemprotokoll. 4. Verwenden Sie Tools von Drittanbietern wie Nagios, Zabbix und Icinga.

    Wie man nginx schließtWie man nginx schließtApr 14, 2025 pm 01:00 PM

    To shut down the Nginx service, follow these steps: Determine the installation type: Red Hat/CentOS (systemctl status nginx) or Debian/Ubuntu (service nginx status) Stop the service: Red Hat/CentOS (systemctl stop nginx) or Debian/Ubuntu (service nginx stop) Disable automatic startup (optional): Red Hat/CentOS (systemctl disabled nginx) or Debian/Ubuntu (syst

    So konfigurieren Sie Nginx in WindowsSo konfigurieren Sie Nginx in WindowsApr 14, 2025 pm 12:57 PM

    Wie konfiguriere ich Nginx in Windows? Installieren Sie NGINX und erstellen Sie eine virtuelle Hostkonfiguration. Ändern Sie die Hauptkonfigurationsdatei und geben Sie die Konfiguration der virtuellen Host ein. Starten oder laden Nginx neu. Testen Sie die Konfiguration und sehen Sie sich die Website an. Aktivieren Sie selektiv SSL und konfigurieren Sie SSL -Zertifikate. Stellen Sie die Firewall selektiv fest, damit Port 80 und 443 Verkehr.

    See all articles

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
    Will R.E.P.O. Crossplay haben?
    1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    WebStorm-Mac-Version

    WebStorm-Mac-Version

    Nützliche JavaScript-Entwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

    Dreamweaver Mac

    Dreamweaver Mac

    Visuelle Webentwicklungstools