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 virtuellen Maschinen (VM) 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 VMs aufgrund von System- oder Hardwareproblemen ausfallen. Die folgende Liste enthält einige Fehlerszenarien, die Sie beheben können:
Unerwarteter Ausfall einer einzelnen VM
Eine einzelne VM kann aufgrund von Hardware- oder Systemfehlern 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, nichtflüchtigen Speicher einsetzen und Startscripts 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 VMs in einer Zone oder Region nicht mehr zugänglich sind oder ausfallen. Sie sollten daher vorsorglich VMs über Regionen und Zonen verteilen und Load-Balancing implementieren. Außerdem sollten Sie Ihre Daten sichern oder den nichtflüchtigen Speicher 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 VM-Ausfälle gewappnet zu sein. Ein widerstandsfähiges System kann Ausfälle mühelos bewältigen, indem beispielsweise Traffic von einer nicht zugänglichen VM an eine Live-VM 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 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 VMs immer transparent abläuft.
Die Live-Migration ist eine Technologie, die ausgeführte VMs aus Systemen verschoben werden, für die Wartungsarbeiten anstehen. Compute Engine erledigt das automatisch.
Während der Live-Migration kann die Leistung Ihrer VM kurzfristig geringer sein. VMs, die eine konstante, maximale Leistung benötigen, können so konfiguriert werden, dass sie beendet und auf einem Host neu gestartet werden, der nicht an einem Wartungsereignis beteiligt ist. Diese Option eignet sich allgemein für Anwendungen, die auch für die Bewältigung von VM-Ausfällen oder Neustarts ausgelegt sind.
Weitere Informationen dazu, wie Sie Ihre VMs für die Live-Migration oder so konfigurieren, dass sie neu gestartet und nicht migriert werden, finden Sie unter Zeitplanoptionen für Instanzen festlegen.
VMs verteilen
Erstellen Sie VMs in mehreren Regionen und Zonen, damit Ihnen alternative VMs zur Verfügung stehen, wenn eine Zone oder Region, in der sich eine Ihrer VMs befindet, ausfällt. Wenn Sie alle Ihre VMs in derselben Zone oder Region hosten, 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 VMs. 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 VM-Namen in allen Regionen eines Projekts, was die VM-Erstellung beschleunigt.
Informationen dazu, ob eine VM zonale DNS-Namen oder globale DNS-Namen verwendet, finden Sie unter Internen DNS-Namen für eine VM-Instanz bestimmen.
Wenn Ihr Projekt globale DNS-Namen verwendet, können Sie auf zonale DNS-Namen umstellen. Weitere Informationen finden Sie unter Zu zonalen DNS-Namen migrieren.
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 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, die ausgeführt werden, wenn eine VM hochgefahren 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 VMs. Statt die VMs mit benutzerdefinierten Images zu konfigurieren, kann es sinnvoll sein, VMs mit Startskripts zu konfigurieren.
Startskripts werden beim Neustart der VM 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 VM ausgeführt werden. Es ist oft einfacher, die Konfiguration einer VM 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 VM (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 VM beenden.
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, Snapshots nichtflüchtiger Speicher erstellen oder Ihre Daten in einem nichtflüchtigen Speicher in einer anderen Region oder Zone replizieren.