Ich habe gerade den Status meiner glusterfs-Volumes überprüft und habe einen mit Split-Brain-Einträgen, die keinen Pfad haben:
# gluster volume heal private_uploads info
Brick server01:/var/lib/glusterfs/brick01/uploads/
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
Number of entries: 2
Brick server02:/var/lib/glusterfs/brick01/uploads/
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
Number of entries: 2
Was bedeutet es? Wie behebe ich das?
Ich verwende GlusterFS 3.5.9:
# gluster --version
glusterfs 3.5.9 built on Mar 28 2016 07:10:17
Repository revision: git://git.gluster.com/glusterfs.git
Antworten:
Was ist Split-Brain?
Wie in der von RedHat bereitgestellten offiziellen Dokumentation zur Verwaltung von Split-Brain erwähnt , ist Split-Brain ein Zustand, in dem Daten- oder Verfügbarkeitsinkonsistenzen aus der Pflege von zwei separaten Datensätzen mit überlappendem Umfang resultieren, entweder aufgrund von Servern in einem Netzwerkdesign. oder eine Fehlerbedingung, die darauf beruht, dass Server ihre Daten nicht miteinander kommunizieren und synchronisieren. Dieser Begriff gilt für die Replikationskonfiguration.
Beachten Sie, dass es sich um eine Fehlerbedingung handelt, die darauf beruht, dass Server ihre Daten nicht miteinander kommunizieren und synchronisieren. Dies bedeutet jedoch, dass Ihre Knoten möglicherweise die Verbindung verlieren. Der Peer befindet sich möglicherweise noch im Cluster und ist verbunden.
Split-Brain-Typen:
Wir haben drei verschiedene Arten von Split-Brain, und soweit ich sehen kann, ist Ihr Eintrag Split-Brain. Um drei Arten von Split-Brain zu erklären:
Daten Split-Brain: Der Inhalt der Datei unter Split-Brain ist in verschiedenen Replikatpaaren unterschiedlich und eine automatische Heilung ist nicht möglich.
Metadaten split-brain : , Die Metadaten der Dateien (z. B. benutzerdefiniertes erweitertes Attribut) sind unterschiedlich und eine automatische Heilung ist nicht möglich.
Eintrag split-brain: Dies passiert, wenn eine Datei auf jedem Replikatpaar unterschiedliche gfids hat.
Was ist GFID?
Die interne Dateikennung (GFID) von GlusterFS ist eine UUID, die für jede Datei im gesamten Cluster eindeutig ist. Dies ist analog zur Inode-Nummer in einem normalen Dateisystem. Die GFID einer Datei wird in ihrem xattr-Namen gespeichert
trusted.gfid
. Um den Pfad von GFID zu finden, empfehle ich Ihnen dringend, diesen offiziellen Artikel von GlusterFS zu lesen .Wie löse ich den Eintrag Split-Brain?
Es gibt mehrere Methoden, um das Auftreten von Split-Brain zu verhindern. Um dies zu beheben, müssen die entsprechenden gfid-link-Dateien entfernt werden. Die gfid-link-Dateien befinden sich im Verzeichnis .glusterfs im Verzeichnis der obersten Ebene des Bausteins. Beachten Sie übrigens, dass Sie vor dem Löschen der gfid-Links sicherstellen müssen, dass keine festen Links zu den auf diesem Baustein vorhandenen Dateien vorhanden sind. Wenn Hardlinks vorhanden sind, müssen Sie diese ebenfalls löschen. Anschließend können Sie den Selbstheilungsprozess verwenden, indem Sie die folgenden Befehle ausführen.
In der Zwischenzeit können Sie Folgendes verwenden, um die Liste der Dateien auf einem Volume anzuzeigen, die sich in einem Split-Brain-Zustand befinden:
Beachten Sie außerdem, dass bei replizierten Volumes, wenn ein Baustein offline geschaltet und wieder online geschaltet wird, eine Selbstheilung erforderlich ist, um alle Replikate erneut zu synchronisieren.
So überprüfen Sie den Heilungsstatus von Volumes und Dateien:
Da Sie Version 3.5 verwenden, haben Sie keine automatische Heilung. Nachdem Sie die zuvor genannten Schritte ausgeführt haben, müssen Sie die Selbstheilung auslösen. Um dies zu tun:
Nur für die Dateien, die geheilt werden müssen:
# gluster volume heal VOLNAME
Auf allen Dateien:
# gluster volume heal VOLNAME full
Ich hoffe, dies wird Ihnen bei der Behebung Ihres Problems helfen. Bitte lesen Sie die offiziellen Dokumente für weitere Informationen. Prost.
quelle
Ich denke, das Dokument ist klar genug, es hat Ihnen sogar ein ähnliches Beispiel gegeben.
Und für Gluesterfs 'Heilungsbefehle wie
Sie brauchen sich also keine Sorgen zu machen.
Und wie die Konvertierung von GFID in Pfad lautet:
Dieses Skript sagt Ihnen möglicherweise, welcher Dateiname zu welcher gfid gehört, aber es ist eine Gehirnaufteilung aufgetreten. Möglicherweise hat es keinen Dateinamen.
Sie verwenden 3.5 und haben kein halbautomatisches Heal-Cmd. Daher müssen Sie Konflikte möglicherweise manuell beheben. Dies bedeutet normalerweise, dass Sie entscheiden, welche gfid-Datei gelöscht werden muss.
quelle
Die Split-Brain-Auflösung finden Sie entweder hier . Für den Fall, dass es nicht viel helfen würde, sollte das Handbuch hier die Arbeit erledigen. Für den Fall sehe ich den Artikel auch hilfreich.
Wie vermeide ich Split-Brain?
Der Schutz vor Netzwerkpartitionen erfolgt durch einen Quorum-Voting-Algorithmus. Falls ein Host ausfällt oder es ein Split-Brain-Szenario gibt, in dem die Knoten weiterhin ausgeführt werden, aber nicht mehr miteinander kommunizieren können, versuchen der verbleibende Knoten oder die verbleibenden Knoten im Cluster, eine SCSI-Reservierung auf dem Zeugenlaufwerk zu platzieren. Im Falle eines Split-Brain hilft der Zeuge bei der Entscheidung, welcher der Hosts, der eine Kopie der Daten besitzt, die Kontrolle übernehmen soll.
Einige Beispiele.
Mit VMware VSAN können Cluster mit zwei Knoten ausgeführt werden, wobei das Zeugenlaufwerk auf einem dritten Host oder in der Cloud ausgeführt wird. Quelle
StarWind Virtual SAN wird in nur 2 Knoten mit dem Microsoft Failover Cluster-Dienst ausgeführt, der auch einen Quorum-Abstimmungsmechanismus enthält, um das Split-Brain-Problem zu vermeiden. Quelle
Für beide wird das Heartbeat-Netzwerk verwendet, um die Kommunikation zwischen Knoten und Quorum zu bedienen / zu überwachen. Um ein Split-Brain zu vermeiden, ist es meines Erachtens obligatorisch, redundante Heartbeat-Kanäle zu verwenden.
quelle
Split-Brain tritt auf, wenn zwei Knoten eines Clusters getrennt werden. Jeder Knoten glaubt, dass der andere nicht funktioniert.
Um dies zu beheben, müssen Sie verstehen, warum Ihre beiden Knoten nicht mehr miteinander sprechen.
quelle