Websites bereitstellen

Dieser Artikel beschreibt, wie eine Website in der Google Cloud Platform (GCP) gehostet wird. GCP bietet eine robuste, flexible, zuverlässige und skalierbare Plattform für die Bereitstellung von Websites. GCP wurde unter Verwendung derselben Infrastruktur erstellt, die Google auch zur Bereitstellung der Inhalte von Websites wie Google.com, YouTube und Gmail einsetzt. Sie können zur Bereitstellung der Inhalte für Ihre Website den für Ihre Bedürfnisse am besten geeigneten Typ und das am besten geeignete Infrastrukturdesign wählen.

Dieser Artikel kann in den folgenden Fällen für Sie nützlich sein:

  • Sie sind mit der Erstellung einer Website vertraut und haben bereits einmal eine Web-Serving-Infrastruktur erstellt und angewendet
  • Sie möchten evaluieren, ob und wie Sie Ihre Website zur GCP migrieren

Optionen wählen

Wenn Sie noch nicht mit GCP gearbeitet haben, ist es sinnvoll, zuerst die Art von Technologie einzusetzen, mit der Sie bereits vertraut sind. Beispiel: Wenn Sie Ihre Website derzeit auf Hardwareservern oder virtuellen Maschinen (VMs) hosten, vielleicht bei einem anderen Cloudanbieter oder auf Ihrer eigenen Hardware, dann bietet Ihnen Google Compute Engine ein vertrautes Modell. Wenn Sie bereits ein PaaS-Angebot (Platform-as-a-Service) wie Heroku oder Engine Yard nutzen, ist Google App Engine wahrscheinlich der beste Ausgangspunkt für Sie.

Nachdem Sie sich mit GCP vertraut gemacht haben, können Sie die vielfältigen Produkte und Dienste erkunden, die GCP zur Verfügung stellt. Wenn Sie beispielsweise mit Compute Engine eingestiegen sind, können Sie die Funktionen Ihrer Site durch Google Kubernetes Engine erweitern oder die Funktionalität ganz oder teilweise auf App Engine migrieren.

Die folgende Tabelle bietet einen Überblick über Ihre Hosting-Optionen in GCP:

Option Produkt Datenspeicherung Lastenausgleich Skalierbarkeit Logging
Statische Website

Cloud Storage

Firebase Hosting

Cloud Storage-Bucket Automatisch
Virtuelle Maschinen Compute Engine

Cloud SQL API, Cloud Storage API, Cloud Datastore API und Cloud Bigtable API oder Sie verwenden einen anderen, externen Speicheranbieter

Festplattenbasierte nichtflüchtige Speicher, nichtflüchtige Standardspeicher genannt, sowie nichtflüchtige SSD-Laufwerke

HTTPS

TCP-Proxy

SSL-Proxy

IPv6-Beendigung

Netzwerk

Regionenübergreifend

Intern

Automatisch mit verwalteten Instanzgruppen

Stackdriver Logging

Stackdriver Monitoring

Monitoring-Konsole

Container Google Kubernetes Engine (GKE) Wie Compute Engine, interagiert jedoch unterschiedlich mit nichtflüchtigen Speichern Netzwerk
HTTPS
Cluster Autoscaler

Stackdriver Logging

Stackdriver Monitoring

Monitoring-Konsole

Verwaltete Plattform App Engine Von Google ausgeführt Von Google ausgeführt Von Google ausgeführt Von Google ausgeführt

Für das Verständnis der wichtigsten Technologien, die Sie beim Web-Serving auf der GCP einsetzen können, und ihrer Funktionsweise empfehlen wir, den kompletten Artikel zu lesen. Der Artikel enthält Links zur vollständigen Dokumentation, zu Anleitungen und Lösungsartikeln, die Ihnen helfen, ein tieferes Verständnis zu gewinnen.

Die Kosten überblicken

Aufgrund der Vielzahl der Variablen und der Unterschiede in den einzelnen Implementierungen würden konkrete Ratschläge im Hinblick auf Kosten den Rahmen dieses Artikels sprengen. Weitere Informationen zum besseren Verständnis der Preisgestaltung in GCP finden Sie in der Preisübersicht. Die Preisgestaltung für einzelne Dienste können Sie dem Abschnitt zu Produktpreisen entnehmen. Darüber hinaus stehen verschiedene Tools zum Einschätzen der Kosten für die Nutzung von GCP zur Verfügung.

  • Mit dem Preisrechner können Sie die Kosten, die mit Ihrer Nutzung von GCP verbunden sind, schnell und einfach einschätzen. Sie können Details zu den Diensten angeben, die Sie nutzen möchten, und dann eine Preisschätzung erhalten
  • Das TCO-Tool ermittelt die relativen Kosten für die Ausführung Ihrer Computing-Arbeitslast in der Cloud und liefert eine finanzielle Schätzung. Das Tool bietet mehrere Eingabemöglichkeiten für die Kostenmodellierung, die sich anpassen lassen. Danach werden die geschätzten Kosten für die Cloud Platform und für Amazon Web Services verglichen. Dieses Tool erfasst nicht alle Komponenten einer typischen Anwendung wie z. B. Speicher und Netzwerk

Domain Name Services einrichten

In der Regel werden Sie einen Domainnamen für Ihre Website registrieren. Sie können auf einen öffentlichen Domainnamenregistrator wie Google Domains zurückgreifen, um einen eindeutigen Namen für Ihre Website zu registrieren. Wenn Sie Ihr eigenes Domain Name System (DNS) verwenden und umfassend kontrollieren möchten, können Sie Google Cloud DNS als DNS-Anbieter nutzen. Die Cloud-DNS-Dokumentation enthält eine Kurzanleitung für den schnellen Einstieg.

Wenn Sie bereits einen DNS-Anbieter haben, den Sie nutzen möchten, müssen Sie in der Regel ein paar Datensätze bei diesem Anbieter erstellen. Für einen Domainnamen wie example.com erstellen Sie einen Datensatz A bei Ihrem DNS-Anbieter. Danach erstellen Sie für die Subdomain www.example.com einen Datensatz CNAME für www, um auf die Domain example.com zu verweisen. Der Datensatz A ordnet einer IP-Adresse einen Hostnamen zu. Der Datensatz CNAME erstellt einen Alias für den Datensatz A.

Wenn Ihr Domainnameregistrator zugleich Ihr DNS-Anbieter ist, sind vermutlich keine weiteren Schritte erforderlich. Wenn Sie für die Anmeldung und für DNS verschiedene Anbieter nutzen, müssen Sie dafür sorgen, dass Ihrer Domain beim Domainnamenregistrator die richtigen Nameserver zugeordnet sind.

Nachdem Sie die DNS-Änderungen vorgenommen haben, dauert es je nach der Gültigkeitsdauer (time-to-live, TTL) in Ihrer Zone eine gewisse Zeit, bis die Datensatzaktualisierungen umgesetzt sind. Sofern es sich um einen neuen Hostnamen handelt, müssten die Änderungen schnell umgesetzt werden, da die DNS-Resolver keine vorherigen Werte im Cache gespeichert haben und die nötigen Informationen zum Weiterleiten von Requests direkt beim DNS-Anbieter abfragen.

Statische Website hosten

Der einfachste Weg zur Bereitstellung von Websiteinhalten über HTTP(S) ist das Hosting von statischen Webseiten. Statische Webseiten werden unverändert gehostet, d. h. so, wie sie geschrieben wurden (in der Regel in HTML). Eine statische Website ist eine gute Wahl, wenn die Seiten Ihrer Website nach der Veröffentlichung nur selten geändert werden. Dies gilt beispielsweise für Blogposts oder für die Seiten der Website eines kleinen Unternehmens. Statische Webseiten bieten vielfältige Gestaltungsmöglichkeiten. Soll Ihre Website jedoch komplexe Interaktionen mit Nutzern über serverseitigen Code ermöglichen, sollten Sie die weiteren Optionen in Betracht ziehen, die im vorliegenden Artikel erläutert werden.

Statische Website mit Cloud Storage hosten

Für das Hosting einer statischen Website in Cloud Storage müssen Sie einen Cloud Storage-Bucket erstellen, den Inhalt hochladen und Ihre neue Website testen. Sie können Daten direkt über storage.googleapis.com bereitstellen. Alternativ haben Sie die Möglichkeit, zu prüfen, ob Sie Inhaber der Domain sind, und dann Ihren Domainnamen zu verwenden. In beiden Fällen wird mit globalen Edge-Caches eine konsistente und schnelle Bereitstellung gewährleistet.

Sie können Ihre statischen Webseiten auf beliebige Weise erstellen. So legen Sie beispielsweise Seiten manuell in HTML und CSS an oder Sie verwenden einen Generator für statische Websites wie Jekyll, Ghost oder Hugo zum Erstellen der Inhalte. Generatoren für statische Websites vereinfachen die Erstellung einer statischen Website, da Sie Inhalte in der Auszeichnungssprache Markdown verfassen sowie Vorlagen und Tools nutzen können. Website-Generatoren stellen in der Regel einen lokalen Webserver bereit, über den Sie eine Vorschau Ihrer Inhalte anzeigen können.

Sobald Ihre statische Website funktionsbereit ist, können Sie die statischen Seiten mit der von Ihnen bevorzugten Vorgehensweise aktualisieren. Dies kann eine ganz einfache Methode wie das manuelle Kopieren einer aktualisierten Seite in den Bucket sein. Sie können auch einen stärker automatisierten Ansatz wählen, bei dem Sie Ihre Inhalte beispielsweise im GitHub speichern und dann einen Webhook verwenden, um ein Skript zur Aktualisierung des Buckets auszuführen. In einem höher entwickelten System könnte ein Tool für Continuous-Integration/Continuous-Delivery (CI/CD) wie Jenkins zur Aktualisierung des Inhalts im Bucket zum Einsatz kommen. Jenkins bietet ein Cloud Storage-Plug-in, mit dem für Google Cloud Storage Uploader ein Post-Build-Schritt zur Veröffentlichung von Build-Artefakten in Cloud Storage bereitgestellt werden kann.

Bei einer Webanwendung, die statischen Inhalt oder von Nutzern hochgeladene statische Medien bereitstellen soll, kann der Einsatz von Cloud Storage eine kostengünstige und effiziente Möglichkeit zum Hosten und Bereitstellen dieser Inhalte bieten. Gleichzeitig kann die Anzahl der dynamischen Requests reduziert werden, die an Ihre Webanwendung gerichtet werden.

Cloud Storage kann darüber hinaus die von Nutzern eingereichten Inhalte direkt entgegennehmen. Dank dieser Funktion können Nutzer große Mediendateien direkt und sicher ohne Proxy-Vermittlung durch Ihre Server hochladen.

Informationen zur Optimierung der Leistung Ihrer statischen Website finden Sie unter Best Practices für Google Cloud Storage.

Weitere Informationen finden Sie auf den folgenden Seiten:

Statische Website mit Firebase Hosting bereitstellen

Firebase Hosting stellt schnelles und sicheres statisches Hosting für Ihre Web-App bereit. Mit Firebase Hosting können Sie mit einem einzigen Befehl Web-Apps und statischen Inhalt schnell und einfach in einem globalen Netzwerk für Inhaltsübermittlung (Content Delivery Network, CDN) bereitstellen.

Der Einsatz von Firebase Hosting bietet u. a. die folgenden Vorteile:

  • SSL ist ohne zusätzlichen Konfigurationsaufwand in Firebase Hosting eingebunden, d. h. Inhalte werden immer sicher bereitgestellt. In benutzerdefinierten Domains werden SSL-Zertifikate kostenlos bereitgestellt
  • Alle Ihre Inhalte werden über HTTPS bereitgestellt
  • Ihre Inhalte werden von den CDN-Rändern weltweit schnell für Ihre Nutzer bereitgestellt
  • Mithilfe der Firebase-CLI ist Ihre Anwendung in kürzester Zeit einsatzbereit. Befehlszeilentools vereinfachen das Hinzufügen von Deployment-Zielen in Ihrem Build-Prozess
  • Sie können auf Releaseverwaltungsfunktionen wie ein detailliertes Deployment neuer Assets, eine komplette Versionsverwaltung und Rollbacks mit nur einem Klick zurückgreifen
  • Das Hosting bietet eine für Anwendungen mit nur einer Seite geeignete Konfiguration, die auch für andere anwendungsähnliche Websites geeignet ist
  • Das Hosting ist für die nahtlose Zusammenarbeit mit anderen Firebase-Funktionen konzipiert

Weitere Informationen finden Sie auf den folgenden Seiten:

Virtuelle Maschinen mit Compute Engine verwenden

Für IaaS-Anwendungsfälle (IaaS = Infrastructure as a Service) stellt GCP Google Compute Engine zur Verfügung. Compute Engine bietet eine robuste Computerinfrastruktur, aber Sie müssen die Plattformkomponenten, die Sie verwenden möchten, auswählen und konfigurieren. Beim Einsatz von Compute Engine sind Sie für die Konfiguration, Verwaltung und Überwachung der Systeme verantwortlich. Google stellt sicher, dass Ressourcen verfügbar, zuverlässig und betriebsbereit sind, aber Sie sind für die Bereitstellung und Verwaltung dieser Ressourcen verantwortlich. Der Vorteil dieser Vorgehensweise liegt darin, dass Sie vollständige Kontrolle über die Systeme haben und uneingeschränkte Flexibilität nutzen können.

Mit Compute Engine können Sie beinahe jedes gewünschte Website-Serving-System einrichten und bereitstellen. Sie können VMs, sogenannte Instanzen, zur Erstellung Ihrer Anwendung verwenden, ähnlich wie beim Einsatz einer eigenen Hardwareinfrastruktur. Compute Engine bietet eine Vielzahl von Maschinentypen, mit denen Sie Ihre Konfiguration ganz auf Ihre Bedürfnisse und Ihr Budget zuschneiden können. Wählen Sie Ihre bevorzugten Betriebssysteme, Entwicklungspakete, Sprachen, Frameworks, Dienste und andere Softwaretechnologien aus.

Automatisch mit GCP Marketplace einrichten

Die einfachste Methode zur Bereitstellung eines vollständigen Web-Serving-Stapels ist die Verwendung von GCP Marketplace. Mit wenigen Klicks können Sie hier über 100 vollständig entwickelte Lösungen mit Google Click-to-Deploy oder Bitnami bereitstellen.

Google Cloud Platform Marketplace

Beispielsweise lässt sich mit GCP Marketplace auf einfache Weise ein LAMP-Stack oder WordPress einrichten. Das System stellt in wenigen Minuten einen vollständigen funktionsfähigen Software-Stack in einer einzigen Instanz bereit. Vor der Bereitstellung bietet GCP Marketplace eine Kostenschätzung für den Betrieb der Website und Informationen, welche Versionen der Softwarekomponenten für Sie installiert werden. Außerdem können Sie Ihre Konfiguration beispielsweise durch Änderung der Komponenteninstanznamen sowie durch Auswahl des Maschinentyps und einer Laufwerksgröße anpassen. Nach der Bereitstellung haben Sie die volle Kontrolle über die Compute Engine-Instanzen und deren Konfiguration sowie über die Software.

Manuelles Einrichten

Sie können Ihre Infrastruktur auch manuell auf Compute Engine erstellen. Dazu definieren Sie entweder die Konfiguration von Grund auf neu oder Sie greifen auf eine GCP Marketplace-Bereitstellung zurück. So können Sie beispielsweise eine bestimmte Version einer Softwarekomponente verwenden, die nicht von GCP Marketplace angeboten wird, oder einfach alles selbst installieren und konfigurieren.

Im Rahmen dieses Artikels können weder ein vollständiges Framework noch die Best Practices für die Einrichtung einer Website umfassend behandelt werden. Allgemein betrachtet gelten jedoch die folgenden technischen Voraussetzungen für die Einrichtung einer Web-Serving-Infrastruktur in Compute Engine:

  • Anforderungen verstehen. Stellen Sie bei der Erstellung einer neuen Website sicher, dass Sie die benötigten Komponenten wie Instanzen, Speicherbedarf und Netzwerkinfrastruktur kennen. Wenn Sie Ihre Anwendung von einer vorhandenen Lösung migrieren, sind Sie wahrscheinlich bereits mit diesen Anforderungen vertraut. Sie sollten aber auch bedenken, wie Ihr vorhandenes Setup den GCP-Diensten zugeordnet werden kann
  • Design planen. Konzipieren Sie Ihre Architektur im Detail und halten Sie das gewünschte Design schriftlich fest. Dies sollte so konkret wie möglich geschehen
  • Komponenten erstellen. Komponenten, die in der Regel als physische Ressourcen bezeichnet werden (z. B. Computer und Netzwerk-Switches), werden in Compute Engine als Dienste bereitgestellt. Wenn Sie beispielsweise einen Computer benötigen, müssen Sie eine entsprechende Compute Engine-Instanz erstellen. Wenn Sie ein persistentes Festplattenlaufwerk benötigen, müssen Sie dieses ebenfalls erstellen. Google Cloud Deployment Manager stellt hierfür einen einfachen und wiederholbaren Prozess bereit.
    • Konfigurieren und anpassen. Sobald alle gewünschten Komponenten vorhanden sind, müssen Sie diese konfigurieren, Software installieren und konfigurieren sowie den erforderlichen Anpassungscode schreiben und erstellen. Sie können die Konfiguration durch die Ausführung von Shell-Skripten replizieren, um zukünftige Deployments zu beschleunigen. Auch dafür bietet Cloud Deployment Manager eine hilfreiche Unterstützung. Damit werden deklarative flexible Konfigurationsvorlagen für das automatisierte Deployment von Ressourcen zur Verfügung gestellt. Außerdem können Sie auf IT-Automatisierungstools wie Puppet und Chef zurückgreifen
  • Assets bereitstellen. Vermutlich verfügen Sie über Webseiten, Bilder usw.
  • Testen. Vergewissern Sie sich, dass alles so funktioniert, wie Sie es erwarten
  • Für die Produktion bereitstellen. Geben Sie Ihre Website für die allgemeine Nutzung frei

Für einen schnellen Einstieg und zum besseren Verständnis der manuellen Einrichtung von Compute Engine-Instanzen sollten Sie sich eine oder mehrere der folgenden Anleitungen ansehen:

Daten mit Compute Engine speichern

Die meisten Websites benötigen irgendeine Art von Speicher. Möglicherweise benötigen Sie Speicher aus verschiedenen Gründen, z. B. zum Speichern der Dateien, die Ihre Nutzer hochladen, und zum Speichern der Assets, auf die Ihre Website zurückgreift.

GCP stellt eine Vielzahl von Speicherdiensten bereit. Dazu gehören die Folgenden:

  • SQL-Datenbank in Cloud SQL, die auf MySQL basiert
  • Zwei Optionen für die NoSQL-Datenspeicherung: Cloud Datastore und Cloud Bigtable
  • Konsistenter, skalierbarer Objektspeicher mit hoher Kapazität in Cloud Storage. Cloud Storage gibt es in mehreren Versionen:
    • Die multiregionale Version bietet maximale Verfügbarkeit und Geo-Redundanz
    • Die regionale Version bietet maximale Verfügbarkeit und einen lokalen Speicherort
    • Nearline bietet eine kostengünstige Alternative, die ideal für Daten ist, auf die höchstens einmal im Monat zugegriffen wird
    • Coldline bietet die günstigste Alternative für Archivierung, Sicherung und Notfallwiederherstellung
  • Nichtflüchtige Speicher in Compute Engine zur Nutzung als Hauptspeicher für Ihre Instanzen. Compute Engine bietet sowohl festplattenbasierte nichtflüchtige Speicher, sogenannte nichtflüchtige Standardspeicher, als auch nichtflüchtige SSD-Laufwerke. Sie haben auch die Möglichkeit, Ihre bevorzugte Speichertechnologie über nichtflüchtige Speicher in Compute Engine einzurichten. Beispielsweise können Sie PostgreSQL als SQL-Datenbank oder MongoDB als NoSQL-Speicher einrichten. Eine ausführliche Darstellung der gesamten Bandbreite und der Vorteile der Speicherdienste in der GCP finden Sie im Abschnitt Speicheroption auswählen

Load-Balancing mit Compute Engine

Bei der Mehrzahl der Websites, die in größerem Umfang genutzt werden, ist der Einsatz von Technologien für den Lastenausgleich häufig eine unverzichtbare Voraussetzung, um die Arbeitslast auf mehrere Server zu verteilen. Bei der Konzeption Ihrer Webserver mit Lastenausgleich in Compute Engine stehen Ihnen verschiedene Optionen zur Verfügung. Dazu gehören die Folgenden:

  • HTTP(S)-Lastenausgleich. Erläutert die Grundlagen der Verwendung des GCP-Lastenausgleichsmoduls
  • TCP-Proxy-Load-Balancing. Veranschaulicht die Einrichtung des globalen TCP-Proxy-Lastenausgleichs für einen Dienst in zwei Regionen
  • SSL-Proxy-Lastenausgleich. Veranschaulicht die Einrichtung eines globalen TCP-Proxy-Lastenausgleichs für einen Dienst in mehreren Regionen
  • IPv6-Beendigung für HTTP(S)-, SSL-Proxy- und TCP-Proxy-Lastenausgleich. Erläutert die Terminierung von IPv6 und die Optionen zum Konfigurieren von Lastenausgleichsmodulen und Verarbeiten von IPv6-Requests
  • Netzwerk-Load-Balancing. Beschreibt ein grundlegendes Szenario, in dem eine Layer-3-Load-Balancing-Konfiguration eingerichtet wird, um den HTTP-Traffic auf fehlerfreie Instanzen zu verteilen
  • Regionenübergreifendes Load-Balancing mit Microsoft IIS-Back-Ends. Veranschaulicht die Nutzung des Compute Engine-Load-Balancers für die Trafficverteilung auf IIS-Server (Server mit Microsoft Internet Information Services)
  • Internes Load-Balancing einrichten. Sie können einen Load-Balancer einrichten, der den Traffic auf ein privates Netzwerk verteilt, das nicht über das Internet erreichbar ist. Das interne Load-Balancing ist nicht nur für Intranetanwendungen nützlich, bei denen der gesamte Traffic in einem privaten Netzwerk verbleibt, sondern auch für komplexe Webanwendungen, bei denen ein Front-End-Server über ein privates Netzwerk Anfragen an Back-End-Server sendet

Das Deployment des Load-Balancings ist flexibel und Sie können Compute Engine mit den vorhandenen Lösungen verwenden. Beispiele dazu finden Sie in den Informationen zum Autoscaling auf der Ebene des HAProxy-Lastenausgleichs und der Back-End-Serverstufe unter Automatisch skalierter interner Lastenausgleich mit HAProxy und Consul und zu einer möglichen Lösung anstelle des Compute Engine-Lastenausgleichs unter HTTP(S)-Lastenausgleich mit NGINX.

Inhaltsverteilung mit Compute Engine

Da die Antwortzeit einen wichtigen Messwert für jede Website darstellt, ist die Verwendung eines CDNs zur Senkung der Latenz und Erhöhung der Leistung häufig ein Muss, vor allem bei Sites mit globalem Internet-Traffic.

Das Google Cloud Content Delivery Network greift auf die global verteilten Edge Points of Presence von Google zurück, um Inhalte aus dem Cache-Speicherort, der den Nutzern am nächsten liegt, bereitzustellen. Cloud CDN kann mit HTTP(S)-Lastenausgleich bereitgestellt werden. Wenn Sie Inhalte aus Google Compute Engine und/oder aus Google Cloud Storage über eine einzige IP-Adresse bereitstellen möchten, aktivieren Sie einfach Cloud CDN für den HTTP(S)-Lastenausgleich.

Automatische Skalierung mit Compute Engine

Sie können Ihre Architektur so einrichten, dass je nach Bedarf Server hinzugefügt oder entfernt werden können. Dieser Ansatz kann hilfreich sein, um sicherzustellen, dass Ihre Website auch bei Lastspitzen zuverlässig arbeitet und in Phasen mit typischer Nachfrage die Kosten im kontrollierten Rahmen bleiben. Für diese Zwecke stellt Compute Engine einen Autoscaler bereit.

Autoscaling ist ein Merkmal der verwalteten Instanzgruppen. Eine verwaltete Instanzgruppe ist ein Pool mit homogenen VM-Instanzen, die auf der Basis einer gemeinsamen Instanzvorlage erstellt wurden. Beim Autoscaling werden Instanzen zu einer verwalteten Instanzgruppe hinzugefügt oder daraus entfernt. Compute Engine enthält zwar verwaltete und nicht verwaltete Instanzgruppen, aber nur für verwaltete Instanzgruppen kann ein Autoscaler verwendet werden. Die Compute Engine-Dokumentation enthält einen umfassenden Leitfaden für das Autoscaling in Compute Engine.

Umfassende Informationen zur Erstellung einer skalierbaren und stabilen Webanwendungslösung finden Sie unter Skalierbare und stabile Webanwendungen erstellen.

Protokollierung und Überwachung mit Compute Engine

GCP bietet Funktionen, mit denen Sie überwachen können, was mit Ihrer Website geschieht.

Google Stackdriver Logging sammelt und speichert Logs von Anwendungen und Diensten in GCP. Sie können Logs anzeigen oder exportieren und Logs anderer Anbieter mithilfe von Protokollierungsagenten integrieren.

Stackdriver Logging

Google Stackdriver Monitoring stellt Dashboards und Benachrichtigungen für Ihre Website bereit. Zur Konfiguration von Stackdriver Monitoring verwenden Sie die Stackdriver Monitoring Console. Sie können die Leistungsdaten für Cloud-Dienste, virtuelle Maschinen und häufig verwendete Open-Source-Server wie MongoDB, Apache, Nginx und Elasticsearch überprüfen. Mit der Stackdriver Monitoring-API können Sie Überwachungsdaten abrufen und benutzerdefinierte Messwerte erstellen.

Stackdriver Monitoring Dashboard

DevOps mit Compute Engine verwalten

Informationen zur Verwaltung von DevOps mit Compute Engine finden Sie in den folgenden Artikeln:

Container mit Kubernetes Engine verwenden

Möglicherweise verwenden Sie bereits Container, zum Beispiel Docker-Container. Container bieten in Bezug auf das Web-Serving mehrere Vorteile. Dazu gehören die Folgenden:

  • Einteilung in Komponenten. Sie können mithilfe von Containern die verschiedenen Komponenten Ihrer Webanwendung trennen. Beispiel: Sie führen auf Ihrer Website einen Webserver und eine Datenbank aus. Sie können diese Komponenten nun in getrennten Containern ausführen und so dafür sorgen, dass sich Änderungen und Aktualisierungen für eine Komponente nicht auf andere Komponenten auswirken. Mit zunehmender Komplexität einer Anwendung sind Container eine besonders geeignete Lösung für eine serviceorientierte Architektur, einschließlich Microservices. Diese Art von Design zeichnet sich unter anderem durch die Skalierbarkeit aus
  • Portabilität. Ein Container enthält alles, was für die Ausführung erforderlich ist. Ihre Anwendung und die zugehörigen Abhängigkeiten sind darin zu einem Bundle zusammengefasst. Sie können Ihre Container auf einer Vielzahl von Plattformen ausführen, ohne sich mit den zugrunde liegenden Systemdetails beschäftigen zu müssen
  • Schnelle Bereitstellung. Wenn es an das Deployment geht, wird Ihr System aus einer Reihe von Definitionen und Images erstellt, d. h. die Bestandteile können schnell, zuverlässig und automatisch erstellt werden. Container sind in der Regel klein und lassen sich sehr viel schneller erstellen als beispielsweise virtuelle Maschinen

Das Container-Computing in GCP bietet noch weitere Vorteile für das Web-Serving. Dazu gehören die Folgenden:

  • Orchestrierung. Kubernetes Engine ist ein verwalteter Dienst, der auf Kubernetes basiert, einem von Google entwickelten Open-Source-System zur Containerverwaltung. Mit Kubernetes Engine wird Ihr Code in Containern ausgeführt, die Teil eines Clusters aus Compute Engine-Instanzen sind. Anstatt einzelne Container zu verwalten und jeden Container einzeln zu erstellen und herunterzufahren, können Sie den kompletten Cluster über Kubernetes Engine mit der von Ihnen definierten Konfiguration verwalten
  • Registrierung von Images. Google Container Registry stellt einen privaten Speicher für Docker-Images in GCP bereit. Sie können über einen HTTPS-Endpunkt auf Container Registry zugreifen und so Images von einer beliebigen Maschine abrufen. Dies kann eine Compute Engine-Instanz oder Ihre eigene Hardware sein. Der Registry-Dienst hostet Ihre benutzerdefinierten Images in Cloud Storage unter Ihrem Projekt in der GCP Console. Dieser Ansatz gewährleistet, dass nur Mitglieder Ihres Projekts auf Ihre benutzerdefinierten Images zugreifen können
  • Mobilität. Sie können Arbeitslasten flexibel verschieben und mit anderen Cloudanbietern kombinieren oder Arbeitslasten in der Cloud mit Implementierungen vor Ort zu einer Hybridlösung verbinden

Daten mit Kubernetes Engine speichern

Da Kubernetes Engine in GCP ausgeführt wird und Compute Engine-Instanzen als Knoten verwendet, weisen Ihre Speicheroptionen zahlreiche Gemeinsamkeiten mit dem Speicher in Compute Engine auf. Sie können Cloud SQL, Cloud Storage, Cloud Datastore und Cloud Bigtable über die zugehörigen APIs aufrufen oder einen anderen externen Speicheranbieter verwenden (falls gewünscht). Kubernetes Engine interagiert jedoch mit dem nichtflüchtigen Speicher in Compute Engine auf andere Weise als eine normale Compute Engine-Instanz.

Eine Compute Engine-Instanz enthält ein hinzugefügtes Laufwerk. Wenn Sie Compute Engine verwenden, verbleibt das Laufwerksvolume bei der Instanz, solange die Instanz bestehen bleibt. Sie können das Laufwerk sogar trennen und mit einer anderen Instanz verwenden. Bei einem Container sind die Dateien jedoch nur vorübergehend auf dem Laufwerk abgelegt. Sobald ein Container neu gestartet wird, z. B. nach einem Absturz, gehen die auf dem Laufwerk gespeicherten Dateien verloren. Kubernetes löst dieses Problem durch die Volumeabstraktion. Ein dabei verwendeter Volumetyp ist gcePersistentDisk. Dies bedeutet, dass Sie nichtflüchtigen Compute Engine-Speicher mit Containern verwenden können, um zu verhindern, dass Ihre Datendateien gelöscht werden, wenn Sie Kubernetes Engine verwenden.

Die Funktionen und Vorzüge eines Volumes erschließen sich erst, wenn Sie mit dem Konzept der Pods vertraut sind. Stellen Sie sich einen Pod als anwendungsspezifischen logischen Host für einen oder mehrere Container vor. Ein Pod wird auf einer Knoteninstanz ausgeführt. Wenn Container Mitglieder eines Pods sind, können sie mehrere Ressourcen gemeinsam nutzen, darunter eine Reihe freigegebener Speichervolumes. Diese Volumes sorgen dafür, dass Daten Container-Neustarts überleben und von den Containern innerhalb des Pods gemeinsam genutzt werden können. Natürlich können Sie auch einen einzelnen Container und nur ein Volume in einem Pod verwenden. Der Pod ist eine erforderliche Abstraktionsebene, um diese Ressourcen logisch miteinander zu verbinden.

Ein Beispiel finden Sie in der Anleitung Persistente Laufwerke mit WordPress und MySQL verwenden.

Lastenausgleich mit Kubernetes Engine

In vielen umfangreichen Web-Serving-Architekturen werden mehrere aktive Server benötigt, damit die Traffic-Anforderungen verteilt werden können. Da Sie mit Kubernetes Engine ohne großen Aufwand mehrere Container, Knoten und Pods verwalten können, eignet sich diese Lösung besonders für ein Web-Serving-System mit Lastenausgleich.

Netzwerklastenausgleich verwenden

Am einfachsten können Sie ein Lastenausgleichsmodul in Kubernetes Engine mit dem Netzwerklastenausgleich in Compute Engine erstellen. Mit dem Netzwerklastenausgleich können Sie die Belastung Ihrer Systeme auf der Grundlage eingehender Internetprotokolldaten wie Adresse, Port und Protokolltyp ausgleichen. Beim Netzwerklastenausgleich kommen Weiterleitungsregeln zum Einsatz. Diese Regeln verweisen auf Zielpools, die auflisten, auf welche Instanzen beim Lastenausgleich zurückgegriffen werden kann.

Mit dem Netzwerklastenausgleich können Sie die Arbeitslast für weitere TCP-/UDP-basierte Protokolle (z. B. SMTP-Traffic) ausgleichen und Ihre Anwendung kann die Pakete direkt überprüfen.

Die Bereitstellung des Netzwerklastenausgleichs ist denkbar einfach: Sie fügen einfach das Feld type: LoadBalancer zu Ihrer Dienstkonfigurationsdatei hinzu.

HTTP(S)-Lastenausgleich verwenden

Wenn Sie erweiterte Lastenausgleichsfunktionen wie HTTPS-Lastenausgleich, inhaltsbasierten Lastenausgleich oder regionsübergreifenden Lastenausgleich benötigen, können Sie Ihren Kubernetes Engine-Dienst in den HTTP-/HTTPS-Lastenausgleich von Compute Engine integrieren. Kubernetes stellt die Ingress-Ressource zur Verfügung, die eine Sammlung von Regeln für das Routing von externem Traffic zu Kubernetes-Endpunkten enthält. In Kubernetes Engine übernimmt eine Ingress-Ressource die Bereitstellung und Konfiguration des HTTP-/HTTPS-Lastenausgleichsmoduls von Compute Engine.

Weitere Informationen zur Verwendung des HTTP-/HTTPS-Lastenausgleichs in Kubernetes Engine finden Sie in der Dokumentation.

Mit Kubernetes Engine skalieren

Zum automatischen Anpassen der Clustergröße können Sie Cluster Autoscaler verwenden. Diese Funktion prüft in regelmäßigen Abständen, ob Pods auf einen Knoten mit freien Ressourcen warten, aber nicht geplant werden. Falls solche Pods vorhanden sind, passt der Autoscaler den Knotenpool an, wenn dadurch das Planen der wartenden Pods ermöglicht würde.

Cluster Autoscaler überwacht außerdem die Nutzung aller Knoten. Wenn ein Knoten längere Zeit nicht benötigt wird und alle zugehörigen Pods problemlos an anderer Stelle geplant werden können, wird der Knoten gelöscht.

Weitere Informationen zu Cluster Autoscaler und den zugehörigen Einschränkungen und Best Practices finden Sie in der Cluster Autoscaler-Dokumentation.

Protokollierung und Überwachung mit Kubernetes Engine

Ähnlich wie Compute Engine stellen auch Stackdriver Logging und Stackdriver Monitoring Logging- und Monitoring-Dienste bereit. Stackdriver Logging sammelt und speichert Logs von Anwendungen und Diensten. Mithilfe eines Protokollierungsagenten können Sie Logs anzeigen oder exportieren und Logs anderer Anbieter integrieren.

Stackdriver Monitoring stellt Dashboards und Benachrichtigungen für Ihre Website bereit. Sie können Stackdriver Monitoring mit der Stackdriver Monitoring Console konfigurieren. Sie können die Leistungsmesswerte für Cloud-Dienste, virtuelle Maschinen und häufig verwendete Open-Source-Server wie MongoDB, Apache, Nginx und Elasticsearch überprüfen. Mit der Stackdriver Monitoring API können Sie Überwachungsdaten abrufen und benutzerdefinierte Messwerte erstellen.

DevOps mit Kubernetes Engine verwalten

Wenn Sie mit Kubernetes Engine arbeiten, nutzen Sie bereits viele der bekannten Vorzüge von DevOps. Dies gilt insbesondere für die schnelle und einfache Paketerstellung, Bereitstellung und Verwaltung. Für die Anforderungen Ihrer CI/CD-Workflows können Sie auf weit verbreitete Tools wie Jenkins zurückgreifen. Entsprechende Informationen finden Sie in den folgenden Artikeln:

Mit App Engine auf eine verwaltete Plattform aufbauen

In GCP wird die verwaltete PaaS-Plattform (PaaS = Platform as a Service) als Google App Engine bezeichnet. Wenn Sie Ihre Website auf App Engine aufbauen, können Sie sich ganz auf die Codierung Ihrer Funktionen konzentrieren und Google die Verwaltung der unterstützenden Infrastruktur überlassen. App Engine stellt eine Vielzahl von Funktionen bereit, mit denen Skalierung, Lastenausgleich, Protokollierung, Überwachung und Sicherheit viel einfacher gestaltet werden kann, als wenn Sie allein für die Erstellung und Verwaltung zuständig sind. App Engine bietet Ihnen die Möglichkeit, in einer Vielzahl von Programmiersprachen zu codieren und zahlreiche weitere GCP-Dienste zu nutzen.

App Engine stellt die Standardumgebung bereit, mit der Sie Anwendungen in einer sicheren Sandbox-Umgebung ausführen können. Die App Engine-Standardumgebung verteilt Requests auf mehrere Server und skaliert die Server entsprechend den Traffic-Anforderungen. Ihre Anwendung wird in einer eigenen sicheren und zuverlässigen Umgebung ausgeführt, die von der Hardware, dem Betriebssystem oder dem physischen Standort des Servers unabhängig ist. Eine Beispielarchitektur für eine Webanwendung, die in der Standardumgebung ausgeführt wird, finden Sie unter Architektur: Webanwendung in Google App Engine.

Webanwendung verwendet App Engine und andere Komponenten

App Engine stellt die flexible Umgebung bereit, um Ihnen noch mehr Optionen anbieten zu können. Wenn Sie die flexible Umgebung verwenden, wird Ihre Anwendung auf konfigurierbaren Compute Engine-Instanzen ausgeführt. Dabei übernimmt App Engine die Verwaltung der Hosting-Umgebung. Dies bedeutet, dass Sie zusätzliche Laufzeiten nutzen können, darunter benutzerdefinierte Laufzeiten, und dass noch mehr Auswahlmöglichkeiten für Programmiersprachen zur Verfügung stehen. Außerdem können Sie die Flexibilität von Compute Engine nutzen. Dazu gehört beispielsweise eine Vielzahl von CPU- und Speicheroptionen.

Programmiersprachen

Die App Engine-Standardumgebung stellt Standardlaufzeiten bereit und Sie schreiben Quellcode in bestimmten Versionen der unterstützten Programmiersprachen.

In der flexiblen Umgebung schreiben Sie Quellcode in einer Version einer beliebigen unterstützten Programmiersprache. Sie können diese Laufzeiten anpassen oder eine eigene Laufzeitumgebung mit einem benutzerdefinierten Docker-Image oder einer Dockerfile bereitstellen.

Wenn es Ihnen besonders auf die verwendete Programmiersprache ankommt, müssen Sie entscheiden, ob die von der App Engine-Standardumgebung bereitgestellten Laufzeiten Ihren Anforderungen genügen. Ist dies nicht der Fall, sollten Sie die Verwendung der flexiblen Umgebung in Betracht ziehen.

Lesen Sie die Informationen unter Auswahl einer App Engine-Umgebung, um zu entscheiden, welche Umgebung für die Anforderungen Ihrer Anwendung am besten geeignet ist.

Anleitungen für erste Schritte nach Programmiersprache

Die folgenden Anleitungen unterstützen Sie bei den ersten Schritten im Umgang mit der App Engine-Standardumgebung:

Die folgenden Anleitungen unterstützen Sie bei den ersten Schritten im Umgang mit der flexiblen Umgebung:

Daten mit App Engine speichern

App Engine stellt Optionen für die Speicherung Ihrer Daten bereit:

Name Struktur Konsistenz
Cloud Datastore Schemalos Sehr konsistent, außer bei der Durchführung globaler Abfragen.
Cloud SQL Relational Hohe Konsistenz
Cloud Storage Dateien und zugehörige Metadaten Sehr konsistent, außer bei der Durchführung von Listenvorgängen, bei denen eine Liste von Buckets oder Objekten abgerufen wird.

Sie können in Verbindung mit der Standardumgebung auch mehrere Datenbanken von Drittanbietern verwenden.

Weitere Einzelheiten zur Speicherung in App Engine finden Sie in der Dokumentation. Nachdem Sie die Dokumentationsseite aufgerufen haben, können Sie Ihre bevorzugte Programmiersprache auswählen, in dem Sie oben rechts auf der Seite auf den gewünschten Sprachennamen klicken

Wenn Sie die flexible Umgebung verwenden, können Sie dieselben Speicheroptionen nutzen wie in der Standardumgebung. Außerdem steht eine breitere Palette von Drittanbieter-Datenbanken zur Verfügung. Weitere Informationen zu Drittanbieter-Datenbanken finden Sie unter Datenbanken von Drittanbietern verwenden.

Lastenausgleich und automatische Skalierung mit App Engine

Wenn Sie auf App Engine aufbauen, werden Lastenausgleich und automatische Skalierung automatisch für Sie verwaltet.

Protokollierung und Überwachung mit App Engine

In App Engine werden Requests automatisch protokolliert und Sie können diese Logs in der GCP Console anzeigen. App Engine arbeitet außerdem mit standardmäßigen sprachspezifischen Bibliotheken, die Protokollierungsfunktionen bereitstellen, und leitet die Log-Einträge an die Logs in der Konsole weiter. In Python können Sie beispielsweise das standardmäßige Python-Logging-Modul verwenden und in Java die API java.util.logging.Logger.

Stackdriver Monitoring bietet Funktionen für die Überwachung Ihrer App Engine-Apps. In der GCP Console können Sie Vorfälle, Verfügbarkeitsdiagnosen und andere Details überwachen.

Content-Management-Systeme erstellen

Das Bereitstellen einer Website ist gleichbedeutend mit dem Verwalten Ihrer Website-Assets. Cloud Storage stellt ein globales Repository für diese Assets bereit. In einer gemeinsamen Architektur werden statische Inhalte für Cloud Storage bereitgestellt und anschließend mit Compute Engine synchronisiert, um dynamische Seiten zu rendern. Cloud Storage kann mit vielen Content-Management-Systemen (CMS) von Drittanbietern angewendet werden, z. B. mit WordPress, Drupal und Joomla. Darüber hinaus stellt Cloud Storage eine S3-kompatible API bereit, d. h. jedes System, das mit S3 zusammenarbeitet, kann auch mit Cloud Storage zusammenarbeiten.

Eine Beispielarchitektur für ein Content-Management-System finden Sie unter Content-Management.

Content-Management-System in der Google Cloud Platform

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...