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-VMs 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 Speichereinsetzen und Startskripts verwenden, um Software schnell neu zu konfigurieren.
Ausfälle von Zonen oder Regionen
Ausfälle von Zonen und Regionen 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 Ihre Festplatten 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 Ausfälle von Compute-Instanzen 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 verschoben werden, für die Wartungsarbeiten anstehen. Compute Engine erledigt das automatisch für unterstützte Instanztypen.
Während der Live-Migration kann die Leistung Ihrer Instanz kurzfristig geringer sein. Für Instanzen, die eine konstante, maximale Leistung benötigen, können Sie konfigurieren, dass sie auf einem anderen Host neu gestartet werden, anstatt einer Live-Migration unterzogen zu werden. Wenn Sie diese Option auswählen, beendet Compute Engine die Instanz und startet sie auf einem Host neu, der nicht von einem Wartungsereignis betroffen ist. Das Beenden und Neustarten der Instanz eignet sich allgemein 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 Compute-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 bestimmen.
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-Skripts 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-Skripts werden ausgeführt, wenn Ihre Instanz (absichtlich oder unabsichtlich) heruntergefahren wird. Shutdown-Skripts können Last-Minute-Aufgaben ausführen, wie das Sichern von Daten, das Speichern von Logs 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, Laufwerksnapshots erstellen oder Ihre Daten mit synchroner Replikation auf ein Laufwerk in einer anderen Zone oder mit asynchroner Replikation auf ein Laufwerk in einer anderen Region replizieren.