Ich muss eine 2-Knoten-Cluster-Lösung (ähnlich?) Im Aktiv-Passiv-Modus erstellen, dh ein Server ist aktiv, während der andere passiv (Standby) ist, wodurch die Daten kontinuierlich von aktiv repliziert werden. KVM-basierte virtuelle Maschinen würden auf einem aktiven Knoten ausgeführt.
Falls der aktive Knoten aus irgendeinem Grund nicht verfügbar ist, möchte ich manuell zum zweiten Knoten wechseln (aktiv und der andere passiv werden).
Ich habe dieses Tutorial gesehen: https://www.alteeve.com/w/AN!Cluster_Tutorial_2#Technologies_We_Will_Use
Ich bin jedoch nicht mutig genug, vollautomatischem Failover zu vertrauen und etwas so Komplexes zu erstellen und darauf zu vertrauen, dass es richtig funktioniert. Zu hohes Risiko für Split-Brain-Situationen, irgendwie fehlgeschlagene Komplexität, Datenkorruption usw., während meine maximale Ausfallzeit nicht so hoch ist, dass ein sofortiges automatisches Failover erforderlich ist.
Ich habe Probleme, Informationen zum Erstellen dieser Art von Konfiguration zu finden. Wenn Sie dies getan haben, teilen Sie bitte die Info / HOWTO in einer Antwort.
Oder ist es vielleicht möglich, mit Linux-Knoten ein hochzuverlässiges automatisches Failover zu erstellen? Das Problem mit der Hochverfügbarkeit von Linux ist, dass das Interesse an dem Konzept wie vor 8 Jahren stark zugenommen zu haben scheint und viele Tutorials mittlerweile ziemlich alt sind. Dies deutet darauf hin, dass es in der Praxis möglicherweise erhebliche Probleme mit HA gegeben hat und einige / viele Sysadmins es einfach fallen ließen.
Wenn dies möglich ist, teilen Sie uns bitte die Informationen zum Erstellen und Ihre Erfahrungen mit Clustern mit, die in der Produktion ausgeführt werden .
quelle
Warum nicht Dinge verwenden, die von Tausenden von Benutzern überprüft wurden und deren Zuverlässigkeit bewiesen haben? Sie können einfach einen kostenlosen Hyper-V-Server mit beispielsweise StarWind VSAN Free bereitstellen und ohne Probleme echte HA erhalten. Lesen Sie dieses Handbuch: https://www.starwindsoftware.com/resource-library/starwind-virtual-san-hyperconverged-2-node-scenario-with-hyper-v-server-2016
quelle
Sie können DRBD vollständig einrichten und rein manuell verwenden. Der Prozess sollte überhaupt nicht komplex sein. Sie würden einfach das tun, was ein Schrittmacher- oder Rgmanager-Cluster tut, aber von Hand. Im Wesentlichen:
Dies setzt natürlich voraus, dass auf beiden Knoten die richtigen Pakete installiert sind und die Konfigurationen und Definitionen der VM auf beiden Knoten vorhanden sind.
Ich kann versichern, dass der Linux HA-Stack (Corosync und Schrittmacher) noch aktiv entwickelt und unterstützt wird. Viele Anleitungen sind alt, die Software gibt es schon seit 10 Jahren. Wenn es richtig gemacht wird, gibt es keine größeren Probleme oder Probleme. Es wird nicht aufgegeben, aber es ist nicht mehr "neu und aufregend".
quelle
Aktiv / Passiv-Cluster werden an vielen Orten immer noch häufig verwendet und laufen in der Produktion. Nachfolgend finden Sie unser Produktionssetup . Es funktioniert einwandfrei. Sie können es entweder im manuellen Modus (
orchestrate=start
) laufen lassen oder das automatische Failover aktivieren (orchestrate=ha
). Wir verwenden zfs, um von zfs Sende- / Empfangs- und zfs-Snapshots zu profitieren. Es ist jedoch auch möglich, drbd zu verwenden, wenn Sie eine synchrone Replikation bevorzugen.Voraussetzungen:
Schritte :
Einige Erklärungen:
{svcname}
in der Dienstkonfigurationsdatei ist eine Referenz, die auf den tatsächlichen Dienstnamen (win1) verweist.data/win1
auf Mountpoint/srv/win1
win1
sync#1
wird verwendet, um eine asynchrone zfs-Dataset-Replikation an den Slave-Knoten zu deklarieren (data / win1 auf Knoten1 wird an data / win1 auf Knoten2 gesendet), einmal pro 12 Stunden im Beispiel (zfs-Senden / Empfangen wird vom opensvc-Agenten verwaltet).Einige Verwaltungsbefehle:
svcmgr -s win1 start
Starten Sie den Dienstsvcmgr -s win1 stop
Beenden Sie den Dienstsvcmgr -s win1 stop --rid container#0
Stoppen Sie den Container-referenzierten Container # 0 in der Konfigurationsdateisvcmgr -s win1 switch
Verschieben Sie den Dienst auf den anderen Knotensvcmgr -s win1 sync update
Lösen Sie eine inkrementelle Kopie des zfs-Datasets aussvcmgr -s win1 sync full
Lösen Sie eine vollständige Kopie des zfs-Datasets ausEinige von mir verwaltete Dienste benötigen außerdem regelmäßig (täglich / wöchentlich / monatlich) zfs-Snapshots mit Aufbewahrung. In diesem Fall füge ich der Dienstkonfigurationsdatei das folgende Konfigurations-Snippet hinzu, und der opensvc-Agent erledigt den Job.
Wie gewünscht füge ich auch eine lvm / drbd / kvm-Konfiguration hinzu:
drbd resource config
/etc/drbd.d/kvmdrbd.res
:opensvc service config file
/etc/opensvc/kvmdrbd.conf
:Einige Erklärungen :
disk#1
: ist die lvm vg, die das große logische Volume hostet. sollte mindestens 5 GB betragen.disk#2
: ist die drbd-Festplatte, auf die der drbd-Ressourcenname verweist. Wenn der opensvc-Dienst "foo" heißt, sollten Sie /etc/drbd.d/foo.res haben. Oder ändern Sie den Parameter disk # 2.res in der Servicekonfigurationsdatei.fs#0
: Das Hauptdateisystem, in dem alle Festplattendateien für kvm guest gehostet werdencontainer#0
: der kvm-Gast, gleicher Name wie der opensvc-Dienst im Beispiel. Der Agent muss in der Lage sein, den kvm-Gast mit DNS aufzulösen und eine Ping-Prüfung durchzuführen, bevor er den Start des Dienstes akzeptiert (wenn eine Ping-Antwort vorliegt, wird der kvm-Gast bereits irgendwo ausgeführt, und es ist keine gute Idee, ihn zu starten. Der doppelte Startschutz ist gewährleistet von opensvc agent)standby = true
: bedeutet, dass diese Ressource aktiv bleiben muss, wenn der Dienst auf dem anderen Knoten ausgeführt wird. In unserem Beispiel ist es erforderlich, dass drbd weiterhin einwandfrei funktioniertshared = true
: https://docs.opensvc.com/latest/agent.service.provisioning.html#shared-resourcesquelle
Ich bin derzeit mit einem extrem ähnlichen System beschäftigt. 2 Server, einer aktiv, ein Backup und beide haben ein paar VMs in sich. Die Datenbank wird repliziert und die Dateiserver sind ständig mit rsync synchronisiert (aber nur in eine Richtung). Im Notfall wird der sekundäre Server bedient. Es gab die Idee, Pacemaker und Corosync zu verwenden, aber da dies 100% sein muss, hatte ich nicht den Mut zu experimentieren. Meine Idee ist, dass NginX über die Server wacht. Dies könnte geschehen, weil ich eine Webanwendung verwende, aber in Ihrem Fall weiß ich nicht, ob Sie sie verwenden könnten. DRBD ist ein Chaos für mich. Die vorherigen Server verwendeten es und während es anscheinend funktionierte, fühlte es sich an, als würde ich versuchen, einen menschlichen Körper zu sezieren.
Überprüfen Sie dies, es könnte Ihnen helfen: http://jensd.be/156/linux/building-a-high-available-failover-cluster-with-pacemaker-corosync-pcs
In einer kleinen Umgebung, in der ich es bereits ausprobiert und gearbeitet habe, sieht es nicht schwer aus. Leicht zu erlernen, leicht herzustellen, leicht zu warten. Eigentlich denke ich, dass Sie danach suchen.
quelle