Widerstandsfähige Systeme konzipieren

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 Compute Engine-Instanzen 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 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, Google Cloud Hyperdisk einsetzen 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 VMs über Regionen und Zonen verteilen und Load-Balancing implementieren. Außerdem sollten Sie Ihre Daten sichern oder Ihre Festplatten in mehreren Zonen replizieren.

  • Vorübergehende Kapazitätsbeschränkungen

    Plötzliche Nachfragespitzen können die Ressourcenverfügbarkeit in einer bestimmten Zone vorübergehend einschränken. Während solcher Einschränkungen kann Compute Engine keine Compute-Instanzen bereitstellen und gibt einen Fehler zur Ressourcenverfügbarkeit zurück, z. B. ZONE_RESOURCE_POOL_EXHAUSTED oder RESOURCE_EXHAUSTED. Anstatt diese Kapazitätsbeschränkungen als Fehler zu behandeln, sollten Sie eine flexible Infrastruktur entwerfen, die automatisch auf verfügbare Ressourcen in alternativen Zonen und Maschinentypen umgestellt werden kann.

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-Instanz-Ausfä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.

Infrastruktur flexibel gestalten

Wenn Sie Ihre Arbeitslasten auf eine einzelne Hardwarekonfiguration oder Zone beschränken, kann das Risiko von Bereitstellungsfehlern bei Spitzenlasten steigen. Eine flexible Compute Engine-Infrastruktur trägt dazu bei, die Erfolgsraten bei der Bereitstellung zu verbessern, da sie sich automatisch an die verfügbare Kapazität anpasst und Ihre Arbeitslasten ohne manuellen Eingriff skaliert.

Sie haben folgende Möglichkeiten, die Infrastruktur flexibler zu gestalten:

  • Standortflexibilität: Routen werden so geplant, dass lokale Kapazitätseinschränkungen umgangen werden.
  • Flexibilität beim Maschinentyp: Sie können auf alternative Hardware zurückgreifen, wenn Ihre primäre Auswahl nicht verfügbar ist.
  • Zeitliche Flexibilität: Sie können Anfragen in die Warteschlange stellen, bis Ressourcen verfügbar sind.

Weitere Informationen finden Sie unter Bereitstellung von Rechenressourcen optimieren.

Instanzen, die nicht vertrauenswürdigen Code ausführen, in dedizierten Projekten trennen

Wenn Ihr System mit nicht vertrauenswürdigem Code arbeitet, z. B. KI-generierte Skripts ausführt oder Build-Aufgaben im Namen eines externen Nutzers wie eines CI-Systems ausführt, sollten Sie diese Worker-Instanzen in einem dedizierten Projekt platzieren.

Compute Engine verfügt über eine Vielzahl von Kontingent- und Missbrauchserkennungsmechanismen, die dazu beitragen, Richtlinien wie die Richtlinien zur zulässigen Verwendung durchzusetzen. Erkannter Missbrauch kann dazu führen, dass die verfügbare Kapazität eingeschränkt wird, strengere Ratenlimits gelten oder Instanzen im Projekt heruntergefahren werden. Wenn Sie Ihre Instanzen in dedizierte Projekte aufteilen, wird sichergestellt, dass die Mechanismen zum Schutz vor Missbrauch Ihre primären Arbeitslasten nicht beeinträchtigen. Diese Vorgehensweise entspricht dem Modell der gemeinsamen Verantwortung für Inhalte und Nutzung für Infrastructure as a Service (IaaS) auf Cloud de Confiance by S3NS.

Verwenden Sie Live-Migration

Cloud de Confiance 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, mit der 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.

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 Ihre 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 einer 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 (MIGs), um Gruppen von VMs zu erstellen, damit Load-Balancer den Traffic auf mehrere VMs umleiten können, falls auf einer einzelnen VM ein Fehler auftritt.

MIGs bieten auch Funktionen 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

Cloud de Confiance by S3NS bietet einen Load-Balancing-Dienst, mit dem Sie Ihre Compute-Instanzen bei hohem Verkehrsaufkommen 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 Cloud de Confiance by S3NS -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.

Cloud DNS

Cloud DNS ist ein stabiler globaler DNS-Hochleistungsdienst (Domain Name System), mit dem Sie IP-Adressen und andere Daten speichern und dann anhand des Namens suchen können. Mit Cloud DNS können Sie Ihre Zonen und Einträge im DNS veröffentlichen, ohne eigene DNS-Server und ‑Software verwalten zu müssen. Cloud DNS verwendet Anycast, um Ihre verwalteten Zonen an verschiedenen Standorten weltweit bereitzustellen.

Um eine Hochverfügbarkeit zu erreichen, stellen Sie mehrere einzelne regionale externe Application Load Balancer in Regionen bereit, die den Traffic Ihrer Anwendung am besten unterstützen, und verwenden Sie eine Cloud DNS-Geolocation-Routingrichtlinie, um Traffic an zwei oder mehr Load Balancer in verschiedenen Regionen weiterzuleiten. Anfragen werden automatisch an den nächsten Standort weitergeleitet, wodurch sich die Latenz verkürzt und die Leistung bei der Auflösung des autoritativen Namens für Ihre Nutzer verbessert wird.

Weitere Informationen finden Sie unter Hochverfügbarkeit für regionale externe Application Load Balancer.

Start- und Shutdown-Skripts verwenden

Compute Engine bietet Start- und Shutdown-Scripts, die ausgeführt werden, wenn eine Instanz hoch- bzw. 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 ein nicht unterstütztes benutzerdefiniertes Image zu erstellen und zu verwalten.

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 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, 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.