Hinweis: Nachfolgend finden Sie eine Beschreibung der allgemeinen Ausrichtung unserer Produkte. Er dient nur zu Informationszwecken und darf nicht in einen Vertrag aufgenommen werden. Es ist keine Verpflichtung, Material, Code oder Funktionen bereitzustellen, und sollte bei Kaufentscheidungen nicht als verlässlich angesehen werden. Entwicklung, Freigabe, Preisgestaltung und Zeitpunkt der Herausgabe der beschriebenen Funktionen oder Funktionalität von Oracle Produkten liegen im alleinigen Ermessen von Oracle.
Diese häufig gestellten Fragen beantworten häufig gestellte Fragen dazu, wie Oracle Resilienz und kontinuierliche Verfügbarkeit unserer zentralen Infrastrukturservices und Hosting-Plattform erreicht. Diese Antworten können aus mehreren Gründen für Kunden von Oracle Cloud von Interesse sein:
Solche Unterscheidungen machen wir nicht. Stattdessen werden die Services nach Abhängigkeitsebene, Verfügbarkeitsbereich und Data Plane bzw. Control Plane kategorisiert. Diese Kategorien sollen verschiedene nützliche Kombinationen aus Verfügbarkeit, Dauerhaftigkeit, Performance und Benutzerfreundlichkeit bereitstellen.
Abhängigkeitsebenen
Diese Ebenen können als Layer oder Tiers in einem Architekturblockdiagramm betrachtet werden. Jeder Layer kann nur von den Layern darunter abhängig sein.
Von unten nach oben:
Verfügbarkeitsbereich
Um die Ziele der Verfügbarkeit und Dauerhaftigkeit für einen Service zu erreichen, wird einer der folgenden Verfügbarkeitsbereiche für jeden Service ausgewählt:
Control Plane und Data Plane im Vergleich
Die Data Plane eines Dienstes ist die Sammlung von Datenverarbeitungsschnittstellen und -komponenten, die die Funktionalität des Services implementieren, die von Anwendungen verwendet werden soll. Beispielsweise umfasst die Datenebene des virtuellen Cloud-Netzwerks (VCN) das Netzwerkpaketverarbeitungssystem, virtualisierte Router und Gateways, während die Datenebene der Block-Volumes die Implementierung des iSCSI-Protokolls und das fehlertolerante replizierte Speichersystem für Volume-Daten umfasst.
Die Control Plane eines Services ist die Gruppe von APIs und Komponenten, die für die folgenden Aufgaben verantwortlich sind:
Für alle Arten von Services verwenden wir die gleichen technischen Prinzipien, um Ausfallsicherheit und Verfügbarkeit zu erreichen, da die grundlegenden technischen Herausforderungen beim Aufbau fehlertoleranter, skalierbarer, verteilter Systeme für alle Arten von Services gleich sind.
Um Resilienz und kontinuierliche Verfügbarkeit zu erreichen, ist es notwendig, alle Ursachen der Nichtverfügbarkeit – verminderte Leistung und unbehandelte Ausfälle – in cloudbasierten Systemen zu verstehen und dann zu behandeln. Es gibt eine Vielzahl solcher Ursachen, also teilen wir sie entsprechend ihrer Art in Kategorien ein
Traditionell wurde zur Bestimmung der Verfügbarkeit von Unternehmens-IT-Systemen in erster Linie die Kategorie Hardwareausfall analysiert. Bei Cloud-Systemen ist ein Hardwareausfall jedoch ein relativ geringfügiges und gut verstandenes Problem. Es ist jetzt relativ einfach, die meisten Hardware-Ausfallstellen zu vermeiden oder zu entschärfen. Beispielsweise können Racks über zwei Stromeinspeisungen und zugehörige Stromverteilungseinheiten verfügen, und viele Komponenten sind Hot-Swap-fähig. Größere Hardwareausfälle und -verluste sind natürlich möglich – zum Beispiel aufgrund von Naturkatastrophen. Unsere Erfahrung und Berichte in öffentlichen Post-Mortems von anderen Cloud-Anbietern zeigen jedoch, dass der Ausfall oder Verlust eines gesamten Data Centers im Vergleich zu den anderen Ursachen der Nichtverfügbarkeit extrem selten vorkommt. Weitreichende Hardwareausfälle müssen weiterhin behandelt werden (z. B. mit Disaster Recovery und anderen Mechanismen), sind aber bei Weitem nicht das häufigste Verfügbarkeitsproblem.
Die Hauptgründe für die Nichtverfügbarkeit in Cloud-Scale-Systemen sind wie folgt:
Diese Herausforderungen sind universell – sie sind Teil der „Gesetze der Physik“ für verteilte Systeme im Cloud-Maßstab.
Wir nutzen für jede der oben genannten Kategorien bewährte Entwicklungsstrategien, um das Problem zu lösen. Die wichtigsten davon sind:
Prinzipien von Architektur- und Systemdesign
Viele dieser Prinzipien existieren, aber wir konzentrieren uns auf die, die für Resilienz und Verfügbarkeit am relevantesten sind.
Wiederherstellungsorientiertes Computing
Um Softwarefehler und Fehler von Operatoren mit relativ lokalisierten Auswirkungen zu handhaben, folgen wir den Prinzipien des wiederherstellungsorientierten Computing1. Auf hohem Niveau bedeutet dies, dass wir uns darauf konzentrieren, alle Probleme unauffällig und auf eine Weise zu behandeln, anstatt zu garantieren, dass wir nie ein Problem haben (was unmöglich zu testen ist). Insbesondere konzentrieren wir uns auf die Minimierung der mittleren Zeit bis zur Wiederherstellung (MTTR), die eine Kombination aus mittlerer Zeit bis zur Erkennung, mittlerer Zeit bis zur Diagnose und mittlerer Zeit bis zur Minderung ist.
Unser Ziel ist es, das Problem so schnell wiederherzustellen, dass menschliche Benutzer nicht durch das Problem belästigt werden. Die folgenden Punkte helfen uns, dieses Ziel zu erreichen:
Auswirkungen von Problemen minimieren
Wir entwickeln Mechanismen, um die Auswirkungen von Bugs und Fehlern zu minimieren, die weitreichende Auswirkungen haben könnten. Das heißt, wir konzentrieren uns darauf, die Anzahl der Kunden, Systeme oder Ressourcen zu minimieren, die von Problemen betroffen sind, einschließlich der besonders herausfordernden Probleme von mandantenfähigen „Noisy Neighbors“, angebotener Überlastung, eingeschränkter Kapazität und verteiltem Thrash. Dazu verwenden wir verschiedene Isolationsgrenzen und Änderungsmanagementverfahren (siehe folgende Abschnitte).
Architekturkonzepte, die aus Designprinzipien entstehen
Es gibt viele dieser Konzepte, aber wir werden uns auf Konzepte zur Begrenzung des Explosionsradius konzentrieren.
In unserer öffentlichen API verankerte Platzierungskonzepte: Regionen, Availability-Domain und Faultdomains
Da Faultdomains noch relativ neu sind, gehen wir näher auf diese ein.
Mit Faultdomains werden die Auswirkungen von Problemen bei einer aktiven Änderung des Systems begrenzt, wie z. B. bei Deployments, Patching, Hypervisor-Neustarts und der physischen Wartung.
Die Garantie besteht darin, dass in einer gegebenen Availability-Domain zu jedem Zeitpunkt Ressourcen in höchstens einer Faultdomain geändert werden. Wenn ein Problem beim Änderungsprozess auftritt, kann es vorkommen, dass einige oder alle Ressourcen in dieser Faultdomain eine Weile nicht verfügbar sind. Die anderen Faultdomains in der Availability-Domain sind jedoch nicht betroffen. Jede Availability-Domain enthält mindestens drei Faultdomains, damit quorumbasierte Replikationssysteme (z. B. Oracle Data Guard) mit High Availability in einer einzelnen Availability-Domain gehostet werden können.
Infolgedessen fungiert jede Faultdomain für eine vorherrschende Kategorie von Verfügbarkeitsproblemen – Softwarefehler, Konfigurationsfehler, Fehler von Bedienern und Leistungsprobleme, die während eines Änderungsverfahrens auftreten – als separates logisches Data Center innerhalb einer Availability-Domain.
Faultdomains schützen auch vor einigen Arten lokalisierter Hardwarefehler. Mit den Eigenschaften von Faultdomains wird sichergestellt, dass in unterschiedlichen Faultdomains platzierte Ressourcen so praktisch keine gemeinsamen Single Point of Hardwareausfälle innerhalb der Availability-Domain teilen. Zum Beispiel teilen sich Ressourcen in verschiedenen Faultdomains nicht denselben „Top-of-Rack“-Netzwerk-Switch, weil dem Standarddesign solcher Switches die Redundanz fehlt.
Die Fähigkeit von Faultdomains, sich gegen Probleme in der Hardware oder in der physischen Umgebung zu schützen, endet jedoch auf dieser lokalen Ebene. Im Gegensatz zu Availability-Domains und Regionen stellen Faultdomains keine umfangreiche physische Infrastrukturisolierung bereit. In den seltenen Fällen einer Naturkatastrophe oder eines Availability-Domain-weiten Infrastrukturausfalls sind Ressourcen in mehreren Faultdomains wahrscheinlich gleichzeitig betroffen.
Unsere internen Services nutzen Faultdomains genauso, wie sie auch von Kunden verwendet werden sollten. Beispiel: Block Volumes, Object Storage und File Storage speichern Replikate von Daten in drei separaten Faultdomains. Alle Komponenten aller Control Planes und Data Planes werden in allen drei Faultdomains (bzw. in einer Region mit mehreren Availability-Domains) gehostet.
Servicezellen
Mit Servicezellen werden die Auswirkungen von Problemen begrenzt, die auftreten, obwohl ein System nicht aktiv geändert wird. Derartige Probleme können entstehen, weil die Workload eines mehrmandantenfähigen Cloud-Systems sich jederzeit von Grund auf ändern kann und weil komplexe Teilfehler in jedem großen verteilten System zu jeder Zeit auftreten können. Diese Szenarios können verdeckte Bugs oder neue Performanceprobleme auslösen.
Darüber hinaus begrenzen Servicezellen in einigen seltenen, aber schwierigen Szenarien, in denen das System aktiv verändert wird, auch den Sprengradius. Ein klassisches Beispiel ist, wenn die Bereitstellung in einer einzelnen Faultdomain erfolgreich erscheint – keine Fehler oder Leistungsänderungen –, aber sobald die zweite oder letzte Faultdomain aktualisiert wurde, neue Interaktionen innerhalb des Systems (bei voller Cloud-Skalierung mit Produktions-Workload) ein Leistungsproblem verursachen.
Beachten Sie, dass die Nutzung von Servicezellen ein Architekturmuster ist und kein explizit in der Oracle Cloud-API oder dem SDK benanntes Konzept. Jedes beliebige Mehrmandantensystem kann dieses Architekturmuster verwenden. Es erfordert keinen besonderen Support von der Cloud-Plattform.
Servicezellen funktionieren wie folgt:
Das Ergebnis ist, dass jede Servicezelle eine weitere Art von „logischem Data Center“ ist – eine logische Gruppierung von Performanceisolation und Fehlerisolation – innerhalb einer einzelnen Availability-Domain oder Region.
Zusammenfassend lässt sich sagen, dass Servicezellen und Faultdomains sich auf folgende Arten ergänzen:
Bei der Ausführung von Deployments und dem Patching werden die Eigenschaften von Faultdomains und Servicezellen in einer einheitlichen Strategie kombiniert.
Service-Engineering-Verfahren
Da sowohl das Testen als auch der Betrieb für die Zuverlässigkeit von Cloud-Systemen von entscheidender Bedeutung sind, verfügen wir über eine große Anzahl von technischen Verfahren. Einige der wichtigeren Verfahren unter Verwendung der weiter oben beschriebenen Konzepte:
Ja. Alle Availability-Domains in jeder Region bieten dieselben Services an.
In Regionen mit einer einzigen Availability-Domain können Kunden Faultdomains (logische Gruppen mit dekorrelierten Fehlermodi zwischen Gruppen) verwenden, um die meisten Eigenschaften separater „logischer Data Center“ zu erreichen. Kunden können auch mehrere Regionen für Disaster Recovery (DR) nutzen.
In Multi-Availability-Domain-Regionen können Kunden Faultdomains genauso einsetzen. Kunden können auch eine Kombination aus lokalen Availability-Domain-Services, AD-übergreifenden Failover-Features (wie DBaaS mit Data Guard) und regionalen Services (Object Storage, Streaming) verwenden, um vollständige HA über „logische Data Center“ der höheren Ebene (Availability-Domains) zu erreichen. Schließlich können Kunden auch mehrere Regionen für DR verwenden.
In allen Fällen können Kunden das Konzept von Servicezellen verwenden, um selbst die schwerwiegendsten Probleme, wie zum Beispiel Distributed Thrash, weiter zu isolieren.
Dazu verwenden wir Faultdomains, Servicezellen und unsere betrieblichen Prozeduren für inkrementelles Deployment und Validierung. Diese wurden weiter oben bereits erläutert.
Ja. Alle Kategorien von Services werden in mehreren logischen Data Centern bereitgestellt – getrennte logische Gruppierungen von Fehlerisolierung und Leistungsisolierung – für Resilienz und kontinuierliche Verfügbarkeit.
In Regionen mit einer einzigen Availability-Domain bieten wir Faultdomains als Mechanismus für „mehrere logische Data Center“ an (wie bereits in diesem Dokument erläutert).
In Regionen mit mehreren Availability-Domains bieten wir Services und Features an, die ein noch höheres Maß an physischer Dauerhaftigkeit synchron replizierter Daten bieten (bei bescheidener Leistung, Kosten aufgrund der Entfernung zwischen Availability-Domains in der Region und Lichtgeschwindigkeit).
Wir bieten keine automatischen HA- oder Failover-Mechanismen über Regionen hinweg an, da dies eine enge Kopplungsbeziehung zwischen Regionen schaffen und das Risiko eingehen würde, dass mehrere Regionen gleichzeitig Probleme haben. Stattdessen ermöglichen wir verschiedene Arten der asynchronen Replikation zwischen Regionen und bieten immer mehr Features wie asynchrone Kopien und Backups für das Disaster Recovery über Regionen hinweg an.
Das ist eine komplizierte Frage, die wir zur Verdeutlichung auf verschiedene Art und Weise umformulieren werden:
Die Antwort besteht aus zwei Teilen.
Wir verwenden architektonische Grundsätze, mit denen korrelierte Ausfälle zwischen abhängigen Services erheblich reduziert werden. In einigen Fällen reduziert diese Technik die Wahrscheinlichkeit eines korrelierten Ausfalls so weit, dass sie aus der Perspektive der Erfüllung einer SLA für Verfügbarkeit ignoriert werden kann.
Insbesondere verwenden wir Servicezellen, wie weiter oben in diesem Dokument beschrieben. Zellen helfen bei diesem Problem, denn wenn der interne Service A von einem Problem in einer seiner Abhängigkeiten, Service B, betroffen ist, ist das Problem mit Service B sehr wahrscheinlich auf eine einzelne Zelle beschränkt. Andere übergeordnete Services (und die Anwendungen des Kunden), die Service B verwenden, nutzen wahrscheinlich andere Zellen, die nicht betroffen sind. Dies ist ein probabilistisches Argument, das mit der Anzahl der Zellen variiert, die ein versteckter interner Parameter ist, der sich ändert (erhöht), sodass keine Quantifizierung oder Garantie über die eigenständigen Service-SLAs der Services A und B hinaus gegeben wird. In der Praxis kann dies jedoch Fehler zwischen Services erheblich dekorrelieren.
Viele unserer gemeinsamen internen Services, z. B. der Workflow- und der Metadaten-Service für Control Planes und der Streaming-/Messagingservice, verwenden Servicezellen für die Dekorrelation von Ausfällen für die Upstream-Services, die diese nutzen.
Folgendes dient lediglich als allgemeiner Leitfaden, da die genaue Implementierung und die Details von Services unterschiedlich ausfallen. Aber für die Schlüsseldimensionen Compute, Storage, Networking und Authentifizierung/Autorisierung weisen wir auf die folgenden Abhängigkeiten hin.
Allgemeine Abhängigkeiten bei Control Planes:
Bei einigen Control Planes liegen offensichtlich servicespezifische Abhängigkeiten vor. Beispielsweise hängt die Compute-Control Plane beim Starten einer Bare-Metal- oder VM-Instanz von Folgendem ab:
Für Core-Service-Data Planes gilt das allgemeine Prinzip, dass jede Data Plane absichtlich so konzipiert ist, dass sie minimale Abhängigkeiten aufweist, um eine hohe Verfügbarkeit, eine schnelle Diagnose und eine schnelle Wiederherstellung zu erreichen. Die Ergebnisse dieses Prinzips sind wie folgt:
Bei IaaS-Data Planes gilt als allgemeines Prinzip, dass Abhängigkeiten nur von Kern- oder untergeordneten Data Planes möglich sind (um zirkuläre Abhängigkeiten zu vermeiden).
Ja, Oracle Cloud Infrastructure-Services sind regionsunabhängig konzipiert, sodass Services in einer Oracle Cloud Infrastructure-Region auch dann weiter betrieben werden können, wenn die Region von anderen Oracle Cloud Infrastructure-Regionen und/oder der globalen Steuerungsebene isoliert ist. Sowohl die Data-Plane- als auch die Control-Plane-Funktionalität, einschließlich Service-API-Endpunkte, sind weiterhin verfügbar, auch wenn die Region isoliert ist.
Viele Oracle Cloud Infrastructure-Services bieten regionsübergreifende Funktionen, wie die regionsübergreifende Objektkopierfunktion, die von Oracle Cloud Infrastructure Object Storage angeboten wird. Regionsübergreifende Funktionen in Oracle Cloud Infrastructure werden immer als Layer über dem Coreservice entworfen, sodass die Regionsisolierung den Coreservice nicht beeinflusst, auch wenn sie sich auf regionsübergreifende Funktionen auswirkt. Beispiel: Die regionsübergreifende Kopierfunktion für Oracle Cloud Infrastructure-Objektspeicher wird als Layer über dem Objektspeicherservice konzipiert. Daher kann die Isolation einer Region Auswirkungen auf die relevante regionsübergreifende Kopierfunktion haben, wirkt sich jedoch nicht auf den Core-Objektspeicherservice in der Region aus.
Ja, Oracle Cloud Infrastructure-Services werden so konzipiert, dass die Data Plane-Funktionalität in jedem logischen Data Center auch dann weiter funktioniert, wenn sie von der entsprechenden regionalen Control Plane isoliert sind. Beispielsweise funktionieren Oracle Cloud Infrastructure-Compute-Instanzen in einem logischen Data Center weiterhin zusammen mit angehängten Block-Volumes und verbundener virtueller Netzwerkfunktionalität, selbst wenn das Data Center von den Funktionen der Control Plane wie Datenverarbeitung, Blockspeicherung, VCN und/oder Identitäts- und Zugriffsverwaltung isoliert ist.
Ja. Oracle Cloud Infrastructure ist über mehrere redundante Provider in allen kommerziellen Regionen mit dem Internet verbunden. Diese Verbindungen verwenden BGP (Border Gateway Protocol).