Alternativen zu Heartbeat, Pacemaker und CoroSync?

26

Gibt es neben den typischen Heartbeat / Pacemaker / CoroSync-Kombinationen wichtige Alternativen für das automatische Failover unter Linux? Insbesondere richte ich ein Failover für EC2-Instanzen ein, das nur Unicast unterstützt - kein Multicast oder Broadcast. Ich versuche speziell, mit den wenigen Software-Komponenten umzugehen, die noch kein automatisches Failover haben und keine Multi-Master-Umgebungen unterstützen. Dies beinhaltet Tools wie HAProxy und Solr.

Ich arbeite mit Heartbeat + Pacemaker, bin aber nicht begeistert. Hier sind einige meiner Probleme:

  • Herzschlag - Für sich genommen auf zwei Knoten begrenzt. Ich hätte gerne 3+.
  • Schrittmacher - Die automatische Konfiguration ist nicht möglich. Der Cluster muss mit einem Quorum ausgeführt werden und muss dann noch manuell konfiguriert werden.
  • CoroSync - Unterstützt kein Unicast.

Pacemaker funktioniert sehr gut, obwohl es aufgrund seiner Leistung schwierig ist, ihn einzurichten. Das eigentliche Problem mit Pacemaker ist, dass es keine einfache Möglichkeit gibt, die Konfiguration zu automatisieren. Ich möchte wirklich eine EC2-Instanz starten, Chef / Puppet installieren und den gesamten Cluster ohne mein Zutun starten.

Bio-Gemüse
quelle

Antworten:

17

Ich bevorzuge Keepalived für Hochverfügbarkeit. Ich finde es einfacher zu installieren (ein Daemon und Config) als Heartbeat und Company. Der einzige Nachteil, auf den ich stoße, ist, dass keepalived standardmäßig keine Unicast-Option hat und nur VRRP für die Kommunikation verwendet. (Der Autor von HAProxy hat jedoch einen Unicast-Patch für keepalived geschrieben.)

JimB
quelle
Unicast ist ein Muss, aber ich werde mir den Patch ansehen.
Bio-Gemüse
4
+1 Ich war es gewohnt, Heartbeat in allen "Failover" -Situationen zu verwenden, bis ich einen Beitrag (irgendwo) des Autors von haproxy darüber las, warum ich es falsch gemacht hatte (oder zumindest ineffizient) und stattdessen keepalived verwenden sollte . Es hängt alles davon ab, ob ein Failover eines Netzwerkpfads (z. B. Verschieben einer IP auf einen anderen Server - Keepalived) oder nur ein einziger Zugriff auf eine Ressource (z. B. SAN-Verbindung - Heartbeat) erforderlich ist.
Coops
5
Dies ist die Mail, auf die sich @Coops bezieht. Ich glaube, formilux.org/archives/haproxy/1003/3259.html
Henrik
4
Seit Release 1.2.8 (05.08.2013) unterstützt Keepalived Unicast ( keepalived.org/changelog.html ).
Dynom
Einführungsartikel: opentodo.wordpress.com/2012/04/29/…
Vadzim
14

Eigentlich arbeite ich an etwas sehr ähnlichem wie dem, was Sie beschrieben haben (ein Failover-Cluster in EC2) und habe mich nach dem Testen von Heartbeat für Corosync als meine Messaging-Ebene entschieden. Corosync wird auf mehreren Servern ausgeführt und unterstützt Unicast (UDPU) ab Version 1.3.0 (ab November 2010). Ich habe Corosync in der EC2-Cloud von Amazon (mit Linux AMI von Amazon) eingerichtet und getestet und kann bestätigen, dass es problemlos funktioniert.

Eine udpu-Beispieldatei wird in / etc / corosync installiert.

Fügen Sie dem Schnittstellenabschnitt für jeden Knoten einen Memberblock hinzu, und geben Sie den Transport als updu an. (Ich habe im folgenden Beispiel den gleichen Port wie Heartbeat verwendet, aber Sie können ihn nach Bedarf ändern.)

z.B:

totem {
        version: 2
        secauth: off
        interface {
                member {
                        memberaddr: 10.xxx.xxx.xxx
                }
                member {
                        memberaddr: 10.xxx.xxx.xxx
                }
                ringnumber: 0
                bindnetaddr: 10.xxx.xxx.xxx
                mcastport: 694
        }
        transport: udpu
}

(Heartbeat soll ab Version 1.2.3 Cluster mit mehr als 3 Knoten unterstützen. Ich habe es jedoch noch nie persönlich ausprobiert und weiß nicht, ob es mit Unicast funktionieren würde.)

cyberx86
quelle
Ich habe einen Cluster von 3 Computern mit udpu eingerichtet, und das hat gut funktioniert. Sie fügen ihnen einfach weitere Mitgliedsblöcke hinzu.
Devicenull
11

Sorry, aber der Teil über Pacemaker ist nicht wahr. Die Schrittmacher-Regressions- und Release-Tests nutzen die Automatisierung in großem Umfang.

Wenn Sie ohne aktiven Cluster konfigurieren möchten, müssen Sie allen Befehlen das Präfix voranstellen CIB_file=/var/lib/heartbeat/crm/cib.xmloder es in Ihrer Umgebung festlegen. Stellen Sie lediglich sicher, dass Sie die .sig-Datei entfernen, bevor Sie den Cluster starten.

Bei Clustern ohne Quorum sollten die meisten, wenn nicht alle Tools, diese unterstützen -foder --forceden Cluster anweisen, die Änderung trotzdem zu akzeptieren. Wenn Sie ein Tool finden, das dies nicht kann, melden Sie bitte einen Fehler.

Andrew Beekhof
quelle
Entschuldigung, meine Meinung basiert auf dem Feedback, das ich von der Pacemaker-Mailingliste erhalten habe. Ich werde Ihren Vorschlag ausprobieren.
Bio-Gemüse
3

In der Open Source-Welt gibt es die RedHat Cluster Suite . Es ist einige Jahre her, dass ich RHCS implementiert habe, so dass ich heute nicht viele relevante Dinge dazu zu sagen habe.

Kommerziell gibt es Veritas Cluster Server . Keine Erfahrung damit.

Ein viel einfacheres und Open-Source-HA-Tool ist UCARP . UCARP bietet nicht annähernd die gleiche Art von "Infrastruktur" wie Heartbeat / Pacemaker / CoroSync, aber Sie können HA-Lösungen darauf aufbauen.

Sie können mit Virtualisierungstechnologien auch eine hochverfügbare Infrastruktur aufbauen. Diese Lösungen konzentrieren sich jedoch eher auf die Verfügbarkeit auf Hostebene als auf die Verfügbarkeit auf Anwendungsebene.

Thomson
quelle
Vielen Dank. Ich werde einen Blick auf RHcS, VCS und UCARP werfen. Ich habe meine Frage aktualisiert, um der Tatsache Rechnung zu tragen, dass ich Amazon EC2 verwende. Daher kann ich die Verfügbarkeit auf Host-Ebene nicht sehr genau steuern.
Bio-Gemüse
1

Es gibt Oracle Clusterware für Oracle Unbreakable Linux, obwohl ich es nicht verwendet habe.

Kendall
quelle
1

Wenn Sie bereits EC2 verwenden, warum nicht Elastic Load Balancing verwenden ? Damit können Sie die Verfügbarkeit auf Anwendungsebene erreichen, ohne das Failover selbst konfigurieren zu müssen.

manku
quelle
Es gibt mehrere Gründe, warum ELB nicht passt. Erstens funktioniert ELB nur für Anfragen, die aus dem öffentlichen Internet eingehen. Es kann nicht für interne Anfragen verwendet werden, es sei denn, Sie leiten Ihre Anfragen an die öffentliche Adresse der ELB weiter und zahlen dann für den gesamten Datenverkehr. Zweitens ist ELB ein sehr einfacher Balancer - Sie können keine Regeln oder Muster auf die Funktionsweise anwenden und Sie können keine Standby-Server haben. Sie möchten beispielsweise nicht, dass zwei separate HAProxy-Instanzen aktiv auf denselben Webserver verweisen, da sie keine Vorstellung von der tatsächlichen Auslastung des Zielwebservers haben.
Bio-Gemüse
1

Veritas Cluster ist großartig (im Vergleich zu Linux-Heartbeat, AIX-hacmp, HP-Serviceguard und Sun Cluster), kostet aber viel Geld. Das letzte Mal, als ich es mir ansah, basierte der Preis auf den CPU-Kernen des Clusters. Aktueller Anbieter ist Symantec ...

Nils
quelle
0

Ich habe einen Failover-Cluster-Manager in der Posix-Shell geschrieben: https://github.com/nackstein/back-to-work

schau es dir an, ich suche jemanden, der es ausprobieren und bei der Entwicklung helfen möchte.

Luigi
quelle
0

opensvc ( https://www.opensvc.com ) unterstützt mehrere Heartbeat-Treiber:

  • Unicast
  • Multicast
  • freigegebene Festplatte
  • 3rd Site Relay

und haben auch Quorum-Mechanismen im Falle von Split Brain.

Ich habe es geschafft, automatisch einen 4-Knoten-Cluster aus 2 Google Cloud-Instanzen + 2 Amazon-Instanzen mit terraform + ansible einzurichten.

Chaoxiang N
quelle