Note :

Migrer une machine virtuelle Red Hat Enterprise Linux d'Amazon Web Services vers Oracle Cloud Infrastructure

Présentation

La migration d'Amazon Web Services (AWS) vers Oracle Cloud Infrastructure (OCI) est une entreprise de plus en plus fréquente pour de nombreuses organisations, car OCI est un nuage de nouvelle génération qui permet aux applications d'être exécutées plus rapidement et de façon plus sécurisée, à moindre coût.

La migration de machines virtuelles est souvent un élément central d'une telle entreprise, ce qui pousse les clients à rechercher des conseils appropriés sur la façon de les migrer d'AWS vers OCI. De plus, pour de nombreuses entreprises, Linux constitue la majeure partie de leur infrastructure. Ce tutoriel est donc axé sur la migration des machines virtuelles exécutant l'une des distributions Linux les plus utilisées au monde (Red Hat Enterprise Linux) d'AWS vers OCI.

Ce tutoriel fournit aux clients des conseils sur les exigences relatives à la migration de machine virtuelle vers OCI et sur la façon de préparer et de migrer une machine virtuelle Red Hat Enterprise Linux d'AWS vers OCI, afin qu'elle puisse être lancée dans OCI en mode paravirtualisé. OCI permet également le lancement des instances en mode émulé, mais les machines virtuelles utilisant des appareils paravirtualisés offrent des performances beaucoup plus rapides que l'exécution en mode émulé, avec une performance d'E/S disque au moins six fois plus rapide.

Le processus global consiste à préparer la machine virtuelle dans AWS, à l'exporter vers Amazon Simple Storage Service (Amazon S3), à la transférer vers le stockage d'objets OCI, à créer une image personnalisée dans OCI et à lancer une instance à partir de celle-ci. Le transfert d'image entre Amazon S3 et le service de stockage d'objets d'OCI est effectué à l'aide de l'outil à code source libre rclone. Si vous essayez simplement d'utiliser des images de petite taille, vous pouvez le faire manuellement. Nous recommandons toutefois d'utiliser rclone, car le transfert d'images est beaucoup plus rapide et simple.

Objectifs

Préalables

Hypothèses

Tâche 1 : Préparer l'infrastructure de transfert de données

Ce tutoriel utilise l'architecture de transfert de données suivante :

Tâche 1.1 : Préparer les seaux de stockage d'objets Amazon S3 et OCI

Dans cette tâche, nous allons créer un seau dans :

Créez un seau dans Amazon S3 avec les propriétés suivantes :

Dans les autorisations de seau Amazon S3, attachez une liste de contrôle d'accès au seau, à l'aide de l'autorisation correspondant à la région AWS sur laquelle vous travaillez, comme illustré dans l'image suivante. Consultez les ID compte canonique propres à la région du bénéficiaire ici : Exportation d'une instance en tant que machine virtuelle à l'aide de l'importation/exportation de machine virtuelle.

Fichier joint de liste de contrôle d'accès S3

Terminez cette tâche en créant un seau dans le stockage d'objets OCI sur le niveau de stockage standard. Il s'agit du seau vers lequel vous transférerez plus tard l'image de machine virtuelle d'Amazon S3.

Tâche 1.2 : Installer et configurer Rclone

Dans cette tâche, nous installerons rclone dans une machine virtuelle s'exécutant sur OCI. Vous pouvez installer rclone sur votre machine locale si vous testez des machines virtuelles de petite taille et configurez rclone avec 2 télécommandes : Amazon S3 et le stockage d'objets OCI.

  1. Installez rclone et SSH sur la machine virtuelle Oracle Linux dans OCI.

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. Effectuez la configuration des télécommandes dans rclone. Pour ce faire, démarrez une session de configuration rclone. Exécutez la commande suivante dans la ligne de commande.

    rclone config
    
  3. Pour la configuration distante d'Amazon S3, entrez les informations suivantes.

    • Nom distant : Entrez un nom distant.
    • Type distant : Sélectionnez le type S3.
    • Fournisseur : Sélectionnez AWS.
    • access_key_id : Entrez l'ID clé d'accès associé à l'utilisateur AWS que vous avez décidé d'utiliser.
    • secret_access_key : Entrez la clé d'accès secrète correspondant à l'ID clé d'accès.
    • Région : Sélectionnez la région AWS sur laquelle vous travaillez.
    • location_constraint : Sélectionnez la contrainte d'emplacement qui correspond à la région Web Amazon sur laquelle vous travaillez. Pour certaines régions (comme Francfort), cela pourrait être vide.
    • ACL : Sélectionnez privé pour vous assurer que vous créez une liste de contrôle d'accès prédéfinie plus restreinte. Pour plus d'informations, voir LCA en conserve.
  4. Pour l'accès rclone au service de stockage d'objets OCI, ce tutoriel utilise des clés de signature d'utilisateur et d'API OCI. Vous pouvez également utiliser des groupes dynamiques. Pour plus d'informations, voir Appel de services à partir d'une instance.

    Avant de configurer le service de stockage d'objets OCI distant, nous allons :

    Pour comprendre les options d'authentification pour rclone avec le fournisseur OCI, voir Présentation de la prise en charge dorsale du fournisseur de stockage d'objets OCI natif dans rclone.

  5. Le fichier de configuration OCI est généralement stocké en tant que fichier nommé config dans le répertoire.

    ~/.oci/
    
  6. Une fois que vous avez créé les clés de signature d'API OCI et le fichier de configuration OCI, vous pouvez configurer la télécommande OCI dans rclone. Exécutez la commande suivante pour démarrer la session de configuration.

    rclone config
    
  7. Entrez les informations suivantes pour la configuration distante du service de stockage d'objets pour OCI.

    • Nom distant : Entrez un nom distant.
    • Type : Sélectionnez le service de stockage d'objets Oracle.
    • Fournisseur : Sélectionnez user_principal_auth (comme vous allez utiliser des clés de signature d'utilisateur et d'API OCI), si vous utilisez un groupe dynamique, sélectionnez instance_principal_auth.
    • Namespace : Entrez l'espace de noms de la location.
    • Compartiment : Entrez l'identificateur Oracle Cloud (OCID) du compartiment du seau OCI.
    • Région : Entrez la région dans laquelle vous travaillez dans OCI.
    • Point d'extrémité : Laissez vide ou entrez le point d'extrémité dans le format suivant : https://<namespace>.objectstorage.<region-code>.oci.customer-oci.com/n/<namespace>.
  8. Vérifiez le fichier de configuration distant rclone à l'aide de la commande suivante.

    cat ~/.config/rclone/rclone.conf
    

Tâche 2 : Préparer le volume de démarrage de la machine virtuelle source

Tâche 2.1 : Effectuer un instantané obligatoire du volume de démarrage de machine virtuelle AWS

Effectuez un instantané du volume de démarrage de la machine virtuelle AWS. Cette opération est obligatoire avant de démarrer une activité de configuration de volume de démarrage.

Tâche 2.2 : Activer la console série

Les connexions à la console série permettent à un utilisateur de dépanner une machine virtuelle, en effectuant des activités telles que la modification des fichiers de configuration système et la réinitialisation des mots de passe. En général, pour préparer une machine virtuelle pour la console série, le fichier de chargement de démarrage GRUB doit être configuré. Ce fichier se trouve dans /etc/default/grub.

Les paramètres de configuration GRUB les plus importants sont :

- 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. Ouvrez /etc/default/grub.

    sudo vi /etc/default/grub
    

    Modifiez le fichier de sorte qu'il ressemble au fichier affiché dans l'image suivante.

    Modification grub

  2. Après avoir modifié le fichier, exécutez la commande suivante pour vous assurer que le chargeur de démarrage GRUB est correctement mis à jour.

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

Tâche 2.3 : Vérifier les inducteurs de paravirtualisation

Pour importer une machine virtuelle dans OCI afin qu'elle puisse être lancée en mode paravirtualisé, les pilotes VirtIO de paravirtualisation doivent être présents dans l'image. Dans cette tâche, nous vérifierons à la fois le noyau et le système de fichiers temporaires initramfs pour confirmer la présence des pilotes. Notez que les systèmes d'exploitation Linux exécutant la version 3.4 du noyau ou les versions ultérieures prennent en charge les pilotes paravirtualisés; par conséquent, souvent, il vous suffit de vérifier et de confirmer qu'ils sont présents.

Le jeu minimal de pilotes VirtIO requis comprend pci, scsi. Ces pilotes doivent être présents dans le noyau ou dans les initramfs.

  1. Vérifiez le noyau de la machine virtuelle AWS à l'aide de la commande suivante.

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

    vérifier le noyau

    Note : Le pilote pci VirtIO est présent dans le noyau.

  2. Vérifiez le noyau de la machine virtuelle AWS à l'aide de la commande suivante.

    sudo lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
    

    voir initramfs

    Note : Le pilote scsi VirtIO est présent dans initramfs.

  3. Si le volume de démarrage de votre machine virtuelle ne contient pas les pilotes, vous devrez recréer les initramfs avec dracut.

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

Tâche 2.4 : Configurer les paramètres de réseau

Pour la configuration du réseau, assurez-vous :

Il existe plusieurs façons d'effectuer la configuration réseau sous Linux. Plus précisément dans RHEL, la configuration des connexions Ethernet peut être effectuée soit en modifiant les fichiers de configuration de réseau dans /etc/sysconfig/network-scripts/ifcfg-eth0, soit en utilisant NetworkManager. Ce tutoriel utilise ce dernier pour effectuer la configuration réseau nécessaire. Pour plus d'informations, voir Configuration d'une connexion Ethernet.

  1. Exécutez l'outil de ligne de commande NetworkManager (nmcli) pour voir un sommaire de la configuration de réseau de la machine virtuelle.

    sommaire de configuration de réseau

  2. Pour lister les connexions disponibles dans la machine virtuelle, exécutez la commande suivante.

    nmcli connection show
    

    Vous trouverez une liste des connexions. La machine virtuelle utilisée dans ce tutoriel comporte les connexions suivantes.

    vérifier les connexions

  3. Confirmez la connexion Ethernet associée à eth0 à l'aide du protocole DHCP (Dynamic Host Configuration Protocol).

    nmcli connection show <connection UUID>
    

    Faites défiler jusqu'à ce que vous trouviez le paramètre ipv4.method. Il doit avoir la valeur auto.

    Confirmer DHCP

  4. Modifiez la connexion associée à l'interface eth0. Vous allez supprimer l'adresse MAC de la configuration de l'interface à l'aide de la commande suivante.

    sudo nmcli connection modify <connection UUID> 802-3-ethernet.mac-address ''
    
  5. Appliquez ces modifications à l'aide de la commande suivante.

    sudo nmcli con up <connection UUID>
    
  6. En outre, vérifiez le répertoire /etc/udev/rules pour voir s'il existe des fichiers de règles udev contenant des règles codées en dur d'adresse MAC et supprimez-les. L'image AWS utilisée dans ce tutoriel contient l'un de ces fichiers 70-persistent-net.rules. Exécutez la commande suivante pour supprimer ce fichier.

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

La configuration du réseau est maintenant terminée. Vous pouvez confirmer en vérifiant le fichier /etc/sysconfig/network-scripts/ifcfg-eth0.

Tâche 3 : Exporter l'image de machine virtuelle vers Amazon S3

Cette tâche nécessite l'utilisation de l'interface de ligne de commande AWS. Ce tutoriel utilise AWS CloudShell, car il ignore les tâches de configuration de l'interface de ligne de commande AWS.

  1. Arrêtez la VM. Ouvrez AWS CloudShell et exécutez la commande suivante pour exporter l'image.

    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. Entrez les informations suivantes .

    • Format d'image de disque : Entrez VMDK, car il s'agit du seul format d'exportation AWS pris en charge par OCI.
    • Format de conteneur : Entrez OVA pour combiner l'image de disque avec les métadonnées sur la machine virtuelle. Vous pouvez également exporter ce paramètre.
    • Environnement cible : Entrez vmware, car il s'agit du seul environnement cible pris en charge dans OCI.
  3. Vous pouvez surveiller l'état de la tâche d'exportation en exécutant la commande suivante dans AWS CloudShell.

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

    Lorsque vous lancez la tâche pour la première fois, elle se trouve à l'état actif. Une fois qu'il est terminé, vous le trouverez à l'état Terminé.

Tâche 4 : Transférer l'image vers le stockage d'objets OCI

Accédez par SSH à la machine virtuelle OCI dans laquelle rclone a été configuré dans la tâche 1.2. Effectuez la copie de l'image exportée du seau AWS S3 vers le seau de stockage d'objets OCI.

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

Tâche 5 : Créer une image personnalisée dans OCI et lancer l'instance

  1. Dans la console OCI, allez à Images personnalisées dans le service de calcul et sélectionnez Importer l'image

  2. Entrez les informations suivantes .

    • Compartiment : Sélectionnez le compartiment où créer l'image personnalisée.
    • Nom : Entrez le nom de l'image personnalisée.
    • Système d'exploitation : Sélectionnez RHEL.
    • Source : Importation à partir d'un seau du service de stockage d'objets. Sélectionnez le seau que vous avez configuré dans la tâche 1.1.
    • Nom de l'objet : Sélectionnez l'image que vous avez transférée depuis Amazon S3.
    • Mode de lancement : Sélectionnez le mode paravirtualisé.
  3. Cliquez sur Importer l'image pour lancer l'importation de l'image.

  4. Une fois l'image créée, vous êtes prêt à lancer une instance à partir de celle-ci. Dans la page des détails de l'image personnalisée, sélectionnez Créer une instance et entrez les informations suivantes.

    • Nom : Entrez le nom de l'instance.
    • Compartiment : Sélectionnez le compartiment où lancer l'instance.
    • Domaine de disponibilité.
    • VCN et sous-réseau. Aux fins de ce tutoriel, vous pouvez utiliser un sous-réseau public pour ignorer la connectivité RPV.
    • Clés SSH : Vous disposez de deux options : générer de nouvelles clés SSH ou utiliser le même jeu de clés que celui que vous avez utilisé dans AWS. Si vous souhaitez continuer à utiliser le même jeu de clés, chargez la même clé publique que celle que vous avez utilisée dans AWS pour la machine virtuelle source. En supposant que votre clé publique AWS soit au format de clé .pem, remplacez-la par .pem.pub afin de la charger dans l'instance OCI. Cela vous permettra de continuer à utiliser la même clé privée pour SSH dans la machine virtuelle.
  5. Lancez la machine virtuelle. Une fois le provisionnement terminé, vous pouvez vous y connecter. Notez que l'utilisateur avec lequel vous êtes connecté est ec2-user et non opc.

    ssh -i pathToKey/keyfile ec2-user@<publicIp>
    

Confirmation

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.