Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
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
-
Prepara una VM Ubuntu in AWS per la migrazione a OCI.
-
Esporta la VM preparata come immagine in Amazon S3.
-
Trasferisci l'immagine in OCI e crea un'istanza da essa.
Prerequisiti
-
Accesso a un account AWS che può creare o che dispone già di chiavi API e che ha accesso a S3 e EC2.
-
Accesso a una tenancy e a un compartimento OCI per la migrazione delle immagini e l'avvio dell'istanza.
-
Criteri di Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) per:
- Consenti l'accesso a OCI Object Storage.
- Eseguire il provisioning di una VM in OCI (per la VM rclone e le VM basate su immagini personalizzate).
- Consenti creazione di chiavi API OCI.
Presupposti
-
VM AWS di cui è stato eseguito il provisioning con chiave pubblica
pem
. -
La VM AWS Ubuntu ha solo 1 volume: il suo volume di avvio.
-
L'immagine AWS è esportabile; l'immagine Amazon Machine (AMI) utilizzata in questo tutorial è l'immagine della piattaforma AWS per Ubuntu 22.04 a marzo 2024.
-
Operazioni della riga di comando AWS eseguite su AWS Cloud Shell. In alternativa, puoi utilizzare lo strumento CLI AWS.
-
VM Oracle Linux di cui è stato eseguito il provisioning in OCI con connettività SSH ad Amazon S3. Si tratta della VM in cui installare e configurare rclone per il trasferimento di immagini tra Amazon S3 e storage degli oggetti OCI.
Task 1: Prepara infrastruttura di trasferimento dati
Questa esercitazione utilizza la seguente architettura di trasferimento dati:
-
Trasferimento di immagini tramite Internet tra Amazon S3 e OCI Object Storage eseguito da rclone. Per una distribuzione di livello produzione, si consiglia l'uso di Oracle Cloud Infrastructure Site-to-Site VPN o FastConnect. Per ulteriori informazioni, consulta Connessione VPN ad AWS e FastConnect.
-
Rclone configurato con l'autenticazione del principal utente per l'accesso sicuro ad Amazon S3 e allo storage degli oggetti OCI.
Task 1.1: preparare i bucket di storage degli oggetti Amazon S3 e OCI
In questo task verrà creato un bucket in:
- Amazon S3 per le immagini da esportare.
- Storage degli oggetti OCI per memorizzare le immagini del disco VM trasferite da Amazon S3.
Crea un bucket in Amazon S3 con le seguenti proprietà:
- liste di controllo dell'accesso (ACL) abilitate. Dovremo allegare un ACL personalizzato per consentire l'esportazione di un'immagine su Amazon S3.
- Blocca tutti gli accessi pubblici.
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.
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.
-
Installare rclone e SSH nella VM Oracle Linux in OCI.
sudo -v ; curl https://rclone.org/install.sh | sudo bash
-
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
-
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.
-
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.
-
-
Il file di configurazione OCI viene in genere memorizzato come file denominato
config
nella directory.~/.oci/
-
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
-
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, selezionareinstance_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>
.
-
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".
-
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.
-
Aprire
/etc/default/grub
.sudo vi /etc/default/grub
Modificare il file in modo che abbia l'aspetto del file mostrato nella seguente immagine.
-
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.
-
Controllare il kernel della VM AWS utilizzando il seguente comando.
sudo grep -i virtio /boot/config-$(uname -r)
Nota: il driver
pci
VirtIO è presente nel kernel. -
Controllare il kernel della VM AWS utilizzando il seguente comando.
sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
Nota: il driver
scsi
VirtIO è presente in initramfs. -
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.
- La VM utilizza DHCP.
- Tutti i riferimenti non modificabili dell'indirizzo MAC nella configurazione di rete vengono rimossi.
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.
-
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.
-
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.
-
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.
-
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>
-
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.
-
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
-
Nella console OCI, andare a Immagini personalizzate nel servizio di computazione e selezionare Importa immagine.
-
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.
-
Fare clic su Importa immagine per avviare l'importazione dell'immagine.
-
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.
-
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>
Collegamenti correlati
-
Esportazione di un'istanza come VM mediante l'importazione/esportazione di VM
-
Abilitazione dell'accesso alla console seriale per le immagini Linux importate
-
Risoluzione dei problemi delle istanze mediante le connessioni della console delle istanze
-
Annuncio del supporto backend del provider di storage degli oggetti OCI nativo in rclone
-
Sposta i dati nello storage degli oggetti nel cloud utilizzando rclone
-
Eseguire la migrazione dei dati in Oracle Cloud Infrastructure Object Storage utilizzando Rclone
Conferme
- Autore - Ricardo Malhado (Principal Cloud Solution Architect)
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.
Migrate an Ubuntu Virtual Machine from Amazon Web Services to Oracle Cloud Infrastructure
F95784-01
March 2024