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

So implementiert Webpack das Caching statischer Ressourcen

Inhaltsverzeichnis Einführung Unterscheiden Sie z...

Vue-Handschrift-Ladeanimationsprojekt

Wenn die Seite nicht reagiert, ist die Anzeige de...

Absatzlayout und Zeilenumbrüche in HTML-Webseiten

Das Erscheinungsbild einer Webseite hängt maßgebl...

Detaillierte Erklärung zur Verwendung von Vue zum Laden von Wetterkomponenten

In diesem Artikel erfahren Sie, wie Sie mit Vue W...

Mehrere gängige Methoden für CSS-Layouts mit gleicher Höhe

Gleichhohes Layout Bezieht sich auf das Layout vo...

Inhaltstypbeschreibung, d. h. der Typ des HTTP-Anforderungsheaders

Um den Inhaltstyp zu lernen, müssen Sie zunächst ...

Analyse der Prinzipien und Verwendung von Linux-Hardlinks und Softlinks

Im Linux-System gibt es einen Dateityp namens Lin...

So benennen Sie unter Linux eine Gruppe von Dateien auf einmal um

Unter Linux verwenden wir normalerweise den Befeh...

Tools zum Konvertieren statischer Websites in RSS

<br /> Dieser Artikel wurde von Rachel Golds...

Implementierung der Nginx-Domänennamenweiterleitung

Einführung in Nginx Nginx („engine x“) ist ein le...

Lösen Sie das MySQL 5.7.9 Version sql_mode=only_full_group_by Problem

MySQL 5.7.9 Version sql_mode=only_full_group_by P...

So ändern Sie die Länge eines Eingabetextfelds entsprechend seinem Inhalt

Erste: Code kopieren Der Code lautet wie folgt: &l...

Beispiele für JavaScript-Operationselemente

Weitere Informationen zu Bedienelementen finden S...

Die Kombination und der Unterschied zwischen ENTRYPOINT und CMD im Dockerfile

Im vorherigen Artikel [Detaillierte Erläuterung v...