Konfigurationshandbuch für den Lastenausgleich auf Ebene 4 von Nginx

Konfigurationshandbuch für den Lastenausgleich auf Ebene 4 von Nginx

1. Einführung in Layer 4 Load Balancing

Was ist Layer 4-Load Balancing?

Der sogenannte vierschichtige Lastausgleich bestimmt hauptsächlich den endgültigen internen Server, der basierend auf der Zieladresse und dem Port in der Nachricht sowie der vom Lastausgleichsgerät festgelegten Serverauswahlmethode ausgewählt wird.

Am Beispiel des allgemeinen TCP: Wenn das Lastausgleichsgerät die erste SYN-Anforderung vom Client empfängt, wählt es einen optimalen Server aus, ändert die Ziel-IP-Adresse in der Nachricht (in die IP des Back-End-Servers) und leitet sie direkt an den Server weiter. Der TCP-Verbindungsaufbau, d. h. der Drei-Wege-Handshake, wird direkt zwischen dem Client und dem Server hergestellt, und das Lastausgleichsgerät spielt nur eine Weiterleitungsrolle, die der eines Routers ähnelt. Um sicherzustellen, dass die Antwortpakete des Servers korrekt an das Lastausgleichsgerät zurückgegeben werden können, wird in einigen Bereitstellungsszenarien möglicherweise die ursprüngliche Quelladresse der Nachricht beim Weiterleiten der Nachricht geändert.

Anwendungsszenario

1. Schicht 4 + Schicht 7 für den Lastausgleich. Schicht 4 kann eine hohe Verfügbarkeit des Lastausgleichs von Schicht 7 gewährleisten.

2. Lastausgleich kann Portweiterleitung durchführen

3. Trennung von Lesen und Schreiben in der Datenbank

Funktionen des Layer 4-Load-Balancing

1. Der Lastenausgleich der Schicht 4 kann nur das TCP/IP-Protokoll und das UDP-Protokoll weiterleiten und wird normalerweise zum Weiterleiten von Ports wie TCP/22 und UDP/53 verwendet.

2. Durch den Lastausgleich auf Schicht 4 kann das Portbegrenzungsproblem des Lastausgleichs auf Schicht 7 gelöst werden. (Beim Lastausgleich auf Schicht 7 können bis zu 65535 Portnummern verwendet werden.)

3. Der Lastausgleich der Schicht 4 kann das Hochverfügbarkeitsproblem des Lastausgleichs der Schicht 7 lösen (mehrere Lastausgleichsvorgänge auf der Backend-Schicht 7 können gleichzeitig verwendet werden).

4. Die Weiterleitungseffizienz der Schicht 4 ist viel höher als die der Schicht 7, sie unterstützt jedoch nur das TCP/IP-Protokoll, nicht die Protokolle HTTP und HTTPS.

5. Normalerweise wird in Szenarien mit hoher Parallelität ein vierschichtiger Lastausgleich vor der siebenschichtigen Last hinzugefügt.

2.4 Aufbau einer Layer-Load-Balancing-Umgebung

Umgebungsvorbereitung

Gastgeber IP Identität
lb4 172.16.1.6, 10.0.0.6 Lastausgleich auf Schicht 4
lb01 172.16.1.4, 10.0.0.4 Lastausgleich auf Schicht 7
lb02 172.16.1.5, 10.0.0.5 Lastausgleich auf Schicht 7

Erstellen Sie Nginx mit lb4 und lb02

# Yum-Quelle konfigurieren [nginx-stable]
Name=stabiles Nginx-Repository
Basis-URL = http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
aktiviert=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

# Installieren Sie Nginx
[root@lb02 ~]# yum installiere nginx -y
[root@lb4 ~]# yum installiere nginx -y

# Benutzer erstellen [root@lb02 ~]# groupadd www -g 666 && useradd www -u 666 -g 666 -s /sbin/nologin -M
[root@lb4 ~]# groupadd www -g 666 && useradd www -u 666 -g 666 -s /sbin/nologin -M

# Nginx konfigurieren
[root@lb02 ~]# vim /etc/nginx/nginx.conf 
Benutzer www;
[root@lb4 ~]# vim /etc/nginx/nginx.conf 
Benutzer www;

# Starten Sie Nginx
[root@lb4 ~]# systemctl starte nginx && systemctl aktiviere nginx && systemctl status nginx
[root@lb02 ~]# systemctl starte nginx && systemctl aktiviere nginx && systemctl status nginx

Synchronisieren Sie die lb01-Konfiguration mit lb02

[root@lb01 ~]# scp /etc/nginx/conf.d/* 172.16.1.5:/etc/nginx/conf.d/
[root@lb01 ~]# scp /etc/nginx/proxy_params 172.16.1.5:/etc/nginx/

Testen Sie den Lastenausgleich von lb02

[root@lb02 ~]# nginx -t && systemctl nginx neu starten

#Hosts konfigurieren Test 10.0.0.5 linux.wp.com

3. Konfigurieren Sie den Layer 4-Lastausgleich

Syntax für Layer 4-Lastausgleich

Syntax: stream { ... }
Standard: -
Kontext: main

#Beispiel: Das vierschichtige Lastausgleichs-Stream-Modul befindet sich auf derselben Ebene wie das http-Modul und kann nicht in http konfiguriert werden. stream {
    Upstream-Backend {
        Server backend1.example.com:12345 Gewicht=5;
        Server 127.0.0.1:12345 max_fails=3 Fail_Timeout=30s;
    }

    Server {
        hören Sie 12345;
        Proxy-Verbindungstimeout 1 s;
        Proxy_Timeout 3 s;
        Proxy_Pass-Backend;
    }
}

Konfigurieren Sie die Hauptkonfigurationsdatei von nginx

[root@lb4 ~]# vim /etc/nginx/nginx.conf
#Kommentieren Sie den gesamten Inhalt des HTTP-Layer-Benutzers www;
Arbeiterprozesse 1;
Fehlerprotokoll /var/log/nginx/error.log warnen;
pid /var/run/nginx.pid;
Ereignisse {
    Arbeiterverbindungen 1024;
}
#Fügen Sie eine Include-Datei hinzu, include /etc/nginx/conf.c/*.conf;
#http {
# /etc/nginx/mime.types einschließen;
# Standardtyp Anwendung/Oktett-Stream;
# log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
# Zugriffsprotokoll /var/log/nginx/access.log main;
# Sendedatei an;
# #tcp_nopush ein;
# Keepalive-Timeout 65;
# #gzip ein;
# /etc/nginx/conf.d/*.conf einschließen;
#}

Konfigurieren des Layer 4-Lastausgleichs

#Verzeichnis erstellen [root@lb4 ~]# mkdir /etc/nginx/conf.c

#Konfigurieren [root@lb4 ~]# vim /etc/nginx/conf.c/linux.lb4.com.conf
Strom {
    Upstream-LB-Server {
        Server 10.0.0.4:80;
        Server 10.0.0.5:80;
    }

    Server {
        hören Sie 80;
        Proxy_Passwort lbserver;
        Proxy-Verbindungstimeout 1 s;
        Proxy_Timeout 3 s;
    }
}

# Starten Sie Nginx
[root@lb4 ~]# nginx -t && systemctl starte nginx

# Hosts für den Zugriff auf 10.0.0.6 linux.lb4.com konfigurieren

Layer 4-Lastausgleichskonfigurationsprotokoll

#Für den vierschichtigen Lastausgleich gibt es kein Zugriffsprotokoll, da in der Konfiguration von nginx.conf das Zugriffsprotokollformat unter http konfiguriert ist, während die Konfiguration des vierschichtigen Lastausgleichs außerhalb von http liegt.

#Wenn Sie Protokolle benötigen, müssen Sie sie unter Stream [root@lb4 ~] konfigurieren.# vim /etc/nginx/conf.c/linux.lb4.com.conf
Strom {
	log_format Proxy '$remote_addr $remote_port - [$time_local] $status $protocol '
                  '"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"';
    Zugriffsprotokoll /var/log/nginx/proxy.log Proxy;

    Upstream-LB-Server {
        Server 10.0.0.4:80;
        Server 10.0.0.5:80;
    }

    Server {
        hören Sie 80;
        Proxy_Passwort lbserver;
        Proxy-Verbindungstimeout 1 s;
        Proxy_Timeout 3 s;
    }
}

#Alle Webserver-Protokolle anzeigen [root@web01 ~]# tail -f /var/log/nginx/access.log
[root@web02 ~]# tail -f /var/log/nginx/access.log

Layer 4-Ladeportweiterleitung

Fordern Sie den Lastausgleichsport 5555 an und springen Sie zum Port 22 von web01

#Einfache Stream-Konfiguration {
	Server {
        hören Sie 5555;
        Proxy-Passwort 172.16.1.7:22;
	}
}

#Allgemeiner Konfigurationsstream {
    upstream ssh_7 {
        Server 10.0.0.7:22;
    }

    Server {
        hören Sie 5555;
        Proxy-Passwort ssh_7;
    }
}

# Test [D:\~]$ ssh [email protected]:5555
Erfolgreicher Sprung

Fordern Sie den Lastausgleichsport 6666 an und springen Sie zu 172.16.1.51:3306

Strom {
    upstream db_51 {
        Server 172.16.1.51:3306;
    }
    
    Server {
        hören Sie 6666;
        Proxy-Passwort db_51;
    }
}

Lastverteilung von Datenbank-Slaves

Strom {
    Upstream-DB-Server {
        Server 172.16.1.51:3306;
        Server 172.16.1.52:3306;
        Server 172.16.1.53:3306;
        Server 172.16.1.54:3306;
        Server 172.16.1.55:3306;
        Server 172.16.1.56:3306;
    }
    
    Server {
        hören Sie 5555;
        Proxy_Pass-Datenbankserver;
    }
}

Zusammenfassen

Dies ist das Ende dieses Artikels über die vierschichtige Lastausgleichskonfiguration von Nginx. Weitere verwandte Inhalte zum vierschichtigen Lastausgleich von Nginx 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:
  • Das Prinzip und die Konfiguration des Nginx-Lastausgleichs sowie der dynamischen und statischen Trennung
  • So konfigurieren Sie den Nginx-Lastausgleich
  • Analyse des Prinzips von Nginx + Tomcat zur Erreichung eines Lastausgleichs sowie einer dynamischen und statischen Trennung
  • Was ist Nginx-Lastausgleich und wie wird er konfiguriert?
  • Implementierungsmethode des Nginx+Tomcat-Lastausgleichsclusters
  • Docker Nginx-Container und Tomcat-Container zur Realisierung von Lastausgleich und dynamischen und statischen Trennungsvorgängen
  • Detaillierte Erläuterung zur Verwendung von Nginx + Consul + Upsync zum Erreichen eines dynamischen Lastausgleichs
  • Nginx-Konfiguration zum Erreichen eines Lastenausgleichs auf mehreren Servern

<<:  js-Code zur Realisierung eines Chatrooms für mehrere Personen

>>:  Detaillierte Erklärung der Primärschlüssel und Transaktionen in MySQL

Artikel empfehlen

Zusammenfassung der Unterschiede zwischen Get- und Post-Anfragen in Vue

Die Betriebsumgebung dieses Tutorials: Windows 7-...

Über nginx zur Implementierung des Jira-Reverse-Proxys

Zusammenfassung: Nginx-Reverse-Proxy für JIRA kon...

JavaScript implementiert Konstellationsabfragefunktion mit detailliertem Code

Inhaltsverzeichnis 1. Titel 2. Code 3. Ergebnisse...

Ein einfaches Beispiel für die Verwendung von Vue3-Routing VueRouter4

Routenplanung vue-router4 behält den Großteil der...

SQL-Aggregation, Gruppierung und Sortierung

Inhaltsverzeichnis 1. Aggregierte Abfrage 1. COUN...

Detaillierte Erläuterung der Pipeline und des Ventils im Tomcat-Pipeline-Modus

Vorwort Wenn in einem relativ komplexen großen Sy...

JavaScript implementiert kreisförmiges Karussell

In diesem Artikel wird der spezifische JavaScript...

Detailliertes Tutorial zur Integration von Apache Tomcat mit dem IDEA-Editor

1. Laden Sie das komprimierte Tomcat-Paket von de...

JavaScript implementiert die umfassendste Codeanalyse einer einfachen Lupe (ES5)

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

Detaillierte Erklärung des MySQL-Prepare-Prinzips

Vorteile von Prepare Der Grund, warum Prepare SQL...