Desaster-Recovery Uebung erfolgreich
Daniel Baumann
daniel.baumann at bfh.ch
Fri May 10 19:12:48 CEST 2019
Hallo zusammen
Kurzfassung
===========
* Die Desastery-Recovery Uebung war erfolgreich.
* Seit kurz vor 18 Uhr sind alle Dienste wie geplant und
uneingeschraenkt wieder verfuegbar.
* Der Topologie-Wechsel konnte aus Zeitmangel nicht abgeschlossen
werden, wir werden naechsten Freitag nochmals eine Downtime
einplanen (Announcement folgt Montag vormittags).
Hintergrund
===========
* Wir haben wegen des vollstaendigen Abschaltens von Ceph und des
wieder Zusammenfuehrens des Clusters fuer die Simulation des
Desastery-Recoveries sowie fuer den Einbau/Verkabelung der
zusaetzlichen Arista Switches (Science DMZ Border Router) etwas
laenger gebraucht als urspruenglich geplant.
* Sehr wertvoll war dabei, dass wir das "Split-Brain"-Verhalten
(resp. dessen Verhinderung) von Ceph testen konnten. Wir erlaeutern
dies hier weil es dazu bisher keine oeffentlich zugaenglichen
Erfahrungsberichte oder Dokumentation gibt:
- ein Ceph Cluster besteht aus div. Diensten, die zwei wichtigsten
sind die Monitors (enthalten die "Inhalts-Karten" im Sinne von
Inhaltsverzeichnissen was/wie/wo gespeichert ist) und die OSDs
(speichern die eigentlichen Daten auf die Disks/SSDs).
- ein Cluster hat mehrere (ungerade Anzahl) Monitore, welche sich
gegenseitig untereinander synchroniseren und abstimmen, wer die
neuste, gueltigen "Inhalts-Karten" hat (Quorum).
- sind die Monitore und OSDs ueber mehrere Racks verteilt (bei uns 2
Monitore in Rack 1, und 1 Monitor in Rack 2), wird der Cluster in
mehrere Teile zerfallen wenn die Verbindung zwischen den Racks
unterbrochen wird.
- bei uns sind das 2 Racks, d.h. 2 Teile. Sofern jede Seite
Verbindung zu genuegend OSDs hat, waere vorstellbar dass jede
Seite fuer sich entscheiden koennte, dass sie der "ueberlebende"
Teil des Clusters ist und wuerde Anfragen (weil die Racks jeweils
eigene Uplinks haben) von Usern unabhaengig von der anderen
Haelfte verarbeiten.
- dadurch wuerden die Daten auf beiden Cluster-Haelften auseinander
divergieren und ein Zusammenfuehren nach dem Wiederherstellen der
Verbindung zwischen den zwei Racks waere nicht mehr (sinnvoll)
moeglich. Dies nennt man "Split-Brain" und gilt es um jeden Preis
zu vermeiden.
- bei Ceph ist dies ganz einfach (und uninteressant) geloest: die
Cluster-Seite, welche weniger Monitore hat, wird beim Trennen
automatisch inaktiv. D.h. in unserem Falle waeren die Cluster-
Teile in Rack 2 (weil nur 1 von 3 Monitoren) inaktiv,
die Teile in Rack 1 (weil 2 von 3 Monitoren) blieben aktiv
und wuerden Anfragen von Usern weiterhin beantworten.
Dieses Verhalten haben wir zuvor schon simuliert und kennen wir/
koennen damit umgehen.
- Das Interessante ist nun aber.. was passiert, wenn die "kleinere
Haelfte" eine aktuellere "Inhalts-Karte" hat als die "groessere
Haelfte". Dieser Fall ist wichtig, weil in der Praxis oft eine
Verbindung zwischen den Racks nicht von einem logischen Moment zum
naechsten "komplett/vollstaendig" ausfaellt, sondern entweder
die Verbindung flackert oder schmierend/langsam ausfaellt, also
die Trennung nicht mit einem "scharfen Schnitt" erfolgt.
oder anderst: wenn etwas total schiefgeht, ist es in der Regel so,
dass es nicht nach dem fuers Recovery "best moeglichen Fall"
schief geht.
- Diese oben beschrieben Fehlermoeglichkeit ist neu (vor der Science
DMZ hatten wir den "alten" Cluster im BFH.ch Netz nur innerhalb
eines Racks platziert) und muss daher getestet werden.
- Wir haben diese Fehlersituation ereichen koennen in dem wir die
Hosts und Verbindungen absichtlich in der am schlechtesten
moeglichen Reihenfolge nacheinander getrennt und abgeschaltet
haben.
- Ceph hat sich auch in diesem Fall "korrekt" (im Sinne von
"Datenintegritaet ist jederzeit gewaehrleistet") verhalten
und den Cluster als ganzes inaktiv geschaltet, bis die aktuelle
Seite einen weiteren Monitor (und damit die Mehrheit) erhalten
hat.
- D.h. in einem Ernstfall wuerden wir zuerst schauen, welche Seite
die aktuellere ist und dieser durch Instanzieren von zusaetzlichen
Monitor-Containern zu einer Mehrheit verhelfen. Erst danach
sollte die Verbindung der Racks repariert werden und der Cluster
(ohne temporaeres Split-Brain) auf herkoemliche Weise einfach
wieder zusammengefuegt werden.
- dabei haben wir noch geuebt und verifiziert, wie man an diese
Informationen in einem vollstaendig nicht mehr funktionierenden
Cluster kommt (d.h. wenn "zufaelligerweise" ebenfalls auch alle
Status-Informationsdienste ausgefallen sind und man mit den
Daemons per Socket lokal und einzeln sprechen muss), d.h.
quasi den Flug ohne Sicht und nur mit Instrumenten.
Fazit
-----
Durch die Disastery-Recovery Uebung..
* ..haben wir verifiziert, dass der Betrieb unseres neuen, mehr als
ein Rack umspannenden Ceph Clusters selbst bei einem vollstaendigen
Ausfalls aller(!) Netzwerkverbindungen zwischen und(!) innerhalb der
Racks mit minimaler Downtime und garantierter Datenintegritaet
gewaehrleistet ist.
* ..sind wir uns sicher, dass unsere Infrastruktur, sowohl was
Netzwerkkomponenten und -konzept, als auch die darauf laufenden
Dienste (insbesondere Ceph als Fundament der Science DMZ)
funktioniert.
Gruesse,
Daniel
--
Berner Fachhochschule / Bern University of Applied Sciences
Services / IT-Services
Daniel Baumann
Teamleiter Linux Services
___________________________________________________________
Dammweg 3, CH-3013 Bern
Telefon direkt +41 31 848 48 22
Telefon Servicedesk +41 31 848 48 48
daniel.baumann at bfh.ch
https://bfh.ch
https://bfh.science
More information about the bfh-linux-announce
mailing list