Wie verteilte Systeme dank Raft-Algorithmus zusammenarbeiten

Seite 4: In der Praxis

Inhaltsverzeichnis

In freier Wildbahn findet man den Raft-Algorithmus besonders oft in vergleichsweise neuen Anwendungen, die einen Modus für Hochverfügbarkeit mitbringen. Wenn in der Dokumentation einer neuen Datenbank von mindestens drei Servern die Rede ist, ist das ein gutes Indiz für Raft. Neben den schon genannten etcd und CockroachDB sind das häufig Anwendungen aus dem Cloud-Native-Umfeld, also solche, die redundant und skalierbar in Containern laufen sollen: Docker Swarm nutzt Raft, ebenso das Nachrichtenverteilsystem NATS und die populäre Datenbank MongoDB.

Für Administratoren ist Raft vergleichsweise pflegeleicht. Man startet eine ungerade Anzahl an Servern und überlässt alles Weitere dem Algorithmus – achten sollte man noch darauf, dass sie alle ihre Uhrzeit beim selben NTP-Server beziehen und dass die Latenzen im Netzwerk klein sind. Aussetzer von Maschinen steckt Raft gut weg, theoretisch auch über Stunden und Tage. Es gibt also keine magische Grenze, ab der ein ausgefallener Server nicht wieder hochgefahren werden dürfte – der Leader würde ihm nach kurzem oder langem Ausfall eine Liste mit Aufträgen zuspielen, sodass er sich wieder berappeln kann.

Dennoch sind Admins von auf Raft basierender Software gut beraten, die Abschnitte über "Disaster Recovery" in der Dokumentation ausführlich zu lesen und die Szenarien einmal in einer vorbereiteten Testumgebung durchzuspielen. Die Anwendungen, die auf Raft aufbauen, führen teils eigene zeitliche Grenzen für ausgeschaltete Server ein und bringen auch Befehle mit, um einen Server sauber für einige Zeit vom Netz zu nehmen (sogenanntes Draining). Und ganz wichtig: Nur weil Raft die Daten auf mehreren Maschinen speichert, heißt das nicht, dass Backups entfallen dürfen. Auch ein Raft-Cluster kann sich mal so verabschieden, dass er sich nicht aus eigener Kraft befreien kann. Regelmäßige Sicherungen sind also Pflicht, und das Einspielen der Backups in einen frischen Cluster sollte man vor dem Einsatz mal ausprobiert haben.

Wenn Sie als Entwickler mit dem Gedanken spielen, Raft in eigene Software einzubauen, die hochverfügbar laufen soll, finden Sie fertig implementierte Raft-Bibliotheken in verschiedenen Programmiersprachen. In vielen Fällen kann man sich das Leben aber einfacher machen und eine auf Raft basierende Datenbank wie etcd oder CockroachDB nutzen. Dann sparen Sie sich zum Beispiel das Implementieren eines Backup-Mechanismus.