Nota

Migrazione di una macchina virtuale Red Hat Enterprise Linux da Amazon Web Services a Oracle Cloud Infrastructure

Introduzione

La migrazione da Amazon Web Services (AWS) a Oracle Cloud Infrastructure (OCI) è un'attività sempre più frequente per molte organizzazioni, poiché OCI è un cloud di nuova generazione che consente alle applicazioni di essere eseguite più velocemente e in modo più sicuro, a costi inferiori.

La migrazione alle Virtual Machine (VM) è spesso una parte fondamentale di tale sforzo, portando i clienti a cercare linee guida appropriate su come migrarle da AWS a OCI. Inoltre, per molte organizzazioni, Linux costituisce la maggior parte della loro infrastruttura. Questo tutorial, quindi, si concentra sulla migrazione delle Virtual Machine che eseguono una delle distribuzioni Linux più utilizzate al mondo (Red Hat Enterprise Linux) da AWS a OCI.

Questa esercitazione fornisce ai clienti indicazioni sui requisiti per la migrazione delle virtual machine a OCI e su come preparare e migrare una VM Red Hat Enterprise Linux da AWS a OCI, in modo che possa essere avviata in OCI in modalità pseudo-virtualizzata. OCI consente anche di avviare le istanze in modalità emulata, ma le VM che utilizzano dispositivi pseudo-virtualizzati offrono prestazioni molto più veloci rispetto all'esecuzione in modalità emulata, con prestazioni di I/O su disco almeno sei volte più veloci.

Il processo complessivo consiste nel preparare la VM in AWS, esportarla in Amazon Simple Storage Service (Amazon S3), trasferirla in OCI Object Storage, creare un'immagine personalizzata in OCI e avviare un'istanza da essa. Il trasferimento delle immagini tra Amazon S3 e OCI Object Storage viene eseguito utilizzando lo strumento open source rclone, se stai solo sperimentando immagini di piccole dimensioni, puoi farlo manualmente. Tuttavia, si consiglia di utilizzare la funzione rclone, in quanto rende il trasferimento delle immagini un processo molto più rapido e semplice.

Obiettivi

Prerequisiti

Presupposti

Task 1: Prepara infrastruttura di trasferimento dati

Questa esercitazione utilizza la seguente architettura di trasferimento dati:

Task 1.1: preparare i bucket di storage degli oggetti Amazon S3 e OCI

In questo task verrà creato un bucket in:

Crea un bucket in Amazon S3 con le seguenti proprietà:

Nelle autorizzazioni del bucket Amazon S3, collegare un ACL al bucket utilizzando la concessione corrispondente all'area AWS su cui si sta lavorando, come mostrato nell'immagine seguente. Consultare gli ID degli account canonici specifici dell'area di assegnazione qui: Esportazione di un'istanza come VM mediante l'importazione/esportazione di VM.

S3 Allegato ACL

Terminare questo task creando un bucket nello storage degli oggetti OCI nel livello di storage standard. Questo è il bucket in cui verrà successivamente trasferita l'immagine della VM da Amazon S3.

Task 1.2: Installa e configura Rclone

In questo task, verrà installata rclone in una VM in esecuzione su OCI. Puoi installare rclone sul tuo computer locale se stai sperimentando VM di piccole dimensioni e configura rclone con 2 telecomandi: Amazon S3 e OCI Object Storage.

  1. Installare rclone e SSH nella VM Oracle Linux in OCI.

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. Eseguire la configurazione dei telecomandi in rclone. Questa operazione viene eseguita avviando una sessione di configurazione rclone. Eseguire il comando seguente dalla riga di comando.

    rclone config
    
  3. Per la configurazione remota di Amazon S3, immettere le seguenti informazioni.

    • Nome remoto: immettere un nome remoto.
    • Tipo remoto: selezionare il tipo S3.
    • Provider: selezionare AWS.
    • access_key_id: immettere l'ID della chiave di accesso associato all'utente AWS che si è deciso di utilizzare.
    • secret_access_key: immettere la chiave di accesso segreta corrispondente all'ID della chiave di accesso.
    • Area: selezionare l'area AWS a cui si sta lavorando.
    • location_constraint: selezionare il vincolo di posizione corrispondente all'area Web Amazon su cui si sta lavorando. Per alcune regioni (come Francoforte), questo potrebbe essere vuoto.
    • acl: selezionare privato per assicurarsi di creare la lista ACL predefinita più limitata. Per ulteriori informazioni, vedere ACL acquisita.
  4. Per l'accesso rclone allo storage degli oggetti OCI, questa esercitazione utilizza un utente OCI e chiavi di firma API. In alternativa, è possibile utilizzare i gruppi dinamici. Per ulteriori informazioni, vedere Chiamata di servizi da un'istanza.

    Prima di configurare lo storage degli oggetti OCI remoto, effettuare le operazioni riportate di seguito.

    • Crea chiavi di firma API OCI per eseguire l'autenticazione in OCI Object Storage ed eseguire il trasferimento dei dati dell'immagine. Per creare le chiavi di firma API e prendere nota della directory in cui memorizzare le chiavi nella VM perché sarà necessario fornirle nel file di configurazione OCI, vedere Come generare una chiave di firma API.

    • Creare un file di configurazione OCI. Questo file di configurazione richiede le chiavi di firma API OCI. Per ulteriori informazioni, vedere File di configurazione SDK e CLI.

    Per comprendere le opzioni di autenticazione per rclone con il provider OCI, vedere Annuncio del supporto backend del provider di storage degli oggetti OCI nativo in rclone.

  5. Il file di configurazione OCI viene in genere memorizzato come file denominato config nella directory.

    ~/.oci/
    
  6. Dopo aver creato le chiavi di firma API OCI e il file di configurazione OCI, puoi configurare il telecomando OCI in rclone. Eseguire il comando seguente per avviare la sessione di configurazione.

    rclone config
    
  7. Immettere le informazioni riportate di seguito per la configurazione remota dello storage degli oggetti OCI.

    • Nome remoto: immettere un nome remoto.
    • Tipo: selezionare Oracle Object Storage.
    • Provider: selezionare user_principal_auth (poiché si utilizzerà un utente OCI e le chiavi di firma API), se si utilizza un gruppo dinamico, selezionare instance_principal_auth.
    • Spazio di nomi: immettere lo spazio di nomi della tenancy.
    • Compartimento: immettere l'OCID (OCID, Oracle Cloud Identifier) del compartimento bucket OCI.
    • Area: immettere l'area in cui si lavora in OCI.
    • Endpoint: lasciare vuoto il campo o immettere l'endpoint nel seguente formato: https://<namespace>.objectstorage.<region-code>.oci.customer-oci.com/n/<namespace>.
  8. Controllare il file di configurazione remoto rclone utilizzando il comando seguente.

    cat ~/.config/rclone/rclone.conf
    

Task 2: preparare il volume di avvio della VM di origine

Task 2.1: eseguire uno snapshot obbligatorio del volume di avvio VM AWS

Eseguire uno snapshot del volume di avvio VM AWS. Questa opzione è obbligatoria prima di avviare qualsiasi attività di configurazione del volume di avvio.

Task 2.2: Abilita console seriale

Le connessioni alla console seriale consentono a un utente di risolvere i problemi di una VM, eseguendo attività quali la modifica dei file di configurazione del sistema e le reimpostazioni della password. In genere, per preparare una VM per la console seriale, è necessario configurare il file del boot loader GRUB. Questo file risiede in /etc/default/grub.

Di seguito sono riportati i parametri di configurazione più importanti per GRUB.

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

    sudo vi /etc/default/grub
    

    Modificare il file in modo che abbia l'aspetto del file mostrato nella seguente immagine.

    Modifica grub

  2. Dopo aver modificato il file, eseguire il comando seguente per accertarsi che il boot loader GRUB venga aggiornato in modo adeguato.

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

Task 2.3: Controllo dei driver di pseudo-virtualizzazione

Per importare una VM in OCI in modo che possa essere avviata in modalità di pseudo-virtualizzazione, è necessario che i driver VirtIO di paravirtualizzazione siano presenti nell'immagine. In questo compito, controlleremo sia il kernel che il file system temporaneo initramfs per confermare la presenza dei driver. Si noti che i sistemi operativi basati su Linux che eseguono il kernel versione 3.4 o successiva supportano driver pseudo-virtualizzati; quindi, spesso è sufficiente controllare e confermare che sono presenti.

Il set minimo di driver VirtIO necessario include pci, scsi. Questi driver devono essere presenti nel kernel o in initramfs.

  1. Controllare il kernel della VM AWS utilizzando il seguente comando.

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

    controllo del kernel

    Nota: il driver pci VirtIO è presente nel kernel.

  2. Controllare il kernel della VM AWS utilizzando il seguente comando.

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

    check initramfs

    Nota: il driver scsi VirtIO è presente in initramfs.

  3. Se il volume di avvio della VM non dispone dei driver, sarà necessario ricreare l'initramfs con dracut.

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

Task 2.4: Configurare le impostazioni di Networking

Per la configurazione di rete, accertarsi di quanto indicato di seguito.

Esistono diversi modi per eseguire la configurazione di rete su Linux. In particolare in RHEL, la configurazione delle connessioni Ethernet può essere eseguita modificando i file di configurazione di rete in /etc/sysconfig/network-scripts/ifcfg-eth0 o utilizzando NetworkManager. Questa esercitazione utilizza quest'ultima per eseguire la configurazione di rete necessaria. Per maggiori informazioni, vedere Configuring an Ethernet connection.

  1. Eseguire lo strumento della riga di comando NetworkManager (nmcli) per visualizzare un riepilogo della configurazione di rete della VM.

    riepilogo configurazione di rete

  2. Per elencare le connessioni disponibili nella VM, eseguire il comando seguente.

    nmcli connection show
    

    Troverete un elenco di connessioni. La VM utilizzata in questa esercitazione dispone delle seguenti connessioni.

    controllare le connessioni

  3. Confermare la connessione Ethernet associata a eth0 utilizzando il protocollo DHCP (Dynamic Host Configuration Protocol).

    nmcli connection show <connection UUID>
    

    Scorrere fino a trovare il parametro ipv4.method. Deve avere il valore auto.

    Conferma DHCP

  4. Modificare la connessione associata all'interfaccia eth0. L'indirizzo MAC verrà rimosso dalla configurazione dell'interfaccia utilizzando il comando seguente.

    sudo nmcli connection modify <connection UUID> 802-3-ethernet.mac-address ''
    
  5. Applicare le modifiche con il comando seguente.

    sudo nmcli con up <connection UUID>
    
  6. Inoltre, controllare la directory /etc/udev/rules per verificare se sono presenti file di regole udev contenenti regole non modificabili dell'indirizzo MAC ed eliminarle. L'immagine AWS utilizzata in questo tutorial ha uno di questi file 70-persistent-net.rules. Per eliminare questo file, eseguire il comando seguente.

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

La configurazione di rete è stata completata. È possibile confermare controllando il file /etc/sysconfig/network-scripts/ifcfg-eth0.

Task 3: Esportare l'immagine della macchina virtuale su Amazon S3

Questo task richiede l'uso dell'interfaccia CLI AWS. Questa esercitazione utilizza AWS CloudShell, poiché ignora i task di configurazione dell'interfaccia CLI AWS.

  1. Arresto della VM. Aprire AWS CloudShell ed eseguire il comando seguente per esportare l'immagine.

    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. Immettere le informazioni riportate di seguito.

    • Formato immagine disco: immettere VMDK, in quanto è l'unico formato di esportazione AWS supportato da OCI.
    • Formato contenitore: immettere OVA per combinare l'immagine del disco con i metadati relativi alla VM. In alternativa, è possibile esportare questo parametro.
    • Ambiente di destinazione: immettere vmware, in quanto è l'unico ambiente di destinazione supportato in OCI.
  3. Puoi monitorare lo stato del task di esportazione eseguendo il seguente comando in AWS CloudShell.

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

    La prima volta che si avvia il task, lo si trova nello stato attivo. Al termine, lo stato del file sarà completato.

Task 4: Trasferisci immagine in OCI Object Storage

SSH nella VM OCI in cui rclone è stato configurato nel task 1.2. Eseguire la copia dell'immagine esportata dal bucket AWS S3 nel bucket di storage degli oggetti OCI.

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

Task 5: Creare un'immagine personalizzata in OCI e avviare l'istanza

  1. Nella console OCI, andare a Immagini personalizzate nel servizio di computazione e selezionare Importa immagine

  2. Immettere le informazioni riportate di seguito.

    • Compartimento: selezionare il compartimento in cui si desidera creare l'immagine personalizzata.
    • Nome: immettere il nome dell'immagine personalizzata.
    • Sistema operativo: selezionare RHEL.
    • Origine: esegue l'importazione da un bucket di storage degli oggetti. Selezionare il bucket configurato nel task 1.1.
    • Nome oggetto: selezionare l'immagine trasferita da Amazon S3.
    • Modalità di avvio: selezionare la modalità di paravirtualizzazione.
  3. Fare clic su Importa immagine per avviare l'importazione dell'immagine.

  4. Una volta creata l'immagine, è possibile avviare un'istanza da essa. Nella pagina Dettagli immagine personalizzata, selezionare Crea istanza e immettere le informazioni riportate di seguito.

    • Nome: immettere il nome per l'istanza.
    • Compartimento: selezionare il compartimento in cui si desidera avviare l'istanza.
    • Dominio di disponibilità.
    • VCN e subnet. Ai fini di questo tutorial è possibile utilizzare una subnet pubblica per saltare la connettività VPN.
    • Chiavi SSH: sono disponibili due opzioni: generare nuove chiavi SSH o utilizzare lo stesso set di chiavi utilizzato in AWS. Se si desidera continuare a utilizzare lo stesso set di chiavi, caricare la stessa chiave pubblica utilizzata in AWS per la VM di origine. Supponendo che la chiave pubblica AWS sia nel formato chiave .pem, modificarla in .pem.pub per caricarla nell'istanza OCI. Ciò consentirà di continuare a utilizzare la stessa chiave privata per SSH nella VM.
  5. Avviare la virtual machine. Al termine del provisioning, è possibile connettersi ad esso. Si noti che l'utente con cui ci si connette è ec2-user, non opc.

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

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.