Bericht aus dem Maschinenraum (Teil 2): Umzug von Hoods

Bereits seit mehreren Wochen planen wir den Umzug von 2 Hoods: Die Friesland / Wilhelmshaven Hood soll auf einen leistungsstärkeren Server umgezogen werden. Zusätzlich soll unser altes Defaultnetz auch auf unsere neue Infrastruktur eingerichtet werden. Diese beiden Milestones haben uns in den letzten Wochen einiges an Arbeit bereitet:

Wie plant man so einen Umzug sinnvoll und auf welche Punkte im Hintergrund muss dabei geachtet werden? Fangen wir mal ganz von vorne an.

Womit werden die Hoods eigentlich eingerichtet?

Unser aktuelles Hood-Setup läuft auf Basis von Puppet. Puppet ist ein Systemkonfigurationswerkzeug. Hauptanwendungsfall ist die automatisierte Konfiguration mehrerer Computer via Netzwerk. Konfigurationsparameter können etwa die Installation von Software, Datensynchronisation oder das Ausführen von Programmen sein.

Puppet ist Open Source und prinzipiell plattformübergreifend-unterstützt werden jedoch insbesondere unixoide Betriebssysteme wie Unix, Linux und FreeBSD. Jeder einzelner unserer Server ist über eine Konfigurationsdatei eingerichtet worden – in der alle Details für die automatische Installation eingetragen werden.

In der oben angegebenen Konfiguration werden mehrere Teile der Hood definiert. Wir unterscheiden bei unseren IPv6 Netzen zwischen 2 Typen:

  • 2a03:2260:1001:9000::/64 ist ein Netz, aus dem die Router und Clients Ihre IP Adressen beziehen
  • 2a03:2260:1001:0104::/64 ist ein internes Netz, das ausschließlich für unser dynamisches OSPF Routing (sprich das Routing zwischen unseren Hoods) genutzt wird.

Standardmäßig werden alle Konfigurationseinstellungen für den Server im Bereich network::inet gesetzt, damit der Server normal an das Internet angebunden ist.

Wie läuft so ein Umzug genau ab?

Für den Umzug unserer Hoods haben wir uns einen extra Milestone in unserem Gitlab erstellt, in dem entsprechende Issues nach deren Prioritäten abgearbeitet werden müssen. Dabei entsteht der große Vorteil, dass keine wichtigen Arbeiten (die in Vergessenheit geraten könnten) übersehen werden. Die einzelnen Issues können einem Administrator oder Entwickler hier direkt zugeordnet werden. Wenn hier alle Issues geschlossen und umgesetzt wurden, können die entsprechenden Hoods umgezogen werden. Zum Teil ist hier die Mitarbeit aus unterschiedlichen Teams notwendig.

Bereits vor einigen Monaten haben wir eine Hood (Kreis Steinfurt, wir haben hier bereits drüber berichtet) umgezogen. Aus den hier gemachten Fehlern haben wir gelernt und auch vernünftige Workflows für solche Umzüge gestrickt.

Der eigentliche Umzug der Hoods besteht darin, dass die Router (die immer noch mit dem alten System ihren VPN Tunnel aufrecht erhalten) zu dem neuen Server wechseln. Hierbei wird im ersten Schritt die TTL der DNS Einträge auf einen kleinen Wert gesetzt. Die TTL ist dafür zuständig, dass der Client sich den DNS Eintrag für eine bestimmte Zeit merkt. Wir benötigen hier eine relativ kleine Zeit, damit die Router nach Abschalten der alten Einträge eine neue Anfrage starten. Wir können hier unter anderem genau beobachten, wieviele Router sich schon auf den neuen Server verbunden haben.

Nachdem die DNS Einträge geändert wurden, müssen wir die VPN Verbindung bewusst von unserer Seite trennen, sodass der alte Server keine Tunnel mehr annimmt und alle Router eine neue Verbindung zu der neuen Hood aufbauen. Hierfür stoppen wir den kompletten fastD Dienst auf den alten Servern und warten gespannt einige Minuten.
Wenn alle Router den neuen Server gefunden haben, kann das alte System komplett abgeschaltet werden: Wir machen es uns hier aber auch nicht so einfach, denn den alten Server nutzen wir weiterhin als Exit – der Exit leitet den Traffic, der im Freifunk Nordwest Netz entsteht weiterhin zum Freifunk Rheinland.

Eins ist klar: Routine wird bei unserem Netz nie eintreten, es warten immer spannende und neue Baustellen…

Bevor wir es noch vergessen: Die Umzüge haben reibungslos geklappt und sollen ein kleines Weihnachtsgeschenk für alle Nutzer sein 🙂

 

Schreibe einen Kommentar