Ausfallsicherheit (Hochverfügbarkeit) bedeutet, dass ein Dienst auch bei Ausfall einzelner Komponenten weiterläuft. Der entscheidende Punkt: Man kann gegen bekannte Ausfälle Vorsorge treffen – aber nicht gegen alles. Deshalb steht am Anfang nicht die Technik, sondern die Frage: Was darf ausfallen, und wie lange?

Verfügbarkeitsklassen

Verfuegbarkeit in Prozent je Jahr (365 Tage):
  99,0 %     3,65 Tage Ausfall    - unbrauchbar fuer
                                     kritische Dienste
  99,9 %     8,8 Stunden          - drei Neunen
                                     (viele SaaS-Zusagen)
  99,95 %    4,4 Stunden
  99,99 %    53 Minuten           - vier Neunen
  99,999 %   5,3 Minuten          - fuenf Neunen,
                                     sehr teuer

WICHTIG: Ein Ausfall ist nicht nur "der Server ist weg".
  Die haeufigsten Ursachen in der Praxis:
    Fehlerhafte Aenderungen    40-50 %
    Anwendungsfehler           20 %
    Hardwareausfall            15 %
    Netzwerk                   10 %
    Hoehere Gewalt             Rest
  # Deshalb: Redundanz der Hardware loest nur 15 %
  # der Probleme! Die wichtigste Massnahme ist der
  # UMGANG MIT AENDERUNGEN (Tests, schrittweises
  # Ausrollen, Ruecknahme).

  # Und: Ausfallzeit wird an der SICHT DES NUTZERS gemessen.
  # Ein Server, der laeuft, aber keine Anfragen
  # beantwortet, ist ein Ausfall.

Verfuegbarkeit multipliziert sich:
  Kette: Anwendung (99,9 %) x Datenbank (99,9 %)
         x Netz (99,9 %) = 99,7 %
  # 1,1 Tage Ausfall im Jahr. Redundanz auf einer Ebene
  # bringt wenig, wenn eine andere sie zunichte macht.
  # Die schwaechste Stelle bestimmt das Ergebnis.

Single Point of Failure (SPoF):
  Jede Komponente, deren Ausfall den Dienst stoppt.
  Typische SPoF, die uebersehen werden:
    Der zweite Switch, der keine redundante Stromversorgung hat
    Dieselbe USV fuer beide redundanten Server
    Dasselbe Netzsegment fuer beide Knoten
    Ein DNS-Eintrag, der auf eine Adresse zeigt
    Ein Zertifikat, das auf einem Server erneuert wird
    Das Zertifikat selbst (!!! Ablaufdatum)
    Die Anmeldung (Active Directory / LDAP)
    Der Zeitserver
    Der Protokollspeicher
    Ein einzelnes Speicher-Array
    Ein Backup-Server, der auch DNS macht

Muster für Hochverfügbarkeit

1) AKTIV/PASSIV (Umschalten)
   Ein Knoten arbeitet, ein zweiter wartet.
   Umschaltung dauert Sekunden bis Minuten.
   Kosten: 2x Hardware fuer 1x Leistung
   Einsatz: Datenbanken, die keinen aktiven
     Parallelbetrieb vertragen
   # Vorteil: einfach, gut verstanden
   # Nachteil: Die Haelfte der Hardware ist ungenutzt,
   #           und das Umschalten muss getestet werden!

   WICHTIG: Ein Umschalten, das nie geprueft wurde,
   funktioniert im Ernstfall nicht. Und: Wenn der
   zweite Knoten nie laeuft, veraltet er.

2) AKTIV/AKTIV mit Lastverteilung
   Beide Knoten arbeiten, verteilt eingehende Anfragen.
   Ausfall eines Knotens: der andere uebernimmt.
   # Voraussetzung: Die Anwendung muss ZUSTANDSLOS sein
   # oder die Sitzung muss geteilt werden (Sitzung im
   # Zwischenspeicher, nicht im Arbeitsspeicher des
   # Knotens!).
   # Der haeufigste Fehler: Sitzungen im lokalen
   # Arbeitsspeicher - nach dem Ausfall eines Knotens
   # sind alle Nutzer abgemeldet.

3) REPLIKATION MIT AUTOMATISCHER UMSCHALTUNG
   Datenbanken: Primaer + Replik, automatische
   Erhebung des Repliks zum Primaer.
   # Vorsicht: Automatisches Umschalten kann bei
   # Netzwerkproblemen zu "Split Brain" fuehren -
   # zwei Primaer-Knoten, die auseinanderlaufen.
   # Ein Zeuge (Witness/Koordinator) ist noetig,
   # damit nicht zwei Knoten gleichzeitig der
   # Primaer sind.

4) REDUNDANZ AUF JEDER EBENE
   - Strom: zwei Netzteile an zwei USV
   - Netz: zwei Switches, zwei Karten (Bonding)
   - Speicher: RAID + mehrere Pfade (Multipath)
   - Standort: zweites Rechenzentrum
   # Wichtig: Die Ebenen muessen UNABHAENGIG sein.
   # Zwei Netzteile an derselben USV ist keine Redundanz.
   # Zwei Switches mit demselben Stromkreis auch nicht.

5) VERTEILUNG UEBER STANDORTE
   - Lastverteilung mit Zustandspruefung ueber
     mehrere Rechenzentren
   - Datenreplikation (asynchron bei grosser Entfernung,
     mit Datenverlust im Umschaltfall!)
   # Bei asynchroner Replikation gilt: RPO > 0.
   # Man verliert die Daten, die noch nicht
   # uebertragen waren. Das ist eine bewusste
   # Entscheidung (Latenz gegen Datenverlust).

Betrieb: der Teil, der oft fehlt

1) ZUSTANDSPRUEFUNGEN, DIE DEN NAMEN VERDIENEN
   # FALSCH: Prueft nur, ob der Prozess laeuft
   # RICHTIG: Prueft, ob der Dienst seine Aufgabe
   #          erfuellen kann (inklusive Abhaengigkeiten!)

   # Der Lastverteiler muss einen Knoten aus dem
   # Verkehr nehmen, der zwar antwortet, aber
   # falsch arbeitet.

   # Zustandspruefung, die zu viel prueft:
   #   Wenn sie die Datenbank mitprueft, faellt bei
   #   einem kurzen Datenbankproblem ALLES aus.
   #   Besser: Abhaengigkeiten als Warnung behandeln,
   #   nicht als Ausfall.

2) UMSCHALTEN UEBEN
   # Regelmaessig, mit Zeitmessung, dokumentiert.
   # Zwei Arten von Uebung:
   #   - Geplantes Umschalten (Wartung)
   #   - Ungeplantes Umschalten (Ausfall - im Test
   #     gern mit "Stecker ziehen", nicht mit
   #     "Prozess beenden"! Ein Prozessausfall ist
   #     etwas anderes als ein Hardwareausfall.)
   # Ein RTO, der nie gemessen wurde, ist geraten.

3) UEBERWACHT WIRD DIE SICHT DES NUTZERS
   # Nicht "laeuft der Prozess", sondern "kann ein
   # Nutzer das Ergebnis bekommen".
   # Von aussen pruefen (externer Dienst), nicht nur
   # von innen.

4) SCHWELLEN RICHTIG SETZEN
   # Zu empfindlich: Alarmmuedigkeit (niemand reagiert)
   # Zu traege: Der Ausfall wird zu spaet bemerkt
   # Wichtig: Zwischen "langsam" und "ausgefallen"
   # unterscheiden - und verschiedene Schwellen nutzen.

5) WARTUNGSFENSTER NUTZEN
   # Fuer Aenderungen mit Ausfallrisiko:
   #   - Zeitpunkt mit geringer Last
   #   - Ruecknahmeplan (wie komme ich zurueck?)
   #   - Ansprechpartner erreichbar
   #   - Erfolgskriterium vorher definieren
   # Aenderungen sind die Hauptursache von Ausfaellen.
   # Also: Aenderungsmanagement ist Ausfallsicherheit!

6) KAPAZITAET MITDENKEN
   # Redundanz ohne Reserve ist wertlos:
   # Wenn beide Knoten bei 70 % laufen, uebernimmt
   # der verbleibende 140 % - und faellt ebenfalls aus.
   # Faustregel: n+1 (ein Knoten mehr als noetig),
   # bei grosser Dimensionierung n+2.
   # Auslastung je Knoten unter 50 % halten, wenn
   # ein Knoten ausfallen darf.

7) ES GIBT IMMER EINEN EINZELPUNKT
   # Kostenlose Vollredundanz existiert nicht.
   # Fragen: Welcher Einzelpunkt bleibt, und was
   # passiert dann? (Antwort dokumentieren und
   # genehmigen lassen!)

Prüfliste

  1. Sind Verfügbarkeitsziele je Dienst definiert (nicht „so hoch wie möglich“)?
  2. Gibt es eine Liste der Einzelpunkte (inklusive DNS, AD, Zertifikate, Zeitserver)?
  3. Bekommen beide redundanten Knoten Strom aus unabhängigen Quellen?
  4. Nutzen beide Knoten unabhängige Netzpfade?
  5. Sind Sitzungen zustandslos oder geteilt (nicht im Knoten-Arbeitsspeicher)?
  6. Prüfen Zustandsprüfungen die Funktionsfähigkeit (nicht nur den Prozess)?
  7. Wird das Umschalten regelmäßig geübt und gemessen?
  8. Wird die Verfügbarkeit aus Sicht der Nutzer von außen gemessen?
  9. Sind Reservekapazität und Ausfallkapazität ausreichend (unter 50 % Last je Knoten)?
  10. Gibt es einen Rücknahmeplan für jede Änderung?
  11. Ist bekannt, welcher Einzelpunkt bleibt – und ist das abgesegnet?
  12. Gibt es ein automatisches Umschalten mit Koordinator (kein Split Brain)?

Häufige Fehler

  1. Redundanz ohne Ausfallkapazität. Zwei Knoten bei 70 % Auslastung: Der verbleibende 140 % – und fällt auch aus. Redundanz braucht Reserve.
  2. Umschalten nie geübt. Der zweite Knoten hat veraltete Daten, das Umschaltskript passt nicht mehr, niemand kennt den Ablauf.
  3. Gemeinsame Abhängigkeiten. Dieselbe USV, dieselbe Stromschiene, dasselbe Netzsegment, dasselbe Anmeldesystem. Redundanz, die in der Zeichnung existiert und nicht in der Wirklichkeit.
  4. Änderungen sind die Hauptursache. Wer Ausfälle vermeiden will, muss das Änderungsmanagement verbessern – nicht nur mehr Hardware kaufen.
  5. Einzelpunkte übersehen. Zertifikatsablauf, DNS, AD, Zeitserver, Protokollspeicher. Ein abgelaufenes Zertifikat ist ein Ausfall – und ein sehr häufiger.
  6. Sitzungen im Arbeitsspeicher. Nach dem Knotenausfall sind alle Nutzer abgemeldet. Kein „Ausfall“, aber praktisch unbrauchbar.
  7. Prozess statt Hardware getestet. Ein beendeter Prozess ist etwas anderes als ein ausgefallener Server. Beides üben.
  8. Split Brain. Automatisches Umschalten ohne Koordinator kann zwei Primärknoten erzeugen – mit Datenverlust und inkonsistenten Daten.
  9. Verfügbarkeit auf dem Papier. „Auf dem Papier“ fünf Neunen bei einem Dienstpartner, dessen Ausfall man selbst nicht abfängt.

Verwandte Grundlagen: Hochverfügbarkeit, Load-Balancer, Datensicherung, Notfallwiederherstellung.