Heim >Backend-Entwicklung >PHP-Tutorial >Zusammenfassung der Transitmodi lvs, nginx und haproxy

Zusammenfassung der Transitmodi lvs, nginx und haproxy

WBOY
WBOYOriginal
2016-08-08 09:21:471385Durchsuche

lvs, nginx und haproxy sind die drei gängigsten Hochverfügbarkeits-Lastausgleichssoftware. Da lvs und haproxy in der Live-Netzwerkumgebung des aktuellen Unternehmens nicht verwendet werden, haben sie sie jetzt fast vergessen, obwohl sie sie zuvor kurz verstanden und erstellt haben. Was den Nginx-Lastausgleich betrifft, muss das Unternehmen dies nur tun Einmal konfiguriert Die Dateien sind alle Strg+C, Strg+V, und ich habe die theoretischen Dinge zum Weiterleiten fast vergessen. Die einzigen Wörter, die mir jetzt vage in den Sinn kommen, sind upstream, dr und ip_hash. Jetzt werden wir die Weiterleitungsmethoden der drei zusammenfassen.

1. LVS-Weiterleitungsmodus

LVS ist eine leistungsstarke Software, die auf der vierten Ebene arbeitet und von Dr. Zhang Wensong geschrieben wurde. Im Gegensatz zu den beiden letztgenannten unterstützt es keine siebenschichtige Weiterleitung, ist aber gerade aufgrund seiner Einfachheit am stabilsten. Es gibt drei IP-Lastausgleichstechnologien: VS/NAT (Virtual Server via Network Address Translation), VS/TUN (Virtual Server via IP Tunneling) und VS/DR (Direct Routing). Der spezifische Vergleich zwischen den drei ist in der Tabelle dargestellt unten.

Zusammenfassung der Transitmodi lvs, nginx und haproxy

2. Nginx-Lademodus

Nginx verfügt über fünf Ladealgorithmusmodi, nämlich: Polling, Weight (Gewicht), ip_hash, fair, url_hash. Erklären Sie nun nacheinander:

  1. Abfrage (Standard): Jede Anfrage wird nacheinander in chronologischer Reihenfolge verschiedenen Back-End-Servern zugewiesen. Wenn der Back-End-Server ausfällt, kann dies automatisch der Fall sein beseitigt.
  2. Gewicht: Gibt die Abfragewahrscheinlichkeit an. Das Gewicht ist proportional zum Zugriffsverhältnis und wird verwendet, wenn die Leistung des Back-End-Servers ungleichmäßig ist. Konfiguriert als:
    1. Upstream-Backend {
    2. Server 192.168.0,14Gewicht=10;
    3. Server 192.168 .0,15Gewicht=10;
    4. }
  3. ip_hash: Jede Anfrage wird entsprechend dem Hash-Ergebnis der Zugriffs-IP zugewiesen, sodass jeder Besucher festen Zugriff auf einen Back-End-Server hat. was das Sitzungsproblem lösen kann. Konfiguriert als:
    1. Upstream-Backend {
    2. ip_hash;
    3. Server 192.168.0,14:88;
    4. Server 192.168.0,15:80;
    5. }
  4. fair: Weisen Sie Anfragen entsprechend der Antwortzeit des Backend-Servers zu, und diejenigen mit kurzen Antwortzeiten werden zuerst zugewiesen .
    1. Upstream-Backend {
    2. Server Server1;
    3. server server2;
    4. fair;
    5. }
  5. url_hash: Verteilen Sie Anforderungen entsprechend dem Hash-Ergebnis der aufgerufenen URL, sodass jede URL an denselben Back-End-Server weitergeleitet wird. Dies ist effektiver, wenn der Back-End-Server zwischengespeichert ist. Konfiguration wie:
    1. Upstream-Backend {
    2. Server Squid1:3128;
    3. Server Squid2:3128;
    4. hash $request_uri;
    5. hash_method crc32;
    6. }

Hinweis: Im fünften Modus müssen Sie darauf achten, Hash-Anweisungen im Upstream hinzuzufügen. Andere Parameter wie „weight“ können nicht in die Server-Anweisung geschrieben werden .

Die Parameter, denen der Server häufig folgt, lauten wie folgt:

  • down bedeutet, dass der vorherige Server vorübergehend nicht an der Last teilnimmt
  • Gewicht ist standardmäßig 1. Je größer das Gewicht, desto größer das Gewicht der Ladung.
  • max_fails: Die Anzahl der zulässigen Anforderungsfehler beträgt standardmäßig 1. Wenn die maximale Anzahl überschritten wird, wird der vom Modul „proxy_next_upstream“ definierte Fehler zurückgegeben
  • fail_timeout:max_fails Die Zeit zum Anhalten nach einem Fehler.
  • Sicherung: Wenn alle anderen Nicht-Backup-Maschinen ausgefallen oder ausgelastet sind, fordern Sie die Backup-Maschine an. Daher wird diese Maschine den geringsten Druck haben.

3. Haproxy

Haproxy hat mit acht Typen die meisten Auslastungsalgorithmen und verfügt daher über die meisten Anwendungsszenarien und die flexibelste Konfiguration 8 Algorithmen sind:

①roundrobin, was einfache Abfrage bedeutet, die grundsätzlich für den Lastausgleich verfügbar ist;

②static-rr, was bedeutet, dass es auf dem Gewicht basiert, und dem Gewichtsalgorithmus von Nginx ähnlich;

③leastconn bedeutet, dass die am wenigsten verbundene Person zuerst verarbeitet wird, ein bisschen ähnlich wie bei Nginx, aber fair basiert auf der Antwortzeit.

④source bedeutet, dass dies auf der IP der Anforderungsquelle basiert Das gleiche wie der IP_hash von Nginx. Wir verwenden ihn als Methode zur Lösung des Sitzungsproblems. Es wird empfohlen, auf

⑤ri zu achten, was bedeutet, dass er dem URL_hash von Nginx ähnelt ;

⑥rl_param, was bedeutet, dass basierend auf dem angeforderten URI-Parameter „balance url_param“ ein URL-Parametername erforderlich ist; HTTP-Anfrageheader;

⑧rdp-cookie(name) bedeutet, dass jede TCP-Anfrage basierend auf cookie(name) gesperrt und gehasht wird.

4. Zusammenfassung

Spezifische tatsächliche Netzwerkanwendungen können die beste Lademethode basierend auf der tatsächlichen Situation des Objekts auswählen. Von den dreien weist lvs die beste Stabilität und die geringste Konfigurierbarkeit auf. Nginx ist am stärksten beim regelmäßigen Abgleich von Domänennamen und Verzeichnisstrukturen. Gleichzeitig ist es weniger vom Netzwerk abhängig, aber seine Leistung ist etwas schlechter als bei lvs haproxy unterstützt virtuelle Hosts, insbesondere im Hinblick auf die Sitzungsaufbewahrung: IP-Identifikation (Quelle), Cookie-Identifikation und Sitzungsidentifikation. Diese Software wird auch häufig verwendet HA-Lösungen.

Oben wurde eine Zusammenfassung der Übertragungsmodi von lvs, nginx und haproxy vorgestellt, einschließlich relevanter Inhalte. Ich hoffe, dass sie für Freunde, die sich für PHP-Tutorials interessieren, hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn