Internetanwendungen können extremen Nutzungsschwankungen unterliegen. Obwohl dies auf die meisten Unternehmensanwendungen nicht zutrifft, müssen viele Unternehmen mit einer anderen Art von stoßweiser Arbeitslast zurechtkommen: Batch- oder CI-/CD-Jobs.
Dieses Architekturmuster basiert auf einer redundanten Bereitstellung von Anwendungen in mehreren Rechenumgebungen. Das Ziel besteht darin, die Kapazität, Ausfallsicherheit oder beides zu erhöhen.
Obwohl Sie stoßweise Arbeitslasten in einer rechenzentrumsbasierten Computingumgebung durch Überdimensionierung von Ressourcen verarbeiten können, ist dieser Ansatz nicht unbedingt kosteneffektiv. Wenn Sie Batchjobs über einen längeren Zeitraum ausführen, lässt sich zwar die Auslastung optimieren, allerdings ist das Verzögern von Jobs nicht zielführend, wenn diese zeitkritisch sind.
Die Idee des Cloud-Bursting-Musters besteht darin, die Basislast in einer privaten Rechenumgebung zu belassen und die Cloud bedarfsweise zu nutzen, wenn zusätzliche Kapazität für Bursts benötigt wird.
Wenn die Datenkapazität im vorherigen Diagramm in einer lokalen privaten Umgebung am Limit ist, kann das System zusätzliche Kapazitäten aus einer Google Cloud-Umgebung erhalten, wenn nötig.
Die Hauptfaktoren dieses Musters sind Geldeinsparungen und die Reduktion des Zeit- und Arbeitsaufwands, um auf Änderungen der Skalierungsanforderungen zu reagieren. Bei diesem Ansatz zahlen Sie nur für die Ressourcen, die bei der Verarbeitung zusätzlicher Lasten verwendet werden. Dies bedeutet, dass Sie Ihre Infrastruktur nicht überdimensionieren müssen. Stattdessen können Sie die Vorteile von On-Demand-Cloud-Ressourcen nutzen und sie je nach Bedarf skalieren und vordefinierte Kennzahlen nutzen. So kann Ihr Unternehmen Dienstunterbrechungen während der Hauptnachfragezeiten vermeiden.
Eine wichtige Voraussetzung für Cloud Bursting-Szenarien ist die Portabilität von Arbeitslasten. Wenn Sie die Bereitstellung von Arbeitslasten in mehreren Umgebungen zulassen, müssen Sie die Unterschiede zwischen den Umgebungen durch Abstraktion überbrücken. Zum Beispiel können Sie mit Kubernetes Konsistenz auf Arbeitslastebene über unterschiedliche Umgebungen mit unterschiedlichen Infrastrukturen erzielen. Weitere Informationen finden Sie unter Referenzarchitektur der GKE Enterprise-Hybridumgebung.
Designaspekte
Das Cloud-Bursting-Muster kann sowohl auf interaktive Arbeitslasten als auch auf Batcharbeitslasten angewendet werden. Wenn Sie mit interaktiven Arbeitslasten arbeiten, müssen Sie allerdings festlegen, wie Anfragen auf die Umgebungen verteilt werden sollen:
Sie können eingehende Nutzeranfragen an einen Load Balancer weiterleiten, der im vorhandenen Rechenzentrum ausgeführt wird, und die Anfragen dann vom Load Balancer auf die lokalen Ressourcen und die Cloudressourcen verteilen lassen.
Bei diesem Ansatz muss der Load Balancer oder ein anderes System, das im vorhandenen Rechenzentrum ausgeführt wird, auch die in der Cloud zugeteilten Ressourcen kontinuierlich verfolgen. Der Load Balancer oder ein anderes System muss auch das automatische Hoch- oder Herunterskalieren von Ressourcen initiieren. Mit diesem Ansatz können Sie alle Cloudressourcen in Zeiten geringer Aktivität außer Betrieb nehmen. Die Implementierung von Mechanismen zur Ressourcenverfolgung kann jedoch die Möglichkeiten Ihrer Load Balancer-Lösungen übersteigen und damit die Gesamtkomplexität erhöhen.
Anstatt Mechanismen zum Verfolgen von Ressourcen zu implementieren, können Sie Cloud Load Balancing mit einem NEG-Backend (Netzwerk-Endpunktgruppe) mit Hybridkonnektivität verwenden. Sie verwenden diesen Load Balancer, um interne Clientanfragen oder externe Clientanfragen an Backends weiterzuleiten, die sich sowohl lokal als auch in Google Cloud befinden und die auf verschiedenen Messwerten wie der gewichteten Trafficaufteilung basieren. Sie können auch Backends basierend auf der Load Balancing-Bereitstellungskapazität für Arbeitslasten in Google Cloud skalieren. Weitere Informationen finden Sie unter Trafficverwaltung für globale externe Application Load Balancer.
Dieser Ansatz bietet viele zusätzliche Vorteile, z. B. die Nutzung der Vorteile von DDoS-Schutzfunktionen von Google Cloud Armor, WAF und Caching von Inhalten am Cloud-Edge mit Cloud CDN. Allerdings müssen Sie die Größe der Hybrid-Netzwerkkonnektivität an den zusätzlichen Traffic anpassen.
Wie in Portabilität von Arbeitslasten hervorgehoben könnte eine Anwendung mit nur minimalen Änderungen in eine andere Umgebung portierbar sein, um Arbeitslastkonsistenz zu erreichen. Dies bedeutet jedoch nicht, dass die Anwendung in beiden Umgebungen die gleiche Leistung erreicht. Unterschiede beim zugrunde liegenden Computing, Infrastruktursicherheitsfunktionen oder Netzwerkinfrastruktur samt der Nähe zu abhängigen Diensten bestimmen in der Regel die Leistung. Durch Tests erhalten Sie genauere Einblicke in die Leistung und können die Leistungserwartungen besser nachvollziehen.
Mit Cloud-Infrastrukturdiensten können Sie eine Umgebung zum Hosten Ihrer Anwendungen ohne Portabilität erstellen. Verwenden Sie die folgenden Ansätze, um Clientanfragen zu verarbeiten, wenn der Traffic zu Spitzennachfragezeiten weitergeleitet wird:
- Verwenden Sie konsistente Tools, um diese beiden Umgebungen zu überwachen und zu verwalten.
- Achten Sie darauf, dass die Arbeitslastversionsverwaltung konsistent ist und Ihre Datenquellen auf dem neuesten Stand sind.
- Möglicherweise müssen Sie eine Automatisierung hinzufügen, um die Cloudumgebung bereitzustellen, und den Traffic umleiten, wenn der Bedarf steigt und die Cloud-Arbeitslast Clientanfragen für die Anwendung akzeptieren soll.
Wenn Sie in Zeiten geringer Nachfrage alle Google Cloud-Ressourcen herunterfahren möchten, ist die Verwendung von DNS-Routingrichtlinien, die hauptsächlich für das Load Balancing von Traffic dienen, möglicherweise nicht immer optimal. Dies hat hauptsächlich folgende Gründe:
- Die Initialisierung von Ressourcen kann einige Zeit in Anspruch nehmen, bevor Nutzer sie verwenden können.
- DNS-Aktualisierungen werden tendenziell langsam über das Internet übertragen.
Deshalb gilt Folgendes:
- Nutzer werden möglicherweise an die Cloud-Umgebung weitergeleitet, auch wenn keine Ressourcen zur Verarbeitung ihrer Anfragen verfügbar sind.
- Nutzer werden möglicherweise weiterhin vorübergehend zur lokalen Umgebung weitergeleitet, während DNS-Updates im Internet übertragen werden.
Mit Cloud DNS können Sie die DNS-Richtlinie und Routingrichtlinie auswählen, die zu Ihrer Lösungsarchitektur und Ihrem Verhalten passen, z. B. DNS-Routingrichtlinien für die Standortbestimmung. Cloud DNS unterstützt auch Systemdiagnosen für den internen Passthrough-Network Load Balancer und den internen Application Load Balancer. In diesem Fall können Sie sie in Ihre Hybrid-DNS-Gesamteinrichtung integrieren, die auf diesem Muster basiert.
In einigen Szenarien können Sie Cloud DNS verwenden, um Clientanfragen mit Systemdiagnosen in Google Cloud zu verteilen, z. B. bei der Verwendung von internen Application Load Balancers oder regionenübergreifenden internen Application Load Balancers. In diesem Szenario prüft Cloud DNS den Gesamtzustand des internen Application Load Balancer, der wiederum den Status der Backend-Instanzen prüft. Weitere Informationen finden Sie unter DNS-Routingrichtlinien und Systemdiagnosen verwalten.
Sie können auch den Cloud DNS-Split-Horizon verwenden. Cloud DNS-Split-Horizon ist ein Ansatz zum Einrichten von DNS-Antworten oder -Einträgen für den spezifischen Standort oder das Netzwerk des DNS-Abfrageursprungs für denselben Domainnamen. Dieser Ansatz wird häufig verwendet, um Anforderungen zu erfüllen, bei denen eine Anwendung so konzipiert ist, dass sie sowohl eine private als auch eine öffentliche Umgebung mit jeweils eigenen Features bietet. Mit diesem Ansatz wird auch die Trafficlast auf die Umgebungen verteilt.
Angesichts dieser Überlegungen eignet sich Cloud Bursting generell besser für Batcharbeitslasten als für interaktive Arbeitslasten.
Vorteile
Das Cloud Bursting-Architekturmuster bietet folgende wichtige Vorteile:
- Cloud Bursting ermöglicht die weitere Nutzung vorgenommener Investitionen in Rechenzentren und private Rechenumgebungen. Diese Nutzung kann unbegrenzt sein oder so lang dauern, bis die vorhandenen Geräte ersetzt werden müssen. An diesem Punkt können Sie dann eine vollständige Verlagerung prüfen.
- Da Sie keine überschüssige Kapazität für Nachfragespitzen bereitstellen müssen, können Sie die Nutzung und Kosteneffizienz Ihrer privaten Rechenumgebungen möglicherweise erhöhen.
- Mit Cloud Bursting können Sie Batchjobs innerhalb eines angemessenen Zeitraums ausführen, ohne dass Rechenressourcen überdimensioniert werden müssen.
Best Practices
Beachten Sie beim Implementieren von Cloud-Bursting folgende Best Practices:
- Damit in der Cloud ausgeführte Arbeitslasten genauso auf Ressourcen zugreifen können wie Arbeitslasten, die in einer lokalen Umgebung ausgeführt werden, nutzen Sie dieMesh-Topologie mit dem Sicherheitszugriffsprinzip der geringsten Berechtigung. Wenn die Gestaltung der Arbeitslast dies zulässt, können Sie nur den Zugriff von der Cloud auf die lokale Rechenumgebung zulassen und nicht umgekehrt.
- Wählen Sie zum Minimieren der Kommunikationslatenz zwischen Umgebungen eine Google Cloud-Region aus, die sich geografisch in der Nähe Ihrer privaten Rechenumgebung befindet. Weitere Informationen finden Sie unter Best Practices für die Auswahl der Region in Compute Engine.
- Verringern Sie die Angriffsfläche für Sicherheitsattacken, wenn Sie Cloud Bursting nur für Batcharbeitslasten verwenden. Halten Sie dafür alle Google Cloud-Ressourcen privat. Lassen Sie keinen direkten Zugriff aus dem Internet auf diese Ressourcen zu, auch wenn Sie externes Load Balancing von Google Cloud verwenden, um den Einstiegspunkt für die Arbeitslast bereitzustellen.
Wählen Sie die DNS- und Routingrichtlinie aus, die Ihrem Architekturmuster und dem gewünschten Lösungsverhalten entspricht.
- Im Rahmen dieses Musters können Sie das Design Ihrer DNS-Richtlinien dauerhaft anwenden oder, wenn Sie zu Spitzenbedarfszeiten zusätzliche Kapazität benötigen, mit einer anderen Umgebung.
- Sie können DNS-Routingrichtlinien für die Standortbestimmung verwenden, um einen globalen DNS-Endpunkt für Ihre regionalen Load Balancer einzurichten. Diese Taktik hat viele Anwendungsfälle für DNS-Routingrichtlinien zur Standortbestimmung, einschließlich bei Hybridanwendungen, die Google Cloud zusammen mit einer lokalen Bereitstellung verwenden, in der sich die Google Cloud-Region befindet.
Wenn Sie für dieselben DNS-Abfragen verschiedene Einträge bereitstellen müssen, können Sie das Split-Horizon-DNS verwenden, z. B. bei Abfragen von internen und externen Clients.
Weitere Informationen finden Sie unter Referenzarchitekturen für Hybrid-DNS
Damit DNS-Änderungen schnell weitergegeben werden, konfigurieren Sie Ihr DNS mit einer relativ kurzen Gültigkeitsdauer, damit Sie Nutzer auf Standby-Systeme umleiten können, wenn Sie zusätzliche Kapazität mithilfe von Cloud-Umgebungen benötigen.
Bei Jobs, die nicht sehr zeitkritisch sind und bei denen Daten nicht lokal gespeichert werden, empfiehlt sich die Verwendung von Spot-VM-Instanzen, die wesentlich günstiger sind als normale VM-Instanzen. Bei einem vorzeitigen Beenden des VM-Jobs muss das System den Job jedoch automatisch neu starten können.
Verwenden Sie gegebenenfalls Container für die Portabilität von Arbeitslasten. Außerdem kann GKE Enterprise eine wichtige Technologie für dieses Design sein. Weitere Informationen finden Sie unter Referenzarchitektur der GKE Enterprise-Hybridumgebung
Beobachten Sie den Traffic, der von Google Cloud an eine andere Rechenumgebung gesendet wird. Für diesen gelten die Gebühren für ausgehende Datenübertragung.
Wenn Sie diese Architektur langfristig mit hohem ausgehenden Datenübertragungsvolumen verwenden möchten, sollten Sie Cloud Interconnect in Betracht ziehen. Mit Cloud Interconnect können Sie die Verbindungsleistung optimieren und die Kosten für die ausgehende Datenübertragung von Traffic senken, der bestimmte Bedingungen erfüllt. Weitere Informationen finden Sie unter Cloud Interconnect-Preise.
Wenn Cloud Load Balancing verwendet wird, sollten Sie gegebenenfalls die Funktionen zur Optimierung der Anwendungskapazität nutzen. Auf diese Weise können Sie einige der Kapazitätsprobleme bewältigen, die bei global verteilten Anwendungen auftreten können.
Authentifizieren Sie die Personen, die Ihre Systeme nutzen, indem Sie eine gemeinsame Identität zwischen Umgebungen etablieren, damit sich Systeme über Umgebungsgrenzen hinaus authentifizieren können.
Zum Schutz vertraulicher Informationen wird dringend empfohlen, die gesamte Kommunikation während der Übertragung zu verschlüsseln. Wenn eine Verschlüsselung am Konnektivitätslayer erforderlich ist, stehen je nach ausgewählter Hybridkonnektivitätslösung verschiedene Optionen zur Verfügung. Zu diesen Optionen gehören VPN-Tunnel, HA VPN über Cloud Interconnect und MACsec für Cloud Interconnect.