Wenn Sie einen Anwendungs-Stack auf verteilten Ressourcen in der Cloud ausführen, muss der Netzwerkverkehr effizient zu den verfügbaren Ressourcen an mehreren Standorten weitergeleitet werden. In diesem Teil des Zuverlässigkeitsleitfadens für Google Cloud-Infrastruktur werden Verfahren zur Traffic- und Lastverwaltung beschrieben, mit denen Sie die Zuverlässigkeit Ihrer Cloud-Arbeitslasten verbessern können.
Kapazitätsplanung
Damit Ihre in Google Cloud bereitgestellte Anwendung über ausreichende Infrastrukturressourcen verfügt, müssen Sie die erforderliche Kapazität schätzen und die bereitgestellte Kapazität verwalten. Dieser Abschnitt enthält Richtlinien zur Planung und Verwaltung der Kapazität.
Anwendungslast prognostizieren
Berücksichtigen Sie bei der Prognose der Last Faktoren wie die Anzahl der Nutzer und die Rate, mit der die Anwendung Anfragen erhalten kann. Berücksichtigen Sie in Ihren Prognosen historische Lasttrends, saisonale Abweichungen, Lastspitzen während besonderer Ereignisse und das Wachstum durch Geschäftsänderungen wie die Erweiterung auf neue Regionen.
Kapazitätsanforderungen schätzen
Schätzen Sie anhand Ihrer Bereitstellungsarchitektur sowie der Leistungs- und Zuverlässigkeitsziele Ihrer Anwendung die Anzahl der Google Cloud-Ressourcen, die für die erwartete Last erforderlich sind. Wenn Sie beispielsweise von Compute Engine verwaltete Instanzgruppen (MIGs) verwenden möchten, bestimmen Sie die Größe jeder MIG, den VM-Maschinentyp sowie die Anzahl, den Typ und die Größe des nichtflüchtigen Speichers. Mit dem Google Cloud-Preisrechner können Sie die Kosten für die Google Cloud-Ressourcen schätzen.
Ausreichende Redundanz planen
Sorgen Sie bei der Schätzung der Kapazitätsanforderungen für eine angemessene Redundanz für jede Komponente des Anwendungs-Stack. Damit beispielsweise eine N+1-Redundanz erreicht wird, muss jede Komponente im Anwendungs-Stack mindestens eine redundante Komponente haben, die über dem Minimum liegt, das für die Verarbeitung der prognostizierten Last erforderlich ist.
Anwendung vergleichen
Führen Sie Lasttests durch, um die Ressourceneffizienz Ihrer Anwendung zu ermitteln. Die Ressourceneffizienz ist die Beziehung zwischen der Auslastung der Anwendung und den Ressourcen wie CPU und Arbeitsspeicher, die die Anwendung verbraucht. Die Ressourceneffizienz einer Anwendung kann sich verschlechtern, wenn die Last außergewöhnlich hoch ist und sich die Effizienz im Laufe der Zeit ändern kann. Führen Sie die Lasttests sowohl für normale als auch für Spitzenlastbedingungen durch und wiederholen Sie die Benchmarkingtests in regelmäßigen Abständen.
Kontingente verwalten
Kontingente für Google Cloud-Dienste sind projektspezifische Limits, mit denen Sie die Nutzung von Cloud-Ressourcen steuern können. Es gibt zwei Arten von Kontingenten: Ressourcenkontingente sind die maximalen Ressourcen, die Sie erstellen können, z. B. die Anzahl der regionalen GKE-Cluster (Google Kubernetes Engine). in einer Region. Ratenkontingente begrenzen die Anzahl der API-Anfragen, die in einem bestimmten Zeitraum an einen Dienst gesendet werden können. Kontingente können zonal, regional oder global sein. Sehen Sie sich die aktuellen Ressourcenkontingente und API-Ratenkontingente für die Dienste an, die Sie in Ihren Projekten verwenden möchten. Prüfen Sie, ob die Kontingente für die benötigte Kapazität ausreichen. Bei Bedarf können Sie ein höheres Kontingent anfordern.
Rechenkapazität reservieren
Damit die Kapazität für Compute Engine-Ressourcen bei Bedarf verfügbar ist, können Sie Reservierungen erstellen. Eine Reservierung bietet zugesicherte Kapazität in einer bestimmten Zone für eine bestimmte Anzahl von VMs eines von Ihnen ausgewählten Maschinentyps. Eine Reservierung kann für ein Projekt spezifisch sein oder für mehrere Projekte freigegeben sein. Weitere Informationen zu Reservierungen, einschließlich Aspekten der Abrechnung, finden Sie unter Reservierungen von zonalen Compute Engine-Ressourcen.
Auslastung überwachen und Anforderungen regelmäßig neu bewerten
Nachdem Sie die erforderlichen Ressourcen bereitgestellt haben, überwachen Sie die Kapazitätsauslastung. Möglicherweise finden Sie Möglichkeiten, die Kosten zu optimieren, indem Sie inaktive Ressourcen entfernen. Prüfen Sie die Kapazitätsanforderungen regelmäßig und berücksichtigen Sie Änderungen am Anwendungsverhalten, der Leistungs- und Zuverlässigkeitsziele, der Nutzerlast und Ihrem IT-Budget.
Autoscaling
Wenn Sie eine Anwendung für Ressourcen ausführen, die über mehrere Standorte verteilt sind, bleibt die Anwendung während Ausfällen an einem der Standorte verfügbar. Außerdem hilft Redundanz dabei, Nutzern ein konsistentes Anwendungsverhalten zu bieten. Wenn die Last beispielsweise stark ansteigt, sorgen die redundanten Ressourcen dafür, dass die Anwendung weiterhin auf vorhersehbare Weise funktioniert. Wenn die Anwendungslast gering ist, kann Redundanz jedoch zu einer ineffizienten Nutzung von Cloud-Ressourcen führen.
Beispielsweise muss die Einkaufswagenkomponente einer E-Commerce-Anwendung möglicherweise 99,9% der Bestellungen innerhalb von 200 Millisekunden nach der Bestellbestätigung verarbeiten. Um diese Anforderung in Zeiten hoher Auslastung zu erfüllen, können Sie redundante Rechen- und Speicherkapazität bereitstellen. Wenn die Anwendungslast jedoch gering ist, bleibt ein Teil der bereitgestellten Kapazität möglicherweise ungenutzt oder nicht ausgelastet. Um die nicht verwendeten Ressourcen zu entfernen, müssen Sie die Auslastung überwachen und die Kapazität anpassen. Mit Autoscaling können Sie die Cloud-Kapazität verwalten und das erforderliche Maß an Verfügbarkeit ohne den operativen Aufwand der Verwaltung redundanter Ressourcen gewährleisten. Wenn die Auslastung Ihrer Anwendung zunimmt, trägt das Autoscaling zur Verbesserung der Verfügbarkeit der Anwendung bei, indem zusätzliche Ressourcen automatisch bereitgestellt werden. In Zeiten geringer Auslastung entfernt das Autoscaling nicht verwendete Ressourcen und reduziert die Kosten.
Mit bestimmten Google Cloud-Diensten wie Compute Engine können Sie Autoscaling für die bereitgestellten Ressourcen konfigurieren. Verwaltete Dienste wie Cloud Run können die Kapazität automatisch skalieren, ohne dass Sie etwas konfigurieren müssen. Die folgenden Beispiele zeigen Google Cloud-Dienste, die Autoscaling unterstützen. Diese Liste ist nicht vollständig.
- Compute Engine: Mit MIGs können Sie zustandslose Anwendungen skalieren, die auf Compute Engine-VMs automatisch bereitgestellt werden, um die Kapazität der aktuellen Last anzupassen. Weitere Informationen finden Sie unter Autoscaling von Instanzgruppen.
- GKE: Sie können GKE-Cluster so konfigurieren, dass die Größe der Knotenpools automatisch an die aktuelle Last angepasst wird. Weitere Informationen finden Sie unter Cluster Autoscaler. Bei GKE-Clustern, die Sie im Autopilot-Modus bereitstellen, skaliert GKE die Knoten und Arbeitslasten automatisch anhand des Traffics.
- Cloud Run: Dienste, die Sie in Cloud Run bereitstellen, werden automatisch auf die Anzahl der Containerinstanzen skaliert, die zur Verarbeitung der aktuellen Auslastung erforderlich sind. Wenn die Anwendung keine Arbeitslast hat, skaliert der Dienst die Anzahl der Containerinstanzen automatisch auf null. Weitere Informationen finden Sie unter Autoscaling von Containerinstanzen.
- Cloud Functions:Jede Anfrage an eine Funktion wird einer Instanz der Funktion zugewiesen. Wenn die Anzahl der eingehenden Anfragen die Anzahl der vorhandenen Funktionsinstanzen überschreitet, startet Cloud Functions automatisch neue Instanzen der Funktion. Weitere Informationen finden Sie unter Ausführungsumgebung von Cloud Functions.
- Bigtable: Wenn Sie einen Cluster in einer Bigtable-Instanz erstellen, können Sie den Cluster so konfigurieren, dass er automatisch skaliert wird. Bigtable überwacht die CPU- und Speicherlast und passt die Anzahl der Knoten im Cluster an, um die von Ihnen angegebenen Zielauslastungsraten beizubehalten. Weitere Informationen finden Sie unter Bigtable-Autoscaling.
- Dataproc Serverless: Wenn Sie eine Apache Spark-Batcharbeitslast senden, skaliert Dataproc Serverless die Arbeitslastressourcen wie die Anzahl der Executors dynamisch, um die Arbeitslast effizient auszuführen. Weitere Informationen finden Sie unter Dataproc Serverless für Spark-Autoscaling.
Load-Balancing
Load-Balancing verbessert die Anwendungszuverlässigkeit, indem der Traffic nur an die verfügbaren Ressourcen weitergeleitet und sichergestellt wird, dass einzelne Ressourcen nicht überlastet werden.
Beachten Sie bei der Auswahl und Konfiguration von Load-Balancern für Ihre Cloud-Bereitstellung die folgenden Gestaltungsempfehlungen für Zuverlässigkeit.
Load-Balancing für internen Traffic
Konfigurieren Sie das Load-Balancing auch für den Traffic zwischen den Ebenen des Anwendungs-Stack und nicht nur für den Traffic zwischen den externen Clients und der Anwendung. In einem dreistufigen Webanwendungs-Stack können Sie beispielsweise einen internen Load-Balancer für eine zuverlässige Kommunikation zwischen den Web- und App-Stufen verwenden.
Geeigneten Load-Balancer-Typ auswählen
Für das Load-Balancing von externem Traffic zu einer Anwendung, die auf mehrere Regionen verteilt ist, können Sie entweder einen globalen Load-Balancer oder mehrere regionale Load-Balancer verwenden. Weitere Informationen finden Sie unter Vorteile und Risiken des globalen Load-Balancings für multiregionale Bereitstellungen.
Wenn sich die Back-Ends in einer einzigen Region befinden und Sie die Funktionen des globalen Load-Balancings nicht benötigen, können Sie einen regionalen Load-Balancer verwenden, der gegen Zonenausfälle resistent ist.
Wenn Sie den Load-Balancer-Typ auswählen, sollten Sie neben der Verfügbarkeit andere Faktoren berücksichtigen, z. B. die geografische Kontrolle über die TLS-Terminierung, die Leistung, die Kosten und den Traffic-Typ. Weitere Informationen finden Sie unter Load-Balancer auswählen.
Systemdiagnosen konfigurieren
Mit Autoscaling wird gewährleistet, dass Ihre Anwendungen über ausreichende Infrastrukturressourcen verfügen, um die aktuelle Auslastung zu bewältigen. Selbst wenn genügend Infrastrukturressourcen vorhanden sind, reagiert eine Anwendung oder Teile davon möglicherweise nicht. Beispielsweise können sich alle VMs, auf denen Ihre Anwendung gehostet wird, im Status RUNNING
befinden. Die Anwendungssoftware, die auf einigen der VMs bereitgestellt wird, ist jedoch möglicherweise abgestürzt.
Load-Balancing-Systemdiagnosen sorgen dafür, dass die Load-Balancer den Anwendungstraffic nur an die antwortenden Back-Ends weiterleiten. Wenn Ihre Back-Ends MIGs sind, sollten Sie eine zusätzliche Systemdiagnosenebene konfigurieren, um die nicht verfügbaren VMs automatisch zu reparieren. Wenn die automatische Reparatur für eine MIG konfiguriert ist, werden die nicht verfügbaren VMs proaktiv gelöscht und neue VMs erstellt.
Ratenbegrenzung
Es kann vorkommen, dass die Arbeitslast Ihrer Anwendung schnell oder dauerhaft ansteigt. Wenn die Anwendung nicht für die gestiegene Last ausgelegt ist, können die Anwendung oder die von ihr verwendeten Ressourcen fehlschlagen, wodurch die Anwendung nicht mehr verfügbar ist. Eine gestiegene Last kann durch böswillige Anfragen verursacht werden, z. B. netzwerkbasierte DDoS-Angriffe (Distributed Denial of Service). Ein plötzlicher Anstieg der Last kann auch aus anderen Gründen wie Konfigurationsfehlern in der Clientsoftware auftreten. Um zu gewährleisten, dass Ihre Anwendung eine übermäßige Last bewältigen kann, sollten Sie geeignete Ratenbegrenzungsmechanismen anwenden. Sie können beispielsweise Kontingente für die Anzahl der API-Anfragen festlegen, die ein Google Cloud-Dienst empfangen kann.
Hinweis: Ratenbegrenzungstechniken können auch zur Optimierung der Kosten Ihrer Cloudinfrastruktur beitragen. Wenn Sie beispielsweise für bestimmte Ressourcen Kontingente auf Projektebene festlegen, können Sie die Kosten begrenzen, die im Projekt für diese Ressourcen entstehen können.
Netzwerkdienststufe
Mit Google Cloud-Netzwerkdienststufen können Sie die Konnektivität zwischen Systemen im Internet und Ihren Google Cloud-Arbeitslasten optimieren. Wählen Sie für Anwendungen, die Nutzer weltweit bedienen und Back-Ends in mehreren Regionen haben, die Premium-Stufe aus. Traffic aus dem Internet wird an dem Point of Presence (PoP), der dem sendenden System am nächsten ist, in das Hochleistungsnetzwerk von Google geleitet. Innerhalb des Google-Netzwerks wird der Traffic vom Eingabe-PoP an die entsprechende Google Cloud-Ressource weitergeleitet, z. B. eine Compute Engine-VM. Ausgehender Traffic wird über das Google-Netzwerk gesendet und verlässt das Netzwerk an dem PoP, der dem Ziel am nächsten liegt. Diese Routingmethode trägt dazu bei, die Wahrnehmung von Nutzern zu verbessern, da die Anzahl der Netzwerk-Hops zwischen den Nutzern und den ihnen am nächsten gelegenen PoPs reduziert wird.