Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Migre uma Máquina Virtual Debian 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 de 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 que executam uma das distribuições Linux (Debian) mais usadas 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 Debian 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.
Para obter mais informações sobre o processo de importação de imagens personalizadas para o OCI, consulte Importando Imagens Personalizadas do Linux.
Objetivos
-
Prepare uma VM Debian na AWS para migração para a OCI.
-
Exporte a VM preparada como uma imagem para o Amazon S3.
-
Transfira a imagem para o OCI e crie uma instância com base nela.
Pré-requisitos
-
Acesso a uma conta da AWS que pode criar ou já tem Chaves de API e tem acesso ao Amazon S3 e ao Amazon Elastic Compute Cloud (Amazon EC2).
-
Acesso a uma tenancy e compartimento do OCI para migração de imagem e inicialização de instância.
-
Políticas do Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) para:
-
Permitir acesso ao OCI Object Storage.
-
Provisione uma VM no OCI (para a VM rclone e as VMs personalizadas baseadas em imagem).
-
Permitir a criação de chaves de API do OCI.
-
Suposições
-
VM da AWS provisionada com chave pública
pem
. -
A VM AWS Debian tem apenas 1 volume: seu volume de inicialização.
-
A imagem da AWS é exportável; o Amazon Machine Image (AMI) usado neste tutorial é a imagem da plataforma da AWS para o Debian 12 a partir de março de 2024.
-
Operações de linha de comando da AWS executadas no AWS CloudShell. Como alternativa, você pode usar a ferramenta AWS CLI.
-
VM do Oracle Linux provisionada no OCI com conectividade SSH com o Amazon S3. Esta é a VM em que você instalará e configurará o rclone para transferir imagens entre o Amazon S3 e o OCI Object Storage.
Tarefa 1: Preparar a Infraestrutura de Transferência de Dados
Este tutorial usa a seguinte arquitetura de transferência de dados:
-
Transferência de imagem pela Internet entre o Amazon S3 e o OCI Object Storage executada pelo rclone. Para uma implantação de nível de produção, recomenda-se o uso da VPN site a site do Oracle Cloud Infrastructure ou FastConnect. Para obter mais informações, consulte Conexão de VPN com a AWS e FastConnect.
-
Rclone configurado com autenticação do controlador de usuários para acesso seguro ao Amazon S3 e ao OCI Object Storage.
Tarefa 1.1: Preparar Buckets do Amazon S3 e do OCI Object Storage
Nesta tarefa, criaremos um bucket em:
-
Amazon S3 para imagens a serem exportadas.
-
OCI Object Storage para armazenar imagens de disco de VM transferidas do Amazon S3.
Crie um bucket no Amazon S3 com as seguintes propriedades:
-
Listas de controle de acesso (ACLs) ativadas. Será necessário anexar uma ACL personalizada para permitir que uma imagem seja exportada para o Amazon S3.
-
Bloquear todo o acesso público.
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.
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.
-
Instale rclone e SSH na VM do Oracle Linux no OCI.
sudo -v ; curl https://rclone.org/install.sh | sudo bash
-
Execute a configuração remota em rclone. Isso é feito iniciando uma sessão de configuração rclone. Execute o comando a seguir na linha de comando.
rclone config
-
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.
-
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.
-
-
O arquivo de configuração do OCI geralmente é armazenado como um arquivo nomeado
config
no diretório.~/.oci/
-
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
-
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, selecioneinstance_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>
.
-
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 Debian requer configuração não apenas no arquivo /etc/default/grub
, mas também no arquivo /etc/default/grub.d/15_timeout.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".
-
Abra
/etc/default/grub.d/15_timeout.cfg
.sudo vi /etc/default/grub.d/15_timeout.cfg
Edite o arquivo para que ele se pareça com o arquivo mostrado na imagem a seguir.
-
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.
-
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.
-
Verifique o kernel da AWS VM usando o comando a seguir.
sudo grep -i virtio /boot/config-$(uname -r)
Observação: O driver
pci
VirtIO está presente no kernel. -
Verifique o kernel da AWS VM usando o comando a seguir.
sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
Observação: O driver
scsi
VirtIO está presente em initramfs. -
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:
-
A VM está usando o DHCP (Dynamic Host Configuration Protocol).
-
Todas as referências codificadas de endereço MAC na configuração de rede são removidas.
Existem várias maneiras de executar a configuração de rede no Linux. A imagem da plataforma AWS Debian permite o uso do 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.
-
A imagem da plataforma AWS Debian 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.
-
Edite o arquivo, remova o endereço MAC e o nome de interface correspondente pelo endereço MAC. Sua configuração deve ser semelhante à mostrada na imagem a seguir.
-
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.
-
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>
-
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.
-
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
-
Na Console do OCI, vá para Imagens Personalizadas no Serviço Compute e selecione Importar Imagem.
-
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 Debian.
- 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.
-
Clique em Importar imagem para iniciar a importação da imagem.
-
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.
-
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 é admin, não opc.
ssh -i pathToKey/keyfile admin@<publicIp>
Links Relacionados
-
Exportando uma instância como uma VM usando a Importação/Exportação de VMs
-
Ativando o Acesso à Console Serial para Imagens do Linux Importadas
-
Diagnóstico e Solução de Problemas de Instâncias Usando Conexões da Console da Instância
-
Anúncio do suporte ao backend do provedor nativo do OCI Object Storage no rclone
-
Mova dados para o armazenamento de objetos na nuvem usando rclone
-
Migrar Dados para o Oracle Cloud Infrastructure Object Storage Usando Rclone
Confirmação
- Autor - Ricardo Malhado (Arquiteto Principal de Soluções em Nuvem)
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.
Migrate a Debian Virtual Machine from Amazon Web Services to Oracle Cloud Infrastructure
F96035-01
April 2024