Dieses Dokument beschreibt die Best Practices für die Erstellung von widerstandsfähigen Systemen in Compute Engine. Es bietet allgemeine Hinweise und deckt einige Features in Compute Engine ab, die dazu beitragen können, die Ausfallzeiten von Instanzen zu mindern und sich auf Zeiten vorzubereiten, in denen auf den Instanzen Ihrer Compute Engine ein unerwarteter Fehler auftritt.
Ein widerstandsfähiges System ist ein System, das einem gewissen Ausfall oder einer Störung standhalten kann, ohne den Dienst zu unterbrechen oder Ihre Nutzung des Dienstes zu beeinträchtigen. Compute Engine ist zwar darauf ausgelegt, solche Störungen zu verhindern, doch sind bestimmte Ereignisse unvorhersehbar. Daher sollten Sie auf diese Ereignisse vorbereitet sein.
Arten von Ausfällen
Es kann vorkommen, dass eine oder mehrere Ihrer Compute-Instanzen aufgrund von System- oder Hardwareproblemen ausfallen. Die folgende Liste enthält einige Fehlerszenarien, die Sie beheben können:
Unerwarteter Ausfall einer einzelnen Instanz
Eine einzelne Instanz kann aufgrund von Hardware- oder Systemproblemen unerwartet ausfallen. Sie sollten daher vorsorglich nichtflüchtige Speicher und Startskripts verwenden, um Ihre Daten zu speichern und Software nach dem Neustart der VM wieder zu aktivieren.
Unerwarteter Neustart einer einzelnen VM
Es kann vorkommen, dass eine einzelne VM unerwartet ausfällt und neu gestartet wird. Im Gegensatz zu einem unerwarteten Ausfall einer einzelnen VM startet Compute Engine Ihre VM automatisch nach einem Fehler neu. Sie sollten daher vorsorglich Ihre Daten sichern, Hyperdisk oder nichtflüchtigen Speicherverwenden und Startscripts verwenden, um Software schnell neu zu konfigurieren.
Ausfälle von Zonen oder Regionen
Zonenausfälle und Regionsausfälle sind selten und können dazu führen, dass alle Ihre Instanzen in einer Zone oder Region nicht mehr zugänglich sind oder ausfallen. Sie sollten daher vorsorglich Instanzen über Regionen und Zonen verteilen und Load-Balancing implementieren. Außerdem sollten Sie Ihre Daten sichern oder die Laufwerke in mehreren Zonen replizieren.
Tipps zur Erstellung von widerstandsfähigen Systemen
Konzipieren Sie Ihre Anwendung so, dass sie Ausfällen, Netzwerkstörungen und unerwarteten Notfällen standhalten kann, um gegen Compute-Instanzausfälle gewappnet zu sein. Ein widerstandsfähiges System kann Ausfälle mühelos bewältigen, indem beispielsweise Traffic von einer nicht zugänglichen Instanz an eine Live-Instanz weitergeleitet oder Aufgaben beim Neustart automatisiert werden.
Hier finden Sie einige allgemeine Tipps zur Gestaltung eines widerstandsfähigen Systems, das Ausfällen standhalten kann.
Verwenden Sie Live-Migration
Google Cloud führt regelmäßig Wartungsarbeiten an der Infrastruktur durch: Durch Patches wird die Software auf den neuesten Stand gebracht, es werden Routinetests und vorbeugende Wartungsaufgaben ausgeführt und es wird ganz allgemein dafür gesorgt, dass unsere Infrastruktur so sicher, schnell und effizient wie möglich ist. Mithilfe der Live-Migration sorgt Compute Engine dafür, dass diese Infrastrukturwartung für Ihre Compute-Instanzen immer transparent abläuft.
Die Live-Migration ist eine Technologie, die ausgeführte Instanzen aus Systemen verschiebt, für die Wartungsarbeiten anstehen. Die Compute Engine erledigt dies automatisch für unterstützte Instanztypen.
Während der Live-Migration kann die Leistung Ihrer Instanz kurzfristig geringer sein. Instanzen, die eine konstante, maximale Leistung erfordern, können so konfiguriert werden, dass sie auf einem anderen Host neu gestartet werden, anstatt eine Live-Migration durchzuführen. Wenn Sie diese Option auswählen, beendet Compute Engine die Instanz und startet sie auf einem Host neu, der nicht an einem Wartungsereignis beteiligt ist. Das Beenden und Neustarten der Instanz eignet sich für Anwendungen, die auch für die Bewältigung von Instanzausfällen oder Neustarts ausgelegt sind.
Weitere Informationen dazu, wie Sie Ihre Instanzen für die Live-Migration oder so konfigurieren, dass sie neu gestartet und nicht migriert werden, finden Sie unter Hostwartungsrichtlinie für eine Instanz festlegen.
Instanzen verteilen
Erstellen Sie Instanzen in mehreren Regionen und Zonen, damit Ihnen alternative Compute-Instanzen zur Verfügung stehen, wenn eine Zone oder Region, in der sich eine Ihrer Instanzen befindet, ausfällt. Wenn Sie alle Instanzen in derselben Zone oder Region erstellen, können Sie nicht mehr darauf zugreifen, falls die Zone oder Region nicht mehr erreichbar ist.
Zonenspezifische interne DNS-Namen verwenden
Legen Sie den internen DNS-Standardtyp für Ihr Projekt oder Ihre Organisation auf zonales DNS fest. Verwenden Sie in Ihren Anwendungen zonale DNS-Namen für den Zugriff auf andere Compute-Instanzen. Interne DNS-Server sind auf alle Zonen verteilt. Deshalb werden zonale DNS-Namen auch dann aufgelöst, wenn es an anderen Orten zu Fehlern kommt.
Das globale DNS ist aufgrund von Single-Point-Fehlern weniger stabil. Zonales DNS verringert das Risiko regionsübergreifender Ausfälle. Zonales DNS erfordert keine Eindeutigkeit von Instanznamen in allen Regionen eines Projekts, was die Instanzerstellung beschleunigt.
Informationen dazu, ob eine Instanz zonale DNS-Namen oder globale DNS-Namen verwendet, finden Sie unter Internen DNS-Namen für eine VM ermitteln.
Wenn Ihr Projekt globale DNS-Namen verwendet, können Sie auf zonale DNS-Namen umstellen. Weitere Informationen finden Sie unter Zonales DNS als internen DNS-Typ verwenden.
VM-Gruppen erstellen
Verwenden Sie verwaltete Instanzgruppen, um homogene Gruppen von VMs zu erstellen, damit Load-Balancer den Traffic auf mehrere VMs umleiten können, falls auf einer einzelnen VM ein Fehler auftritt.
Verwaltete Instanzgruppen (Managed Instance Groups, MIGs) bieten auch Features wie Autoscaling und automatische Reparatur. Mit der automatischen Skalierung können Sie Traffic-Spitzen durch Skalierung der Anzahl der VMs nach oben oder unten bewältigen – auf der Grundlage von spezifischen Signalen. Die automatische Reparatur führt eine Systemdiagnose durch und erstellt die fehlerhaften VMs gegebenenfalls automatisch neu.
MIGs sind auch für Regionen verfügbar, sodass Sie eine Gruppe von VMs erstellen können, die über mehrere Zonen innerhalb einer Region verteilt sind. Weitere Informationen finden Sie unter Regionale MIGs erstellen und verwalten.
Load-Balancing verwenden
Google Cloud bietet einen Load Balancing-Dienst, mit dem Sie Ihre Compute-Instanzen bei starkem Traffic vor Überlastung schützen können. Mit Cloud Load Balancing haben Sie folgende Möglichkeiten:
Sie können Ihre Anwendung mithilfe von regionalen MIGs auf VMs in mehreren Zonen bereitstellen. Dann können Sie eine Weiterleitungsregel konfigurieren, die dafür sorgt, dass der Traffic auf alle VMs in allen Zonen innerhalb der Region verteilt wird. Mit jeder Weiterleitungsregel können Sie mithilfe einer externen IP-Adresse einen Einstiegspunkt für Ihre Anwendung definieren.
Stellen Sie VMs mithilfe des globalen Load-Balancings über mehrere Regionen bereit. Durch HTTP(S)-Load-Balancing kann der Traffic an der Stelle in das Google Cloud-System eintreten, die dem Client am nächsten liegt. Das überregionale Load-Balancing sorgt für Redundanz. Wenn eine Region nicht erreichbar ist, wird der Traffic automatisch in eine andere Region umgeleitet. Auf diese Weise bleibt Ihr Dienst über dieselbe externe IP-Adresse erreichbar.
Verwenden Sie Autoscaling, damit VMs bei zunehmender oder abnehmender Last automatisch zu einer MIG hinzugefügt oder gelöscht werden.
Darüber hinaus bietet Cloud Load Balancing Systemdiagnosen für VMs, damit Sie VM-Fehler besser erkennen und bewältigen können.
Start- und Shutdown-Skripts verwenden
Compute Engine bietet Start- und Shutdown-Scripts an, die ausgeführt werden, wenn eine Instanz hoch- oder heruntergefahren wird. Mit Start- und Shutdown-Skripts können Aufgaben wie das Installieren von Software, das Ausführen von Updates, das Erstellen von Sicherungen und das Logging von Daten automatisiert werden.
Sowohl Start- als auch Shutdown-Skripts sind eine effiziente und praktische Möglichkeit für das Bootstrapping oder saubere Herunterfahren Ihrer Instanzen. Statt die Instanzen mit benutzerdefinierten Images zu konfigurieren, kann es sinnvoll sein, Instanzen mit Startskripts zu konfigurieren.
Startskripts werden beim Neustart der Instanz aufgrund von Fehlern ausgeführt. Sie können verwendet werden, um Software und Updates zu installieren. Sie können auch Startskripts verwenden, damit Dienste innerhalb der Instanz ausgeführt werden. Es ist oft einfacher, die Konfiguration einer Instanz in einem Startskript zu ändern, als herauszufinden, welche Dateien oder Byte sich in einem benutzerdefinierten Image geändert haben.
Shutdown-Scripts werden ausgeführt, wenn Ihre Instanz (absichtlich oder unabsichtlich) heruntergefahren wird. Sie können Last-Minute-Aufgaben ausführen, wie das Sichern von Daten, das Speichern von Protokollen und das Beenden von Verbindungen, bevor Sie eine Instanz anhalten.
Weitere Informationen finden Sie unter Startskripts ausführen und Shutdown-Skripts ausführen.
Daten sichern
Sichern Sie Ihre Daten regelmäßig und an mehreren Speicherorten. Sie können Ihre Dateien in Cloud Storage hochladen, Laufwerk-Snapshots erstellen oder Ihre Daten mithilfe der synchronen Replikation auf einem Laufwerk in einer anderen Zone oder mithilfe der asynchronen Replikation in einer anderen Region replizieren.