True IT Stories

Zwei Räume, identisch geplant, von Hand gebaut

Die Idee war gut. Zwei Serverräume in getrennten Brandabschnitten, jeder für sich lauffähig. Brennt es in einem Raum, macht der andere weiter. Kein Cluster über beide Räume, keine komplizierte Umschaltung. Einfach zwei gleichwertige Hälften.

Bei einer Bestandsaufnahme vor Kurzem haben wir uns beide Hälften nebeneinander angesehen. Gleichwertig waren sie nicht.

Was wir gefunden haben

Auf den ersten Blick sah alles doppelt aus: Hosts in beiden Räumen, Storage in beiden Räumen, Domänencontroller und Dateidienste je Raum. Beim zweiten Blick nicht mehr.

  • Andere VMs. Manche Dienste liefen nur in einem Raum. Ihr Gegenstück im anderen gab es nicht.
  • Andere Netzwerk-Konfiguration. Baugleiche Hosts hatten unterschiedliche Netze, teils unterschiedliche Firewall-Regeln.
  • Andere Benennung. Es gab ein Schema, nach dem die Ziffer im Hostnamen den Raum anzeigt. Einige Hosts trugen die Ziffer des anderen Raums.

Niemand hatte das absichtlich so gebaut. Es war alles von Hand angelegt, Host für Host, VM für VM, nach und nach. Jeder Handgriff war für sich vernünftig. In der Summe liefen die beiden Hälften auseinander.

Warum das gefährlich ist

Zwei Hälften sind nur dann eine Absicherung, wenn jede Hälfte alles kann. Fällt ein Raum aus, trifft es genau die Dienste, die es nur einmal gibt. Und welche das sind, weiß man erst, wenn es passiert, denn aufgeschrieben war es nicht.

Der falsche Hostname klingt nach einer Kleinigkeit. Er ist es nicht. Im Störfall steht jemand vor einem Schrank oder vor einer Konsole und muss schnell entscheiden, welche Maschine er anfasst. Wenn der Name in den falschen Raum zeigt, schaltet er im Zweifel die falsche ab.

Wie die Hälften wieder gleich werden

Unser Grundsatz dafür ist einfach: Raum 1 und Raum 2 sind identisch, bis auf Hostnamen und IP-Adressen. Alles andere ist ein Fehler.

  1. Ein Namensschema festlegen und durchziehen. Der Raum gehört in den Namen, an eine feste Stelle. Wie wir das machen, steht in Fünfzehn Zeichen, und jedes muss etwas sagen . Hosts, die falsch heißen, werden umbenannt, wenn sie ohnehin angefasst werden.
  2. Konfiguration per Skript statt von Hand. Netze, Bridges, VLANs, Firewall-Regeln: Was in beiden Räumen gleich sein soll, kommt aus einer gemeinsamen Vorlage. Nur Name und Adresse sind Variablen. Was ein Skript zweimal baut, ist zweimal gleich. Was ein Mensch zweimal klickt, nicht.
  3. Die Dienste-Liste je Raum abgleichen. Für jeden Dienst die Frage: Läuft er in beiden Räumen? Wenn nein, ist das Absicht, und wie sieht der Wiederanlauf aus?
  4. Den Abgleich wiederholen. Ein Vergleich der Konfiguration beider Hälften, regelmäßig, nicht nur einmal. Auseinanderlaufen ist kein einmaliges Ereignis, es passiert bei jeder Änderung von Hand wieder.

Was wir daraus mitnehmen

Das Konzept war nicht das Problem. Zwei eigenständige Hälften sind ein guter, einfacher Weg zu Ausfallsicherheit. Das Problem war, dass niemand geprüft hat, ob die Umsetzung dem Konzept noch entspricht.

Zwei Räume sind schnell gebaut. Zwei gleiche Räume zu behalten, ist die eigentliche Arbeit.