Monolithische VM migrieren – Migration und Bereitstellung
Wenn ein Verarbeitungscluster eingerichtet und Migrate to Containers installiert ist, können Sie die Migration ausführen. Zuerst müssen Sie eine relevante Migrationsquelle für Ihren Verarbeitungscluster hinzufügen und einen Migrationsplan für Ihre VM generieren. Nachdem Sie den Plan geprüft und an Ihre Anforderungen angepasst haben, können Sie Kubernetes-Artefakte für den GKE-Cluster generieren und bereitstellen, in dem der Rest Ihrer Anwendung bereits ausgeführt wird.
Ziele
Am Ende dieser Anleitung haben Sie Folgendes gelernt:
- Wie Sie eine Migrationsquelle hinzufügen.
- Wie Sie einen Migrationsplan aus Ihrer VM-Arbeitslast erstellen.
- Wie Sie den Migrationsplan prüfen und anpassen.
- Wie Sie Migrationsartefakte für den GKE-Cluster generieren und bereitstellen.
Hinweis
Diese Anleitung ist eine Fortsetzung der Anleitung Erkennung und Bewertung. Bevor Sie mit dieser Anleitung beginnen, befolgen Sie die Anweisungen auf dieser Seite, um die Erkennungs-Tools auf der monolithischen VM auszuführen und Ihren Verarbeitungscluster zu erstellen.
Monolithische VM beenden
Bevor Sie die Migration ausführen, müssen Sie die monolithische VM beenden, um eine versehentliche Unterbrechung oder Datenkorruption zu vermeiden, die auftreten kann, wenn Daten während der Migrationsprozesse verschoben werden.
Rufen Sie in der Google Cloud Console die Seite „VM-Instanzen“ auf.
Klicken Sie auf das Kästchen am linken Ende der Zeile für die VM
ledgermonolith-service
.Klicken Sie oben auf der Seite auf die Schaltfläche Beenden, um die VM zu beenden.
Warten Sie, bis die VM vollständig beendet wurde. Dies kann 1–2 Minuten dauern.
Migrieren Sie die VM.
Bevor Sie die VM migrieren können, müssen Sie eine Migrationsquelle erstellen, die die Quellplattform (Compute Engine oder VMWare) darstellt.
Quelle hinzufügen
Rufen Sie in der Google Cloud Console die Seite Migrate to Containers auf.
Klicken Sie auf dem Tab Quellen und Kandidaten auf Quelle hinzufügen.
Wählen Sie unter Verarbeitungscluster auswählen den Migrationsverarbeitungscluster aus der Drop-down-Liste aus und klicken Sie auf Weiter.
Geben Sie den Namen der Quelle als
ledgermonolith-source
an.Legen Sie den Quelltyp auf Compute Engine fest und klicken Sie auf Weiter.
Achten Sie darauf, dass das richtige Projekt als Quellprojekt ausgewählt ist.
Erstellen Sie ein Dienstkonto, mit dem Sie Compute Engine als Migrationsquelle verwenden können. Wählen Sie dazu Neues Dienstkonto erstellen aus.
Klicken Sie auf Weiter und dann auf Quelle hinzufügen.
Migration erstellen
Rufen Sie in der Google Cloud Console die Seite Migrate to Containers auf.
Klicken Sie auf dem Tab Migrationen auf Migration erstellen.
Legen Sie Name der Migration auf
ledgermonolith-migration
fest.Wählen Sie die Migrationsquelle aus, die Sie im vorherigen Schritt erstellt haben:
ledgermonolith-source
.Legen Sie die Arbeitslasttyp auf
Linux system container
fest.Legen Sie als Instanzname
ledgermonolith-service
fest.Klicken Sie auf Migration erstellen. Dies kann 1–2 Minuten dauern.
Wenn die Migration abgeschlossen ist, wird in der Spalte Status der Eintrag Migrationsplan generiert angezeigt.
Klicken Sie in der Tabelle auf den Namen der Migration
ledgermonolith-migration
, um die Detailseite zu öffnen.Erstellen Sie auf dem Tab Datenkonfiguration ein neues Volume, um die PostgreSQL-Datenbank
/var/lib/postgresql
der VM zu migrieren. Die Konfiguration sollte so aussehen:volumes: - deploymentPvcName: ledgermonolith-db folders: # Folders to include in the data volume, e.g. "/var/lib/postgresql" # Included folders contain data and state, and therefore are automatically excluded from a generated container image - /var/lib/postgresql newPvc: spec: accessModes: - ReadWriteOnce resources: requests: storage: 10G
Dadurch wird die Datenbank während der gesamten Migration beibehalten. Klicken Sie anschließend auf Save (Speichern).
Achten Sie darauf, dass Ihr Dienst im Migrationsplan unter
deployment
den Namenledgermonolith-service
, den Port8080
und das ProtokollTCP
hat. Das Objekt sollte so aussehen:... endpoints: - name: ledgermonolith-service port: 8080 protocol: TCP ...
Klicken Sie auf Speichern und Artefakte erstellen, um den Migrationsprozess zu starten. Dieser Vorgang dauert etwa 7–8 Minuten.
Migrate to Containers generiert für diese VM folgende Artefakte:
- Ein Docker-Image des VM-Prozesses
- Ein StatefulSet und ein Service, um den neu migrierten Prozess auszuführen
- Ein Namespace und ein DaemonSet für die Containerlaufzeit.
- Ein PersistentVolumeClaim und ein PersistentVolume für die PostgreSQL-Datenbank.
Migrierte Arbeitslast bereitstellen
Im vorangegangenen Abschnitt haben Sie Ihre monolithische VM erfolgreich zu einer Reihe von Kubernetes-Ressourcen migriert, die in einem Cluster bereitgestellt werden können. Sie können diese Ressourcen nun auf Ihrem Bank of Anthos-Cluster bereitstellen, die Anwendung so rekonfigurieren, dass sie mit dem richtigen Endpunkt für Ihren neu migrierten Verzeichnisdienst spricht, und prüfen, ob alles funktioniert.
Nachdem die Migrationsartefakte generiert wurden, können Sie eine Verbindung zum Verarbeitungscluster herstellen und die Artefakte in Ihre Cloud Shell-Umgebung herunterladen.
gcloud container clusters get-credentials migration-processing --zone COMPUTE_ZONE --project PROJECT_ID
cd ${HOME}/bank-of-anthos/src/ledgermonolith/
migctl migration get-artifacts ledgermonolith-migration
Stellen Sie eine Verbindung zum Bank of Anthos-Cluster her und stellen Sie die generierten Kubernetes-Ressourcen bereit. Installieren Sie außerdem eine Containerlaufzeit mit
migctl
für den Cluster, damit Sie den neu migrierten Pod ausführen können.gcloud container clusters get-credentials boa-cluster --zone COMPUTE_ZONE --project=PROJECT_ID
migctl setup install --runtime
kubectl apply -f ${HOME}/bank-of-anthos/src/ledgermonolith/deployment_spec.yaml
Fetching cluster endpoint and auth data. kubeconfig entry generated for boa-cluster. applying resources to the cluster namespace/v2k-system created daemonset.apps/runtime-deploy-node created statefulset.apps/ledgermonolith-service created service/ledgermonolith-service-java created persistentvolumeclaim/data-pvc-0-4e1b2e0e-021f-422a-8319-6da201a960e5 created persistentvolume/pvc-4d41e0f2-569e-415d-87d9-019490f18b1c created
Bearbeiten Sie die ConfigMap, die die Verzeichnishosts enthält, sodass sie auf Ihren neuen Kubernetes-Pod verweisen, nicht auf die monolithische Verzeichnis-VM, die nicht mehr verwendet wird.
sed -i 's/'.c.PROJECT_ID.internal'//g' ${HOME}/bank-of-anthos/src/ledgermonolith/config.yaml
kubectl apply -f ${HOME}/bank-of-anthos/src/ledgermonolith/config.yaml
Löschen Sie alle Pods, um sie mit der neuen Konfiguration neu zu erstellen.
kubectl delete pods --all
Mit dem folgenden Befehl können Sie den Status der Pods aufrufen:
kubectl get pods
Es kann einige Minuten dauern, bis alle Pods einsatzbereit sind.
NAME READY STATUS RESTARTS AGE accounts-db-0 1/1 Running 0 5m43s contacts-d5dcdc87c-jbrhf 1/1 Running 0 5m44s frontend-5768bd978-xdvpl 1/1 Running 0 5m44s ledgermonolith-service-0 1/1 Running 0 5m44s loadgenerator-8485dfd-582xv 1/1 Running 0 5m44s userservice-8477dfcb46-rzw7z 1/1 Running 0 5m43s
Wenn alle Pods auf
Running
gesetzt sind, können Sie die externe IP-Adresse des LoadBalancerfrontend
ermitteln.kubectl get service frontend
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend LoadBalancer 10.79.248.161 ##.##.##.##. 80:31304/TCP 46m
Öffnen Sie einen Browser und rufen Sie die Webseite unter der oben angegebenen externen IP-Adresse auf. Verwenden Sie dabei HTTP und nicht HTTPS.
http://EXTERNAL_IP
Sie sollten sich mit den Standardanmeldedaten anmelden und Transaktionen sehen können. Die angezeigten Transaktionen stammen aus dem monolithischen Verzeichnis, das nun in einen Kubernetes-Container migriert wurde.
Nächste Schritte
Sie wissen nun, wie Sie einen Migrationsplan aus Ihrer VM-Arbeitslast erstellen und anpassen sowie die Migration Ihrer VM in containerisierte Artefakte durchführen können. Nun können Sie zum nächsten Abschnitt des Tutorials übergehen: Optimierung.
Denken Sie nach Abschluss der Anleitung daran, Ihr Google Cloud-Projekt und Ihre Ressourcen zu bereinigen.
Bereinigen
Um unnötige Google Cloud-Gebühren zu vermeiden, sollten Sie die für diese Anleitung verwendeten Ressourcen direkt nach dem Beenden löschen. Diese Ressourcen sind:
- Der GKE-Cluster
boa-cluster
- Der GKE-Cluster
migration-processing
- Die Compute Engine-VM
ledgermonolith-service
Sie können diese Ressourcen entweder manuell löschen oder das Projekt in der unten stehenden Anleitung löschen. Dadurch werden auch alle Ressourcen entfernt.
Nächste Schritte
- Weitere Informationen zur Optimierung (Tag 2)