
Ich untersuche die Einrichtung einer Serverlösung mit Lastausgleich, die aus drei CentOS 5.4-Boxen besteht. Zwei dieser Boxen werden in einer Einrichtung untergebracht, während sich eine dritte in einer anderen Einrichtung befindet.
Ich arbeite derzeit daran, Heartbeat, ldirectord und ipvsadm einzurichten, um die Lastverteilung auf den Maschinen zu optimieren, aber ich bin mir nicht sicher, ob das mit
Ich bin nicht besonders vertraut mit den Details, wie das alles funktioniert, aber funktioniert die Lastverteilung richtig, wenn sich diese Server nicht alle im selben LAN befinden? Ich bin nicht sicher, ob Heartbeat SNMP zum Senden von Signalen verwendet oder nicht, was nur über ein LAN funktionieren würde. Hat das schon jemand ausprobiert oder eine andere Lösung gefunden?
Antwort1
Dies ist ein großes Thema, das schnell kompliziert wird.CAP-Theoremist ein guter Ausgangspunkt, da er die Entscheidungen auf höherer Ebene identifiziert, die getroffen werden müssen.
Wenn Sie mit einer schreibintensiven Webanwendung arbeiten, ist es schwieriger, die Last über das Internet zu verteilen und gleichzeitig die Datenintegrität aufrechtzuerhalten. Lesezentrierte Anwendungen (Suche!) lassen sich leichter verteilen, da Sie sich nicht um die Logistik des Schreibens der Daten kümmern müssen.
IP-VSermöglicht es Linux, im Wesentlichen ein Layer-4-Switch zu werden. Ich hatte den größten Erfolg mit der Verwendung auf Layer 2 (ARP/Ethernet-Link-Layer) und das wäre meine erste Wahl, aber es könnte machbar sein, etwas wieLVS-Tunfür geografisch getrennte Server, die keine Verbindung auf der Broadcast-Ebene haben. Beachten Sie, dass ipvsadm das Userland-Tool für IPVs und ldirectord ein Daemon zum Verwalten von IPVs-Ressourcen ist.
heartbeat wurde effektiv abgelöst durchSchrittmacher. Um den anderen Server zu überwachen, sind mehrere Verbindungen unerlässlich. Das Risiko, keine serielle oder redundante physische Verbindung zwischen den Servern zu haben, ist wesentlich größer. Selbst mehrere physisch getrennte Internetverbindungen, die die Heartbeat-Überwachung zwischen den beiden Standorten durchführen, werden zwangsläufig unterbrochen. Hier kommt das Datenrisiko ins Spiel, da bei automatischem Failover die Gefahr einer Datenbeschädigung durch Split Brain besteht. Es gibt keine ideale Methode, um dieses Risiko zu mindern.
Sie könnten mehr Logik in den Failover-Prozess einbringen. Beispiel:
Wenn Pfad1 ausgefallen ist, Pfad2 ausgefallen ist, dieser Prozess nicht ausgeführt wird und ich dies nicht tun kann, dann erfolgt ein Failover.
Dadurch wird das Risiko verringert, allerdings reicht dies immer noch nicht unbedingt aus, um die Server physisch über eine kurze Distanz verbinden zu können.
Bei statischen Inhalten ist es einfach, die Verwendung einesInhaltsverteilungsnetzwerk.
Einfaches Load Balancing und Failover können erreicht werden durchDNS im Round Robin-Format, was noch fehlbarer ist.
Border Gateway Protokollist ein Netzwerkprotokoll, das eine hohe Verfügbarkeit auf der Netzwerkebene ermöglichen kann.
Letztendlich kann mit genügend Geld (Zeit/Ressourcen) ein geeignetes SLA entwickelt werden, um ein hohes Maß an Verfügbarkeit zu ermöglichen. Ihr Budget wird Ihre ultimative Einschränkung sein. Definieren Sie Ihre Anforderungen und sehen Sie dann, was Sie innerhalb Ihres Budgets erreichen können, da es Kompromisse geben wird.
Ich habe oft festgestellt, dass es zumindest bei schreibintensiven Anwendungen sinnvoller ist, Hochverfügbarkeit und automatisches Failover innerhalb derselben physischen Räumlichkeiten zu ermöglichen. Als Teil des Notfallwiederherstellungsplans und des SLA sollte ein manueller Failover-Prozess zu einem physisch getrennten Standort vorhanden sein, der die Datenintegrität aufrechterhält und dennoch ein qualitativ hochwertiges Serviceniveau gewährleistet.
Antwort2
Verschiedene Server an unterschiedlichen Standorten zu haben, sollte kein Problem sein, solange sie einander erreichen können.
Das Problem wäre die Bandbreite zwischen ihnen und das, was Sie darauf fließen lassen.
Heartbeat verwendet kein SNMP und könnte Multicast, Unicast oder Broadcast sein. Es ist ein spezielles Protokoll (SNMP funktioniert jedenfalls zwischen LANs, da es ein UDP-Protokoll ist).
Welche Art von Dienst versucht man, die Last auszugleichen?
Antwort3
Eine weitere Idee wäre eine Implementierung von DRBD mit hoher Verfügbarkeit. Schauen Sie sich diese Seite anhttp://www.drbd.org/home/was-ist-drbd/