Hintergrund: RZ Bern Ausfall von gestern
Daniel Baumann
daniel.baumann at bfh.ch
Wed Mar 30 13:44:41 CEST 2022
Hallo zusammen
Hier unser Bericht zum RZ Ausfall von gestern fuer die technisch
Interessierten und fuer uns zur Dokumentation.
1. Kurzfassung (Management summary)
===================================
* zur Ausgangslage bzgl. des Ausfalls vom Montag des Cisco Nexus
Switches siehe vorherige Mail:
https://lists.bfh.science/pipermail/bfh-linux-announce/2022-March/000164.html
* Als gestern um 10 Uhr der Leih-Nexus mit dem noch verblieben Nexus
verbunden wurde, wurde:
- weil unvollstaendige Backup/Restore der Konfiguration,
- verbunden mit der Altlast des verwendeten legacy
High-Availability Modus der Nexus-Switches,
alle VLANs im Cage-B automatisch dekonfiguriert worden.
* Dadurch war das gesamte BFH.ch RZ im Cage-B offline. Ab 11 Uhr
waren alle VLANs wieder konfiguriert, die meisten Systeme liefen
wieder. Da einige VMs noch manuell ueberprueft/rebootet wurden,
waren alle Dienste ab 13 Uhr wieder uneingeschraenkt nutzbar.
2. Hintergrund
==============
2.1 Vorbemerkungen
=-=-=-=-=-=-=-=-=-
2.1.1 Cisco vPC
---------------
* Wenn man (wie bei uns) zwei Cisco Nexus Switches hat, moechte man
dass diese redundant/high-available sind, so dass wenn ein Geraet
ausfaellt, das andere uebernimmt und es zu keine Netzwerkunterbruch
oder -ausfall kommt (so geschehen am Montag).
* Bei Nexus Switches wird dies ueber "Cisco virtual Port Channel
(vPC)"-Feature implementiert (Nexus unterstuetzen weder Stacking
noch Virtual Switching System (VSS) und sind diesbezueglich im
Cisco-Portfolio etwas "speziell").
* Cisco vPC ist ein Modus, bei dem "nur" die globale Konfiguration der
Switches zwischen den zwei Geraeten ueber einen dezidierten Link
(MLAG) hin und her synchronisiert wird, ansonsten verhalten sich
die Switches als normale, einzelne Systeme (das im Gegensatz zu
VSS oder Stacking, wo sich das Gesamtsystem wie ein einzelnes
grosses System mit einer einzigen Gesamtkonfiguration verhaelt).
* vPC hat zwei Betriebsmodi:
- primary/secondary (legacy): jedes Geraet hat eine eigene
lokale Konfiguration-"Instanz", jedoch ist ein Geraet bzgl. der
globalen Konfiguration der primary und ueberschreibt die
Konfiguration auf dem anderen Geraet.
- active/active (normal): beide Geraete haben zusammen nur eine,
gemeinsame globale Konfiguration-"Instanz".
2.1.2 Cisco Konfigurations-Scope
--------------------------------
* Alle Cisco Switches haben eine ensprechende Konfiguration. Dort
sind alle Einstellungen des Geraetes enthalten, einerseits globale
Einstellung als auch die per-Interface (d.h. pro Netzwerkport)
spezifischen Einstellungen.
* Bei Cisco Nexus Switches ist dies etwas anderst, es gibt
grundsaetzlich drei verschiedene "Hierarchien" innerhalb der
Konfiguration:
- globale Einstellungen
- VLAN Einstellungen
- Interface Einstellungen
* Im Falle von vPC werden werden nur globale Einstellungen und VLAN
Einstellungen synchronisiert. Die lokalen Interface Einstellungen
werden (korrekterweise) nicht synchronisiert, da die ja bei beiden
Geraeten unterschiedlich sind.
2.1.3 Nexus Konfigurations-Backup
---------------------------------
* Bei allen Switches aus gesamten Cisco Palette kann mit dem Kommando
"show running-config" die gesamte Konfiguration angezeigt werden.
* Bei allen Cisco Geraeten an der BFH wird die Konfiguration bei
Aenderung automatisch und (unabhaengig von allfaelligen Aenderungen)
alle 3 Stunden automatisch in ein Git Repository gebackupt. So
koennen wir bei einem Ausfall jeweils auf die letzte aktuelle
Konfiguration zurueckgreifen.
* Im Gegensatz zu allen anderen Cisco Switches, sind die Nexus
Switches auch hier wieder einzigartig: Es gibt kein Kommando mit dem
man die Gesamtkonfiguration anzeigen kann - es wird jeweils nur die
globale Konfiguration und die Interface Konfiguration ausgegeben,
nicht aber die VLAN Konfiguration(!).
* Einzige Moeglichkeit, die Gesamtkonfiguration zu erhalten, ist durch
das Dumpen der Konfiguration auf eine Datei auf dem Switch, und
diese dann "manuell" wegzukopieren.
2.2 Was ist gestern genau passiert?
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2.2.1 Konfigurations-Backup/Restore Fail
----------------------------------------
* Wir haben dem externen Cisco-Engineer die letzte Konfiguration des
ausgefallen Nexus-Switches gegeben um diese auf dem Leih-Nexus zu
restoren.
* Der im Cisco-Umfeld einzigartige Umstand der Nexus Switche mit
unvollstaendigen Konfigurations-Backups (wenn basierend auf
"show running-config") hat dazu gefuehrt, dass das Backup nur die
globale und Interface-Konfiguration, nicht aber die VLAN
Konfiguration enthaelt.
* Der Restore der Konfiguration auf dem Leih-Nexus hat damit dazu
gefuehrt, dass der Switch *keine* VLANs konfiguriert hatte.
* Haetten wir die Konfiguration (~1700 Zeilen) vor dem Restore noch
kontrolliert, waere es vielleicht aufgefallen, dass darin nicht
enthalten waren :/
2.2.2 vPC Fail
--------------
* Nachdem der Leih-Nexus gestern eingebaut wurde, hat der externe
Cisco-Engineer die beiden Nexus wieder miteinander verbunden.
* Die Nexus Switches wurden damals (2011) initial aufgesetzt,
abgesehen von einem Firmware-Update in 2014 und 2020 nie mehr
angefasst/weiterentwickelt - sie befinden sich, konfigurativ,
immer noch im urspruenglichen Ausgangssetup von damals.
* Abweichend von Best Practise (= "active/active") und aus
wohl aus historischen Gruenden wurden die Switches damals im
"primary/secondary" vPC-Modus aufgesetzt, das laut Cisco immer
wieder zu Problemen fuehrt und (schon lange) nicht mehr benutzt
werden sollte.
* Das dadurch bei einem Wiederaufbau eines zuvor unterbrochenen vPC-
Konstruktes der eine Switch die Konfiguration des anderen
ueberschreibt, ist uns (damals von anderen Externen durchgefuehrten)
seit dem im Dezember 2020 durchgefuehrten Firmware-Update und den
damit erlebten Komplikationen bekannt:
https://lists.bfh.science/pipermail/bfh-linux-announce/2020-December/000093.html
* Wir haben den externen Cisco-Engineer nur "lose" bei dessen Arbeit
begleitet und sind davon ausgegangen sind, dass er den Umstand des
"primary/secondary statt active/active" bzgl. vPC beachten wird.
* Leider war der ausgefallene Nexus der primary, so dass der Leih-
Nexus nach dem Konfigurations-Restore (ohne VLAN Konfugration)
dem anderen, noch funktionierenden secondary Nexus die Konfiguration
ueberschrieben hat und dort alle VLANs dekonfiguriert hat.
* Nachdem das ganze BFH.ch RZ offline war, hat der externe Cisco-
Engineer praktisch sofort erkannt was das Problem war (Respekt!)
und die VLANs manuell nochmal nachkonfiguriert.
* Da durch den Unterbruch VMware (Virtualisierungsplattform) von
NetApp (Storage) getrennt war, mussten nach Wiederherstellung der
Netzwerk-Verbindungen noch einige VMs rebootet werden.
2.3 Was haette man besser machen koennen? (Lessons learned)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* Wir haben fuer uns folgende Schluesse gezogen/Massnahmen umgesetzt:
- fuer den Fall, dass wir bis zur Abschaltung der Nexus Switches
am 30.6.22 nochmals auf externe Cisco-Engineers in Anspruch nehmen
wuerden, so ist eine vorgaengige, detailiertere Besprechung als
auch eine engere, pro-aktivere Begleitung des externen Cisco-
Engineers notwendig.
Das ist besonders wichtig weil das Cisco-Netz historisch gewachsen
ist und die meisten Geraete-Konfigurationen und -Setups sehr
uneinheitlich sind (jedes System ist eine einzigartige und
manuelle "Perle", statt automatisiert und standartisiert).
- vollstaendiges Backup (inkl. VLAN Konfiguration) der Nexus-
Switches ist essenziell.
3. Schlussbemerkungen
=====================
* Wir haben zwei gleich alte, identisch lang laufende Nexus Switches
im Einsatz. Wenn einer davon ausfaellt, ist die Wahrscheinlichkeit
gross, dass der zweite auch kurzum ausfallen kann/wird.
* Im Gegensatz zum neuen Netz (wo wir aus diversen Gruenden, u.a.
Performance aber auch Resillience) eine Netzwerk-Architektur mit
(fuer die kritischen Systeme) 4facher und (allgemein) verteilter,
dezentraler Redundanz aufgebaut haben, ist das alte Netz sehr
anfaellig fuer den Ausfall von einzelnen Systemen.
* Waere der zweite Nexus ausgefallen, haetten wir einen mehrtaegigen
bis mehrwoechigen Totalausfall des Gesamt-Netzwerkes gehabt.
* Wenn also beim zentralen RZ Switch keine Redundanz mehr gegeben
ist und der noch laufende Switch schon "angezaehlt" ist, gilt es zur
Risikominimierung und Abwendung einer solchen Totalkatastrophe
unverzueglich zu handeln.
* Deshalb haben die IT-Services am Montag Abend entschieden, die
Inbetriebnahme des Leih-Nexus nicht auf eine Randzeit aufzuschieben,
sondern unmittelbar am naechsten Morgen vorzunehmen. Die Risiko-
Abwaegung zwischen Totalausfall in Kauf nehmen vs. ggf.
Komplikationen beim Austausch fiel zu Gunsten des Austausches aus.
Ausserdem war der naechste moegliche Termin mit dem Cisco-Engineer
erst Donnerstag/Freitag moeglich - was im gegeben Kontext sehr lange
ist und das daraus resultierende Risiko nicht uebernommen werden
konnte.
* Trotz all der Unannehmlichkeiten und Aufwaende des Ausfalls bei den
Nutzenden in den Departementen und auch unseren Kolleginnen und
Kollegen innerhalb der IT-Services (grosses Dankeschoen an alle
Teams der ITS!), sind wir insgesamt nochmal mit einem "blauen Auge"
davon gekommen.
* Wir entschuldigen uns bei allen Betroffenen und freuen uns,
bis im Sommer die komplette RZ Netzwerk-Architektur migriert zu
haben, bei welchen wir solche (und andere) "Schwierigkeiten"
von Beginn weg konzeptionell ausgeschlossen haben.
Gruesse,
Daniel
--
Berner Fachhochschule / Bern University of Applied Sciences
Services / IT-Services
Daniel Baumann
Teamleiter Linux & Infrastructure 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