Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch spezifische Werte für Ihre Cloud-Umgebung.
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
-
Bereiten Sie eine Red Hat Enterprise Linux VM in AWS für die Migration zu OCI vor.
-
Exportieren Sie die vorbereitete VM als Image in Amazon S3.
-
Übertragen Sie das Image an OCI, und erstellen Sie eine Instanz daraus.
Voraussetzungen
-
Zugriff auf ein AWS-Konto, das API-Schlüssel erstellen kann oder bereits besitzt und Zugriff auf Amazon S3 und Amazon Elastic Compute Cloud hat (Amazon EC2).
-
Zugriff auf einen OCI-Mandanten und ein Compartment für die Imagemigration und den Instanzstart.
-
Oracle Cloud Infrastructure Identity and Access Management-(OCI IAM-)Policys für:
-
Zugriff auf OCI Object Storage zulassen.
-
Stellen Sie eine VM in OCI bereit (für die Rclone-VM und die benutzerdefinierten Image-basierten VMs).
-
Erstellung von OCI-API-Schlüsseln zulassen.
-
Voraussetzungen
-
AWS-VM mit Public Key
pem
bereitgestellt. -
Die AWS-RHEL-VM hat nur 1 Volume: Boot-Volume.
-
AWS-Image kann exportiert werden. Das in diesem Tutorial verwendete Amazon Machine Image (AMI) ist das AWS-Plattformimage für RHEL
9.3.0
ab März 2024. -
SSH-Konnektivität mit dem von AWS standardmäßig bereitgestellten Benutzer:
ec2-user
. -
AWS-Befehlszeilenvorgänge, die auf AWS CloudShell ausgeführt werden. Alternativ können Sie das AWS-CLI-Tool verwenden.
-
Oracle Linux-VM in OCI bereitgestellt und mit SSH-Konnektivität zu Amazon S3. Dies ist die VM, auf der Sie rclone für die Übertragung von Images zwischen Amazon S3 und OCI Object Storage installieren und konfigurieren.
Aufgabe 1: Data Transfer Infrastructure vorbereiten
Dieses Tutorial verwendet die folgende Datenübertragungsarchitektur:
-
Imageübertragung über das Internet zwischen Amazon S3 und OCI Object Storage durch rclone. Für ein produktionsfähiges Deployment wird die Verwendung von Oracle Cloud Infrastructure Site-to-Site-VPN oder FastConnect empfohlen. Weitere Informationen finden Sie unter VPN-Verbindung zu AWS und FastConnect.
-
Rclone mit Benutzer-Principal-Authentifizierung für sicheren Zugriff auf Amazon S3 und OCI Object Storage konfiguriert.
Aufgabe 1.1: Amazon S3- und OCI Object Storage-Buckets vorbereiten
In dieser Aufgabe erstellen wir einen Bucket in:
- Amazon S3 für Bilder, die exportiert werden sollen.
- OCI Object Storage zum Speichern von VM-Datenträgerimages, die von Amazon S3 übertragen werden.
Erstellen Sie einen Bucket in Amazon S3 mit den folgenden Eigenschaften:
- ACLs sind aktiviert. Wir müssen eine benutzerdefinierte ACL anhängen, damit ein Image nach Amazon S3 exportiert werden kann.
- Gesamten öffentlichen Zugriff blockieren
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.
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.
-
Installieren Sie rclone und SSH in der Oracle Linux-VM in OCI.
sudo -v ; curl https://rclone.org/install.sh | sudo bash
-
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
-
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.
-
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.
-
-
Die OCI-Konfigurationsdatei wird in der Regel als benannte Datei
config
im Verzeichnis gespeichert.~/.oci/
-
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
-
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 Sieinstance_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>
.
-
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"
-
Ö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.
-
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.
-
Prüfen Sie den Kernel der AWS-VM mit dem folgenden Befehl.
sudo grep -i virtio /boot/config-$(uname -r)
Hinweis: Der VirtIO-Treiber
pci
ist im Kernel vorhanden. -
Prüfen Sie den Kernel der AWS-VM mit dem folgenden Befehl.
sudo lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
Hinweis: Der VirtIO-Treiber
scsi
ist in initramfs vorhanden. -
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:
- Die VM verwendet DHCP.
- Alle hartcodierten MAC-Adressreferenzen in der Netzwerkkonfiguration werden entfernt.
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.
-
Führen Sie das Befehlszeilentool NetworkManager (
nmcli
) aus, um eine Zusammenfassung der Netzwerkkonfiguration der VM anzuzeigen. -
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.
-
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 mussauto
lauten. -
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 ''
-
Wenden Sie diese Änderungen mit dem folgenden Befehl an.
sudo nmcli con up <connection UUID>
-
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 Datei70-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.
-
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>
-
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.
-
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
-
Gehen Sie in der OCI-Konsole zu Benutzerdefinierte Images im Compute-Service, und wählen Sie Image importieren aus.
-
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.
-
Klicken Sie auf Image importieren, um den Imageimport zu starten.
-
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.
-
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>
Verwandte Links
-
Serial Console-Zugriff für importierte Linux-Images aktivieren
-
Ankündigung der nativen Backend-Unterstützung für OCI Object Storage-Provider in rclone
-
Daten mit Rclone in Oracle Cloud Infrastructure Object Storage migrieren
Danksagungen
- Autor - Ricardo Malhado (Principal Cloud Solution Architect)
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.
Migrate a Red Hat Enterprise Linux Virtual Machine from Amazon Web Services to Oracle Cloud Infrastructure
F95986-01
April 2024