Observação:

Migre uma Máquina Virtual do Ubuntu da Amazon Web Services para a Oracle Cloud Infrastructure

Introdução

A migração da Amazon Web Services (AWS) para a Oracle Cloud Infrastructure (OCI) é um empreendimento cada vez mais frequente para muitas organizações, pois a OCI é uma nuvem de última geração que permite que as aplicações sejam executadas de forma mais rápida e segura, por menos.

As migrações de máquina virtual (VM) geralmente são parte essencial desse esforço, levando os clientes a procurar orientação apropriada sobre como migrá-las da AWS para a OCI. Além disso, para muitas organizações, o Linux constitui a maior parte de sua infraestrutura. Este tutorial, portanto, está focado na migração de máquinas virtuais que executam a distribuição Linux (Ubuntu) mais usada da AWS para a OCI.

Este tutorial fornece aos clientes orientação sobre os requisitos para migração de máquina virtual para a OCI e como preparar e migrar uma VM Ubuntu da AWS para a OCI, para que ela possa ser iniciada na OCI no modo Paravirtualizado. A OCI também permite que as instâncias sejam iniciadas no modo Emulado, mas as VMs que usam dispositivos Paravirtualizados fornecem um desempenho muito mais rápido em comparação com a execução no modo Emulado, com desempenho de E/S de disco pelo menos seis vezes mais rápido.

O processo geral consiste em preparar a VM na AWS, exportá-la para o Amazon Simple Storage Service (S3), transferi-la para o OCI Object Storage, criar uma imagem personalizada no OCI e iniciar uma instância a partir dela. A transferência de imagens entre o Amazon S3 e o OCI Object Storage é executada usando a ferramenta de código-fonte aberto rclone, se você estiver apenas experimentando imagens de tamanho pequeno, poderá fazer isso manualmente. No entanto, recomendamos o uso do rclone, pois ele torna a transferência de imagens um processo muito mais rápido e simples.

Para obter mais informações sobre o processo de importação de imagens personalizadas para o OCI, consulte Importando Imagens Personalizadas do Linux.

Objetivos

Pré-requisitos

Suposições

Tarefa 1: Preparar a Infraestrutura de Transferência de Dados

Este tutorial usa a seguinte arquitetura de transferência de dados:

Tarefa 1.1: Preparar Buckets do Amazon S3 e do OCI Object Storage

Nesta tarefa, criaremos um bucket em:

Crie um bucket no Amazon S3 com as seguintes propriedades:

Nas permissões de bucket do Amazon S3, anexe uma ACL ao bucket, usando a concessão que corresponde à região da AWS na qual você está trabalhando, conforme mostrado na imagem a seguir. Consulte aqui os IDs de conta canônica específicos da região do favorecido: Exportando uma instância como uma VM usando a Importação/Exportação de VMs.

Anexo da ACL S3

Conclua esta tarefa criando um bucket no OCI Object Storage na camada de armazenamento padrão. Este é o bucket para o qual você transferirá posteriormente a imagem da VM do Amazon S3.

Tarefa 1.2: Instalar e Configurar o Rclone

Nesta tarefa, instalaremos o rclone em uma VM em execução no OCI. Você pode instalar o rclone em sua máquina local se estiver experimentando VMs de tamanho pequeno e configurar o rclone com 2 controles remotos: Amazon S3 e OCI Object Storage.

  1. Instale rclone e SSH na VM do Oracle Linux no OCI.

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. Execute a configuração de controle remoto no rclone. Isso é feito iniciando uma sessão de configuração rclone. Execute o comando a seguir na linha de comando.

    rclone config
    
  3. Para a configuração remota do Amazon S3, digite as informações a seguir.

    • Nome Remoto: Informe um nome remoto.
    • Tipo Remoto: Selecione o tipo S3.
    • Provedor: Selecione AWS.
    • access_key_id: Digite o id da chave de acesso associado ao usuário da AWS que você decidiu usar.
    • secret_access_key: Informe a chave de acesso secreta correspondente ao id da chave de acesso.
    • Região: Selecione a região da AWS na qual você está trabalhando.
    • location_constraint: Selecione a restrição de local que corresponde à região Web da Amazon na qual você está trabalhando. Para algumas regiões (como Frankfurt), isso pode estar vazio.
    • acl: Selecione private (privado) para ter certeza de que está criando a ACL enlatada mais restrita. Para obter mais informações, consulte Canned ACL.
  4. Para acesso rclone ao OCI Object Storage, este tutorial usa um usuário do OCI e chaves de assinatura de API. Como alternativa, você pode usar grupos dinâmicos. Para obter mais informações, consulte Chamando os Serviços em uma Instância.

    Antes de configurar o OCI Object Storage remoto,:

    • Crie chaves de assinatura de API do OCI para rclone para autenticação no OCI Object Storage e execute a transferência de dados de imagem. Para criar as chaves de assinatura de API e anotar o diretório no qual você armazena as chaves na VM porque precisará fornecê-las no arquivo de configuração do OCI, consulte Como Gerar uma Chave de Assinatura de API.

    • Criar um arquivo de configuração do OCI. Esse arquivo de configuração requer as chaves de assinatura da API do OCI. Para obter mais informações, consulte Arquivo de Configuração da CLI e de SDKs.

    Para entender as opções de autenticação para rclone com o provedor do OCI, consulte Anúncio do suporte de backend do provedor nativo do OCI Object Storage no rclone.

  5. O arquivo de configuração do OCI geralmente é armazenado como um arquivo nomeado config no diretório.

    ~/.oci/
    
  6. Depois de criar as chaves de assinatura da API do OCI e o arquivo de configuração do OCI, você poderá configurar o controle remoto do OCI no rclone. Execute o comando a seguir para iniciar a sessão de configuração.

    rclone config
    
  7. Digite as informações a seguir para a configuração remota do OCI Object Storage.

    • Nome Remoto: Informe um nome remoto.
    • Tipo: Selecione o Oracle Object Storage.
    • Provedor: Selecione user_principal_auth (como você usará um usuário do OCI e chaves de assinatura de API). Se você usar um grupo dinâmico, selecione instance_principal_auth.
    • Namespace: Informe o namespace da tenancy.
    • Compartimento: Informe o OCID do compartimento do bucket do OCI.
    • Região: Informe a região em que você está trabalhando no OCI.
    • Ponto Final: Deixe em branco ou informe o ponto final neste formato: https://<namespace>.objectstorage.<region-code>.oci.customer-oci.com/n/<namespace>.
  8. Verifique o arquivo de configuração remota rclone usando o comando a seguir.

    cat ~/.config/rclone/rclone.conf
    

Tarefa 2: Preparar Volume de Inicialização da VM de Origem

Tarefa 2.1: Executar um Snapshot Obrigatório do Volume de Inicialização de VM da AWS

Execute um instantâneo do volume de inicialização da VM da AWS. Isso é obrigatório antes de iniciar qualquer atividade de configuração de volume de inicialização.

Tarefa 2.2: Ativar Console Serial

As conexões da console serial permitem que um usuário solucione problemas de uma VM, executando atividades como edição de arquivos de configuração do sistema e redefinições de senha. Normalmente, para preparar uma VM para a console serial, o arquivo do carregador de inicialização GRUB precisa ser configurado. Esse arquivo reside em /etc/default/grub. A imagem da plataforma AWS Ubuntu requer configuração não apenas no arquivo /etc/default/grub, mas também no arquivo /etc/default/grub.d/50-cloudimg-settings.cfg. Este último arquivo é modificado pelo processo de criação de imagem na nuvem e substitui a configuração etc/default/grub.

Os parâmetros de configuração GRUB mais importantes são:

- 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.d/50-cloudimg-settings.cfg.

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

    Edite o arquivo para que ele se pareça com o arquivo mostrado na imagem a seguir.

    50-cloudimg-settings.cfg editar

  2. Abra /etc/default/grub.

    sudo vi /etc/default/grub
    

    Edite o arquivo para que ele se pareça com o arquivo mostrado na imagem a seguir.

    Edição grub

  3. Depois de editar o arquivo, execute o comando a seguir para certificar-se de que o carregador de inicialização GRUB esteja adequadamente atualizado.

    sudo update-grub
    

Tarefa 2.3: Verificar Drivers de Paravirtualização

Para importar uma VM para o OCI para que ela possa ser iniciada no modo Paravirtualizado, os drivers VirtIO de Paravirtualização precisam estar presentes na imagem. Nesta tarefa, verificaremos o kernel e o sistema de arquivos temporários initramfs para confirmar a presença dos drivers. Observe que os sistemas operacionais baseados no Linux que executam o kernel versão 3.4 ou mais recente suportam drivers paravirtualizados; portanto, muitas vezes você só precisa verificar e confirmar se eles estão presentes.

O conjunto mínimo de drivers VirtIO necessários inclui pci e scsi. Esses drivers devem estar presentes no kernel ou no initramfs.

  1. Verifique o kernel da AWS VM usando o comando a seguir.

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

    verificar kernel

    Observação: O driver pci VirtIO está presente no kernel.

  2. Verifique o kernel da AWS VM usando o comando a seguir.

    sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
    

    verificar initramfs

    Observação: O driver scsi VirtIO está presente em initramfs.

  3. Se o volume de inicialização da sua VM não tiver os drivers, será necessário reconstruir o initramfs com dracut.

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

Tarefa 2.4: Configurar definições de Rede

Para a configuração de rede, certifique-se de:

Existem várias maneiras de executar a configuração de rede no Linux. A Canonical desenvolveu o utilitário Netplan como uma forma de simplificar essa tarefa. Este tutorial usa o Netplan, mas você pode alterar os arquivos de configuração de rede, se essa for sua preferência.

  1. A imagem da plataforma AWS Ubuntu especifica sua configuração Netplan no arquivo /etc/netplan/50-cloud-init.yaml. Abra o arquivo com permissão sudo para poder editá-lo.

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

    Você encontrará um arquivo de configuração conforme mostrado na imagem a seguir.

    verificar arquivo de configuração do netplan

  2. Edite o arquivo, remova o endereço mac e a correspondência do nome da interface pelo endereço mac. Sua configuração deve ser semelhante à mostrada na imagem a seguir.

    editar arquivo de configuração do netplan

  3. Execute o comando Netplan apply para atualizar e finalizar a configuração de rede.

    sudo netplan apply
    

Tarefa 3: Exportar Imagem de Máquina Virtual para o Amazon S3

Esta tarefa requer o uso da interface de linha de comando (CLI) da AWS. Este tutorial usa o AWS CloudShell porque ignora as tarefas de configuração da CLI da AWS.

  1. Interrompa a máquina virtual. Abra o AWS CloudShell e execute o comando a seguir para exportar a imagem.

    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. Digite as seguintes informações.

    • Formato de Imagem em Disco: Digite VMDK, pois é o único formato de exportação da AWS suportado pelo OCI.
    • Formato do Contêiner: Digite OVA para combinar a imagem do disco com metadados sobre a VM. Também é possível exportar esse parâmetro.
    • Ambiente de destino: Digite vmware, pois é o único ambiente de destino suportado no OCI.
  3. Você pode monitorar o estado da tarefa de exportação executando o comando a seguir no AWS CloudShell.

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

    Ao iniciar a tarefa pela primeira vez, você a encontrará no estado Ativa. Quando terminar, você o encontrará no estado Concluído.

Tarefa 4: Transferir Imagem para o OCI Object Storage

Estabeleça SSH na máquina virtual do OCI na qual o rclone foi configurado na Tarefa 1.2. Execute a cópia da imagem exportada do bucket do Amazon S3 para o bucket do OCI Object Storage.

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

Tarefa 5: Criar Imagem Personalizada no OCI e Iniciar Instância

  1. Na Console do OCI, vá para Imagens Personalizadas no Serviço Compute e selecione Importar Imagem.

  2. Digite as seguintes informações.

    • Compartimento: Selecione o compartimento onde deseja criar a imagem personalizada.
    • Nome: Digite o nome da imagem personalizada.
    • Sistema Operacional: Selecione Ubuntu.
    • Origem: Importe de um bucket do Object Storage. Selecione o bloco configurado na Tarefa 1.1.
    • Nome do Objeto: Selecione a imagem transferida do Amazon S3.
    • Modo de Inicialização: Selecione o modo Paravirtualizado.
  3. Clique em Importar imagem para iniciar a importação da imagem.

  4. Depois que a imagem for criada, você estará pronto para iniciar uma instância a partir dela. Na página de detalhes da imagem personalizada, selecione Criar instância e especifique as informações a seguir.

    • Nome: Digite o nome da instância.
    • Compartimento: Selecione o compartimento ao qual você deseja acionar a instância.
    • Domínio de Disponibilidade.
    • VCN e Sub-rede. Para os fins deste tutorial, você pode usar uma sub-rede pública para ignorar a conectividade da VPN.
    • Chaves SSH: Você tem duas opções: gerar novas chaves SSH ou usar o mesmo conjunto de chaves usado na AWS. Se você quiser continuar usando o mesmo conjunto de chaves, faça upload da mesma chave pública usada na AWS para a VM de origem. Supondo que sua chave pública da AWS esteja no formato de chave .pem, altere-a para .pem.pub para fazer upload dela para a instância do OCI. Isso permitirá que você continue usando a mesma chave privada para SSH na VM.
  5. Inicie a máquina virtual. Quando o provisionamento terminar, você poderá estabelecer conexão com ele. Observe que o usuário com o qual você se conecta é ubuntu, não opc.

    ssh -i pathToKey/keyfile ubuntu@<publicIp>
    

Confirmações

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.