Herzschlag Fleischgeschirr STONITH auf Kernel Panik

7

Ich habe einen Zwei-Knoten-Cluster mit Heartbeat und DRBD, der eine MySQL-Ressource verwaltet. Das Failover funktioniert hervorragend, wenn ich die primäre Verbindung stoppe, neu starte oder die Netzwerkverbindung trenne.

Wenn der Primärserver jedoch unter einer Kernel-Panik leidet (simuliert durch Ausführen echo c > /proc/sysrq-trigger), übernimmt der Sekundärteilnehmer die Ressourcen nicht.

So sieht das Heartbeat-Protokoll auf der Sekundärseite aus:

Jul 11 21:33:32 rad11 heartbeat: [7519]: WARN: node rad10: is dead
Jul 11 21:33:32 rad11 heartbeat: [7519]: info: Link rad10:eth0 dead.
Jul 11 21:33:32 rad11 heartbeat: [8442]: info: Resetting node rad10 with [Meatware STONITH device]
Jul 11 21:33:32 rad11 heartbeat: [8442]: ERROR: glib: OPERATOR INTERVENTION REQUIRED to reset rad10.
Jul 11 21:33:32 rad11 heartbeat: [8442]: ERROR: glib: Run "meatclient -c rad10" AFTER power-cycling the machine.

Hat jemand eine Idee, warum die Sekundarstufe in dieser Situation nicht übernimmt? Normalerweise funktioniert das Failover hervorragend, aber ich versuche, eine Kernel-Panik auf dem Primärknoten zu simulieren.

EDIT: Hier ist meine Heartbeat-Konfiguration, ha.cf.

# /etc/ha.d/ha.cf

logfile /var/log/ha-log

keepalive 1

deadtime 10

udpport 695

ucast eth0 rad11
auto_failback on
stonith_host rad10 meatware rad11
stonith_host rad11 meatware rad10
node rad10 rad11
Ethan Hayon
quelle
1
Ohne deine Haut zu sehen, ist es schwer zu sagen. Könntest du es posten? Als erster Gedanke kann Stonith jedoch aus offensichtlichen Gründen nicht mit einer Kernel-Panik arbeiten.
GeoSword
Vielen Dank! Ich habe meine Frage so bearbeitet, dass sie die Heartbeat-Konfigurationsdatei enthält.
Ethan Hayon

Antworten:

2

Wenn Clusterknoten den Kontakt miteinander verlieren, um ein Split-Brain- Szenario zu vermeiden , in dem beide Knoten sich als primär betrachten und gleichzeitig versuchen, die gemeinsam genutzte Ressource mit potenzieller Katastrophe auszuführen (dies ist insbesondere bei zwei Knotenclustern ein großes Problem , denn wer ist beschlussfähig, wenn beide Knoten jeweils eine Stimme haben?) Um dies zu mildern, implementieren einige Cluster verschiedene Formen der Umzäunung.

Auf der Linux-Ha-Wiki-Seite:

Beim Fechten werden Ressourcen von einem Knoten weggesperrt, dessen Status ungewiss ist.

Es gibt eine Vielzahl von Zauntechniken.

Man kann entweder Knoten mit Node Fencing oder Ressourcen mit Resource Fencing umzäunen. Einige Arten von Ressourcen sind Self-Fencing-Ressourcen, andere werden bei gleichzeitiger Verwendung nicht beschädigt und erfordern überhaupt keine Umzäunung.

Wenn ein Knoten ein sauberes Herunterfahren durchführt, verlässt er den Cluster und die anderen wissen, was los ist, und übernehmen daher nur alle Dienste, die der Knoten möglicherweise ausgeführt hat, und fahren dann fort. Wenn der Knoten den Cluster nicht verlässt, sondern eine Kernel-Panik bekommt, kennen die anderen Cluster-Mitglieder den Status des anderen Knotens nicht. Es wird aus ihrer Sicht "unsicher" sein, also werden sie stattdessen die konfigurierten "Fencing" -Aktionen ausführen, was im Fall von STONITH bedeutet, dass versucht wird, den fehlerhaften Knoten mit Gewalt aus dem Cluster zu entfernen (durch Aus- und Einschalten usw.).

In Ihren Protokollen scheint der meatware STONITH- Mechanismus für Ihre Cluster-Konfiguration ausgewählt zu sein. Wie der Name schon sagt, bedeutet dies, dass der andere Knoten manuell aus- und wieder eingeschaltet und dann der Befehl ausgeführt wird. Aus doc :

Fleischwaren

Seltsamer Name und ein einfaches Konzept. Fleischwaren benötigen die Hilfe eines Menschen, um funktionieren zu können. Bei jedem Aufruf protokolliert Fleischwaren eine CRIT-Schweregradmeldung, die auf der Konsole des Knotens angezeigt werden soll. Der Bediener sollte dann sicherstellen, dass der Knoten ausgefallen ist, und einen Befehl fleischclient (8) ausgeben, um Fleischwaren mitzuteilen, dass es in Ordnung ist, dem Cluster mitzuteilen, dass der Knoten möglicherweise tot ist. Weitere Informationen finden Sie unter README.meatware.

Es gibt andere Möglichkeiten, das Fencing zu konfigurieren. Wenn ich einen Cluster erstelle, bekomme ich normalerweise zwei APC-Switches für das Netzteil: s und konfiguriere "APC-Fencing" ( stonith -t apcmaster -h). Wenn ein Knoten ausfällt, führt der andere einen harten Neustart durch, indem das fehlerhafte Mitglied aus- und wieder eingeschaltet wird, indem es sich bei der APC-Schnittstelle anmeldet und den Befehl zum Herunterfahren / Neustarten an die angeschlossenen Netzteilsteckplätze sendet (ich erhalte zwei, um einen einzelnen Fehlerpunkt zu vermeiden). .

Petter H.
quelle
Danke für die Antwort! Das macht Sinn, ich habe (fälschlicherweise) Fleischwaren verwendet, ohne zu verstehen, was es tatsächlich tat. Unsere Server verfügen über eine IPMI-Schnittstelle, daher werde ich mich mit IPMI-Fencing befassen. Ihre Lösung mit APC-Netzteilen klingt gut, aber wir möchten keine zusätzliche Hardware hinzufügen (zumal IPMI sowieso den gleichen Zweck erfüllen sollte)
Ethan Hayon