Prüfpunkte
Create GCS bucket
/ 10
Copy startup script and code to Cloud Storage bucket
/ 10
Deploy instances and configure network
/ 20
Create managed instance groups
/ 20
Create HTTP(S) load balancers
/ 10
Update the frontend instances
/ 10
Scaling GCE
/ 10
Update the website
/ 10
Webanwendung in Google Cloud mit Compute Engine hosten
- GSP662
- Übersicht
- Einrichtung und Anforderungen
- Aufgabe 1: Compute Engine API aktivieren
- Aufgabe 2: Cloud Storage-Bucket erstellen
- Aufgabe 3: Quell-Repository klonen
- Aufgabe 4: Compute Engine-Instanzen erstellen
- Aufgabe 5: Verwaltete Instanzgruppen erstellen
- Aufgabe 6: Load Balancer erstellen
- Aufgabe 7: Compute Engine skalieren
- Aufgabe 8: Website aktualisieren
- Das wars!
GSP662
Übersicht
Es gibt viele Möglichkeiten, Websites in Google Cloud bereitzustellen. Jede Lösung hat andere Funktionen und Kontrollebenen. Compute Engine bietet eine tief greifende Kontrolle über die Infrastruktur, mit der eine Website ausgeführt wird, erfordert aber etwas mehr operatives Management im Vergleich zu Lösungen wie z. B. Google Kubernetes Engine (GKE) und App Engine. Mit Compute Engine haben Sie detailgenaue Kontrolle über die Infrastruktur, einschließlich der virtuellen Maschinen und Load-Balancer.
In diesem Lab stellen Sie eine Beispielanwendung bereit (die E-Commerce-Website "Fancy Store") und zeigen, wie eine Website auf einfache Weise mit Compute Engine bereitgestellt und skaliert werden kann.
Lerninhalte
Aufgaben in diesem Lab:
- Compute Engine-Instanzen erstellen
- Instanzvorlagen aus Quellinstanzen erstellen
- Verwaltete Instanzgruppen erstellen
- Systemdiagnosen für verwaltete Instanzgruppen erstellen und testen
- HTTP(S)-Load-Balancer erstellen
- Systemdiagnosen für Load Balancer erstellen
- Content Delivery Network (CDN) für das Caching verwenden
Am Ende des Labs haben Sie Instanzen in verwalteten Instanzgruppen für die automatische Reparatur, Load Balancing, Autoscaling und Rolling Updates für Ihre Website.
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange die Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung selbst durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
- Einen Standardbrowser (empfohlen wird Chrome)
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Lab starten und bei der Google Cloud Console anmelden
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Pop-up-Fenster geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich Details zum Lab mit diesen Informationen:
- Schaltfläche Google Cloud Console öffnen
- Restzeit
- Temporäre Anmeldedaten für das Lab
- Ggf. weitere Informationen für dieses Lab
-
Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite Anmelden geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden. -
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}} Sie finden den Nutzernamen auch im Bereich Details zum Lab.
-
Klicken Sie auf Weiter.
-
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
{{{user_0.password | "Password"}}} Sie finden das Passwort auch im Bereich Details zum Lab.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen. -
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Cloud Shell aktivieren
Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
- Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren .
Wenn Sie verbunden sind, sind Sie bereits authentifiziert und das Projekt ist auf Ihre Project_ID,
gcloud
ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
- (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
- Klicken Sie auf Autorisieren.
Ausgabe:
- (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
Ausgabe:
gcloud
finden Sie in Google Cloud in der Übersicht zur gcloud CLI.
Region und Zone einrichten
Bestimmte Compute Engine-Ressourcen befinden sich in Regionen und Zonen. Eine Region ist ein spezifischer Ort, an dem Sie Ihre Ressourcen ausführen können. Jede Region hat eine oder mehrere Zonen.
Führen Sie die folgenden gcloud-Befehle in der Cloud Console aus, um die Standardregion und ‑zone für Ihr Lab festzulegen:
Aufgabe 1: Compute Engine API aktivieren
- Führen Sie den folgenden Befehl aus, um die Compute Engine API zu aktivieren:
Aufgabe 2: Cloud Storage-Bucket erstellen
Sie speichern den erstellten Code sowie die Startscripts in einem Cloud Storage-Bucket.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um einen neuen Cloud Storage-Bucket zu erstellen:
$DEVSHELL_PROJECT_ID
in Cloud Shell wird sichergestellt, dass die Namen der Objekte eindeutig sind. Da alle Projekt-IDs in Google Cloud eindeutig sein müssen, sollten andere Namen durch das Anhängen der Projekt-ID ebenfalls eindeutig werden.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 3: Quell-Repository klonen
Verwenden Sie die bereits bestehende E-Commerce-Website „Fancy Store“, die auf dem Repository monolith-to-microservices
basiert, als Grundlage für Ihre Website.
Klonen Sie den Quellcode, damit Sie sich auf das Bereitstellen in der Compute Engine konzentrieren können. Später in diesem Lab führen Sie eine kleine Aktualisierung an diesem Code durch, um aufzuzeigen, wie einfach das in Compute Engine ist.
- Klonen Sie den Quellcode und rufen Sie dann das Verzeichnis
monolith-to-microservices
auf:
- Führen Sie den ursprünglichen Build des Codes aus, damit die Anwendung lokal ausgeführt werden kann:
Es dauert einige Minuten, bis das Skript ausgeführt ist.
- Stellen Sie anschließend mithilfe des folgenden Befehls sicher, dass in Cloud Shell eine kompatible Node.js-Version ausgeführt wird:
- Führen Sie anschließend den folgenden Befehl aus, um die Anwendung zu testen. Dabei wechseln Sie zum Verzeichnis
microservices
und starten den Webserver:
Es sollte folgende Ausgabe angezeigt werden:
- Rufen Sie eine Vorschau Ihrer Anwendung auf. Klicken Sie dazu auf das Symbol für die Webvorschau und wählen Sie dann Vorschau auf Port 8080 aus.
Ein neues Fenster mit dem Frontend von Fancy Store wird geöffnet.
- Schließen Sie das Fenster, nachdem Sie sich die Website angesehen haben, und drücken Sie im Terminalfenster Strg + C, um den Webserverprozess zu beenden.
Aufgabe 4: Compute Engine-Instanzen erstellen
Als Nächstes stellen Sie einige Compute Engine-Instanzen bereit.
Diese Schritte sind zu erledigen:
- Erstellen Sie ein Startskript, das Instanzen konfigurieren soll.
- Klonen Sie den Quellcode und laden Sie ihn in Cloud Storage hoch.
- Stellen Sie eine Compute Engine-Instanz bereit, die die Backend-Mikrodienste hosten soll.
- Konfigurieren Sie den Frontend-Code neu, sodass die Instanz der Backend-Mikrodienste verwendet wird.
- Stellen Sie eine Compute Engine-Instanz bereit, die den Frontend-Mikrodienst hosten soll.
- Konfigurieren Sie das Netzwerk, um die Kommunikation zu ermöglichen.
Startskript erstellen
Ein Startskript weist die Instanz an, was bei jedem Start auszuführen ist. So werden die Instanzen automatisch konfiguriert.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um eine Datei mit dem Namen
startup-script.sh
zu erstellen:
- Klicken Sie in der Cloud Shell-Symbolleiste auf Editor öffnen, um den Code-Editor zu öffnen.
-
Öffnen Sie den Ordner
monolith-to-microservices
. -
Fügen Sie den folgenden Code in die Datei
startup-script.sh
ein. Sie werden nach dem Einfügen einen Teil des Codes bearbeiten:
- Suchen Sie in der Datei den Text
[DEVSHELL_PROJECT_ID]
und ersetzen Sie ihn durch die Projekt-ID:
Die Codezeile in startup-script.sh
sollte jetzt etwa so aussehen:
-
Speichern Sie die Datei
startup-script.sh
, aber schließen Sie sie noch nicht. -
Prüfen Sie rechts unten im Cloud Shell-Code-Editor, ob „End of Line Sequence“ auf „LF“ gesetzt ist und nicht auf „CRLF“.
- Wenn es auf „CRLF“ gesetzt ist, klicken Sie auf CRLF und wählen Sie dann im Drop-down LF aus.
- Wenn es bereits auf LF gesetzt ist, können Sie es unverändert lassen.
-
Schließen Sie die Datei
startup-script.sh
. -
Kehren Sie zum Cloud Shell-Terminal zurück und führen Sie den folgenden Befehl aus, um die Datei
startup-script.sh
in den Bucket zu kopieren:
Sie ist jetzt unter https://storage.googleapis.com/[BUCKET_NAME]/startup-script.sh
verfügbar.
[BUCKET_NAME] ist der Name des Cloud Storage-Buckets. Die Datei ist standardmäßig nur für autorisierte Nutzer und Dienstkonten sichtbar und daher nicht über einen Webbrowser zugänglich. Compute Engine-Instanzen können über ihr Dienstkonto automatisch darauf zugreifen.
Das Startskript führt die folgenden Aktionen aus:
- Es installiert den Logging-Agent. Der Agent erfasst automatisch Logs aus syslog.
- Es installiert Node.js und Supervisor. Supervisor führt die Anwendung als Daemon aus.
- Es klont den Quellcode der Anwendung aus dem Cloud Storage-Bucket und installiert Abhängigkeiten.
- Es konfiguriert Supervisor zum Ausführen der Anwendung. Supervisor sorgt dafür, dass die Anwendung neu gestartet wird, wenn sie unerwartet beendet oder von einem Administrator oder einem anderen Prozess abgebrochen wird. Außerdem sendet es stdout und stderr der Anwendung an syslog, damit sie vom Logging-Agent erfasst werden.
Code in den Cloud Storage-Bucket kopieren
Beim Start rufen Instanzen Code aus dem Cloud Storage-Bucket ab. Sie können also Konfigurationsvariablen in der .env
-Datei des Codes speichern.
- Kopieren Sie den geklonten Code in Ihren Bucket:
node_modules
werden gelöscht, damit der Kopiervorgang so schnell und effizient wie möglich ausgeführt wird. Diese Abhängigkeiten werden beim Start der Instanzen neu erstellt.
Klicken Sie auf Fortschritt prüfen.
Backend-Instanz bereitstellen
Als erste Instanz soll die Backend-Instanz bereitgestellt werden, die die Mikrodienste „Orders“ und „Products“ beinhaltet.
- Führen Sie den folgenden Befehl aus, um eine
e2-standard-2
-Instanz zu erstellen, die zur Verwendung des Startscripts konfiguriert ist. Die Instanz ist mit dem Tagbackend
versehen, sodass Sie später spezielle Firewallregeln darauf anwenden können:
Verbindung zum Backend konfigurieren
Bevor Sie das Frontend der Anwendung bereitstellen, müssen Sie die Konfiguration so aktualisieren, dass sie auf das gerade bereitgestellte Backend verweist.
- Rufen Sie die externe IP-Adresse des Backends mit dem folgenden Befehl ab. Suchen Sie unter dem Tab
EXTERNAL_IP
nach der Backend-Instanz:
Beispielausgabe:
-
Kopieren Sie die externe IP-Adresse für das Backend.
-
Öffnen Sie in Cloud Shell Explorer
monolith-to-microservices
>react-app
. -
Wählen Sie im Code-Editor Ansicht > Versteckte Dateien einblenden aus, um die
.env
-Datei zu sehen.
Im nächsten Schritt bearbeiten Sie die .env
-Datei, damit sie auf die externe IP-Adresse des Backends verweist. [BACKEND_ADDRESS] ist die externe IP-Adresse der Backend-Instanz, die mit dem obigen gcloud
-Befehl ermittelt wurde.
- Ersetzen Sie in der
.env
-Dateilocalhost
durch Ihre[BACKEND_ADDRESS]
:
-
Speichern Sie die Datei.
-
Führen Sie in Cloud Shell den folgenden Befehl aus, um
react-app
neu zu erstellen. Dadurch wird der Frontend-Code aktualisiert:
- Kopieren Sie dann den Anwendungscode in den Cloud Storage-Bucket:
Frontend-Instanz bereitstellen
Nachdem der Code nun konfiguriert ist, stellen Sie die Frontend-Instanz bereit.
- Führen Sie den folgenden Befehl aus, um die
frontend
-Instanz mit einem ähnlichen Befehl wie zuvor bereitzustellen. Diese Instanz ist mit dem Tagfrontend
versehen, um damit später Firewallregeln erstellen zu können:
Netzwerk konfigurieren
- Erstellen Sie Firewallregeln, um den Zugriff auf Port 8080 für das Frontend und auf die Ports 8081–8082 für das Backend zu erlauben. Diese Firewallbefehle verwenden die Tags, die während der Instanzerstellung für die Anwendung zugewiesen wurden:
Die Website sollte jetzt voll funktionsfähig sein.
- Sie müssen die externe IP-Adresse der
frontend
-Instanz kennen, um sie aufzurufen. Führen Sie den folgenden Befehl aus und suchen Sie die externe IP-Adresse derfrontend
-Instanz:
Beispielausgabe:
Es kann einige Minuten dauern, bis die Instanz gestartet und konfiguriert ist.
-
Warten Sie drei Minuten, öffnen Sie dann einen neuen Browsertab und rufen Sie
http://[FRONTEND_ADDRESS]:8080
auf, um auf die Website zuzugreifen. Dabei ist [FRONTEND_ADDRESS] die oben ermittelte externe IP-Adresse des Frontends. -
Versuchen Sie, die Seiten Products und Orders zu öffnen. Das sollte funktionieren.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 5: Verwaltete Instanzgruppen erstellen
Damit die Anwendung skalierbar ist, werden verwaltete Instanzgruppen erstellt, die die frontend
- und backend
-Instanzen als Instanzvorlagen verwenden.
Eine verwaltete Instanzgruppe enthält identische Instanzen, die Sie als einzelne Entität in einer einzelnen Zone verwalten können. Mit verwalteten Instanzgruppen können Sie die Hochverfügbarkeit Ihrer Anwendungen aufrechterhalten, da sie proaktiv dafür sorgen, dass die Instanzen verfügbar bleiben, also den Status WIRD AUSGEFÜHRT haben. Sie nutzen verwaltete Instanzgruppen für Ihre Frontend‑ und Backend-Instanzen für die automatische Reparatur, Load Balancing, Autoscaling und Rolling Updates.
Instanzvorlage aus Quellinstanz erstellen
Bevor Sie eine verwaltete Instanzgruppe erstellen können, müssen Sie zuerst eine Instanzvorlage erstellen, die die Grundlage für die Gruppe bildet. Mit Instanzvorlagen können Sie bei der Erstellung neuer VM-Instanzen den Maschinentyp, das Bootlaufwerk-Image oder Container-Image, das Netzwerk sowie weitere Eigenschaften von Instanzen definieren. Außerdem können Sie mit Instanzvorlagen Instanzen in einer verwalteten Instanzgruppe oder sogar einzelne Instanzen erstellen.
Erstellen Sie die Instanzvorlage mithilfe der Instanzen, die Sie zuvor erstellt haben.
- Beenden Sie zuerst beide Instanzen:
- Erstellen Sie dann die Instanzvorlage aus jeder der Quellinstanzen:
- Prüfen Sie, ob die Instanzvorlagen erstellt wurden:
Beispielausgabe:
- Da die Instanzvorlagen nun erstellt sind, können Sie die
backend
-VM löschen, um Ressourcen zu sparen:
- Geben Sie bei entsprechender Aufforderung y ein und drücken Sie die Eingabetaste.
Normalerweise könnten Sie die frontend
-VM ebenfalls löschen, aber Sie werden sie später in diesem Lab noch verwenden, um die Instanzvorlage zu aktualisieren.
Verwaltete Instanzgruppe erstellen
- Erstellen Sie als Nächstes zwei verwaltete Instanzgruppen, eine für das Frontend und eine für das Backend:
Diese verwalteten Instanzgruppen verwenden die Instanzvorlagen und werden für zwei Instanzen konfiguriert, die jeweils in jeder Gruppe gestartet werden. Die Instanzen werden automatisch basierend auf dem angegebenen base-instance-name
benannt, wobei zufällige Zeichen angehängt werden.
- Für Ihre Anwendung wird der
frontend
-Mikrodienst an Port 8080 ausgeführt und derbackend
-Mikrodienst an Port 8081 fürorders
und an Port 8082 für „Products“:
Da dies keine Standardports sind, geben Sie benannte Ports an, um sie zu kennzeichnen. Benannte Ports sind Metadaten mit Schlüssel/Wert-Paaren, die den Dienstnamen und den Port darstellen, an dem er ausgeführt wird. Benannte Ports können einer Instanzgruppe zugewiesen werden. Dadurch wird festgelegt, dass der Dienst für alle Instanzen in der Gruppe verfügbar ist. Diese Information wird vom HTTP-Load-Balancing-Dienst genutzt, der später konfiguriert wird.
Automatische Reparatur konfigurieren
Um die Verfügbarkeit der Anwendung selbst zu verbessern und um zu prüfen, ob sie antwortet, konfigurieren Sie eine Richtlinie zur automatischen Reparatur für die verwalteten Instanzgruppen.
Im Rahmen der Richtlinie wird eine anwendungsbasierte Systemdiagnose durchgeführt, bei der geprüft wird, ob eine Anwendung wie erwartet antwortet. Die Prüfung, ob eine Anwendung antwortet, liefert genauere Ergebnisse als die Prüfung, ob eine Instanz ausgeführt wird (Standardverhalten).
- Erstellen Sie eine Systemdiagnose, bei der die Instanz repariert wird, wenn die Prüfung dreimal hintereinander für die
frontend
- undbackend
-Instanzen fehlschlägt:
- Erstellen Sie eine Firewallregel, damit die Systemdiagnoseprüfungen eine Verbindung zu den Mikrodiensten an den Ports 8080–8081 herstellen können:
- Wenden Sie die Systemdiagnosen auf die entsprechenden Dienste an:
- Fahren Sie mit dem Lab fort, da es eine Weile dauert, bis die Instanzen in der Gruppe im Rahmen der automatischen Reparatur überwacht werden. Am Ende des Labs werden Sie einen Fehler simulieren, um die automatische Reparatur zu testen.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 6: Load Balancer erstellen
Verwenden Sie als Ergänzung Ihrer verwalteten Instanzgruppen HTTP(S)-Load-Balancer, um Traffic an die Frontend‑ und Backend-Mikrodienste weiterzuleiten, sowie Zuordnungen, um Traffic basierend auf Pfadregeln an die richtigen Backend-Dienste zu senden. So wird eine einzelne IP-Adresse mit Load Balancing für alle Dienste verfügbar gemacht.
Weitere Informationen zu den Load-Balancing-Optionen in Google Cloud finden Sie unter Übersicht über Cloud Load Balancing.
HTTP(S)-Load-Balancer erstellen
Google Cloud bietet viele verschiedene Load-Balancer-Typen. In diesem Lab verwenden Sie einen HTTP(S)-Load-Balancer für Ihren Traffic. Ein HTTP-Load-Balancer ist so aufgebaut:
- Mit einer Weiterleitungsregel werden eingehende Anfragen an einen Ziel-HTTP-Proxy weitergeleitet.
- Der Ziel-HTTP-Proxy überprüft bei jeder Anfrage, ob diese mit der URL-Zuordnung übereinstimmt, um den passenden Backend-Dienst für die Anfrage auswählen zu können.
- Der Backend-Dienst leitet jede Anfrage basierend auf Bereitstellungskapazität, Zone und Instanzstatus der dazugehörigen Backends an das passende Backend weiter. Der Status jeder Backend-Instanz wird mithilfe einer HTTP-Systemdiagnose überprüft. Wenn der Backend-Dienst so konfiguriert ist, dass er eine HTTPS‑ oder HTTP/2-Systemdiagnose verwendet, wird die Anfrage auf dem Weg zur Backend-Instanz verschlüsselt.
- Sitzungen zwischen dem Load-Balancer und der Instanz können das HTTP-, HTTPS- oder HTTP/2-Protokoll verwenden. Wenn Sie HTTPS oder HTTP/2 verwenden, muss jede Instanz in den Backend-Diensten ein SSL-Zertifikat haben.
- Erstellen Sie Systemdiagnosen, mit denen ermittelt wird, welche Instanzen Traffic für jeden Dienst weiterleiten können:
- Erstellen Sie Backend-Dienste, die das Ziel für Traffic mit Load Balancing sind. Die Backend-Dienste verwenden die Systemdiagnosen und benannten Ports, die Sie erstellt haben:
- Fügen Sie die Backend-Dienste des Load Balancers hinzu:
- Erstellen Sie eine URL-Zuordnung. Mit der URL-Zuordnung wird angegeben, welche URLs an welche Backend-Dienste weitergeleitet werden:
- Erstellen Sie einen Pfad-Matcher, damit die Pfade
/api/orders
und/api/products
an die entsprechenden Dienste weitergeleitet werden:
- Erstellen Sie den Proxy, der mit der URL-Zuordnung verknüpft ist:
- Erstellen Sie eine globale Weiterleitungsregel, die eine öffentliche IP-Adresse und einen Port mit dem Proxy verknüpft:
Klicken Sie auf Fortschritt prüfen.
Konfiguration aktualisieren
Sie haben nun eine neue statische IP-Adresse. Aktualisieren Sie den Code an der frontend
-Instanz, damit auf diese neue Adresse verwiesen wird und nicht auf die zuvor verwendete sitzungsspezifische Adresse, die auf die backend
-Instanz verwiesen hat.
- Öffnen Sie in Cloud Shell den Ordner
react-app
, in dem die.env
-Datei gespeichert ist, die die Konfiguration enthält:
- Suchen Sie die IP-Adresse für den Load-Balancer:
Beispielausgabe:
- Kehren Sie zum Cloud Shell-Editor zurück und bearbeiten Sie die
.env
-Datei noch einmal, damit sie auf die öffentliche IP-Adresse des Load-Balancers verweist. [LB_IP] ist die oben ermittelte externe IP-Adresse der Backend-Instanz.
-
Speichern Sie die Datei.
-
Erstellen Sie
react-app
neu, wodurch der Frontend-Code aktualisiert wird:
- Kopieren Sie den Anwendungscode in Ihren Bucket:
Frontend-Instanzen aktualisieren
Da es neuen Code und eine neue Konfiguration gibt, sollen die Frontend-Instanzen in der verwalteten Instanzgruppe den neuen Code abrufen.
Weil Ihre Instanzen den Code beim Start abrufen, können Sie einen Befehl für einen rollierenden Neustart ausführen:
--max-unavailable
-Parameter an, dass alle Maschinen sofort ersetzt werden können. Ohne diesen Parameter würde der Befehl eine Instanz aktiv lassen, während die anderen neu starten, um Verfügbarkeit zu gewährleisten. Für Testzwecke geben Sie an, dass alle sofort ersetzt werden, damit es schneller geht.
Klicken Sie auf Fortschritt prüfen.
Website testen
- Warten Sie drei Minuten, nachdem der Befehl
rolling-action replace
ausgeführt wurde, damit die Instanzen verarbeitet werden können. Prüfen Sie dann den Status der verwalteten Instanzgruppe. Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Dienst den Status HEALTHY aufweist:
- Warten Sie, bis die zwei Dienste den Status HEALTHY aufweisen.
Beispielausgabe:
Wenn nach einer Weile keine der Instanzen den Status HEALTHY erhält, wurden die Front-End-Instanzen nicht korrekt eingerichtet, wodurch der Zugriff auf sie an Port 8080 nicht möglich ist. Testen Sie dies. Rufen Sie dazu die Instanzen direkt an Port 8080 auf.
- Sobald beide Instanzen in der Liste den Status HEALTHY aufweisen, beenden Sie den
watch
-Befehl. Drücken Sie dazu Strg + C.
gcloud compute forwarding-rules list --global
Aufgabe 7: Compute Engine skalieren
Bis jetzt haben Sie zwei verwaltete Instanzgruppen mit jeweils zwei Instanzen erstellt. Diese Konfiguration ist voll funktionsfähig, aber eine statische Konfiguration unabhängig von der Last. Als Nächstes erstellen Sie eine Autoscaling-Richtlinie, um die verwalteten Instanzgruppen basierend auf der Auslastung automatisch zu skalieren.
Anhand der Auslastung automatisch skalieren
- Führen Sie den folgenden Befehl aus, um die Autoscaling-Richtlinie zu erstellen:
Mit diesen Befehlen wird eine Autoscaling-Funktion für verwaltete Instanzgruppen erstellt. Beim Autoscaling werden automatisch Instanzen hinzugefügt, wenn die Auslastung bei über 60 % liegt, und Instanzen entfernt, wenn der Load-Balancer bei unter 60 % Auslastung ist.
Content Delivery Network aktivieren
Eine weitere Funktion, die für das Skalieren hilfreich sein kann, ist ein Content Delivery Network-Dienst, der Caching für das Frontend ermöglicht.
- Führen Sie für den Frontend-Dienst den folgenden Befehl aus:
Wenn ein Nutzer Inhalt vom HTTP(S)-Load-Balancer anfordert, kommt die Anfrage bei einem Google Front End (GFE) an, das zuerst im Cloud CDN-Cache nach einer Antwort auf die Anfrage des Nutzers sucht. Wenn das GFE eine im Cache gespeicherte Antwort findet, sendet es diese Antwort an den Nutzer. Dies wird als Cache-Treffer bezeichnet.
Wenn das GFE keine im Cache gespeicherte Antwort für die Anfrage findet, stellt es eine Anfrage direkt an das Backend. Kann die Antwort auf die Anfrage im Cache gespeichert werden, speichert das GFE sie im Cloud CDN-Cache, sodass der Cache für weitere Anfragen genutzt werden kann.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 8: Website aktualisieren
Instanzvorlage aktualisieren
Vorhandene Instanzvorlagen können nicht bearbeitet werden. Da Ihre Instanzen aber zustandslos sind und die gesamte Konfiguration über das Startskript erfolgt, müssen Sie die Instanzvorlage nur ändern, wenn Sie die Vorlageneinstellungen ändern wollen. Sie nehmen nun eine einfache Änderung vor, indem Sie einen größeren Maschinentyp verwenden, und verteilen sie.
Führen Sie folgende Schritte aus:
-
Aktualisieren Sie die
frontend
-Instanz, die als Basis für die Instanzvorlage dient. Bei der Aktualisierung speichern Sie die aktualisierte Version des Images der Instanzvorlage in einer Datei. Dann aktualisieren Sie die Instanzvorlage und stellen die neue Vorlage bereit. Schließlich prüfen Sie, ob die Datei in den Instanzen der verwalteten Instanzgruppe vorhanden ist. -
Ändern Sie den Maschinentyp Ihrer Instanzvorlage. Ersetzen Sie dazu den Maschinentyp
e2-standard-2
durche2-small
.
- Führen Sie den folgenden Befehl aus, um den Maschinentyp der Frontend-Instanz zu ändern:
- Erstellen Sie die neue Instanzvorlage.
- Stellen Sie die aktualisierte Instanzvorlage in der verwalteten Instanzgruppe bereit:
- Warten Sie drei Minuten und führen Sie dann den folgenden Befehl aus, um den Status der Aktualisierung zu überwachen:
Dies kann einige Augenblicke dauern.
Sobald mindestens eine Instanz folgende Bedingung aufweist:
- STATUS: RUNNING
- ACTION gesetzt auf None
- INSTANCE_TEMPLATE: der neue Vorlagenname (fancy-fe-new)
-
Kopieren Sie den Namen einer der aufgeführten Maschinen, um ihn für den nächsten Befehl zu verwenden.
-
Drücken Sie Strg + C, um den
watch
-Prozess zu beenden. -
Führen Sie den folgenden Befehl aus, um zu sehen, ob die virtuelle Maschine den neuen Maschinentyp (e2-small) verwendet, wobei [VM_NAME] die neu erstellte Instanz ist:
Erwartete Beispielausgabe:
Website ändern
Szenario: Ihr Marketingteam hat Sie gebeten, die Startseite Ihrer Website zu ändern. Sie sollte mehr Informationen über das Unternehmen selbst und dessen Produkte enthalten.
Aufgabe: Fügen Sie der Startseite neue Texte hinzu, um dem Wunsch des Marketingteams nachzukommen. Offenbar hat einer der Entwickler die Änderungen bereits unter dem Dateinamen index.js.new
erstellt. Sie können diese Datei einfach nach index.js
kopieren, sodass die Änderungen darin enthalten sind. Gehen Sie wie unten beschrieben vor, um die entsprechenden Änderungen vorzunehmen.
- Führen Sie die folgenden Befehle aus, um die aktualisierte Datei in den korrekten Dateinamen umzubenennen:
- Geben Sie den Dateiinhalt aus, um die Änderungen zu prüfen:
Der Code sollte dann in etwa so aussehen:
Sie haben die React-Komponenten aktualisiert, müssen aber noch die React-Anwendung erstellen, um die statischen Dateien zu generieren.
- Führen Sie den folgenden Befehl aus, um die React-Anwendung zu erstellen und in das öffentliche monolith-Verzeichnis zu kopieren:
- Laden Sie dann diesen Code wieder in den Bucket:
Änderungen per Push mit rollierenden Ersetzungen übertragen
- Erzwingen Sie nun, dass alle Instanzen ersetzt werden, um die Aktualisierung abzurufen:
Hinweis: In diesem Beispiel einer rollierenden Ersetzung geben Sie explizit mit dem --max-unavailable
-Parameter an, dass alle Maschinen sofort ersetzt werden können. Ohne diesen Parameter würde der Befehl eine Instanz aktiv lassen, während die anderen ersetzt werden. Für Testzwecke geben Sie an, dass alle sofort ersetzt werden, damit es schneller geht. In der Produktion würde durch diesen Puffer die Website während der Aktualisierung weiterhin bereitgestellt werden können.
Klicken Sie auf Fortschritt prüfen.
- Warten Sie drei Minuten, nachdem der Befehl
rolling-action replace
ausgeführt wurde, damit die Instanzen verarbeitet werden können. Prüfen Sie dann den Status der verwalteten Instanzgruppe. Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Dienst den Status HEALTHY aufweist:
- Warten Sie einige Sekunden, bis beide Dienste angezeigt werden und den Status HEALTHY erhalten.
Beispielausgabe:
-
Sobald die Dienste in der Liste mit dem Status HEALTHY angezeigt werden, beenden Sie den
watch
-Befehl. Drücken Sie dazu Strg + C. -
Öffnen Sie die Website über
http://[LB_IP]
, wobei [LB_IP] die für den Load Balancer angegebene IP-Adresse ist, die mit dem folgenden Befehl ermittelt werden kann:
Die neuen Websiteänderungen sollten jetzt sichtbar sein.
Fehler simulieren
Um zu prüfen, ob die Systemdiagnose funktioniert, melden Sie sich an einer Instanz an und beenden die Dienste.
- Führen Sie den folgenden Befehl aus, um einen Instanznamen zu finden:
- Kopieren Sie einen Instanznamen. Führen Sie dann den folgenden Befehl aus, um Secure Shell in der Instanz zu nutzen. INSTANCE_NAME ist hierbei eine der Instanzen von der Liste:
-
Geben Sie „y“ ein, um zu bestätigen. Drücken Sie zweimal die Eingabetaste, um kein Passwort zu verwenden.
-
Beenden Sie in der Instanz die Anwendung mit
supervisorctl
:
- Beenden Sie die Instanz:
- Überwachen Sie die Reparaturvorgänge:
Das dauert einige Minuten.
Suchen Sie nach der folgenden Beispielausgabe:
Die verwaltete Instanzgruppe hat die Instanz neu erstellt, um sie zu reparieren.
- Sie können das Monitoring auch über die Console ausführen. Klicken Sie dazu auf Navigationsmenü > Compute Engine > VM-Instanzen.
Das wars!
Sie haben Ihre Website in Compute Engine bereitgestellt, skaliert und aktualisiert. Sie sind jetzt mit Compute Engine, verwalteten Instanzgruppen, Load Balancern und Systemdiagnosen vertraut.
Weitere Informationen
Google Cloud-Schulungen und -Zertifizierungen
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Handbuch zuletzt aktualisiert am 26. April 2024
Lab zuletzt am 15. Dezember 2023 getestet
© 2024 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.