Note:

Migración de una máquina virtual Red Hat Enterprise Linux de Amazon Web Services a Oracle Cloud Infrastructure

Introducción

La migración de Amazon Web Services (AWS) a Oracle Cloud Infrastructure (OCI) es un esfuerzo cada vez más frecuente para muchas organizaciones, ya que OCI es una nube de última generación que permite que las aplicaciones se ejecuten de forma más rápida y segura, por menos.

La migración de máquinas virtuales (VM) suele ser una parte fundamental de este esfuerzo, lo que lleva a los clientes a buscar la orientación adecuada sobre cómo migrarlas de AWS a OCI. Además, para muchas organizaciones, Linux constituye la mayor parte de su infraestructura. Este tutorial, por lo tanto, se centra en la migración de máquinas virtuales que ejecutan una de las distribuciones de Linux más utilizadas en el mundo (Red Hat Enterprise Linux) de AWS a OCI.

En este tutorial se proporciona a los clientes orientación sobre los requisitos para la migración de máquinas virtuales a OCI y cómo preparar y migrar una máquina virtual de Red Hat Enterprise Linux de AWS a OCI, para que se pueda iniciar en OCI en modo paravirtualizado. OCI también permite iniciar instancias en modo emulado, pero las máquinas virtuales que utilizan dispositivos paravirtualizados proporcionan un rendimiento mucho más rápido en comparación con la ejecución en modo emulado, con un rendimiento de E/S de disco al menos seis veces más rápido.

El proceso general consiste en preparar la máquina virtual en AWS, exportarla al servicio Amazon Simple Storage Service (Amazon S3), transferirla a OCI Object Storage, crear una imagen personalizada en OCI e iniciar una instancia desde ella. La transferencia de imágenes entre Amazon S3 y OCI Object Storage se realiza mediante la herramienta de código abierto rclone, si solo está experimentando con imágenes de tamaño pequeño, puede hacerlo manualmente. Sin embargo, recomendamos utilizar rclone, ya que hace que la transferencia de imágenes sea un proceso mucho más rápido y sencillo.

Objetivos

Requisitos

Suposiciones

Tarea 1: Preparación de la infraestructura de transferencia de datos

En este tutorial se utiliza la siguiente arquitectura de transferencia de datos:

Tarea 1.1: Preparación de cubos de Amazon S3 y OCI Object Storage

En esta tarea, crearemos un cubo en:

Cree un cubo en Amazon S3 con las siguientes propiedades:

En los permisos de cubo de Amazon S3, asocie una ACL al cubo mediante el permiso que coincida con la región de AWS en la que está trabajando, como se muestra en la siguiente imagen. Consulte los ID de cuenta canónicos específicos de la región de usuario con privilegios aquí: Exportación de una instancia como VM mediante la importación/exportación de VM.

Anexo de ACL S3

Para finalizar esta tarea, cree un cubo en OCI Object Storage en el nivel de almacenamiento estándar. Este es el cubo al que transferirá posteriormente la imagen de máquina virtual de Amazon S3.

Tarea 1.2: Instalación y configuración de Rclone

En esta tarea, instalaremos rclone en una máquina virtual que se ejecute en OCI. Puede instalar rclone en la máquina local si está experimentando con máquinas virtuales de pequeño tamaño y configurar rclone con 2 controles remotos: Amazon S3 y OCI Object Storage.

  1. Instale rclone y SSH en la máquina virtual de Oracle Linux en OCI.

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. Realice la configuración de controles remotos en rclone. Para ello, inicie una sesión de configuración de rclone. Ejecute el siguiente comando en la línea de comandos.

    rclone config
    
  3. Para la configuración remota de Amazon S3, introduzca la siguiente información.

    • Nombre Remoto: Introduzca un nombre remoto.
    • Tipo remoto: seleccione el tipo S3.
    • Proveedor: seleccione AWS.
    • access_key_id: introduzca el ID de clave de acceso asociado al usuario de AWS que ha decidido utilizar.
    • secret_access_key: introduzca la clave de acceso secreta que coincide con el ID de la clave de acceso.
    • Región: seleccione la región de AWS en la que está trabajando.
    • location_constraint: seleccione la restricción de ubicación que coincida con la región web de Amazon en la que está trabajando. Para algunas regiones (como Frankfurt), esto podría estar vacío.
    • acl: seleccione privado para asegurarse de que está creando la ACL predefinida más restringida. Para obtener más información, consulte Canned ACL.
  4. Para el acceso de clonación a OCI Object Storage, este tutorial utiliza un usuario de OCI y claves de firma de API. También puede utilizar grupos dinámicos. Para obtener más información, consulte Llamada a servicios desde una instancia.

    Antes de configurar el control remoto de OCI Object Storage, haremos lo siguiente:

    • Cree claves de firma de API de OCI para que rclone se autentique en OCI Object Storage y realice la transferencia de datos de imagen. Para crear las claves de firma de API y tomar nota del directorio en el que almacena las claves en la máquina virtual porque tendrá que proporcionarlo en el archivo de configuración de OCI, consulte Cómo generar una clave de firma de API.

    • Crear un archivo de configuración de OCI. Este archivo de configuración necesita las claves de firma de la API de OCI. Para obtener más información, consulte Archivo de configuración de SDK y CLI.

    Para comprender las opciones de autenticación para rclone con el proveedor de OCI, consulte Presentación del soporte de backend del proveedor de OCI Object Storage nativo en rclone.

  5. El archivo de configuración de OCI se almacena normalmente como un archivo con nombre config en el directorio.

    ~/.oci/
    
  6. Una vez que haya creado las claves de firma de API de OCI y el archivo de configuración de OCI, puede configurar el control remoto de OCI en rclone. Ejecute el siguiente comando para iniciar la sesión de configuración.

    rclone config
    
  7. Introduzca la siguiente información para la configuración remota de OCI Object Storage.

    • Nombre remoto: introduzca un nombre remoto.
    • Tipo: seleccione Oracle Object Storage.
    • Proveedor: seleccione user_principal_auth (como utilizará un usuario de OCI y claves de firma de API), si utiliza un grupo dinámico, seleccione instance_principal_auth.
    • Espacio de nombres: introduzca el espacio de nombres de arrendamiento.
    • Compartimento: introduzca el identificador de Oracle Cloud (OCID) del compartimento de cubo de OCI.
    • Región: introduzca la región en la que está trabajando en OCI.
    • Punto final: déjelo en blanco o introduzca el punto final con este formato: https://<namespace>.objectstorage.<region-code>.oci.customer-oci.com/n/<namespace>.
  8. Compruebe el archivo de configuración remota rclone con el siguiente comando.

    cat ~/.config/rclone/rclone.conf
    

Tarea 2: Preparación del volumen de inicio de la máquina virtual de origen

Tarea 2.1: Realizar una instantánea obligatoria del volumen de inicio de VM de AWS

Realice una instantánea del volumen de inicio de la máquina virtual de AWS. Esto es obligatorio antes de iniciar cualquier actividad de configuración de volumen de inicio.

Tarea 2.2: Activación de la consola serie

Las conexiones de consola serie permiten al usuario solucionar problemas de una máquina virtual, realizando actividades como la edición de archivos de configuración del sistema y el restablecimiento de contraseñas. Normalmente, para preparar una máquina virtual para la consola serie, se debe configurar el archivo del cargador de inicio GRUB. Este archivo se encuentra en /etc/default/grub.

Los parámetros de configuración de GRUB más importantes son:

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

    sudo vi /etc/default/grub
    

    Edite el archivo para que se parezca al que se muestra en la siguiente imagen.

    Edición de grub

  2. Después de editar el archivo, ejecute el siguiente comando para asegurarse de que el cargador de inicio de GRUB se haya actualizado correctamente.

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

Tarea 2.3: Comprobación de controladores de paravirtualización

Para importar una máquina virtual a OCI para que se pueda iniciar en modo paravirtualizado, los controladores VirtIO de paravirtualización deben estar presentes en la imagen. En esta tarea, comprobaremos tanto el núcleo como el sistema de archivos temporales initramfs para confirmar la presencia de los controladores. Tenga en cuenta que los sistemas operativos basados en Linux que ejecutan la versión 3.4 del núcleo o posterior soportan controladores paravirtualizados; por lo tanto, a menudo solo necesita comprobar y confirmar que están presentes.

El juego mínimo de controladores VirtIO necesarios incluye pci, scsi. Estos controladores deben estar presentes en el núcleo o en initramfs.

  1. Compruebe el núcleo de la VM de AWS con el siguiente comando.

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

    comprobar núcleo

    Nota: El controlador pci VirtIO está presente en el núcleo.

  2. Compruebe el núcleo de la VM de AWS con el siguiente comando.

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

    comprobar initramfs

    Nota: El controlador scsi VirtIO está presente en initramfs.

  3. Si el volumen de inicio de la máquina virtual no tiene los controladores, deberá volver a crear los initramfs con dracut.

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

Tarea 2.4: Configuración de los valores de red

Para la configuración de red, asegúrese de:

Hay varias formas de realizar la configuración de red en Linux. Específicamente en RHEL, la configuración de conexiones Ethernet se puede realizar mediante la edición de archivos de configuración de red en /etc/sysconfig/network-scripts/ifcfg-eth0 o mediante NetworkManager. En este tutorial se utiliza este último para realizar la configuración de red necesaria. Para obtener más información, consulte Configuring an Ethernet connection.

  1. Ejecute la herramienta de línea de comandos NetworkManager (nmcli) para ver un resumen de la configuración de red de la máquina virtual.

    resumen de configuración de red

  2. Para mostrar las conexiones disponibles en la VM, ejecute el siguiente comando.

    nmcli connection show
    

    Encontrará una lista de conexiones. La máquina virtual utilizada en este tutorial tiene las siguientes conexiones.

    comprobar conexiones

  3. Confirme la conexión Ethernet asociada con eth0 mediante el protocolo de configuración dinámica de host (DHCP).

    nmcli connection show <connection UUID>
    

    Desplácese hasta encontrar el parámetro ipv4.method. Debe tener el valor auto.

    Confirmar DHCP

  4. Edite la conexión asociada a la interfaz eth0. Eliminará la dirección MAC de la configuración de la interfaz mediante el siguiente comando.

    sudo nmcli connection modify <connection UUID> 802-3-ethernet.mac-address ''
    
  5. Aplique estos cambios con el siguiente comando.

    sudo nmcli con up <connection UUID>
    
  6. Además, compruebe el directorio /etc/udev/rules para ver si hay archivos de reglas de udev que contengan reglas codificadas de dirección MAC y suprímalos. La imagen de AWS utilizada en este tutorial tiene un archivo de este tipo 70-persistent-net.rules. Ejecute el siguiente comando para suprimir este archivo.

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

La configuración de red se ha completado. Puede confirmar comprobando el archivo /etc/sysconfig/network-scripts/ifcfg-eth0.

Tarea 3: Exportación de imagen de máquina virtual a Amazon S3

Esta tarea requiere el uso de la CLI de AWS. En este tutorial se utiliza AWS CloudShell, ya que omite las tareas de configuración de la CLI de AWS.

  1. Detener VM. Abra AWS CloudShell y ejecute el siguiente comando para exportar la imagen.

    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. Introduzca la siguiente información.

    • Formato de imagen de disco: introduzca VMDK, ya que es el único formato de exportación de AWS soportado por OCI.
    • Formato de contenedor: introduzca OVA para combinar la imagen de disco con los metadatos sobre la VM. También puede exportar este parámetro.
    • Entorno de destino: introduzca vmware, ya que es el único entorno de destino soportado en OCI.
  3. Puede supervisar el estado de la tarea de exportación ejecutando el siguiente comando en AWS CloudShell.

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

    Cuando inicie la tarea por primera vez, la encontrará en el estado activo. Cuando termine, lo encontrará en el estado completed.

Tarea 4: Transferencia de imagen a OCI Object Storage

Establezca una conexión SSH en la máquina virtual de OCI en la que se configuró rclone en la tarea 1.2. Realice la copia de la imagen exportada del cubo S3 de AWS al cubo de OCI Object Storage.

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

Tarea 5: Creación de imagen personalizada en OCI e inicio de instancia

  1. En la consola de OCI, vaya a Imágenes personalizadas en el servicio informático y seleccione Importar imagen

  2. Introduzca la siguiente información.

    • Servicio: seleccione el compartimento en el que desea crear la imagen personalizada.
    • Nombre: introduzca el nombre de la imagen personalizada.
    • Sistema operativo: seleccione RHEL.
    • Origen: importe desde un cubo de almacenamiento de objetos. Seleccione el bloque que ha configurado en la tarea 1.1.
    • Nombre de objeto: seleccione la imagen que ha transferido de Amazon S3.
    • Modo de inicio: seleccione el modo paravirtualizado.
  3. Haga clic en Importar imagen para iniciar la importación de imágenes.

  4. Una vez creada la imagen, estará listo para iniciar una instancia desde ella. En la página de detalles de la imagen personalizada, seleccione Crear instancia e introduzca la siguiente información.

    • Nombre: introduzca el nombre de la instancia.
    • compartimento: seleccione el compartimento en el que desea iniciar la instancia.
    • Dominio de Disponibilidad.
    • VCN y Subred. Para este tutorial, puede utilizar una subred pública para omitir la conectividad VPN.
    • Claves SSH: tiene dos opciones: generar nuevas claves SSH o utilizar el mismo juego de claves que ha utilizado en AWS. Si desea seguir utilizando el mismo juego de claves, cargue la misma clave pública que utilizó en AWS para la máquina virtual de origen. Si la clave pública de AWS tiene el formato de clave .pem, cámbiela a .pem.pub para cargarla en la instancia de OCI. Esto le permitirá seguir utilizando la misma clave privada para SSH en la VM.
  5. Inicie la máquina virtual. Una vez finalizado el aprovisionamiento, puede conectarse a él. Tenga en cuenta que el usuario con el que se conecta es ec2-user, no opc.

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

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.