Observação:

Migre uma Máquina Virtual Red Hat Enterprise Linux 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.

A migração da Máquina Virtual (VM) geralmente é uma parte essencial desse esforço, levando os clientes a procurar orientação apropriada sobre como migrá-los 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 executando uma das distribuições Linux mais usadas no mundo (Red Hat Enterprise Linux) da AWS para a OCI.

Este tutorial fornece aos clientes orientação sobre os requisitos para migração de máquina virtual para o OCI e como preparar e migrar uma VM Red Hat Enterprise Linux do AWS para o OCI, para que ela possa ser lançada no 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 (Amazon 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.

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 (Oracle Cloud Identifier) do compartimento de 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.

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.

    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

  2. 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 grub2-mkconfig -o /boot/grub2/grub.cfg
    

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, 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 lsinitrd /boot/initramfs-$(uname -r).img | 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. Especificamente no RHEL, a configuração de conexões ethernet pode ser executada editando arquivos de configuração de rede em /etc/sysconfig/network-scripts/ifcfg-eth0 ou usando NetworkManager. Este tutorial usa o último para executar a configuração de rede necessária. Para obter mais informações, consulte Configurando uma conexão Ethernet.

  1. Execute a ferramenta de linha de comando NetworkManager (nmcli) para ver um resumo da configuração de rede da VM.

    resumo de configuração de rede

  2. Para listar as conexões disponíveis na VM, execute o comando a seguir.

    nmcli connection show
    

    Você encontrará uma lista de conexões. A VM usada neste tutorial tem as conexões a seguir.

    verificar conexões

  3. Confirme a conexão ethernet associada a eth0 usando DHCP (Dynamic Host Configuration Protocol).

    nmcli connection show <connection UUID>
    

    Role até encontrar o parâmetro ipv4.method. Ele deve ter o valor auto.

    Confirmar DHCP

  4. Edite a conexão associada à interface eth0. Você removerá o endereço MAC da configuração da interface usando o comando a seguir.

    sudo nmcli connection modify <connection UUID> 802-3-ethernet.mac-address ''
    
  5. Aplique essas alterações usando o comando a seguir.

    sudo nmcli con up <connection UUID>
    
  6. Além disso, verifique o diretório /etc/udev/rules para ver se há algum arquivo de regras udev contendo regras codificadas de endereço MAC e exclua-as. A imagem da AWS usada neste tutorial tem um desses arquivos 70-persistent-net.rules. Execute o comando a seguir para excluir este arquivo.

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

A configuração de rede agora está concluída. Você pode confirmar verificando o arquivo /etc/sysconfig/network-scripts/ifcfg-eth0.

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

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

  1. Parar a VM. 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 ativo. Quando terminar, você o encontrará no estado concluído.

Tarefa 4: Transferir Imagem para o OCI Object Storage

Estabeleça SSH na VM do OCI na qual o rclone foi configurado na Tarefa 1.2. Execute a cópia da imagem exportada do bucket S3 da AWS 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 RHEL.
    • 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 é ec2-user, não opc.

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

Confirmação

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.