Die dritte Stimme
Ein Container in einem Netzwerk-Switch lieferte die dritte Stimme für einen Cluster aus zwei Knoten. Der Aufbau dauerte eine Woche, der Betrieb etwa sechzehn Stunden. Dann kam ein dritter Rechner dazu und machte den Container überflüssig.
Warum zwei die falsche Zahl ist
Die Cluster-Software handelt nur, solange sie die Mehrheit der Stimmen hält. Mit zwei Mitgliedern ist das zerbrechlich: Fällt eines aus, hat das verbleibende nur eine von zwei Stimmen, also keine Mehrheit, und hält an, statt zu riskieren, allein zu handeln. Die Lösung ist eine dritte Stimme, die kein dritter Rechner ist: ein kleines Programm anderswo, das jedem Mitglied, das noch zu ihm durchkommt, „du bist die Mehrheit“ antwortet. Ein Jahr lang lief dieses Programm in einem Container auf dem NAS.
Weg vom NAS
Am 8. September fiel die Entscheidung, die Stimme vom NAS abzuziehen. Der Grund war das Klumpenrisiko, nicht die Verfügbarkeit: Das NAS trug schon jede Speicherstufe, jeden Backup-Weg und den Identitätsanbieter hinter dem Cluster-Login, und die Stimme ließ sich davon am billigsten verlegen. Verfügbarkeit war ohnehin nicht zu haben: Die Verbindung des NAS und der neue Standort der Stimme hängen beide per Bond am Core-Switch, sodass die Mitglieder einander nicht mehr sehen, wenn dieser Switch ausfällt, ganz gleich, welche Box die Stimme hält.
Hinein in den Switch
Der Access-Switch ist eine kleine ARM-Box, und sein Betriebssystem kann Container ausführen. Um das kleine Programm für die Stimme dort zum Laufen zu bringen, war eine Liste nötig, und jeder Punkt musste erfüllt sein, bevor der nächste an die Reihe kam:
- Ein Image für die Prozessorfamilie des Switches — auf einer Build-Maschine mit anderer Architektur und ohne Emulator, sodass das Image aus Schichten zusammengesetzt wird und beim Bauen nichts ausgeführt wird. Der Build schlägt fehl, wenn das Ergebnis nicht die Architektur des Switches hat.
- Ein Stick an der Seite des Switches, aus der Pipeline formatiert, mit der Seriennummer des Sticks im Befehl, damit eine veraltete Bestätigung kein anderes Medium löschen kann.
- Container-Unterstützung im Device-Mode aktiviert, am Reset-Knopf des Switches physisch bestätigt.
- Ein virtuelles Kabel ins Management-VLAN, mit fester Adresse und einem Satz Filterregeln, die nur die Adressauflösung der zwei Mitglieder und die eine Stimmverbindung zum Container durchlassen und sonst nichts. Dabei zeigte sich: Frames, die den Container verlassen, sind schon VLAN-getaggt, wenn der Filter sie sieht, also lässt sich diese Richtung auf das VLAN festlegen, aber nicht auf das Protokoll.
- Der Zertifikatstausch. Normalerweise meldet sich der Cluster per SSH am Host der Stimme an, um Zertifikate zu tauschen; ein Container auf einem Switch hat kein SSH. Also liefen die Anfrage und die signierte Antwort durch einen Ordner auf dem Stick, kopiert über die switcheigene Dateiübertragung und abgesichert durch einen fest hinterlegten Host-Schlüssel.
- Die Uhr. Die Uhr des Switches ging gegenüber den Knoten vor, und ein in der Zukunft ausgestelltes Zertifikat ist auf den Mitgliedern „noch nicht gültig“. Die Uhr wird vor dem Tausch ausgelesen und die Abweichung ausgegeben.
Jeder Schritt, der den Switch verändert, läuft zuerst als Probelauf und gibt aus, was er täte; erst eine Bestätigungsvariable schaltet ihn scharf.
Der Container hat abgestimmt
In den frühen Morgenstunden des 12. September verbanden sich beide Mitglieder mit dem Container, und der Cluster zählte drei Stimmen, die dritte davon vom Switch. Der alte Standort der Stimme auf dem NAS wurde in derselben Nacht außer Dienst gestellt. Für den Rest dieses Tages lag die entscheidende Stimme eines Zwei-Knoten-Clusters auf dem Access-Switch, und der Cluster hatte durch sie Quorum.
Und dann war es vorbei
An diesem Nachmittag trat der dritte Rechner dem Cluster bei. Drei Mitglieder sind drei Stimmen; ein Gleichstand kann nicht mehr vorkommen, und ein Platz, der nur abstimmt, hat keinen Zweck mehr. Mit dem Beitritt verschwand die Stimme im selben Zug aus der Cluster-Konfiguration; die Cluster-Software behält einen verwaisten Eintrag mit null Stimmen, bis sie auf einem Mitglied neu startet, was harmlos ist. Der Container hatte rund sechzehn Stunden lang abgestimmt.
Der Container, sein virtuelles Kabel, seine Filterregeln, sein Name in der Registry und seine Firewall-Regel sind entfernt. Der Stick und das Container-Paket des Switches bleiben, ungenutzt.