1. Einführung
Hallo zusammen, vielen Dank, dass Sie heute dabei sind! Sind Sie bereit, Google Compute Engine kennenzulernen?
In diesem Codelab sehen wir uns die Compute Engine im Rahmen einer beispielhaften Gästebuchanwendung an.
Sie erstellen Compute Engine-Instanzen, stellen Nginx bereit und setzen schließlich einen Netzwerk-Load-Balancer in den Vordergrund. Sie können eine Compute Engine-Instanz über die grafische Konsole oder die Befehlszeile erstellen. In diesem Lab erfahren Sie, wie Sie die Befehlszeile verwenden.
Google Compute Engine bietet virtuelle Maschinen, die in Rechenzentren von Google ausgeführt werden, die mit dem Glasfasernetzwerk von Google verbunden sind. Die angebotenen Tools und Workflows ermöglichen die Skalierung von einzelnen Instanzen bis hin zu globalem Cloud-Computing mit Load-Balancing.
Diese VMs starten schnell, bieten nichtflüchtigen Speicher und sorgen für konsistente Leistung. Die Maschinen sind in vielen Konfigurationen verfügbar, einschließlich vordefinierter Größen, und können auch mit benutzerdefinierten Maschinentypen erstellt werden, die für Ihre spezifischen Anforderungen optimiert sind.
Virtuelle Compute Engine-Maschinen werden auch in anderen Google Cloud-Produkten eingesetzt (Kubernetes Engine, Cloud Dataproc, Cloud Dataflow usw.).
2. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.
- Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird und jederzeit aktualisiert werden kann.
- Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die in der Regel als
PROJECT_ID
identifiziert wird. Wenn es dir nicht gefällt, kannst du eine weitere zufällige Projekt-ID generieren. Du kannst aber auch selbst eine andere testen, um zu sehen, ob sie verfügbar ist. Dann ist es „eingefroren“ nachdem das Projekt erstellt wurde. - Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte möglichst wenig kosten. Wenn Sie Ressourcen beenden möchten, damit über diese Anleitung hinaus keine Kosten anfallen, führen Sie eine Bereinigung durch am Ende des Codelabs. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.
Google Cloud Shell
Sie können Google Cloud und die Compute Engine per Fernzugriff von Ihrem Laptop aus bedienen. In diesem Codelab verwenden wir jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Diese Debian-basierte virtuelle Maschine verfügt über alle erforderlichen Entwicklungstools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Für dieses Codelab benötigen Sie also nur einen Browser – ja, er funktioniert auf Chromebooks.
- Klicken Sie einfach auf Cloud Shell aktivieren , um Cloud Shell über die Cloud Console zu aktivieren. Die Bereitstellung und Verbindung mit der Umgebung dauert einen Moment.
Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie bereits authentifiziert sind und dass das Projekt bereits auf Ihre PROJECT_ID
eingestellt ist.
gcloud auth list
Befehlsausgabe
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Sollte das Projekt aus irgendeinem Grund nicht eingerichtet sein, geben Sie einfach den folgenden Befehl ein:
gcloud config set project <PROJECT_ID>
Du suchst dein Gerät (PROJECT_ID
)? Sehen Sie nach, welche ID Sie bei den Einrichtungsschritten verwendet haben, oder rufen Sie sie im Dashboard der Cloud Console auf:
Cloud Shell legt außerdem standardmäßig einige Umgebungsvariablen fest, die bei der Ausführung zukünftiger Befehle nützlich sein können.
echo $GOOGLE_CLOUD_PROJECT
Befehlsausgabe
<PROJECT_ID>
- Legen Sie schließlich die Standardzone und die Projektkonfiguration fest.
gcloud config set compute/zone us-central1-f
Sie können verschiedene Zonen auswählen. Weitere Informationen finden Sie unter Regionen und Zonen.
3. Compute Engine-Instanz erstellen
Wie bereits erwähnt, verwenden wir in diesem Codelab die gcloud
-Befehlszeile. Alle Aufgaben können über die Konsole ausgeführt werden, die unter console.cloud.google.com verfügbar ist.
Lassen Sie uns zunächst eine Instanz mit den Standardeinstellungen erstellen :
$ gcloud compute instances create myinstance Created [...]. NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
Notieren Sie sich das EXTERNAL_IP
– das ist später wichtig.
Die Instanz wird mit einer Reihe von Standardeinstellungen erstellt :
- Der von Ihnen ausgewählte Bereich. Alle Instanzen befinden sich in einer Zone. Sie können bei der Instanzerstellung eine Zone mit dem Flag
--zone
auswählen oder wie bei der Ersteinrichtung eine Standardzone festlegen und das Flag--zone
weglassen. - Das aktuelle Debian GNU/Linux 9 (Stretch)-Image. Wenn Sie ein eigenes benutzerdefiniertes Image verwenden, geben Sie hier den Image-Namen an. Beispiel:
--image my-own-image
- Der Maschinentyp
n1-standard-1
. Sie können einen anderen Maschinentyp wien1-highmem-4
odern1-highcpu-6
auswählen. Wenn keiner der vordefinierten Maschinentypen Ihren Anforderungen entspricht, verwenden Sie einen benutzerdefinierten Maschinentyp. - Einen nichtflüchtigen Root-Speicher mit dem gleichen Namen wie die Instanz. Der Speicher wird automatisch an die Instanz angehängt.
Führen Sie gcloud compute instances create --help
aus, um alle verfügbaren Optionen zu sehen.
4. Firewall für Port 80 aktivieren
Standardmäßig lässt die Google Cloud Platform nur wenige Portzugriffe zu. Da wir Nginx bald installieren werden, aktivieren Sie zuerst Port 80 in der Firewallkonfiguration.
$ gcloud compute firewall-rules create allow-80 --allow tcp:80 Created [...]. NAME: allow-80 NETWORK: default DIRECTION: INGRESS PRIORITY: 1000 ALLOW: tcp:80 DENY: DISABLED: False
Dadurch wird eine Firewallregel mit dem Namen allow-80
erstellt. Diese enthält eine Standardliste von IP-Adressblöcken, die eingehende Verbindungen herstellen dürfen (--source-ranges
), auf 0.0.0.0/0
(überall) gesetzt ist.
Führen Sie gcloud compute firewall-rules create --help
aus, um alle Standardeinstellungen und verfügbaren Optionen zu sehen, einschließlich der Möglichkeit, Firewallregeln basierend auf Tags anzuwenden.
5. SSH-Verbindung zur Instanz herstellen
So stellen Sie über die Befehlszeile und von Cloud Shell aus eine SSH-Verbindung zur Instanz her:
$ gcloud compute ssh myinstance Waiting for SSH key to propagate. Warning: Permanently added 'compute.12345' (ECDSA) to the list of known hosts. ... yourusername@myinstance:~#
Das war's! ziemlich einfach. Stellen Sie in der Produktionsumgebung sicher, dass Sie eine Passphrase eingeben.
Alternativ können Sie auch direkt über die Console ( console.cloud.google.com) eine SSH-Verbindung zur Instanz herstellen. Gehen Sie dazu zu Compute Engine > VM-Instanzen und klicken Sie auf SSH.
6. Nginx installieren
Melden Sie sich in der neu erstellten Instanz myinstance an und installieren Sie nginx:
$ sudo su - # apt update # apt install -y nginx # service nginx start # exit
Testen Sie mit curl
von myinstance, ob der Server ausgeführt wird:
$ curl -s localhost | grep nginx <title>Welcome to nginx!</title> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and <a href="http://nginx.org/">nginx.org</a>.<br/> <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p>
Ermitteln Sie die externe IP-Adresse für Ihre Instanz, indem Sie Ihre Instanzen über die Web-UI auflisten:
Beenden Sie SSH und führen Sie den folgenden Befehl über Cloud Shell aus:
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
Gehen Sie dann zu http://EXTERNAL_IP/
, wobei EXTERNAL_IP
die öffentliche IP-Adresse von myinstance ist und Sie die Nginx-Seite sehen können:
7. Startskript
Anstatt die Instanz jedes Mal neu einzurichten, können Sie ein Startskript verwenden, um die Instanz beim Start zu initialisieren.
Erstellen Sie eine Datei mit dem Namen startup.sh
und folgendem Inhalt. Sie können dazu Ihren bevorzugten Texteditor verwenden: vim
, nano
oder emacs
:
#! /bin/bash apt-get update apt-get install -y nginx service nginx start sed -i -- 's/nginx/Google Cloud Platform - '"$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
Geben Sie einfach Folgendes ein, um eine neue VM-Instanz mit diesem Startskript zu erstellen :
$ gcloud compute instances create nginx \ --metadata-from-file startup-script=startup.sh Created [...]. NAME: nginx ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
Rufe http://EXTERNAL_IP/
auf. Du solltest die aktualisierte Startseite sehen. Wenn die Seite nicht sofort nach einigen Sekunden angezeigt wird, startet der Host möglicherweise noch Nginx.
8. Servercluster erstellen
Um einen Cluster von Servern zu erstellen, müssen Sie zuerst eine Instanzvorlage erstellen. Sobald eine Instanzvorlage erstellt ist, können Sie eine Instanzgruppe erstellen, um die Anzahl der zu erstellenden Instanzen zu verwalten.
Erstellen Sie zunächst eine Instanzvorlage mithilfe des Startskripts :
$ gcloud compute instance-templates create nginx-template \ --metadata-from-file startup-script=startup.sh Created [...]. NAME: nginx-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2022-03-18T15:10:37.621-07:00
Erstellen wir nun einen Zielpool. Ein Zielpool ermöglicht es, einen einzigen Zugriffspunkt für alle Instanzen einer Gruppe zu verwenden. Außerdem ist dieser für den Lastenausgleich an späterer Stelle in diesem Lab erforderlich.
$ gcloud compute target-pools create nginx-pool Created [...]. NAME: nginx-pool REGION: us-central1 SESSION_AFFINITY: NONE BACKUP: HEALTH_CHECKS:
Erstellen Sie abschließend mit der Vorlage eine Instanzgruppe:
$ gcloud compute instance-groups managed create nginx-group \ --base-instance-name nginx \ --size 2 \ --template nginx-template \ --target-pool nginx-pool Created [...]. NAME: nginx-group LOCATION: us-central1-f SCOPE: zone BASE_INSTANCE_NAME: nginx SIZE: 0 TARGET_SIZE: 2 INSTANCE_TEMPLATE: nginx-template AUTOSCALED: no
Dadurch werden zwei zusätzliche VM-Instanzen erstellt, deren Namen das Präfix nginx-
haben.
Sie sollten jetzt alle erstellten Instanzen sehen können.
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-frpl ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-ztg4 ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
9. Netzwerk-Load-Balancer erstellen
Es gibt mehrere Arten von Load-Balancern in der Google Cloud Platform, darunter :
So erstellen Sie einen regionalen Netzwerk-Load-Balancer, der auf die Instanzgruppe ausgerichtet ist:
$ gcloud compute forwarding-rules create nginx-lb \ --ports 80 \ --target-pool nginx-pool Created [...]. $ gcloud compute forwarding-rules list NAME: nginx-lb REGION: us-central1 IP_ADDRESS: X.X.X.X IP_PROTOCOL: TCP TARGET: us-central1/targetPools/nginx-pool
Sie können den Load-Balancer dann über den Browser http://IP_ADDRESS/
aufrufen, wobei IP_ADDRESS
die Adresse ist, die der vorherige Befehl ausgegeben hat.
Aus diesem Grund können wir heute keinen HTTP-Load-Balancer erstellen.
10. Cluster bereinigen
Vergessen Sie nicht, den Cluster herunterzufahren, da er sonst weiter ausgeführt wird und Kosten anfallen. Mit den folgenden Befehlen werden die Google Compute Engine-Instanzen, die Instanzgruppe, die Targeting-Gruppe und der Load-Balancer gelöscht.
$ gcloud compute forwarding-rules delete nginx-lb $ gcloud compute instance-groups managed delete nginx-group $ gcloud compute target-pools delete nginx-pool $ gcloud compute instance-templates delete nginx-template $ gcloud compute instances delete nginx $ gcloud compute instances delete myinstance $ gcloud compute firewall-rules delete allow-80
Bei jedem der oben genannten Befehle sollten Sie aufgefordert werden, das Löschen der Ressource zu bestätigen.
11. Nächste Schritte
Herzlichen Glückwunsch! Sie haben dieses Compute Engine-Codelab abgeschlossen.
Weitere Compute Engine-Funktionen
Google Compute Engine bietet eine Vielzahl von Funktionen. Weitere Informationen :
- VMs auf Abruf – https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- Knoten für einzelne Mandanten: https://cloud.google.com/compute/docs/nodes/create-nodes
- GPUs und TPUs – https://cloud.google.com/compute/docs/gpus/add-gpus
- Windows-Instanzen: https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- Ressourcen mit Labels versehen – https://cloud.google.com/compute/docs/labeling-resources
- VMs zu Compute Engine migrieren – https://cloud.google.com/compute/docs/vm-migration/
Google Kubernetes Engine
Google Kubernetes Engine (GKE) ist ein gehostetes und vollständig verwaltetes Kubernetes-Angebot von Google Cloud. Es gibt verschiedene Codelabs, die Ihnen den Einstieg in die GKE erleichtern. Hier ist ein guter Ausgangspunkt :
- Google Kubernetes Engine-Codelab – https://codelabs.developers.google.com/codelabs/cloud-gke-workshop-v2
Feedback geben
- Bitte nehmen Sie sich einen Moment Zeit, um an unserer kurzen Umfrage teilzunehmen.