Nota

Migra una Virtual Machine Ubuntu 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.

Le migrazioni delle macchine virtuali (VM) sono 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 di macchine virtuali che eseguono la distribuzione Linux (Ubuntu) più ampiamente utilizzata 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 Ubuntu 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 (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.

Per ulteriori informazioni sul processo di importazione di immagini personalizzate in OCI, vedere Importazione di immagini Linux personalizzate.

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 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. L'immagine della piattaforma AWS Ubuntu richiede la configurazione non solo nel file /etc/default/grub ma anche nel file /etc/default/grub.d/50-cloudimg-settings.cfg. Quest'ultimo file viene modificato dal processo di creazione dell'immagine cloud e sostituisce la configurazione 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.d/50-cloudimg-settings.cfg.

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

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

    Modifica 50-cloudimg-settings.cfg

  2. 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

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

    sudo update-grub
    

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 e 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 lsinitramfs /boot/initrd.img-$(uname -r) | 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. Canonical ha sviluppato la utility Netplan come metodo per semplificare questa attività. In questa esercitazione viene utilizzato Netplan, ma in alternativa è possibile modificare i file di configurazione di rete, se lo si desidera.

  1. L'immagine della piattaforma AWS Ubuntu specifica la configurazione Netplan nel file /etc/netplan/50-cloud-init.yaml. Aprire il file con l'autorizzazione sudo per poterlo modificare.

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

    Troverai un file di configurazione come mostrato nella seguente immagine.

    controllo file di configurazione netplan

  2. Modificare il file, rimuovere l'indirizzo mac e la corrispondenza del nome dell'interfaccia in base all'indirizzo mac. La configurazione dovrebbe essere simile a quella mostrata nella seguente immagine.

    modifica file di configurazione del piano di rete

  3. Eseguire il comando apply di Netplan per aggiornare e completare la configurazione di rete.

    sudo netplan apply
    

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

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

  1. Arrestare la macchina virtuale. 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
    

    Quando si avvia il task per la prima volta, lo si trova nello stato Attivo. Al termine, lo stato verrà visualizzato nello stato Completato.

Task 4: Trasferisci immagine in OCI Object Storage

SSH nella virtual machine OCI in cui rclone è stato configurato nel task 1.2. Esegui la copia dell'immagine esportata dal bucket Amazon S3 al 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 Ubuntu.
    • 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 è ubuntu, non opc.

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