Frage Alternativen zu Heartbeat, Pacemaker und CoroSync?


Gibt es neben den typischen Heartbeat / Pacemaker / CoroSync-Kombinationen auch Alternativen zum automatischen Failover unter Linux? Insbesondere richte ich Failover auf EC2-Instanzen ein, die nur Unicast unterstützen - kein Multicast oder Broadcast. Ich versuche speziell, mit den wenigen Softwareteilen umzugehen, die nicht automatisch Failover haben und keine Multi-Master-Umgebungen unterstützen. Dazu gehören Tools wie HAProxy und Solr.

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

  • Heartbeat - an sich, auf zwei Knoten beschränkt. Ich hätte gerne 3+.
  • Schrittmacher - Konfiguration nicht möglich. Cluster muss mit einem Quorum ausgeführt werden und erfordert dann noch manuelle Konfiguration.
  • CoroSync - Unicast wird nicht unterstützt.

Der Herzschrittmacher funktioniert sehr gut, obwohl seine Leistung die Einrichtung erschwert. 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 meine Intervention starten lassen.


23
2018-06-02 03:16


Ursprung


übliche Frage. Was ist los mit denen? Es wird Ihnen helfen, Vorschläge zu machen. - Sirex
Danke für die Empfehlung. Ich habe meine Frage aktualisiert. - organicveggie


Antworten:


Ich bevorzuge es zu benutzen weiterleben für hohe Verfügbarkeit. Ich finde es einfacher einzurichten (ein Daemon und Config) als Herzschlag und Firma. 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 a Unicast-Patch für Keepalived jedoch)


16
2018-06-02 20:50



Unicast ist ein Muss, aber ich schaue mir den Patch an. - organicveggie
+1 Ich war daran gewöhnt, den Herzschlag in allen "Failover" -Situationen zu verwenden, bis ich (irgendwo) vom Autor von haproxy gelesen habe, warum ich es falsch (oder zumindest ineffizient) gemacht habe und stattdessen "keepalive" verwenden sollte . Es kommt darauf an, ob es wichtig ist, einen Netzwerkpfad zu überbrücken (z. B. eine IP auf einen anderen Server zu verschieben) oder nur einen einzigen Zugriff auf eine Ressource zu gewährleisten (z. B. SAN-Verbindung - Heartbeat). - Coops
Dies ist die Mail, auf die sich @Coops bezieht, glaube ich formilux.org/archives/haproxy/1003/3259.html - Henrik
Seit Release 1.2.8 (2013-08-05) unterstützt Keepalived Unicast (keepalived.org/changelog.html). - Dynom
Einleitender Artikel: opentodo.wordpress.com/2012/04/29/... - Vadzim


Ich arbeite gerade an etwas, das sehr ähnlich zu dem ist, was Sie beschrieben haben (ein Failover-Cluster auf EC2), und nach dem Ausprobieren von Heartbeat entschied ich mich für Corosync als meine Messaging-Schicht. Corosync läuft auf mehreren Servern und unterstützt Unicast (UDPU) ab Version 1.3.0 (ab Nov. 2010). Ich habe Corosync in der Amazon EC2-Cloud eingerichtet und getestet (mit Amazon Linux AMI) und kann bestätigen, dass es ohne Probleme funktioniert.

Eine Beispiel-Udpu-Datei wird in / etc / corosync installiert.

Fügen Sie dem Schnittstellenabschnitt für jeden Knoten einen Mitgliedsblock hinzu und geben Sie den Transport als "updu" an. (Ich habe den gleichen Port als Herzschlag im Beispiel unten verwendet, aber Sie können es wie gewünscht ä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 3+ Knotencluster in Version 1.2.3+ unterstützen, obwohl ich es nie persönlich ausprobiert habe und nicht weiß, ob es mit Unicast funktionieren würde).


14
2017-07-03 07:39



Ich habe einen Cluster von 3 Maschinen mit Udpu eingerichtet, und das hat gut funktioniert. Sie fügen nur Mitgliederblöcke zu ihnen hinzu. - devicenull


Entschuldigung, aber der Teil über Pacemaker ist nicht wahr. Die Pacemaker-Regressions- und Freigabetests nutzen die Automatisierung in hohem Maße.

Um ohne einen aktiven Cluster zu konfigurieren, setzen Sie alle Befehle mit voran CIB_file=/var/lib/heartbeat/crm/cib.xml oder setze es in deine Umgebung. Stellen Sie sicher, dass Sie die .sig-Datei entfernen, bevor Sie den Cluster starten.

Bei Clustern ohne Quorum sollten die meisten, wenn nicht alle Tools unterstützt werden -f oder --force Dadurch wird der Cluster angewiesen, die Änderung trotzdem zu akzeptieren. Wenn Sie ein Tool finden, das nicht funktioniert - bitte melden Sie einen Fehler.


10
2018-06-17 07:25



Entschuldigung, meine Meinung basierte auf dem Feedback, das ich von der Pacemaker-Mailingliste erhalten habe. Ich gebe deinem Vorschlag eine Chance. - organicveggie


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

Im Handel 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 auch eine hochverfügbare Infrastruktur mit Virtualisierungstechnologien erstellen, diese Lösungen konzentrieren sich jedoch eher auf die Verfügbarkeit auf Hostebene als auf die Verfügbarkeit auf Anwendungsebene.


3
2018-06-02 03:58



Vielen Dank. Ich schaue mir RHcS, VCS und UCARP an. Ich habe meine Frage aktualisiert, um die Tatsache widerzuspiegeln, dass ich Amazon EC2 verwende. Daher ist die Verfügbarkeit auf Host-Ebene nicht etwas, wozu ich viel Kontrolle habe ... daher denke ich an die Verfügbarkeit auf Anwendungsebene. - organicveggie


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


1
2018-06-02 22:39





Wenn Sie bereits EC2 verwenden, warum nicht verwenden Elastischer Lastenausgleich ? Dadurch können Sie die Verfügbarkeit auf Anwendungsebene erreichen, ohne Failover selbst konfigurieren zu müssen.


1
2018-06-25 17:14



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 des ELB weiter und bezahlen dann den gesamten Verkehr. Zweitens ist ELB ein sehr einfacher Balancer - Sie können keine Regeln oder Muster anwenden, wie es funktioniert, und Sie können keine Standby-Server haben. Beispielsweise möchten Sie nicht, dass zwei separate HAProxy-Instanzen aktiv auf denselben Webserver verweisen, da sie keine Vorstellung von der tatsächlichen Auslastung auf dem Zielwebserver haben. - organicveggie


Veritas Cluster ist großartig (verglichen mit Linux-Heartbeat, AIX-Hacmp, HP-Serviceguard und Sun Cluster), aber es kostet viel Geld. Das letzte Mal, als ich es mir angesehen habe, basierte sein Preis auf CPU-Kernen des Clusters. Aktueller Anbieter ist Symantec ...


1
2017-09-24 20:10





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 will.


0
2017-07-25 10:50