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

Mehr als 100 Zeilen Code zur Implementierung von React Drag Hooks

Vorwort Der Quellcode umfasst insgesamt nur mehr ...

So ändern Sie das MySQL-Tabellenpartitionierungsprogramm

So ändern Sie das MySQL-Tabellenpartitionierungsp...

Das WeChat-Applet verwendet die Videoplayer-Videokomponente

In diesem Artikelbeispiel wird der spezifische Co...

Beispiel für das Hinzufügen eines Musikvideos zu einer HTML-Seite

1. Video-Tag Unterstützt die automatische Wiederg...

Analyse der Implementierung der Nginx Rush-Kaufstrombegrenzungskonfiguration

Aus geschäftlichen Gründen kommt es häufig zu Eil...

Gedanken zu copy_{to, from}_user() im Linux-Kernel

Inhaltsverzeichnis 1. Was ist copy_{to,from}_user...

Detaillierte Erklärung der Verwendung von Bildschirmbefehlen in Linux

GUN-Bildschirm: Offizielle Website: http://www.gn...

Detaillierte Erklärung zur Verwendung von nohup /dev/null 2>&1

Befehl „nohup“: Wenn Sie einen Prozess ausführen ...

CSS-Beispielcode zur Implementierung von Schiebetüren

Durch die sogenannte Sliding Door-Technologie läs...

Zusammenfassung häufiger Probleme und Anwendungskenntnisse in MySQL

Vorwort Bei der täglichen Entwicklung oder Wartun...