Grundkenntnisse zum Lastenausgleich und ein einfaches Beispiel zum Lastenausgleich mit nginx

Grundkenntnisse zum Lastenausgleich und ein einfaches Beispiel zum Lastenausgleich mit nginx

Nginx kann im Allgemeinen für siebenschichtigen Lastausgleich verwendet werden. Dieser Artikel vermittelt einige grundlegende Kenntnisse zum Lastausgleich und zeigt ein einfaches Beispiel für die Verwendung von Nginx zum Lastausgleich.

Lastausgleich auf Schicht 4 vs. Lastausgleich auf Schicht 7

Man spricht oft von siebenschichtigem oder vierschichtigem Lastausgleich. Tatsächlich wird es durch den Namen der Schicht des ISO-OSI-Netzwerkmodells bestimmt. Da nginx das http-Protokoll verwendet, um Lastausgleichsvorgänge auf der Anwendungsschicht durchzuführen, wird es als siebenschichtiger Lastausgleich bezeichnet. Lastausgleichsvorgänge wie LVS auf der TCP-Schicht werden als vierschichtiger Lastausgleich bezeichnet. Generell gibt es folgende Load-Balancing-Kategorien:

Gemeinsame Softwareunterstützung

Gängige Lastausgleichsalgorithmen

Es gibt mehrere gängige Lastausgleichsalgorithmen:

Beispiel zur Lastverteilungsdemonstration: Normales Polling

Als Nächstes verwenden wir nginx, um zu demonstrieren, wie ein normales Polling durchgeführt wird:

Vorbereitung

Zwei Dienste werden auf den Ports 7001/7002 gestartet, um unterschiedliche Informationen anzuzeigen. Zur Vereinfachung der Demonstration wird mit Tornado ein Spiegel erstellt. Beim Starten des Docker-Containers werden unterschiedliche Parameter übergeben, um die Unterschiede in den Diensten anzuzeigen.

[root@kong ~]# docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Benutzerdienst 1: 7001"
ddba0abd24524d270a782c3fab907f6a35c0ce514eec3159357bded09022ee57
[root@kong ~]# docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Benutzerdienst 1: 7002"
95deadd795e19f675891bfcd44e5ea622c95615a95655d1fd346351eca707951
[root@kong ~]# 
[root@kong ~]# curl http://192.168.163.117:7001
Hallo, Service: Benutzerservice 1: 7001
[root@kong ~]# 
[root@kong ~]# curl http://192.168.163.117:7002
Hallo, Service: Benutzerservice 1: 7002
[root@kong ~]#

Starten Sie nginx

[root@kong ~]# docker run -p 9080:80 --name nginx-lb -d nginx 
9d53c7e9a45ef93e7848eb3f4e51c2652a49681e83bda6337c89a3cf2f379c74
[root@kong ~]# docker ps |grep nginx-lb
9d53c7e9a45e nginx „nginx -g 'daemon ...“ vor 11 Sekunden. Vor 10 Sekunden aktiv. 0.0.0.0:9080->80/tcp nginx-lb
[root@kong ~]#

Nginx-Codeausschnitt

Bereiten Sie den folgenden Nginx-Codeausschnitt vor und fügen Sie ihn zu /etc/nginx/conf.d/default.conf von Nginx hinzu.

http {
Upstream nginx_lb {
  Server 192.168.163.117:7001;
  Server 192.168.163.117:7002;
}
Server {
  hören Sie 80;
  Servername www.liumiao.cn 192.168.163.117;
  Standort / {
    Proxy-Passwort http://nginx_lb;
  }
}

So ändern Sie default.conf

Dies kann erreicht werden, indem vim im Container installiert, lokal geändert und dann über Docker cp übergeben oder direkt mit sed geändert wird. Wenn Sie vim im Container installieren, verwenden Sie die folgende Methode

[root@kong ~]# docker exec -it nginx-lb sh
# apt-get update
… #apt-get install vim weglassen
...ausgelassen

Vor der Änderung

# Katze default.conf
Server {
  hören Sie 80;
  Servername localhost;
  #Zeichensatz koi8-r;
  #access_log /var/log/nginx/host.access.log main;
  Standort / {
    root /usr/share/nginx/html;
    Index Index.html Index.htm;
  }
  #Fehlerseite 404 /404.html;
  # Server-Fehlerseiten auf die statische Seite /50x.html umleiten
  #
  Fehlerseite 500 502 503 504 /50x.html;
  Standort = /50x.html {
    root /usr/share/nginx/html;
  }
  # Proxy für die PHP-Skripte an Apache, das auf 127.0.0.1:80 lauscht
  #
  #Standort ~ \.php$ {
  # Proxy-Passwort http://127.0.0.1;
  #}
  # Übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 lauscht.
  #
  #Standort ~ \.php$ {
  #Wurzel-HTML;
  # fastcgi_pass 127.0.0.1:9000;
  # fastcgi_index index.php;
  # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #fastcgi_params einschließen;
  #}
  # Zugriff auf .htaccess-Dateien verweigern, wenn das Apache-Dokumentenstammverzeichnis
  # stimmt mit nginx überein
  #
  #Standort ~ /\.ht {
  # alles ablehnen;
  #}
}
#

Nach

# Katze default.conf
Upstream nginx_lb {
  Server 192.168.163.117:7001;
  Server 192.168.163.117:7002;
}
Server {
  hören Sie 80;
  Servername www.liumiao.cn 192.168.163.117;
  #Zeichensatz koi8-r;
  #access_log /var/log/nginx/host.access.log main;
  Standort / {
    #root /usr/share/nginx/html;
    #index index.html index.htm;
    Proxy-Passwort http://nginx_lb;
  }
  #Fehlerseite 404 /404.html;
  # Server-Fehlerseiten auf die statische Seite /50x.html umleiten
  #
  Fehlerseite 500 502 503 504 /50x.html;
  Standort = /50x.html {
    root /usr/share/nginx/html;
  }
  # Proxy für die PHP-Skripte an Apache, das auf 127.0.0.1:80 lauscht
  #
  #Standort ~ \.php$ {
  # Proxy-Passwort http://127.0.0.1;
  #}
  # Übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 lauscht.
  #
  #Standort ~ \.php$ {
  #Wurzel-HTML;
  # fastcgi_pass 127.0.0.1:9000;
  # fastcgi_index index.php;
  # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #fastcgi_params einschließen;
  #}
  # Zugriff auf .htaccess-Dateien verweigern, wenn das Apache-Dokumentenstammverzeichnis
  # stimmt mit nginx überein
  #
  #Standort ~ /\.ht {
  # alles ablehnen;
  #}
}
#

Starten Sie den Nginx-Container neu.

[root@kong ~]# Docker startet nginx-lb neu
nginx-lb
[root@kong ~]#

Bestätigen Sie das Ergebnis

Sie können deutlich erkennen, dass die Abfragen in der folgenden Reihenfolge durchgeführt werden:

[root@kong ~]# curl http://localhost:9080
Hallo, Service: Benutzerservice 1: 7001
[root@kong ~]# curl http://localhost:9080
Hallo, Service: Benutzerservice 1: 7002
[root@kong ~]# curl http://localhost:9080
Hallo, Service: Benutzerservice 1: 7001
[root@kong ~]# curl http://localhost:9080
Hallo, Service: Benutzerservice 1: 7002
[root@kong ~]#

Lastenausgleichs-Demobeispiel: Gewichtetes Round Robin

Auf dieser Grundlage muss bei gewichteten Umfragen lediglich das Gewicht hinzugefügt werden.

Ändern Sie default.conf

Ändern Sie default.conf wie folgt

# cp default.conf default.conf.org
# vi default.conf
# diff default.conf default.conf.org
2,3c2,3
<Server 192.168.163.117:7001 Gewicht=100;
<Server 192.168.163.117:7002 Gewicht=200;
---
> Server 192.168.163.117:7001;
> Server 192.168.163.117:7002;
#

Starten Sie den Nginx-Container neu.

[root@kong ~]# Docker startet nginx-lb neu
nginx-lb
[root@kong ~]#

Bestätigen Sie das Ergebnis

Es ist ersichtlich, dass die Umfrageergebnisse im Verhältnis 1/3 und 2/3 durchgeführt werden:

[root@kong ~]# curl http://localhost:9080
Hallo, Service: Benutzerservice 1: 7001
[root@kong ~]# curl http://localhost:9080
Hallo, Service: Benutzerservice 1: 7002
[root@kong ~]# curl http://localhost:9080
Hallo, Service: Benutzerservice 1: 7002
[root@kong ~]#

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • So leiten Sie über den Nginx-Lastausgleich zu https um
  • Eine kurze Diskussion über den siebenschichtigen Reverse-Proxy und Lastenausgleich von Nginx
  • Detaillierte Erläuterung der Lastausgleichsstrategie für Nginx-Server (6 Typen)
  • Eine kurze Analyse der vier Modi des Nginx-Lastausgleichs
  • So erstellen Sie einen Nginx-Load-Balancing-Dienst unter Linux
  • nginx realisiert Lastausgleich und dynamische und statische Trennung
  • Einfache Konfigurationsmethode für die Nginx-Lastausgleichskonfiguration
  • Drei Parametereinstellungen für den Nginx-Lastausgleich
  • Detaillierte Erläuterung des Nginx-Lastausgleichs (Architekturweg)
  • Detaillierte Schritte zum Erreichen des Lastenausgleichs mit iis+nginx

<<:  js verwendet Canvas, um mehrere Bilder in einem Implementierungscode zusammenzuführen

>>:  Lösung für das Problem, dass die Konfigurationsdatei my.cnf in MySQL aufgrund von Berechtigungsproblemen nicht gestartet werden kann

Artikel empfehlen

Grafisches Tutorial zur Installation von MySQL 8.0.15 und Datenbankgrundlagen

Die Installation der MySQL-Software und die Daten...

MySQL Master-Slave-Replikationsprinzip und zu beachtende Punkte

Vorne geschrieben Ich habe kürzlich ein spezielle...

Docker unter Linux installieren (sehr einfache Installationsmethode)

Ich hatte in letzter Zeit ziemlich viel Zeit. Ich...

Grafisches Tutorial zur Deinstallation und Installation von MySQL unter Linux

Dies ist mein erster Blog. Ich bin seit zwei Jahr...

In der HTML-Tabelle wird nur der äußere Rand der Tabelle angezeigt

Ich möchte eine Frage stellen. Ich habe in Dreamw...

Detaillierte Erklärung des Prinzips und der Verwendung von MySQL-Ansichten

Dieser Artikel veranschaulicht anhand von Beispie...

Vue+Websocket implementiert einfach die Chat-Funktion

In diesem Artikel wird der spezifische Code von V...

Rendern im Vue-Scaffolding verstehen

Im Vue-Gerüst können wir sehen, dass im neuen Vue...

Docker entfernt abnormale Containervorgänge

Dieser Neuling ist auf ein solches Problem gestoß...

Die normale Methode der MySQL-Deadlock-Prüfungsverarbeitung

Normalerweise wird bei einem Deadlock die Verbind...

Umfassendes Verständnis der Überwachung von HTML-Formulareingaben

Heute habe ich einen Blogbeitrag über Eingabeerei...

Detaillierte Erklärung der Meta-Tags (die Rolle der Meta-Tags)

Egal wie großartig Ihre persönliche Website ist, ...