Fehlertoleranz und Fehlerisolierung - Verfügbarkeit und mehr: Verständnis und Verbesserung der Widerstandsfähigkeit verteilter Systeme auf AWS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlertoleranz und Fehlerisolierung

Dies sind zwei wichtige Konzepte, wenn wir über Verfügbarkeit nachdenken. Fehlertoleranz ist die Fähigkeit, dem Ausfall eines Subsystems standzuhalten und die Verfügbarkeit aufrechtzuerhalten (das Richtige innerhalb einer festgelegten SLA zu tun). Um Fehlertoleranz zu implementieren, verwenden Workloads Ersatzsubsysteme (oder redundante). Wenn eines der Subsysteme in einer redundanten Gruppe ausfällt, nimmt ein anderes seine Arbeit wieder auf, normalerweise fast nahtlos. In diesem Fall handelt es sich bei Ersatzteilen um echte Reservekapazitäten. Sie stehen zur Verfügung, um 100% der Arbeit des ausgefallenen Subsystems zu übernehmen. Bei echten Ersatzteilen sind mehrere Ausfälle von Subsystemen erforderlich, um sich negativ auf die Arbeitslast auszuwirken.

Durch die Fehlerisolierung wird das Ausmaß der Auswirkungen minimiert, wenn ein Fehler auftritt. Dies wird in der Regel durch Modularisierung implementiert. Workloads werden in kleine Subsysteme aufgeteilt, die unabhängig voneinander ausfallen und isoliert repariert werden können. Der Ausfall eines Moduls überträgt sich nicht über das Modul hinaus. Diese Idee erstreckt sich sowohl vertikal über unterschiedliche Funktionen innerhalb eines Workloads als auch horizontal über mehrere Subsysteme, die dieselbe Funktionalität bieten. Diese Module dienen als Fehlercontainer, die den Umfang der Auswirkungen während eines Ereignisses einschränken.

Die architektonischen Muster der Steuerungsebenen, Datenebenen und der statischen Stabilität unterstützen direkt die Implementierung von Fehlertoleranz und Fehlerisolierung. Der Artikel Statische Stabilität mithilfe von Availability Zones in der Amazon Builders' Library bietet gute Definitionen für diese Begriffe und erklärt, wie sie sich auf den Aufbau robuster, hochverfügbarer Workloads anwenden lassen. In diesem Whitepaper werden diese Muster im Abschnitt Entwerfen hochverfügbarer verteilter Systeme verwendet. Außerdem fassen wir ihre Definitionen hier zusammen. AWS

  • Kontrollebene — Der Teil der Arbeitslast, der mit der Durchführung von Änderungen verbunden ist: Hinzufügen von Ressourcen, Löschen von Ressourcen, Ändern von Ressourcen und Weitergabe dieser Änderungen an die Stellen, an denen sie benötigt werden. Steuerungsebenen sind in der Regel komplexer und haben mehr bewegliche Teile als Datenebenen. Daher ist die Wahrscheinlichkeit, dass sie ausfallen und weniger verfügbar sind, statistisch gesehen höher.

  • Datenebene — Der Teil der Arbeitslast, der die day-to-day Geschäftsfunktionen bereitstellt. Datenebenen sind in der Regel einfacher und können mit höheren Datenvolumen betrieben werden als Steuerungsebenen, was zu höheren Verfügbarkeiten führt.

  • Statische Stabilität — Die Fähigkeit eines Workloads, trotz eingeschränkter Abhängigkeiten den korrekten Betrieb fortzusetzen. Eine Implementierungsmethode besteht darin, Abhängigkeiten der Steuerungsebene von den Datenebenen zu entfernen. Eine andere Methode besteht darin, Workload-Abhängigkeiten lose miteinander zu koppeln. Möglicherweise sieht der Workload keine aktualisierten Informationen (wie neue Dinge, gelöschte oder geänderte Dinge), die seine Abhängigkeit hätte liefern sollen. Alles, was es getan hat, bevor die Abhängigkeit beeinträchtigt wurde, funktioniert jedoch weiterhin.

Wenn wir über eine Beeinträchtigung der Arbeitsbelastung nachdenken, gibt es zwei grundlegende Ansätze, die wir für die Wiederherstellung in Betracht ziehen können. Die erste Methode besteht darin, auf diese Beeinträchtigung zu reagieren, nachdem sie eingetreten ist, indem AWS Auto Scaling möglicherweise neue Kapazitäten hinzugefügt werden. Die zweite Methode besteht darin, sich auf diese Beeinträchtigungen vorzubereiten, bevor sie auftreten, etwa indem die Infrastruktur eines Workloads überdimensioniert wird, sodass dieser weiterhin ordnungsgemäß funktionieren kann, ohne dass zusätzliche Ressourcen benötigt werden.

Ein statisch stabiles System verwendet den letztgenannten Ansatz. Es stellt vorab Kapazitätsreserven bereit, die bei einem Ausfall zur Verfügung stehen. Mit dieser Methode wird vermieden, dass im Wiederherstellungspfad des Workloads eine Abhängigkeit von einer Steuerungsebene entsteht, um neue Kapazitäten für die Wiederherstellung nach einem Ausfall bereitzustellen. Darüber hinaus nimmt die Bereitstellung neuer Kapazitäten für verschiedene Ressourcen Zeit in Anspruch. Während Sie auf neue Kapazitäten warten, kann es sein, dass Ihr Workload durch die bestehende Nachfrage überlastet wird und sich weiter verschlechtert, was zu einem „Brown-Out“ oder einem vollständigen Verfügbarkeitsverlust führt. Sie sollten jedoch auch die Kostenauswirkungen berücksichtigen, die sich aus der Nutzung vorab bereitgestellter Kapazität im Vergleich zu Ihren Verfügbarkeitszielen ergeben.

Statische Stabilität gibt die nächsten beiden Regeln für Hochverfügbarkeits-Workloads vor.

Regel 7

Gehen Sie in Ihrer Datenebene keine Abhängigkeiten von den Steuerungsebenen ein, insbesondere nicht bei der Wiederherstellung.

Regel 8

Koppeln Sie Abhängigkeiten nach Möglichkeit lose miteinander, sodass Ihr Workload trotz Beeinträchtigung der Abhängigkeit korrekt funktionieren kann.