12 Fehlertoleranz. Begriffe. Failure das System verhält sich nicht wie spezifiziert.

Ähnliche Dokumente
12 Fehlertoleranz. Begriffe

Verteilte Systeme F. Fehlertoleranz

7 Fehlertoleranz. vs7 1

Fehlertoleranz in eingebetteten Systemen

Verteilte Systeme. 7. Fehlertoleranz

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. 13. Fehlertoleranz. Verteilte Systeme, Sommersemester 1999 Folie 13.

Fehlertolerante Systeme

Fehlertolerante und Selbstheilende Systeme. Redundanztechniken

Grundlagen: Überblick

Verteilte Systeme - Übung

Überblick. Replikation Motivation Grundlagen Aktive Replikation Passive Replikation. c td VS (SS16) Replikation 6 1

Vorlesung Systemsoftware II Wintersemester 2002/03

FEHLERTOLERANZ EINE SEHR GROBE ÜBERSICHT BETRIEBSSYSTEME UND SICHERHEIT, WS 2016/17 HERMANN HÄRTIG

Praktikable Einigungsalgorithmen

Zuverlässige Systeme Fehlertoleranz

Fehlertoleranz. Betriebssysteme. Hermann Härtig TU Dresden

Sicherheit (Safety): Fehlerfall hat keinen katastrophalen Effekt - Menschenleben nicht gefährdet, - Datenbestand nicht zerstört.

Verteilte Systeme. Fehlertoleranz. Prof. Dr. Oliver Haase

Es gibt 2 gebräuchliche Arten, wie erkannte Fehler dem Aufrufer bekannt gegeben werden:

Grundlagen: Überblick

Motivation für Fehlertoleranz in VS Fehlermodelle Erreichen von Fehlertoleranz. Verteilte Systeme. 7. Fehlertoleranz

Byzantinische Fehlertoleranz durch Gruppenkommunikation am Beispiel des Rampart-Toolkit Frank Mattauch

Grundlagen verteilter Systeme

Vorlesung "Systemsoftware II" Wintersemester 2002/03

Vorlesung "Verteilte Systeme" Wintersemester 2000/2001. Verteilte Systeme. 14. Transaktionen

Motivation. Gruppenkommunikation. Verteilte Anwendung. Gruppenkommunikation. HW-Multicast div. GC-Impl totale Ord. Kommunikationsnetz

Fehlertoleranz & Robustheit

Entwurfsmuster und Softwarearchitekturen für sicherheitskritische Systeme

Formale Grundlagen der Fehlertoleranz in verteilten Systemen

Verlässliche Systeme

Algorithmus von Berkeley (1989)

Vor- und Nachteile der Fehlermaskierung

Verteilte Systeme. Replikation & Konsistenz I. Prof. Dr. Oliver Haase

Seminar: Fehlertolerante und Selbstheilende Systeme

Die Byzantinischen Generäle

Proseminar Technische Informatik WS08/09 bei Georg Wittenburg, M.Sc. Zuverlässigkeit und Fehlertoleranz in der Technik

The Byzantine Generals' Problem

Fakultät für Informatik der Technischen Universität München. Fehlertoleranz. Redundanz

Überblick. Multicast Motivation Grundlagen Zustellungsgarantien Ordnungsgarantien Paxos. c td VS (SS17) Multicast 7 1

Grundlagen verteilter Systeme

16. Ausnahmebehandlung Programmieren / Algorithmen und Datenstrukturen 2

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. 9. Verteilte Algorithmen

Verteilte Betriebssysteme

Verteilte Systeme. Diffusionsalgorithmen. Secure Identity Research Group

Verteilte Algorithmen

Vertrieb datentechnischer Geräte

Umgang mit Fehlern. Sinn von Ausnahme-/Fehlerobjekten Dokumentation Umgang mit Fehlern Eigene Fehlerklassen

Software-Wartung eine Taxonomie

7.2 Journaling-File-Systems (4)

Verteilte Betriebssysteme

2. Anforderungen an Automatisierungssysteme

Software Engineering. 5. Architektur

Überblick. Verlässliche Echtzeitsysteme. Annahmen. Table of Contents. Übungen zur Vorlesung. Florian Franzmann Martin Hoffmann Tobias Klaus

Aufgabe 2.1: Lamports Uhren

Wege zur Hochverfügbarkeit. Christian Affolter High Availability 08. Mai 2015

HA Storage Cluster Lösung

HA Storage Cluster Lösung

15. Ausnahmebehandlung Programmieren / Algorithmen und Datenstrukturen 2

4 Grundlagen von SQS-TEST/Professional New Line

Fehlertoleranzmechanismen in hochverfügbaren Clustersystemen

13.1 Einführung. Fehler. Fehler (Forts.)

HA Storage Cluster Lösung

Verlässliche Echtzeitsysteme

Intern: Ceph Kurzeinführung in die verteile Storage-Lösung

Software Entwicklung 2

SIMATIC PCS 7 V6.1 SP1. Redundanz und Hochverfügbarkeit in PCS 7. Redundanz und Hochverfügbarkeit in PCS 7. Themen

Brewer s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services Sigact News, 33(2), June 2002

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

Verteilte Systeme. Verteilte Systeme. 7 Koordination SS 2017

Verlässliche Echtzeitsysteme

VS2 Slide 1. Verteilte Systeme. Vorlesung 2 vom Dr. Sebastian Iwanowski FH Wedel

Test offener, dynamischer Systeme

Verfügbarkeit von Applikationen und Failover Szenarien. Winfried Wojtenek.

Verlässliche Echtzeitsysteme

Byzantinische Fehlertoleranz durch Gruppenkommunikation am Beispiel des Rampart-Toolkit

Fehler und Fehlertoleranz

Verlässliche Echtzeitsysteme

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung

Überblick. Verlässliche Echtzeitsysteme. Überblick. Annahmen. Übungen zur Vorlesung. 6. Juli 2015

Zeit als Mittel der Reihenfolgebestimmung

Verteilte Systeme. Synchronisation II. Prof. Dr. Oliver Haase

Theoretische Grundlagen der Informatik. Vorlesung am 8. Januar INSTITUT FÜR THEORETISCHE INFORMATIK

(Ausnahmebehandlung)

Verteilte Systeme - Java Networking (Sockets) 2 -

NCP Secure Enterprise HA Server (Linux) Release Notes

SYMPTOME U. a.: Wenn man nach der Datensicherung wieder mit dem ColorManager arbeiten will, kommt die Meldung. auf Deutsch oder.

Verlässliche Echtzeitsysteme

Example Ptolemy Model of Comp.: Synchronous Reactive

G DATA TechPaper. Update auf Version 14.1 der G DATA Unternehmenslösungen

Entwicklung sicherheitskritischer Systeme

Electronic Design Automation (EDA) Spezifikation

Einführung in parallele Dateisysteme am Beispiel von GPFS. Proseminar von Jakob Schmid im SS 2014

4. Lernen von Entscheidungsbäumen

Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling)

Einführung: Zustandsdiagramme Stand:

Transkript:

12 Fehlertoleranz ein verteiltes System beinhaltet viele Abstraktionsebenen, die stark voneinander abhängen. z.b. hängt der Klient von seinem Server ab, der wiederum von seinen Diensten, etc. die Kette der Abhängigkeiten setzt sich durch die Softwareebenen bis zur Hardware fort. Fehlertoleranz bedeutet, dass das Gesamtsystem einen Fehler einer Komponente in den Abhängigkeitsrelationen maskiert. das Fehlverhalten einer Komponente wird vom Gesamtsystem ausgeglichen. Begriffe Failure das System verhält sich nicht wie spezifiziert. Error Teil eines Systemzustands, der verantwortlich für eine zukünftige Failure ist, falls keine entsprechenden Maßnahmen getroffen werden. Fault die Ursache eines Errors.

2 12 Fehlertoleranz da ein Error Teil des Systemzustandes ist, lässt sich dieser beobachten und evaluieren. eine Failure (d.h. Fehlverhalten) ist nicht leicht observierbar. sie muss mit speziellen Mechanismen aus einem Error abgeleitet werden. wenn nicht jeder Systemzustand erfasst wird, kann Fehlverhalten entstehen, ohne dass es bemerkt wird. ein (verteiltes) System ist fehlertolerant (engl.: fault tolerant), wenn es in der Lage ist, sich trotz des Auftretens von Faults spezifikationskonsistent zu verhalten. Redundanz wird als Schlüsselverfahren auf drei Ebenen eingesetzt. bei Hardwareredundanz werden Hardwarekomponenten zusätzlich im System hinzugefügt. bei Softwareredundanz werden Softwarekomponenten oder Codesegmente mehrfach bereitgehalten und ausgeführt. bei Zeitredundanz wird zusätzliche Ausführungszeit für die vorgenannten Techniken spendiert.

3 Phasen eines fehlertoleranten Systems Fehlererkennung (engl.: error detection) ein Fehler wird im Zustand bemerkt (error) und daraus auf einen Fehler (fault) in einem Teil des Systems geschlossen. Man nimmt an, dass dann ein Fehlverhalten (failure) der betroffenen Komponente des Systems auftritt. Schadensermittlung (engl.: damage confinement) welcher Schaden ist bis zum Zeitpunkt der Erkennung aufgetreten. die Auswirkungen sollten auf einen bekannten und beschränkten Bereich eingegrenzt werden können. Fehlerrecovery (engl.: error recovery) der aufgetretene fehlerhafte Zustand wird behoben. das System wird in einen korrekten Zustand gebracht. Fehlerbehandlung und Weiterführen des Systems (engl.: fault treatment and continued system service) das fehlertolerante System soll spezifikationskonform weiter arbeiten die fehlerhafte Komponente wird umgangen oder in einer anderen Konfiguration verwendet.

4 12 Fehlertoleranz in sicherheitskritischen Systemen wird Fehlertoleranz oft durch redundante Auslegung der Hardware realisiert. z.b. drei identische Hardwarekomponenten (engl.: triple modular redundancy, TMR), die mit den gleichen Eingaben im gleichen Takt arbeiten. aus den drei Ergebnissen entscheidet die Majorität. dadurch ist das System gegenüber dem Ausfall und der Fehlfunktion einer Komponente tolerant. bei nur zwei Replikaten könnte nur der Ausfall einer Komponente maskiert werden.

5 Ebenen und Bausteine fehlertoleranter Software Bausteine Fail-Stop Prozessoren beenden ihre Tätigkeit bei einem entdeckten Fehler und arbeiten nicht fehlerhaft im System weiter. in stabilem Speicher sind Daten auch nach dem Auftreten eines Fehlers fehlerfrei verfügbar. durch zuverlässige Kommunikation werden Nachrichten sicher und in der richtigen Reihenfolge zugestellt. auf den Basiselementen kann zuverlässige und atomare Broadcastkommunikation aufgebaut werden. unter Verwendung der Bausteine lassen sich unterschiedlich tolerante Dienste entwickeln. Fehlertoleranz- Dienste Bausteine fehlertolerante Software Prozeß-Zuverlässigkeit (Process-Resilience) Daten-Zuverlässigkeit (Data-Resilience) atomare Aktionen konsistente Zustands-Recovery zuverlässiger und atomarer Broadcast Fail-Stop Prozessoren, stabiler Speicher, zuverlässige Kommunikation verteiltes System fortgesetzter Dienst bei Designfehlern fortgesetzter Dienst bei Knotenfehlern Konsistenz bei Knotenfehlern Bild 12.1: Ebenen in einem fehlertoleranten verteilten System

6 12 Fehlertoleranz 12.1 Fehlersemantik Fehlersemantik beschreibt das Verhalten von Systemkomponenten und des gesamten Systems im Fehlerfall. Je nach Art des Fehlers wird das Fehlverhalten in verschiedene Klassen eingeteilt [Cri91] Dienstverweigerung (engl.: omission failure bzw. denial of service) eine Komponente reagiert nicht mit einer Antwort auf einen Auftrag. z.b. durch verlorengehende Nachrichten im Kommunikationsdienst. fehlerhafte Antwort eine Komponente antwortet falsch auf einen Auftrag (engl.: response failure). falsche Werte werden übermittelt (engl.: value failure) intern finden falsche Zustandsübergänge statt (engl.: state transition failure) und es entstehen lokal falsche Werte. Zeitfehler (engl.: timing failure) eine Komponente antwortet richtig, jedoch zum falschen Zeitpunkt. meist kommen die Antworten zu spät z.b. durch einen überlasteten Server oder schlechte Netzverbindung. Antworten können auch zu früh ankommen. z.b. in Echtzeitsystemen oder Multimediasystemen.

12.1 Fehlersemantik 7 Serverabsturz (engl.: crash failure) ein Server verweigert kontinuierlich seinen Dienst. er wird von Klienten als abgestürzt vermutet. weitere Unterscheidung je nach Zustand der Serverdaten nach Wiederanlaufen: Amnesie-Crash: der Server startet im Initialzustand. er verliert jegliche Datenzustände zum Zeitpunkt des Absturzes. Pause-Crash: der Server startet in dem Zustand, den er vor dem Absturz hatte. Halte-Crash: die fehlerhafte Komponente steht nach dem Fehler und wird nicht erneut gestartet. Byzantinische Fehler eine Komponente verhält sich beliebig. es können beliebige Kombinationen der anderen Klassen vorkommen. oft sind Hardwarefehler dieursache von byzantinischen Fehlern. z.b. ein defekter Timerbaustein zerstört die Ordnung von Nachrichten.

8 12 Fehlertoleranz die Fehlersemantik beschreibt das Verhalten des Systems im Fehlerfall. d.h. ein fehlertolerantes System muss dies maskieren. z.b. muss ein Service mit Omission-Semantik zur Fehlertoleranz so erweitert werden, dass verlorengehende Aufträge automatisch vom Klienten wiederholt werden. je mehr Fehlersemantiken tolerant begegnet werden soll, um so aufwendiger wird die Programmierung. die starke Schichtung eines Systems aus Mechanismen und Diensten bedingt eine hohe Abhängigkeit der Komponenten. Fehler werden von unteren Schichten in die höheren propagiert. dabei können sich Fehlerklassen ändern und sehr komplexe Phänomene auftreten.

12.1 Fehlersemantik 9 Maskierung von Fehlern Hierarchische Maskierung Fehler von Diensten oder Komponenten niedrigerer Ebene werden von den sie nutzenden Komponenten höherer Ebene maskiert. ist eine Maskierung auf einer unteren Ebene nicht möglich, wird eine Ausnahme (engl.: exception) auf höherer Ebene ausgelöst, um dann dort maskiert zu werden. einfaches Beispiel: Abfrage auf Division durch Null, wenn die Divisionshardware dies nicht selbst melden kann. IF Nenner <> 0 THEN Teile... ELSE Fehlerbehandlung... Wenn auf allen Ebenen die Maskierung unmöglich ist, muss letztlich der Benutzer über die Ausnahme informiert werden. Maskierung durch Gruppenbildung der Fehler einer einzelnen Komponente wird durch die Replikation der Funktionalität in einer Gruppe verborgen. eine Gruppe heisst k-fehlertolerant, wenn sie den gleichzeitigen Ausfall von k Mitgliedern maskieren kann. es genügen k+1 Gruppenmitglieder, um das Fehlverhalten von k Komponenten zu maskieren. für byzantinische Fehler werden 3k+1 Mitglieder benötigt, da eine Mehrheitsentscheidung notwendig ist.

10 12 Fehlertoleranz 12.2 Passive Redundanz Passive Redundanz kann durch den Primary-Backup-Ansatz erreicht werden. es existieren k Replikate von Prozessen oder Daten, wobei ein Replikat als Primärserver fungiert. die restlichen Replikate arbeiten als Backup. Anfragen werden immer an den Primärserver gestellt. ist der Primärserver fehlerhaft oder antwortet nicht, wird er durch einen Backupserver ersetzt. Aktualisierung der Backupserver: Hot-Standby die Backupserver laufen synchron mit dem Primärserver mit. alle Anfragen gehen an alle Server. die Antwort wird nur vom Primärserver erbracht. beim Ausfall des Primärservers ist sofort ein Backupserver verfügbar. Warm-Standby Aufträge werden beim Primärserver gespeichert und periodisch den Backupservern übermittelt. die Backupserver werden dadurch nachgezogen. nach einem Ausfall muss der letzte Backupblock noch bearbeitet werden. ein Backupserver steht nach kurzer Zeit zur Verfügung.

12.2 Passive Redundanz 11 Cold-Standby alle Aufträge und Datenveränderungen werden beim Primärserver stabil gespeichert. fällt der Primärserver aus, muss anhand dieser Daten ein Backupserver vollständig nachgezogen werden. die Verzögerung für das Fortsetzen des Dienstes ist unter Umständen recht lang. damit Lebendigkeit und Verfügbarkeit des Primärservers überwacht werden kann, sendet dieser meist periodisch ALIVE- Nachrichten an seine Backupserver. werden eine bestimmte Zeit keine ALIVE-Nachrichten empfangen, vermuten die Backupserver, dass der Primärserver nicht mehr verfügbar ist. die Backupserver wählen unter sich einen neuen Primärserver. Passive Redundanz kann einen Knotenfehler, d.h. omission, des Primärservers maskieren. Passive Redundanz wird auch als lose Synchronisation bezeichnet.

12 12 Fehlertoleranz 12.3 Aktive Redundanz alle beteiligten Komponenten bzw. Server sind als Zustandsmaschinen mit identischen Übergangsfunktionen implementiert. Anfragen und Kommandos von außen verändern die Zustände aller Server synchron. wenn die Zustandsmaschinen im gleichen initialen Zustand beginnen und Kommandos in der gleichen Reihenfolge bearbeiten, befinden sich alle Maschinen immer im gleichen Zustand und erzeugen identische Ausgaben. aktive Redundanz bezeichnet man auch als enge Synchronisation. fällt eine Komponente aus, kann dies zu jedem Zeitpunkt maskiert werden. Die Maskierung eines Fehlers erfordert Übereinkunft (engl.: agreement) und Ordnung (engl.: order). Übereinkunft: jede nicht-fehlerhafte Zustandsmaschine empfängt alle Kommandos und weiss welche anderen nicht-fehlerhaft sind. Ordnung: die empfangenen Kommandos werden bei allen Servern in der gleichen Reihenfolge ausgeführt. Übereinkunft kann durch ein byzantinisches Übereinkunftsprotokoll für byzantinische Fehler oder durch einen zuverlässigen Broadcast bei Fail-Stop-Verhalten realisiert werden. Ordnung kann man durch eindeutige Identifikatoren aller Nachrichten und eine totale Ordnung über diese Identifikatoren erreichen.

12.3 Aktive Redundanz 13 theoretisch lässt sich in verteilten Systemen bei asynchronen Prozessen und unbeschränkter Nachrichtenlaufzeit Übereinkunft nicht erzielen [FLP85]. daher ist immer eine Restwahrscheinlichkeit gegeben, dass das fehlertolerante System Fehlverhalten zeigt. Byzantinisches Generalsproblem auf den Hügeln um Byzanz stehen die Truppen einiger römischer Generäle. um den Angriff zu koordinieren, melden sich die Generäle gegenseitig ihre Truppenstärken. keiner der Generäle kann sicher sein, dass nicht ein anderer General bestochen wurde und falsche Angaben macht, bzw. dass Nachrichten während der Übermittlung verfälscht werden. Beispiel 1 1 2 2 X 1 1 2 2 4 Y 4 Z 3 4 Bild 12.2 Byzantinisches Generalsproblem 4

14 12 Fehlertoleranz Übereinkunftsprotokoll von Lamport, Shostak und Pease 1982: die Generäle teilen sich ihre Truppenstärken mit und erhalten folgende Information: 1: (1,2,X,4)2: (1,2,Y,4)3: (1,2,3,4)4: (1,2,Z,4) die Generäle tauschen die gesammelten Informationen untereinander aus und haben danach folgende Entscheidungsgrundlage: 1: (1,2,Y,4)2: (1,2,X,4)3: (1,2,X,4)4: (1,2,X,4) (a,b,c,d) (e,f,g,h) (1,2,Y,4) (1,2,Y,4) (1,2,Z,4) (1,2,Z,4) (1,2,Z,4) (i,j,k,l) jeder General kann selbst eine Majoritätsentscheidung durchführen. z.b. ist für General 1 klar, dass die Werte an den Positionen 1, 2 und 4 korrekt sind und der dritte General ein Fehlverhalten aufweist. mit dem Algorithmus können 3k+1 Komponenten k fehlerhaft arbeitende Komponenten maskieren. für die Mehrheitsentscheidung sind 2k+1 funktionstüchtige Komponenten notwendig (mehr als zwei Drittel).

12.3 Aktive Redundanz 15 Beispiel: 2k+1 Komponenten reichen nicht aus (hier: k=1). in beiden Szenarien weiss A nicht, welcher der beiden anderen Knoten fehlerhaft ist, da er jeweils die gleichen Nachrichteninhalte empfängt. B 1 1 B 1 0 fehlerhaft A 0 C fehlerhaft A 0 C Bild 12.3 Byzantinische Übereinkunft ist mit 2k+1 Komponenten unmöglich

16 12 Fehlertoleranz 12.4 Zuverlässigkeit bei Softwaredesignfehlern Problem: verwendet man für die Redundanz identische Software, wird ein Programmierfehler in allen Replikaten zum Tragen kommen. N-Versionen-Programmierung ein Problem wird von N verschiedenen Entwicklungsteams oder in N Varianten unabhängig voneinander bearbeitet. es entstehen N verschiedene Designs, welche die gleiche Funktionalität und identische Schnittstellen bieten. mit sehr hoher Wahrscheinlichkeit haben die einzelnen Versionen unterschiedliche Fehler, so dass sie gegenseitig die Fehler einzelner maskieren können. alle Programme laufen gleichzeitig aktiv redundant mit den gleichen Eingaben. die mehrfache Ausgabe wird durch einen Mehrheitsentscheid in eine einzige Ausgabe überführt. es muss beachtet werden, dass unter Umständen nicht auf exakte Gleichheit geprüft werden kann (engl.: consistent comparison problem). eine Berechnung mit Gleitkommazahlen kann mit unterschiedlicher Rechenreihenfolge unterschiedliche Rundungsfehler erzeugen. weiteres Problem: die Laufzeit wird immer von der langsamsten Komponente bestimmt.

12.4 Zuverlässigkeit bei Softwaredesignfehlern 17 Recoveryblock in einer Komponente werden kritische Kodepassagen in mehreren Versionen implementiert. die Komponente führt zuerst die Primärversion aus und prüft das Ergebnis durch einen Akzeptanztest gegen die Spezifikation. ist ein Fehler aufgetreten, wird der ursprüngliche Zustand wiederhergestellt und die nächste alternative Version benutzt. die Alternativen lassen sich schachteln. Beispiel: ensure <acceptance test> by <primary module> else by <alternate module 1>... else by <alternate module n> else error ein Akzeptanztest ist kein vollständiger, erschöpfender Test aller Systemanforderungen, sondern eher eine Stichprobe. er ist dazu so flexibel zu halten, dass mehrere leicht unterschiedliche Ausgaben der zu testenden Module zulässig sein können. man kann dynamisch durch verschiedene Akzeptanztests auch unterschiedliches Verhalten des Systems ermöglichen. wenn der erste Akzeptanztest nicht erfolgreich ist, führt man einen abgeschwächten Test mit geringeren Anforderungen durch. wird dies wiederholt vorgenommen, kann ein adaptives System mit automatisch angepasster reduzierter Funktionalität realisiert werden (engl.: graceful degradation).