Hinweis:

Migration einer Ubuntu Virtual Machine von Amazon Web Services zu Oracle Cloud Infrastructure

Einführung

Die Migration von Amazon Web Services (AWS) zu Oracle Cloud Infrastructure (OCI) ist für viele Unternehmen ein immer häufigeres Unterfangen, da OCI eine Cloud der nächsten Generation ist, mit der Anwendungen schneller und sicherer und kostengünstiger ausgeführt werden können.

Virtuelle Maschinenmigrationen (VM) sind oft ein zentraler Bestandteil dieser Bemühungen, sodass Kunden nach geeigneten Anleitungen für die Migration von AWS zu OCI suchen können. Darüber hinaus stellt Linux für viele Unternehmen den Großteil ihrer Infrastruktur dar. Dieses Tutorial konzentriert sich daher auf die Migration von virtuellen Maschinen, auf denen die am häufigsten verwendete Linux-Distribution (Ubuntu) von AWS zu OCI ausgeführt wird.

Dieses Tutorial bietet Kunden Anleitungen zu den Anforderungen für die Migration virtueller Maschinen zu OCI und zur Vorbereitung und Migration einer Ubuntu-VM von AWS zu OCI, sodass sie in OCI im paravirtualisierten Modus gestartet werden kann. OCI ermöglicht auch das Starten von Instanzen im emulierten Modus, aber VMs, die paravirtualisierte Geräte verwenden, bieten eine wesentlich schnellere Performance im Vergleich zur Ausführung im emulierten Modus mit mindestens sechsmal schnellerer Datenträger-I/O-Performance.

Der allgemeine Prozess besteht darin, die VM in AWS vorzubereiten, in Amazon Simple Storage Service (S3) zu exportieren, sie in OCI Object Storage zu übertragen, ein benutzerdefiniertes Image in OCI zu erstellen und eine Instanz daraus zu starten. Die Imageübertragung zwischen Amazon S3 und OCI Object Storage wird mit dem Open-Source-Tool rclone ausgeführt. Wenn Sie nur mit kleinen Images experimentieren, können Sie dies manuell tun. Wir empfehlen jedoch die Verwendung von Rclone, da die Übertragung von Bildern einen viel schnelleren und einfacheren Prozess darstellt.

Weitere Informationen zum Importprozess für benutzerdefinierte Images in OCI finden Sie unter Benutzerdefinierte Linux-Images importieren.

Ziele

Voraussetzungen

Voraussetzungen

Aufgabe 1: Data Transfer Infrastructure vorbereiten

Dieses Tutorial verwendet die folgende Datenübertragungsarchitektur:

Aufgabe 1.1: Amazon S3- und OCI Object Storage-Buckets vorbereiten

In dieser Aufgabe erstellen wir einen Bucket in:

Erstellen Sie einen Bucket in Amazon S3 mit den folgenden Eigenschaften:

Verknüpfen Sie in den Amazon S3-Bucketberechtigungen eine ACL mit der Berechtigung, die der AWS-Region entspricht, an der Sie arbeiten, wie im folgenden Bild dargestellt. Weitere Informationen finden Sie unter Instanzen mit VM-Import/-Export als VM exportieren.

S3 ACL-Anhang

Beenden Sie diese Aufgabe, indem Sie einen Bucket in OCI Object Storage auf der Standard-Storage Tier erstellen. Dies ist der Bucket, in den Sie das VM-Image später von Amazon S3 übertragen.

Aufgabe 1.2: Rclone installieren und konfigurieren

In dieser Aufgabe installieren wir rclone in einer VM, die auf OCI ausgeführt wird. Sie können rclone auf Ihrem lokalen Rechner installieren, wenn Sie mit kleinen VMs experimentieren und rclone mit 2 Remotes konfigurieren: Amazon S3 und OCI Object Storage.

  1. Installieren Sie rclone und SSH in der Oracle Linux-VM in OCI.

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. Führen Sie die Konfiguration der Fernbedienungen in rclone aus. Dazu starten Sie eine Rclone-Konfigurationssitzung. Führen Sie den folgenden Befehl in der Befehlszeile aus.

    rclone config
    
  3. Geben Sie für die Amazon S3-Remotekonfiguration die folgenden Informationen ein.

    • Remotename: Geben Sie einen Remotenamen ein.
    • Remotetyp: Wählen Sie den Typ S3 aus.
    • Provider: Wählen Sie AWS aus.
    • access_key_id: Geben Sie die Zugriffsschlüssel-ID für den AWS-Benutzer ein, den Sie verwenden möchten.
    • secret_access_key: Geben Sie den Secret-Zugriffsschlüssel ein, der mit der Zugriffsschlüssel-ID übereinstimmt.
    • Region: Wählen Sie die AWS-Region aus, in der Sie arbeiten.
    • location_constraint: Wählen Sie das Standort-Constraint aus, das mit der Amazon-Webregion übereinstimmt, an der Sie arbeiten. Für einige Regionen (wie Frankfurt) könnte dies leer sein.
    • acl: Wählen Sie privat aus, um sicherzustellen, dass Sie die eingeschränkte vorbereitete ACL erstellen. Weitere Informationen finden Sie in Canned ACL.
  4. Für den Rclone-Zugriff auf OCI Object Storage verwendet dieses Tutorial einen OCI-Benutzer und API-Signaturschlüssel. Alternativ können Sie dynamische Gruppen verwenden. Weitere Informationen finden Sie unter Services aus einer Instanz aufrufen.

    Vor der Konfiguration der OCI Object Storage-Remote werden folgende Schritte ausgeführt:

    • Erstellen Sie OCI-API-Signaturschlüssel für rclone, um sich bei OCI Object Storage zu authentifizieren und die Imagedatenübertragung auszuführen. Informationen zum Erstellen der API-Signaturschlüssel und zum Notieren des Verzeichnisses, in dem Sie die Schlüssel auf der VM speichern, da Sie sie in der OCI-Konfigurationsdatei angeben müssen, finden Sie unter So generieren Sie einen API-Signaturschlüssel.

    • Erstellen Sie eine OCI-Konfigurationsdatei. Für diese Konfigurationsdatei sind die OCI-API-Signaturschlüssel erforderlich. Weitere Informationen finden Sie unter SDK- und CLI-Konfigurationsdatei.

    Informationen zu Authentifizierungsoptionen für rclone mit dem OCI-Provider finden Sie unter Ankündigung der nativen Backend-Unterstützung des OCI Object Storage-Providers in rclone.

  5. Die OCI-Konfigurationsdatei wird in der Regel als benannte Datei config im Verzeichnis gespeichert.

    ~/.oci/
    
  6. Nachdem Sie OCI-API-Signaturschlüssel und die OCI-Konfigurationsdatei erstellt haben, können Sie die OCI-Remote in rclone konfigurieren. Führen Sie den folgenden Befehl aus, um die Konfigurationssitzung zu starten.

    rclone config
    
  7. Geben Sie die folgenden Informationen für die OCI Object Storage-Remotekonfiguration ein.

    • Remotename: Geben Sie einen Remotenamen ein.
    • Typ: Wählen Sie "Oracle Object Storage" aus.
    • Provider: Wählen Sie user_principal_auth (wie Sie einen OCI-Benutzer und API-Signaturschlüssel verwenden), wenn Sie eine dynamische Gruppe verwenden, wählen Sie instance_principal_auth aus.
    • Namespace: Geben Sie den Mandanten-Namespace ein.
    • Compartment: Geben Sie die OCI-Bucket-Compartment-OCID ein.
    • Region: Geben Sie die Region ein, in der Sie in OCI arbeiten.
    • Endpunkt: Lassen Sie das Feld leer, oder geben Sie den Endpunkt in folgendem Format ein: https://<namespace>.objectstorage.<region-code>.oci.customer-oci.com/n/<namespace>.
  8. Prüfen Sie die Remotekonfigurationsdatei des Klons mit dem folgenden Befehl.

    cat ~/.config/rclone/rclone.conf
    

Aufgabe 2: Quell-VM-Boot-Volume vorbereiten

Aufgabe 2.1: Erforderlichen Snapshot des AWS-VM-Boot-Volumes ausführen

Erstellen Sie einen Snapshot des AWS-VM-Boot-Volumes. Dies ist erforderlich, bevor Sie eine Boot-Volume-Konfigurationsaktivität starten.

Aufgabe 2.2: Serielle Konsole aktivieren

Mit seriellen Konsolenverbindungen kann ein Benutzer Fehler in einer VM beheben und Aktivitäten wie die Bearbeitung von Systemkonfigurationsdateien und das Zurücksetzen von Kennwörtern ausführen. Um eine VM für die serielle Konsole vorzubereiten, muss in der Regel die Boot Loader-Datei GRUB konfiguriert werden. Diese Datei befindet sich im Verzeichnis /etc/default/grub. Das AWS-Ubuntu-Plattformimage erfordert nicht nur die Konfiguration in der Datei /etc/default/grub, sondern auch in der Datei /etc/default/grub.d/50-cloudimg-settings.cfg. Diese letztere Datei wird vom Cloud-Image-Build-Prozess geändert und setzt die etc/default/grub-Konfiguration außer Kraft.

Die wichtigsten GRUB-Konfigurationsparameter sind:

- GRUB_TIMEOUT_STYLE: Make sure it is commented if its value is "hidden"; alternatively, change it to "menu".
- GRUB_TIMEOUT: Make sure it is higher than 0 to allow boot mode selection without skipping directly to the default option. Specify this value in both files.
- GRUB_CMDLINE_LINUX: Make sure "console=tty1 console=ttyS0, 115200" is appended to it.
- GRUB_TERMINAL: Make sure its value is "serial console".
- GRUB_SERIAL_COMMAND: Make sure its value is "serial -- unit=0 --speed=115200".
  1. Öffnen Sie /etc/default/grub.d/50-cloudimg-settings.cfg.

    sudo vi /etc/default/grub.d/50-cloudimg-settings.cfg
    

    Bearbeiten Sie die Datei so, dass sie wie die Datei in der folgenden Abbildung aussieht.

    50-cloudimg-settings.cfg bearbeiten

  2. Öffnen Sie /etc/default/grub.

    sudo vi /etc/default/grub
    

    Bearbeiten Sie die Datei so, dass sie wie die Datei in der folgenden Abbildung aussieht.

    grub-Bearbeitung

  3. Führen Sie nach dem Bearbeiten der Datei den folgenden Befehl aus, um sicherzustellen, dass der GRUB-Bootloader ordnungsgemäß aktualisiert wird.

    sudo update-grub
    

Aufgabe 2.3: Paravirtualisierungstreiber prüfen

Um eine VM in OCI zu importieren, damit sie im paravirtualisierten Modus gestartet werden kann, müssen die Paravirtualisierungs-VirtIO-Treiber im Image vorhanden sein. In dieser Aufgabe prüfen wir sowohl den Kernel als auch das temporäre Dateisystem initramfs, um das Vorhandensein der Treiber zu bestätigen. Beachten Sie, dass Linux-basierte Betriebssysteme, auf denen die Kernel-Version 3.4 oder höher ausgeführt wird, paravirtualisierte Treiber unterstützen. Daher müssen Sie häufig nur prüfen und bestätigen, dass sie vorhanden sind.

Die mindestens erforderliche Gruppe von VirtIO-Treibern umfasst pci und scsi. Diese Treiber sollten im Kernel oder in initramfs vorhanden sein.

  1. Prüfen Sie den Kernel der AWS-VM mit dem folgenden Befehl.

    sudo grep -i virtio /boot/config-$(uname -r)
    

    Prüfung von Kernel

    Hinweis: Der VirtIO-Treiber pci ist im Kernel vorhanden.

  2. Prüfen Sie den Kernel der AWS-VM mit dem folgenden Befehl.

    sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
    

    initramfs überprüfen

    Hinweis: Der VirtIO-Treiber scsi ist in initramfs vorhanden.

  3. Wenn das Boot-Volume Ihrer VM nicht über die Treiber verfügt, müssen Sie die initramfs mit dracut neu erstellen.

    sudo dracut -v -f --add-drivers “virtio virtio_pci virtio_scsi” /boot/initramfs-$(uname -r).img $(uname -r)
    

Aufgabe 2.4: Netzwerkeinstellungen konfigurieren

Stellen Sie für die Netzwerkkonfiguration Folgendes sicher:

Es gibt verschiedene Möglichkeiten, die Netzwerkkonfiguration unter Linux durchzuführen. Canonical hat das Dienstprogramm Netplan zur Vereinfachung dieser Aufgabe entwickelt. Dieses Tutorial verwendet Netplan, aber Sie können alternativ Netzwerkkonfigurationsdateien ändern, wenn dies Ihre Präferenz ist.

  1. Das AWS Ubuntu-Plattformimage gibt seine Netplan-Konfiguration in der Datei /etc/netplan/50-cloud-init.yaml an. Öffnen Sie die Datei mit sudo-Berechtigung, um sie bearbeiten zu können.

    sudo vi /etc/netplan/50-cloud-init.yaml
    

    Sie finden eine Konfigurationsdatei wie in der folgenden Abbildung dargestellt.

    Netzplankonfigurationsdatei prüfen

  2. Bearbeiten Sie die Datei, entfernen Sie die MAC-Adresse und den passenden Schnittstellennamen mit der MAC-Adresse. Die Konfiguration sollte wie in der folgenden Abbildung dargestellt aussehen.

    netplan-Konfigurationsdatei bearbeiten

  3. Führen Sie den Befehl Netplan apply aus, um die Netzwerkkonfiguration zu aktualisieren und zu beenden.

    sudo netplan apply
    

Aufgabe 3: Virtuelles Maschinenimage in Amazon S3 exportieren

Für diese Aufgabe ist die Verwendung der AWS-Befehlszeilenschnittstelle (CLI) erforderlich. In diesem Tutorial wird AWS CloudShell verwendet, da AWS CLI-Konfigurationsaufgaben übersprungen werden.

  1. Stoppen Sie die virtuelle Maschine. Öffnen Sie AWS CloudShell, und führen Sie den folgenden Befehl aus, um das Image zu exportieren.

    aws ec2 create-instance-export-task --instance-id <instance-id> --target-environment vmware --export-to-s3-task DiskImageFormat=vmdk,ContainerFormat=ova,S3Bucket=<bucket name>
    
  2. Geben Sie folgende Informationen ein.

    • Datenträgerimageformat: Geben Sie VMDK ein, da es das einzige AWS-Exportformat ist, das von OCI unterstützt wird.
    • Containerformat: Geben Sie OVA ein, um das Datenträgerimage mit Metadaten zur VM zu kombinieren. Alternativ können Sie diesen Parameter exportieren.
    • Zielumgebung: Geben Sie vmware ein, da es sich um die einzige in OCI unterstützte Zielumgebung handelt.
  3. Sie können den Status der Exportaufgabe überwachen, indem Sie den folgenden Befehl in der AWS-Datei CloudShell ausführen.

    aws ec2 describe-export-tasks --export-task-ids <export task id>s
    

    Wenn Sie die Aufgabe zum ersten Mal starten, wird sie im Status Aktiv angezeigt. Sobald der Vorgang abgeschlossen ist, wird er im Status Abgeschlossen angezeigt.

Aufgabe 4: Image in OCI Object Storage übertragen

Stellen Sie eine SSH-Verbindung zur virtuellen OCI-Maschine her, in der rclone in Aufgabe 1.2 konfiguriert wurde. Kopieren Sie das exportierte Image aus dem Amazon S3-Bucket in den OCI Object Storage-Bucket.

rclone copy <aws-remote>:<bucket>/<imagefile> <oci-remote>:<bucket> -vv

Aufgabe 5: Benutzerdefiniertes Image in OCI erstellen und Instanz starten

  1. Gehen Sie in der OCI-Konsole zu Benutzerdefinierte Images im Compute-Service, und wählen Sie Image importieren aus.

  2. Geben Sie folgende Informationen ein.

    • Compartment: Wählen Sie das Compartment aus, in dem Sie das benutzerdefinierte Image erstellen möchten.
    • Name: Geben Sie den Namen für das benutzerdefinierte Image ein.
    • Betriebssystem: Wählen Sie "Ubuntu" aus.
    • Quelle: Importieren Sie aus einem Object Storage-Bucket. Wählen Sie den Bucket aus, den Sie in Aufgabe 1.1 konfiguriert haben.
    • Objektname: Wählen Sie das Bild aus, das Sie von Amazon S3 übertragen haben.
    • Startmodus: Wählen Sie den paravirtualisierten Modus aus.
  3. Klicken Sie auf Image importieren, um den Imageimport zu starten.

  4. Nachdem das Image erstellt wurde, können Sie eine Instanz daraus starten. Wählen Sie auf der Detailseite des benutzerdefinierten Images die Option Instanz erstellen aus, und geben Sie die folgenden Informationen ein.

    • Name: Geben Sie den Namen für die Instanz ein.
    • Compartment: Wählen Sie das Compartment aus, in dem Sie die Instanz starten möchten.
    • Availability-Domain.
    • VCN und Subnetz. In diesem Tutorial können Sie die VPN-Konnektivität mit einem öffentlichen Subnetz überspringen.
    • SSH-Schlüssel: Sie haben zwei Optionen: entweder neue SSH-Schlüssel generieren oder dieselben Schlüssel verwenden, die Sie in AWS verwendet haben. Wenn Sie dieselben Schlüssel weiterhin verwenden möchten, laden Sie denselben Public Key hoch, den Sie in AWS für die Quell-VM verwendet haben. Wenn der AWS-Public Key das Schlüsselformat .pem aufweist, ändern Sie ihn in .pem.pub, um ihn in die OCI-Instanz hochzuladen. Auf diese Weise können Sie weiterhin denselben Private Key für SSH-Verbindungen zur VM verwenden.
  5. Virtuelle Maschine starten. Nachdem das Provisioning abgeschlossen ist, können Sie eine Verbindung herstellen. Beachten Sie, dass der Benutzer, mit dem Sie eine Verbindung herstellen, ubuntu und nicht opc ist.

    ssh -i pathToKey/keyfile ubuntu@<publicIp>
    

Danksagungen

Weitere Lernressourcen

Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.