Hinweis:

Migration einer Red Hat Enterprise Linux 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.

Die Migration virtueller Maschinen (VM) ist oft ein zentraler Bestandteil dieser Bemühungen, sodass Kunden nach geeigneten Anleitungen für die Migration von AWS zu OCI suchen. 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 eine der am häufigsten verwendeten Linux-Distributionen der Welt (Red Hat Enterprise Linux) 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 Red Hat Enterprise Linux-VM von AWS zu OCI, damit 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 viel 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, sie in Amazon Simple Storage Service (Amazon S3) zu exportieren, 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.

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 Oracle Cloud-ID (OCID) des OCI-Bucket Compartments 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.

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.

    sudo vi /etc/default/grub
    

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

    grub-Bearbeitung

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

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

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, 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 lsinitrd /boot/initramfs-$(uname -r).img | 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. Insbesondere in RHEL kann die Konfiguration von Ethernetverbindungen entweder durch Bearbeiten von Netzwerkkonfigurationsdateien in /etc/sysconfig/network-scripts/ifcfg-eth0 oder durch Verwenden von NetworkManager durchgeführt werden. In diesem Tutorial wird letzteres verwendet, um die erforderliche Netzwerkkonfiguration auszuführen. Weitere Informationen finden Sie in Configuring an Ethernet Connection.

  1. Führen Sie das Befehlszeilentool NetworkManager (nmcli) aus, um eine Zusammenfassung der Netzwerkkonfiguration der VM anzuzeigen.

    Netzwerkkonfigurationszusammenfassung

  2. Um die in der VM verfügbaren Verbindungen aufzulisten, führen Sie den folgenden Befehl aus.

    nmcli connection show
    

    Sie finden eine Liste der Verbindungen. Die in diesem Tutorial verwendete VM verfügt über die folgenden Verbindungen.

    Verbindungen prüfen

  3. Bestätigen Sie die Ethernet-Verbindung, die mit eth0 verknüpft ist, mit Dynamic Host Configuration Protocol (DHCP).

    nmcli connection show <connection UUID>
    

    Scrollen Sie, bis Sie den Parameter ipv4.method finden. Der Wert muss auto lauten.

    DHCP bestätigen

  4. Bearbeiten Sie die Verbindung, die der Schnittstelle eth0 zugeordnet ist. Sie entfernen die MAC-Adresse mit dem folgenden Befehl aus der Schnittstellenkonfiguration.

    sudo nmcli connection modify <connection UUID> 802-3-ethernet.mac-address ''
    
  5. Wenden Sie diese Änderungen mit dem folgenden Befehl an.

    sudo nmcli con up <connection UUID>
    
  6. Prüfen Sie außerdem im Verzeichnis /etc/udev/rules, ob udev-Regeldateien vorhanden sind, die hartcodierte Regeln für MAC-Adressen enthalten, und löschen Sie sie. Das in diesem Tutorial verwendete AWS-Image enthält eine solche Datei 70-persistent-net.rules. Führen Sie den folgenden Befehl aus, um diese Datei zu löschen.

    sudo rm /etc/udev/rules.d/70-persistent-net.rules
    

Die Netzwerkkonfiguration ist jetzt abgeschlossen. Sie können dies bestätigen, indem Sie die Datei /etc/sysconfig/network-scripts/ifcfg-eth0 prüfen.

Aufgabe 3: Virtuelles Maschinenimage in Amazon S3 exportieren

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

  1. VM stoppen. Ö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

SSH in die OCI-VM, in der rclone in Aufgabe 1.2 konfiguriert wurde. Kopieren Sie das exportierte Image aus dem AWS-Bucket S3 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 RHEL 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, ec2-user und nicht opc ist.

    ssh -i pathToKey/keyfile ec2-user@<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.