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 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
-
Prepare uma VM do Red Hat Enterprise Linux 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
. -
O AWS RHEL VM tem apenas 1 volume: 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 RHEL
9.3.0
a partir de março de 2024. -
Conectividade SSH com usuário fornecida por padrão pela AWS:
ec2-user
. -
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 e 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 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
-
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
.
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
.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 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.
-
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 lsinitrd /boot/initramfs-$(uname -r).img | 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 DHCP.
- 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. 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.
-
Execute a ferramenta de linha de comando NetworkManager (
nmcli
) para ver um resumo da configuração de rede da VM. -
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.
-
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 valorauto
. -
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 ''
-
Aplique essas alterações usando o comando a seguir.
sudo nmcli con up <connection UUID>
-
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 arquivos70-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.
-
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>
-
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 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
-
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 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.
-
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 é ec2-user, não opc.
ssh -i pathToKey/keyfile ec2-user@<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 Red Hat Enterprise Linux Virtual Machine from Amazon Web Services to Oracle Cloud Infrastructure
F95993-01
April 2024