Die Vor- und Nachteile von Nginx und LVS und ihre geeignete Nutzungsumgebung

Die Vor- und Nachteile von Nginx und LVS und ihre geeignete Nutzungsumgebung

Lassen Sie uns zu Beginn darüber sprechen, was Lastenausgleich ist. Beim Lastenausgleich werden Stapel von Anforderungen entsprechend dem Inhalt der Anforderungen an verschiedene Backends verteilt, um eine entsprechende Verarbeitung zu gewährleisten. Dadurch werden Lastverteilung, Master-Slave-Umschaltung und andere Funktionen bereitgestellt.

Verschiedene Lastausgleichsprogramme haben unterschiedliche Algorithmen zur Verkehrsverteilung. Heute werden wir die beiden gängigsten Lastausgleichsprogramme auf dem Markt vergleichen, um ihre jeweiligen Vor- und Nachteile sowie die Zusammenarbeit in vielen Fällen zu sehen.

【Vierte und siebte Etage】

Lassen Sie uns zunächst über den Unterschied zwischen Vierschicht- und Siebenschichtsystem sprechen.

Layer 4-Lastausgleich bezieht sich auf IP+Port-Lastausgleich;
Unter Layer 7-Lastausgleich versteht man einen Lastausgleich basierend auf Informationen der Anwendungsschicht, wie etwa Webanforderungen und URLs.
Natürlich gibt es im gleichen Sinne auch Layer-2-Loadbalancing auf Basis von MAC-Adressen und Layer-3-Loadbalancing auf Basis von IP-Adressen.
Beim vierschichtigen Lastenausgleich werden hauptsächlich die IP-Schicht und die TCP/UDP-Schicht analysiert.
Für den Lastenausgleich auf sieben Ebenen ist eine Analyse der Protokolle der Anwendungsebene erforderlich, beispielsweise des HTTP-Protokolls, der URL, von Cookies und anderen Informationen.

【Über LVS】
LVS hat eine starke Ladekapazität, da sein Arbeitsmodus sehr einfach ist. Es verteilt nur Anfragen. Darüber hinaus arbeitet es auf der vierten Ebene ohne Verkehr und hat die höchste Effizienz.
LVS befindet sich auf Ebene 4 und kann für fast alle Anwendungen einen Lastausgleich durchführen.
LVS reagiert jedoch nicht empfindlich auf fehlerhafte Backends. Wenn beispielsweise im DR-Modus ein Backend-Server nicht mit VIP konfiguriert ist, gehen einige der angeforderten Daten direkt verloren.
Darüber hinaus stellt LVS hohe Anforderungen an die Stabilität der Netzwerkumgebung. Wenn die Anforderung fehlschlägt, kann sie sich nur auf den Wiederholungsmechanismus der Front-End-Anwendung selbst verlassen, und der Lastausgleich sendet die Anforderung nicht erneut.
Darüber hinaus wird LVS auch durch die Netzwerkarchitektur eingeschränkt. Zu Beginn des Entwurfs muss berücksichtigt werden, ob die Netzwerkarchitektur die Voraussetzungen der LVS-Last erfüllt.

【Über nginx】
In ähnlicher Weise kann nginx auch zum Lastenausgleich verwendet werden. Da nginx jedoch Verbindungen sowohl zum Quell- als auch zum Zielende herstellen muss, wird die Geschwindigkeit der Datenverkehrsverarbeitung durch eine Reihe von Konfigurationen wie Maschinen-E/A, CPU-Speicher usw. begrenzt, sodass die Ladekapazität von nginx relativ gering ist.
Die Installation und Konfiguration von nginx ist relativ einfach. Im Vergleich zu LVS erfordert nginx keine sehr strenge Netzwerkarchitektur, solange das Netzwerk verbunden werden kann.
Und der eigene Wiederholungsmechanismus von nginx kann sicherstellen, dass eine Anforderung, wenn sie nicht gesendet werden kann, erneut an ein fehlerfreies Backend gesendet wird.
Da nginx jedoch keinen vorgefertigten Hot-Standby-Mechanismus besitzt, besteht ein Single Point of Failure-Problem und es muss normalerweise mit Keepalived verwendet werden.
Als Lastenausgleich auf Anwendungsebene (später, nach der Einführung des Stream-Moduls, wird auch die vierte Ebene unterstützt) kann nginx jedoch Lastverteilung, Reserveumschaltung, HTTPS-Schreiben, Bandbreitengeschwindigkeitsbegrenzung, Verbergen der tatsächlichen IP, Verbergen des tatsächlichen Ports, Abschirmung von Angriffen und andere Funktionen bereitstellen, die LVS nicht bieten kann.

【Kontrast】
LVS und Nginx sind beide sehr gängige Lastausgleichsmethoden. Sie haben jeweils ihre eigenen Vor- und Nachteile. In der Produktionsumgebung müssen Sie entsprechend ihrer Eigenschaften auswählen.

LVS Nginx
Vier Schichten Vierte Etage/siebte Etage
Lastwiderstand leistungsstark schwach
Konfigurierbarkeit
Geringe Konfigurierbarkeit
Es reduziert auch die Möglichkeit menschlicher Fehler
Hohe Konfigurierbarkeit
Einige erweiterte Funktionen können konfiguriert werden
Stabilität
Hohe Stabilität
Es gibt eine komplette Hot-Standby-Lösung für zwei Maschinen
Geringe Stabilität, Ausfall einzelner Maschinen
Keine vorgefertigte Dual-Machine-Hot-Standby-Lösung
Abhängigkeiten der Netzwerkarchitektur
Starke Abhängigkeit
Sehr abhängig vom Entwurf der Netzwerkarchitektur
Natürlich kann eine einfachere NAT-Methode verwendet werden, um dieses Problem zu lösen
Keine Abhängigkeiten
Abhängigkeit von der Netzwerkstabilität
verlassen
Wenn ein Datenpaket an ein fehlerhaftes Backend verteilt wird, wird es nicht weiterverteilt und gibt direkt einen Fehler zurück.
Keine Abhängigkeit
Nachdem ein Paket an ein fehlerhaftes Backend verteilt wurde und einen Fehler zurückgibt, wird versucht, es an ein fehlerfreies Backend weiterzuverteilen.
Netzwerkverkehr
Nur der Anforderungsverkehr läuft durch das LVS-Netzwerk, und der Antwortverkehr wird vom Netzwerk des Backend-Servers zurückgegeben.
FULL_NAT ist dasselbe wie Nginx.
Der gesamte Anfrage- und Antwortverkehr läuft über nginx
Leistungsanforderungen für den Host
Geringere Anforderungen
LVS verteilt lediglich Anforderungen, und der Datenverkehr verlässt es nicht, sodass der Engpass nur durch die Netzwerkbandbreite und die Leistung der Netzwerkkarte begrenzt wird.
Hohe Anforderungen
Da nginx separate Verbindungen sowohl zur Quelle als auch zum Ziel herstellen muss und dazwischen eine Analyse einiger Datenpakete erforderlich ist, hängt dies von der E/A-Leistung und dem CPU-Speicher des Hostcomputers ab.
Weiterleitungsmethode
Synchrone Weiterleitung
Nach Erhalt der Anforderung leitet der LVS-Server sofort zu einem Backend-Server weiter und der Client stellt direkt eine Verbindung mit dem Backend-Server her.
Asynchrone Weiterleitung
Während die Clientverbindung aufrechterhalten wird, wird eine neue Anfrage mit demselben Inhalt an das Backend gesendet. Nachdem das Backend das Ergebnis zurückgegeben hat, gibt nginx es an den Client zurück.
andere
Unterstützt Umschreibregeln: Kann HTTP-Anfragen entsprechend unterschiedlicher Domänennamen und URLs in verschiedene Backend-Servergruppen aufteilen.
Bandbreite sparen: Unterstützt GZIP-Komprimierung und fügt einen Header für den lokalen Browser-Cache hinzu.

【Kombination der beiden】

In Bezug auf die Nutzung sollte die im Allgemeinen am Front-End verwendete Strategie LVS sein, d. h. der DNS sollte auf den LVS-Balancer verweisen. Der Hauptgrund ist, dass Nginx zwar leistungsstark ist, aber wenn der Umfang des Back-End-Servers groß ist, wird die Netzwerkbandbreite von Nginx zu einem großen Engpass.
Wenn LVS jedoch als Lastenausgleich verwendet wird und beim Backend-Server, der die Anforderung empfängt, ein Problem auftritt, schlägt die Anforderung fehl.
Daher wird nginx in vielen Fällen als Knoten für LVS verwendet, um den Lastenausgleich durchzuführen. Dadurch können nicht nur schwerwiegende Bandbreitenengpässe vermieden werden, die durch die Leistung von nginx verursacht werden, sondern auch die Fehlerwiederholung von nginx verwendet werden, um einmalige LVS-Transaktionen zu vermeiden, und außerdem werden verschiedene erweiterte Funktionen von nginx verwendet, darunter HTTPS-Offloading und Nachrichtenheader-Änderung.

Oben finden Sie ausführliche Informationen zu den Vor- und Nachteilen von nginx und lvs sowie zur geeigneten Nutzungsumgebung. Weitere Informationen zum Vergleich zwischen nginx und lvs finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Eine kurze Diskussion über zwei Strombegrenzungsmethoden in Nginx
  • Detaillierte Erläuterung zur Verwendung von Nginx + Consul + Upsync zum Erreichen eines dynamischen Lastausgleichs
  • Detailliertes Tutorial zur Konfiguration von Nginx für https-verschlüsselten Zugriff
  • So zeigen Sie den Nginx-Konfigurationsdateipfad und den Ressourcendateipfad an
  • Analyse des Prozesses zur Implementierung eines Nginx+Tomcat-Clusters unter Windwos
  • Konfigurationsvorgänge verschiedener Projekte im sekundären Verzeichnis, nachdem nginx den Domänennamen konfiguriert hat

<<:  JavaScript zum Erzielen eines einfachen Countdown-Effekts

>>:  Verwendung von MySQL DDL-Anweisungen

Artikel empfehlen

Bootstrap3.0-Studiennotizentabelle bezogen auf

In diesem Artikel werden hauptsächlich Tabellen e...

HTML-Code, der den Internet Explorer zum Einfrieren bringen kann

Wir müssen lediglich einen beliebigen Texteditor ö...

So löschen Sie Standardformate und legen allgemeine Formate in CSS fest

CSS Standard-Stile löschen Die üblichen klaren St...

XHTML-Erste-Schritte-Tutorial: XHTML-Hyperlinks

Es ist keine Übertreibung, zu sagen, dass Hyperlin...

Beispielcode für die Verwendung von @media in CSS3 zur Anpassung einer Webseite

Heutzutage wird die Bildschirmauflösung von Compu...

Natives JS zum Erzielen von Laufschrifteffekten

Heute werde ich Ihnen einen Laufschrifteffekt zei...

Detaillierte Erklärung der Box-Größe in CSS3 (Content-Box und Border-Box)

Box-Größe in CSS3 (Inhaltsbox und Rahmenbox) Mit ...

Detailliertes Tutorial zum Kompilieren und Installieren von Python3.6 unter Linux

1. Gehen Sie zunächst auf die offizielle Website ...

Benutzerdefiniertes Auswahlfeld für die Webseite Auswählen

Jeder ist wahrscheinlich mit dem Auswahl-Dropdown...

So implementieren Sie Linux Deepin, um redundante Kernel zu löschen

Im vorherigen Artikel wurde beschrieben, wie man ...

Beispielcode von layim zum Integrieren des Rechtsklickmenüs in JavaScript

Inhaltsverzeichnis 1. Wirkungsdemonstration 2. Im...

MySQL implementiert eine Lösung ähnlich der Oracle-Sequenz

MySQL implementiert Oracle-ähnliche Sequenzen Ora...