Ich bin neu im Bereich Load Balancing und frage mich, ob es möglich ist, mehrere Load Balancer zu verwenden, um den Datenverkehr auf meine Anwendungsserver umzuleiten. Ich verstehe nicht wirklich, wie das gemacht werden kann. Sollte ein Domainname nicht eins zu eins mit der IP-Adresse eines bestimmten Servers übereinstimmen (in diesem Fall die IP eines Load Balancers)? Wenn jeder Load Balancing Server eine andere IP hat, wie kann die Anforderung von beiden Load Balancern (oder von 10 Load Balancern oder 50 oder 100) empfangen werden?
domain-name-system
nginx
load-balancing
haproxy
high-load
user3790827
quelle
quelle
Antworten:
Die Verwendung von Round-Robin-DNS eignet sich nicht besonders für Hochverfügbarkeit. Wenn ein Server offline geschaltet wird, versuchen die Clients weiterhin, eine Verbindung herzustellen, und warten auf eine Zeitüberschreitung.
Es gibt andere Möglichkeiten, dies zu erreichen.
1) Aktive / Passive Load Balancer
Grundsätzlich verarbeitet ein Load Balancer den gesamten Datenverkehr für eine IP-Adresse.
Wenn dieser Balancer ausfällt, springt der passive Knoten ein und übernimmt die IP.
Beachten Sie, dass Load Balancer so gut wie nur Datenverkehr weiterleiten. Für kleine bis mittelgroße Websites kann dies also in Ordnung sein.
2) Aktiv / Aktiv-Load-Balancer
Auf beiden (oder vielen weiteren) Load-Balancern ist dieselbe Verkehrs-IP konfiguriert.
Eingehender Datenverkehr wird an alle Load Balancer gesendet, aber ein Algorithmus wählt aus, welcher Balancer reagieren soll. Alle anderen verwerfen diesen Datenverkehr.
Einfach ausgedrückt: Sie haben zwei Load Balancer:
Wenn die anfordernde IP mit einer geraden Zahl endet, antwortet Load Balancer A, andernfalls antwortet Load Balancer B.
Natürlich muss Ihre Infrastruktur dies unterstützen, und es entsteht Overhead, da Datenverkehr gesendet, aber verworfen wird.
Weitere Informationen, zB hier: http://community.brocade.com/t5/SteelApp-Docs/Feature-Brief-Deep-dive-on-Multi-Hosted-IP-addresses-in-Stingray/ta-p/73867
quelle
Die Hochverfügbarkeit mit Load Balancern wird üblicherweise mithilfe eines VIP-Protokolls ( Virtual IP Address ) implementiert, mit dem mehrere Hosts (dh Load Balancer) auf eine von mehreren möglichen Arten auf eine gemeinsame IP-Adresse antworten können (Variationen von Aktiv / Passiv, Aktiv / Aktiv). .
Es gibt eine gute Anzahl dieser Protokolle, die ich mit regulären Load Balancern am häufigsten gesehen habe, sind VRRP und NLB (sowie viele unscheinbare Blackbox-Protokolle in Appliances). Bei der Erweiterung auf Router und Firewalls kann es beispielsweise auch zu CARP , HRSP , GLSP kommen .
Diese Strategie bietet eine Reihe von Vorteilen gegenüber dem DNS-Lastausgleich, der eine einfachere Strategie darstellt (und in einer anderen Antwort behandelt wird).
Der DNS-Lastausgleich ist beispielsweise belastet mit:
Wenn Sie ein virtuelles IP-Protokoll für HA verwenden, haben Sie möglicherweise die Wahl, Folgendes zu erreichen:
Nur Sie wissen, welche Strategie und welches Protokoll am besten zu Ihrem Szenario passt.
quelle
Die Anforderungen: Eine praktische Lösung, die für Clouds oder jede Art von Umgebung geeignet ist, in der kein Zugriff auf Hardware-Load-Balancer, BGP-Protokolle und all diese Dinge möglich ist.
Die Nummer der Einkommensanfrage einer Anwendung ist unbekannt, sollte jedoch hoch genug sein, um eine erhöhte Lasterwartung ohne Angst zu erfüllen.
Lassen Sie uns eine Anwendung mit ähnlicher Last finden, z. B. Protokollierungsspeicher und Such-App. Ich habe einen gefunden .
Was sie wollen:
Was haben sie versucht und über ELB gelernt:
Warum haben sie sich für Route53 entschieden:
Dieses spezielle Beispiel zeigt, dass in einigen Szenarien (Protokollkollektor, Werbedienst oder ähnliches) der Load Balancer redundant ist und die "DNS-Health-Check-Round-Robin-Lösung" ihre Aufgabe sehr gut erfüllt.
Mal sehen, was AWS zum DNS-Failover sagt :
Diese Technik macht ELB (nicht erforderlich, nur für eine Notiz) robuster, wiederum basiert es auf RR + Health Check:
Mal sehen, wie es hinter den Kulissen funktioniert . Die offensichtliche Frage ist, wie mit DNS-Caching umgegangen werden soll:
und definieren Sie eine Platzhalterressource
Algolia hat eine "Client-Wiederholungsstrategie" eingeführt, die ziemlich gut funktioniert, wenn Ihr Client (in Ihrem Fall JS) damit umgehen kann:
quelle