PS: Nginx/LVS/HAProxy sind derzeit die drei am häufigsten verwendeten Lastausgleichssoftware. Ich habe sie in mehreren Projekten implementiert und mit einigen meiner eigenen Erfahrungen kombiniert.
Im Allgemeinen besteht die Verwendung des Lastausgleichs darin, je nach Umfang der Website unterschiedliche Technologien in verschiedenen Phasen zu verwenden. Wenn es sich beispielsweise um eine kleine und mittelgroße Webanwendung handelt, deren tägliches PV weniger als 10 Millionen beträgt, ist die Verwendung von Nginx völlig in Ordnung Verwenden Sie DNS-Abfragen, und LVS verbraucht immer noch viele Maschinen. Bei großen Websites oder wichtigen Diensten und vielen Servern können Sie die Verwendung von LVS in Betracht ziehen.
Eine Möglichkeit besteht darin, dies über Hardware zu tun, z. B. relativ teure F5- und Array-Geräte. Der Nachteil besteht darin, dass sie über ein professionelles Wartungsteam verfügen dass es zu teuer ist, so dass es vorerst nicht notwendig ist, es für kleinere Netzwerkdienste zu verwenden; das andere ist eine auf Linux basierende kostenlose Open-Source-Lastausgleichssoftware ähnlich wie Nginx/LVS/HAProxy, die alle weitergegeben werden auf Softwareebene, daher sind die Kosten sehr gering.
Die derzeit sinnvollsten und beliebtesten Architekturlösungen für die Website-Architektur sind: Das Web-Frontend verwendet Nginx/HAProxy+Keepalived als Load Balancer; das Back-End verwendet eine MySQL-Datenbank mit einem Master und mehrere Slaves und Lese-Schreib-Trennung unter Verwendung der LVS + Keepalived-Architektur. Natürlich muss ein Plan basierend auf den spezifischen Anforderungen des Projekts formuliert werden.
Lassen Sie uns über ihre jeweiligen Eigenschaften und anwendbaren Anlässe sprechen.
Die Vorteile von Nginx sind:
1. Auf Schicht 7 des Netzwerks können einige Offloading-Strategien für http-Anwendungen implementiert werden. Beispielsweise sind seine regulären Regeln für Domänennamen und Verzeichnisstrukturen leistungsfähiger und flexibler als HAProxy, was einer der Hauptgründe dafür ist, dass Nginx allein aufgrund dessen in weitaus mehr Situationen eingesetzt werden kann als LVS.
2. Nginx ist theoretisch nur sehr wenig von der Netzwerkstabilität abhängig. Dies ist auch einer seiner Vorteile Stabilität, die mir sehr bewusst ist.
3. Die Installation und Konfiguration von Nginx ist relativ einfach und es ist bequemer, Fehler in Protokollen auszudrucken. Die Konfiguration und das Testen von LVS dauern relativ lange und LVS ist stark auf das Netzwerk angewiesen.
3. Es kann einem hohen Lastdruck standhalten und ist stabil. Wenn die Hardware nicht schlecht ist, kann es im Allgemeinen Zehntausende Parallelität unterstützen, und der Lastgrad ist relativ geringer als bei LVS.
4. Nginx kann interne Serverfehler wie Statuscodes, Zeitüberschreitungen usw. erkennen, die von der Serververarbeitungswebseite zurückgegeben werden, und sendet Anforderungen, die Fehler zurückgeben, erneut an einen anderen Knoten Unterstützt keine URL-Erkennung. Wenn der Benutzer beispielsweise eine Datei hochlädt und der Knoten, der den Upload verarbeitet, während des Upload-Vorgangs fehlschlägt, schaltet Nginx den Upload zur erneuten Verarbeitung auf einen anderen Server um und LVS wird direkt getrennt, wenn eine große Datei hochgeladen wird Wichtige Dateien, Benutzer können unzufrieden sein.
5. Nginx ist nicht nur eine hervorragende Load-Balancer-/Reverse-Proxy-Software, sondern auch ein leistungsstarker Webanwendungsserver. LNMP ist in den letzten Jahren auch eine sehr beliebte Webarchitektur und seine Stabilität ist auch in Umgebungen mit hohem Datenverkehr sehr gut.
6. Nginx wird als Web-Reverse-Beschleunigungs-Cache immer ausgereifter und ist schneller als der herkömmliche Squid-Server. Sie können ihn als Reverse-Proxy-Beschleuniger verwenden.
7. Nginx kann als Reverse-Proxy auf mittlerer Ebene verwendet werden. Der einzige, der mit Nginx mithalten kann, ist lighttpd , und die Konfiguration ist nicht so klar. Sie ist leicht zu lesen und die Community-Informationen sind weitaus weniger aktiv als bei Nginx.
8. Nginx kann auch als statischer Webseiten- und Bildserver verwendet werden und seine Leistung in diesem Bereich ist unübertroffen. Auch die Nginx-Community ist sehr aktiv und es gibt viele Module von Drittanbietern.
Die Nachteile von Nginx sind:
1. Nginx kann nur http-, https- und E-Mail-Protokolle unterstützen, daher ist sein Anwendungsbereich geringer.
2. Die Integritätsprüfung des Back-End-Servers unterstützt nur die Erkennung über den Port und nicht die Erkennung über die URL. Die direkte Beibehaltung der Sitzung wird nicht unterstützt, kann aber über ip_hash gelöst werden.
LVS: Verwenden Sie einen Linux-Kernel-Cluster, um einen leistungsstarken, hochverfügbaren Lastausgleichsserver zu implementieren, der über gute Skalierbarkeit (Skalierbarkeit), Zuverlässigkeit (Zuverlässigkeit) und Verwaltbarkeit (Verwaltbarkeit) verfügt.
Die Vorteile von LVS sind:
1. Starker Lastwiderstand. Es funktioniert nur auf der 4. Ebene des Netzwerks. Diese Funktion bestimmt auch die Leistung in der Lastausgleichssoftware . Die leistungsstärkste Version, die relativ wenig Speicher und CPU-Ressourcen verbraucht.
2. Die Konfigurierbarkeit ist relativ gering, was sowohl ein Nachteil als auch ein Vorteil ist. Da nichts zu viel konfiguriert werden kann, ist nicht zu viel Kontakt erforderlich, was die Wahrscheinlichkeit menschlicher Fehler erheblich verringert.
3. Es funktioniert stabil, weil es eine starke Lastbeständigkeit aufweist und über eine vollständige Hot-Backup-Lösung mit zwei Maschinen verfügt, wie z. B. LVS+Keepalived. Die Lösung, die wir bei der Projektimplementierung am häufigsten verwenden, ist jedoch LVS/DR+Keepalived.
4. Es gibt keinen Datenverkehr, der nur Anfragen verteilt, und der Datenverkehr geht nicht von selbst aus. Dadurch wird sichergestellt, dass die Leistung des Balancer-IO nicht durch großen Datenverkehr beeinträchtigt wird.
5. Da LVS auf Layer 4 arbeitet, kann es die Last aller Anwendungen, einschließlich http, Datenbanken, Online-Chatrooms usw., verteilen.
Die Nachteile von LVS sind:
1. Die Software selbst unterstützt die Verarbeitung regulärer Ausdrücke nicht und viele Websites haben diesbezüglich eine starke Nachfrage. Dies ist Nginx/HAProxy+ Vorteil von Keepalived.
2. Wenn die Website-Anwendung relativ groß ist, ist die Implementierung von LVS/DR+Keepalived komplizierter. Insbesondere wenn sich dahinter ein Windows-Server befindet, ist der Implementierungs-, Konfigurations- und Wartungsprozess relativ kompliziert , Nginx/HAProxy+Keepalived ist viel einfacher.
Die Eigenschaften von HAProxy sind:
1. HAProxy unterstützt auch virtuelle Hosts.
2. Die Vorteile von HAProxy können einige der Nachteile von Nginx ergänzen, z. B. die Unterstützung der Sitzungsaufbewahrung und der Cookie-Anleitung. Außerdem unterstützt es die Erkennung des Back-End-Serverstatus durch Abrufen der angegebenen URL.
3. HAProxy ähnelt LVS, es handelt sich lediglich um eine Lastausgleichssoftware, die eine bessere Lastausgleichsgeschwindigkeit als Nginx aufweist und auch bei der gleichzeitigen Verarbeitung besser ist.
4. HAProxy unterstützt die Lastausgleichsweiterleitung des TCP-Protokolls und kann die Lastausgleichsvorgänge für MySQL-Master- und -Slave-Knoten durchführen.
5. Die Lastausgleichsalgorithmen von HAProxy umfassen derzeit die folgenden 8 Typen:
① Es gibt nicht viel zu sagen, das ist im Grunde das, was der Lastausgleich ausmacht >② static-rr, das auf der Grundlage des Gewichts angibt, es wird empfohlen, darauf zu achten; IP, dies ähnelt dem IP_hash-Mechanismus von Nginx. Wir verwenden ihn als Methode zur Lösung des Sitzungsproblems. Es wird empfohlen, auf
⑤ ri zu achten, der den URI gemäß der Anforderung darstellt Der URL-Parameter gemäß der Anforderung „balance url_param“ erfordert einen URL-Parameternamen
⑦ hdr(name), bedeutet, dass jede HTTP-Anforderung basierend auf dem HTTP-Anforderungsheader gesperrt wird; bedeutet, jede TCP-Anfrage basierend auf dem Cookie (Name) zu sperren und zu hashen.
Zusammenfassung des Vergleichs zwischen Nginx und LVS:
1. Nginx arbeitet auf der 7. Schicht des Netzwerks und kann daher Umleitungsstrategien für die http-Anwendung selbst implementieren, z. B. Domänennamen, Verzeichnisstrukturen usw. In Im Gegensatz dazu verfügt LVS nicht über eine solche Funktion. Aufgrund dieser Funktion kann Nginx in weitaus mehr Situationen verwendet werden als LVS. Aufgrund dieser nützlichen Funktionen ist Nginx jedoch anpassbarer als LVS, sodass Sie es häufig häufiger anfassen müssen ., wird die Wahrscheinlichkeit menschlicher Probleme größer sein.
2. Nginx ist weniger auf die Netzwerkstabilität angewiesen, solange der Ping erfolgreich ist und der Webseitenzugriff normal ist. Dies ist ein großer Vorteil von Nginx. Nginx kann auch zwischen internen und externen Netzwerken unterscheiden, was einer einzelnen Maschine mit einer Backup-Leitung entspricht. Derzeit sind die Server in der Dasselbe Netzwerksegment und LVS verwenden den Direktmodus zum Auslagern. Der Effekt ist garantierter. Beachten Sie außerdem, dass LVS mindestens eine weitere IP beim Hosting-Anbieter beantragen muss, um als visuelle IP verwendet zu werden. Es scheint, dass es seine eigene IP nicht als VIP verwenden kann. Um ein guter LVS-Administrator zu sein, müssen Sie wirklich viel Wissen über die Netzwerkkommunikation erwerben, die nicht mehr so einfach ist wie HTTP.
3. Die Installation und Konfiguration von Nginx ist relativ einfach und auch sehr bequem zu testen, da grundsätzlich Fehler in Protokollen ausgedruckt werden können. Die Installation, Konfiguration und das Testen von LVS dauern relativ lange. In vielen Fällen ist eine erfolgreiche Konfiguration auf Netzwerkprobleme und nicht auf Konfigurationsprobleme zurückzuführen schwieriger zu lösen.
4. Nginx hält auch hohen Belastungen stand und ist stabil, aber die Belastung und Stabilität ist unterschiedlich: Nginx verarbeitet den gesamten Datenverkehr und ist daher durch Maschinen-E/A und die eigene Konfiguration begrenzt meiden.
5. Nginx kann interne Serverfehler wie Statuscodes, Zeitüberschreitungen usw. erkennen, die vom Server zurückgegeben werden, der Webseiten verarbeitet, und sendet Anfragen, die Fehler zurückgeben, erneut an einen anderen Knoten. Derzeit kann ldirectd in LVS auch die Überwachung der internen Bedingungen des Servers unterstützen, aber das Prinzip von LVS verhindert, dass Anfragen erneut gesendet werden. Wenn der Benutzer beispielsweise eine Datei hochlädt und der Knoten, der den Upload verarbeitet, während des Upload-Vorgangs fehlschlägt, schaltet Nginx den Upload zur erneuten Verarbeitung auf einen anderen Server um und LVS wird direkt getrennt, wenn eine große Datei hochgeladen wird Wichtige Dateien, Benutzer könnten dadurch verärgert sein.
6. Die asynchrone Verarbeitung von Anforderungen durch Nginx kann dem Knotenserver helfen, die Last zu reduzieren. Wenn Apache zur direkten Bedienung externer Parteien verwendet wird, belegt der Apache-Server viel Speicher und kann dies nicht tun freigegeben. Verwenden Sie einen weiteren Nginx als Apache-Proxy. In diesem Fall werden diese Schmalbandverbindungen von Nginx blockiert und es sammeln sich nicht zu viele Anfragen auf Apache, wodurch die Ressourcennutzung erheblich reduziert wird. Die Verwendung von Squid hat in dieser Hinsicht den gleichen Effekt. Auch wenn Squid selbst so konfiguriert ist, dass es nicht zwischenspeichert, ist es für Apache dennoch sehr hilfreich.
7. Nginx kann http, https und E-Mail unterstützen (die E-Mail-Funktion wird in dieser Hinsicht weniger häufig verwendet als Nginx). In Bezug auf die Verwendung sollte die vom Front-End verwendete Strategie im Allgemeinen LVS sein, dh die Richtung von DNS sollte der LVS-Entzerrer sein. Aufgrund der Vorteile von LVS ist es für diese Aufgabe sehr gut geeignet. Wichtige IP-Adressen wie Datenbank-IPs, Webservice-Server-IPs usw. werden am besten von LVS verwaltet. Mit der Zeit werden diese IP-Adressen immer häufiger verwendet. Wenn die IP-Adressen geändert werden, kommt es zu Störungen. Daher ist es am sichersten, diese wichtigen IPs zum Hosten an LVS zu übergeben. Der einzige Nachteil besteht darin, dass die Anzahl der erforderlichen VIPs höher ist. Nginx kann als LVS-Knotenmaschine verwendet werden. Erstens kann es die Funktionen von Nginx nutzen. Zweitens kann es die Leistung von Nginx nutzen. Natürlich können Sie Squid auf dieser Ebene auch direkt verwenden. Die Funktionen von Squid sind viel schwächer als die von Nginx und auch die Leistung ist schlechter als die von Nginx. Nginx kann auch als Mittelklasse-Proxy verwendet werden. Auf dieser Ebene hat Nginx im Grunde keine Konkurrenten. Der einzige, der Nginx erschüttern kann, ist lighttpd noch nicht in der Lage.
Nginx ist voll funktionsfähig und die Konfiguration ist nicht so klar und leicht zu lesen. Darüber hinaus ist auch die IP des Agenten der mittleren Ebene wichtig, sodass es für den Agenten der mittleren Ebene die perfekteste Lösung ist, auch über einen VIP und ein LVS zu verfügen. Wenn es sich um eine relativ kleine Website handelt (tägliche PV beträgt weniger als 10 Millionen), ist die Verwendung von Nginx völlig in Ordnung. Wenn es viele Maschinen gibt, kann LVS dennoch verwendet werden ; Bei großen Websites oder wichtigen Diensten sollten Sie die Verwendung von LVS in Betracht ziehen.
Der aktuelle Einsatz des Netzwerklastausgleichs besteht darin, mit zunehmender Größe der Website je nach Stufe unterschiedliche Technologien zu verwenden:
Phase 1: Verwenden Sie Nginx oder HAProxy für den Einzelpunkt-Lastausgleich In dieser Phase hat sich die Servergröße gerade vom Einzelserver- und Einzeldatenbankmodell gelöst, und es ist ein gewisses Maß an Lastausgleich erforderlich. Die Größe ist jedoch noch klein und es gibt kein professionelles Wartungsteam, das sie verwaltet Es ist keine groß angelegte Website-Bereitstellung erforderlich. Daher ist die Verwendung von Nginx oder HAproxy die erste Wahl. Diese Dinge sind zu diesem Zeitpunkt schnell zu starten und einfach zu konfigurieren. Verwenden Sie einfach das HTTP-Protokoll über Schicht sieben. Dies ist die erste Wahl.
Zweite Stufe: Da die Netzwerkdienste weiter ausgebaut werden, ist die Verwendung von LVS oder kommerziellem Array derzeit die erste Wahl Die Wahl von LVS hängt von der Größe und dem Budget des Unternehmens ab. Die Anwendungsbereitstellungsfunktion von Array ist sehr leistungsstark und das Preis-Leistungs-Verhältnis ist viel höher als bei F5 kommerzielle Nutzung! Im Allgemeinen können relevante Talente in dieser Phase jedoch nicht mit der Verbesserung des Geschäfts mithalten, sodass der Kauf eines kommerziellen Lastausgleichs der einzige Weg ist.
Die dritte Stufe: Zu diesem Zeitpunkt sind Netzwerkdienste zu Mainstream-Produkten geworden. Da die Popularität des Unternehmens weiter zugenommen hat, sind auch die Fähigkeiten und die Anzahl relevanter Talente gestiegen Im Hinblick auf die Entwicklung von kundenspezifischen Anpassungen, die zu den eigenen Produkten passen, ist Open-Source-LVS die erste Wahl im Hinblick auf Kostenreduzierung geworden, und LVS wird zu diesem Zeitpunkt zum Mainstream werden.
Die endgültige ideale Grundarchitektur ist: Array/LVS – Nginx/Haproxy – Squid/Varnish – AppServer.
Dieser Blogbeitrag wurde von http://www.ha97.com/5646.html reproduziert
Das Obige hat die Vor- und Nachteile der Nginx/LVS/HAProxy-Lastausgleichssoftware im Detail vorgestellt, einschließlich der relevanten Aspekte. Ich hoffe, dass es für Freunde, die sich für PHP-Tutorials interessieren, hilfreich sein wird.