Robuste Systeme konzipieren

Dieses Dokument beschreibt die Best Practices für die Erstellung von robusten Systemen auf 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 robustes System ist ein System, das einem gewissen Ausfall oder einer Störung standhalten kann, ohne den Service zu unterbrechen oder Ihre Nutzung des Dienstes zu beeinträchtigen. Während Compute Engine alles unternimmt, um solche Störungen zu verhindern, sind bestimmte Ereignisse unvorhersehbar, weshalb es sich empfiehlt, auf diese Ereignisse vorbereitet zu sein.

Arten von Ausfällen verstehen

Es kann vorkommen, dass eine oder mehrere Ihrer VM-Instanzen aufgrund von System- oder Hardwareproblemen ausfallen. Einige der Fehler beinhalten Folgendes, sind aber nicht darauf beschränkt:

  • Unerwarteter Ausfall einer einzelnen Instanz

    Eine einzelne Instanz kann aufgrund von Hardware- oder Systemproblemen unerwartet ausfallen. Sie sollten Ihre Daten daher vorsorglich in nichtflüchtigem Speicher speichern und Startskripts verwenden, um Software nach dem Neustart der Instanz wieder zu aktivieren.

  • Unerwarteter Neustart einer einzelnen Instanz

    Es kann vorkommen, dass eine einzelne Instanz unerwartet ausfällt und neu gestartet wird. Im Gegensatz zu einem unerwarteten Ausfall einer einzelnen Instanz wird diese Instanz nach dem Ausfall automatisch vom Compute Engine-Dienst neu gestartet. Sie sollten daher vorsorglich Ihre Daten sichern, nichtflüchtigen Speicher einsetzen und Startskripts verwenden, um Software schnell neu konfigurieren zu können.

  • 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 den nichtflüchtigen Speicher in mehreren Zonen replizieren.

Tipps zur Erstellung von robusten Systemen

Um Instanzausfälle zu vermeiden, sollten Sie Ihre Anwendung im Compute Engine-Dienst gegenüber Fehlern, Netzwerkunterbrechungen und unerwarteten Katastrophen robust konzipieren. Ein robustes System sollte Ausfälle problemlos bewältigen. Dazu gehört, Traffic von einer ausgefallenen Instanz zu einer funktionierenden umzuleiten oder Aufgaben beim Neustart zu automatisieren.

Hier finden Sie einige allgemeine Tipps zur Gestaltung eines robusten Systems, das gegen Ausfälle gewappnet ist.

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 sichergestellt, 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 VM-Instanzen immer transparent abläuft.

Die Live-Migration ist eine Technologie, die Google entwickelt hat, um Ihre laufenden Instanzen aus Systemen herauszunehmen, für die Wartungsarbeiten anstehen. Compute Engine erledigt dies automatisch.

Während der Live-Migration kann die Leistung Ihrer Instanz kurzfristig geringer sein. Sie haben auch die Möglichkeit, Ihre VM-Instanzen so zu konfigurieren, dass sie vor Wartungsarbeiten beendet und an anderer Stelle neu gestartet werden. Diese Option ist für Instanzen geeignet, die eine konstante, maximale Leistung benötigen, und setzt voraus, dass Ihre gesamte Anwendung zur Bewältigung von Instanzausfällen oder -neustarts ausgelegt ist.

Weitere Informationen dazu, wie Sie Ihre virtuellen Maschinen für die Live-Migration oder so konfigurieren, dass sie neu gestartet und nicht migriert werden, finden Sie unter Zeitplanoptionen für Instanzen festlegen.

Weitere Informationen zur Live-Migration finden Sie in der entsprechenden Dokumentation.

Instanzen verteilen

Erstellen Sie Instanzen in mehr als einer Region und Zone, damit Ihnen alternative VM-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 hosten, können Sie nicht mehr darauf zugreifen, falls die Zone oder Region nicht mehr erreichbar ist.

Zonenspezifische interne DNS-Namen verwenden

Wenn Sie interne DNS-Namen oder Instanznamen verwenden, um mit Instanzen im internen Compute Engine-Netzwerk zu kommunizieren, weichen Sie stattdessen auf zonale DNS-Namen aus. 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. Ein interner vollständig qualifizierter Domainname (Fully Qualified Domain Name, FQDN) für eine Instanz hat die folgenden Formate:

  • Instanzen mit zonalem DNS: [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal
  • Instanzen mit globalem DNS: [INSTANCE_NAME].c.[PROJECT_ID].internal

Dabei gilt:

  • [INSTANCE_NAME] ist der Name der Instanz.
  • [ZONE] ist die Zone, in der sich Ihre Instanz befindet.
  • [PROJECT_ID] ist das Projekt, zu dem die Instanz gehört.

Informationen dazu, ob eine Instanz zonale DNS-Namen oder globale DNS-Namen verwendet, finden Sie unter DNS-Namen der Instanz aufrufen.

Wenn Ihr Projekt globale DNS-Namen verwendet, können Sie Ihre Anwendungen für zonale DNS-Namen und Suchpfade vorbereiten. Weitere Informationen finden Sie unter Zu zonalen DNS-Namen migrieren.

Instanzgruppen erstellen

Erstellen Sie mit verwalteten Instanzgruppen homogene Gruppen von Instanzen, damit Load-Balancer den Traffic an mehrere VM-Instanzen weiterleiten können, falls eine einzelne Instanz ausfällt.

Verwaltete Instanzgruppen bieten auch Features wie Autoscaling und automatische Reparatur. Mit der automatischen Skalierung können Sie Traffic-Spitzen durch Skalierung der Anzahl der VM-Instanzen nach oben oder unten, auf der Grundlage von spezifischen Signalen, bewältigen. Die automatische Fehlerbehebung führt eine Systemdiagnose und gegebenenfalls die automatische Reparatur fehlerhafter Instanzen durch.

Verwaltete Instanzgruppen sind auch für Regionen verfügbar, sodass Sie eine Gruppe von VM-Instanzen erstellen können, die über mehrere Zonen in einer einzigen Region verteilt sind. Weitere Informationen hierzu finden Sie unter Instanzen mithilfe regional verwalteter Instanzgruppen verteilen.

Lastenausgleich verwenden

Google Cloud bietet einen Load-Balancing-Dienst, mit dem Sie Ihre Instanzen bei starkem Traffic vor Überlastung schützen können. Mit dem Load-Balancing-Dienst können Sie:

  • Ihre Anwendung mithilfe regional verwalteter Instanzgruppen auf Instanzen in mehreren Zonen erstellen. Konfigurieren Sie dann eine Weiterleitungsregel, die dafür sorgt, dass der Traffic auf alle VM-Instanzen 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.

  • Instanzen mithilfe des globalen Load-Balancings über mehrere Regionen erstellen. 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, damit Ihr Dienst weiter unter derselben externen IP-Adresse verfügbar ist.

  • Verwenden Sie Autoscaling, damit Instanzen bei zunehmender oder abnehmender Last automatisch zu einer verwalteten Instanzgruppe hinzugefügt bzw. aus ihr gelöscht werden.

Darüber hinaus bietet der Load-Balancing-Dienst Systemdiagnosen für VM-Instanzen, die Sie dabei unterstützen, Instanzausfälle zu erkennen und zu bewältigen.

Weitere Informationen finden Sie in der Übersicht über das Load-Balancing und der Dokumentation zum Load-Balancing.

Start- und Shutdown-Skripts verwenden

Compute Engine bietet Start- und Shutdown-Skripts an, die ausgeführt werden, wenn eine Instanz hochgefahren oder heruntergefahren wird. Diese Skripts können Aufgaben wie die Installation von Software, das Ausführen von Updates, das Erstellen von Sicherungen, das Protokollieren von Daten und so weiter automatisieren, wenn Ihre Instanz zuerst gestartet wird oder wenn Ihre Instanz heruntergefahren wird, egal ob absichtlich oder nicht.

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 nach einem Ausfall ausgeführt. Sie können verwendet werden, um Software und Updates zu installieren und sicherzustellen, dass Dienste innerhalb der VM ausgeführt werden. Es ist 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 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 sichern, Snapshots nichtflüchtiger Speicher erstellen oder Ihre Daten in einem nichtflüchtigen Speicher in einer anderen Region oder Zone replizieren.

So kopieren Sie Dateien von einer Instanz in Cloud Storage:

  1. Melden Sie sich bei Ihrer Instanz an:

    gcloud compute ssh example-instance
    
  2. Wenn Sie das Tool gsutil auf dieser Instanz noch nie genutzt haben, richten Sie Ihre Anmeldedaten ein.

    gcloud init
    

    Wenn Sie für die Instanz die Verwendung eines Dienstkontos mit einem Cloud Storage-Bereich konfiguriert haben, können Sie diesen Schritt überspringen und mit dem nächsten Schritt fortfahren.

  3. Folgen Sie der Anleitung zur Authentifizierung bei Cloud Storage.

  4. Kopieren Sie Ihre Daten mit diesem Befehl in Cloud Storage:

    gsutil cp <file1> <file2> <file3> ...  gs://<your bucket>
    

Sie können auch das Tool gcloud compute verwenden, um Dateien auf einen lokalen Computer zu kopieren. Weitere Informationen finden Sie unter Dateien zwischen einer Instanz und dem lokalen Computer kopieren.

Weitere Informationen