Migrar aplicativos JBoss EAP para o JBoss EAP em VMs do Azure

Este guia descreve do que você precisa estar ciente quando quiser migrar um aplicativo do JBoss EAP existente a ser executado no JBoss EAP em VMs do Azure.

Pré-migração

Antes de tudo, para garantir uma migração bem-sucedida, conclua as etapas de avaliação e de inventário descritas nas seções a seguir.

Defina o que você quer dizer por "migração concluída"

Este guia e as ofertas do Azure Marketplace correspondentes são um ponto de partida para acelerar a migração de suas cargas de trabalho do JBoss EAP para o Azure. É importante definir o escopo do seu esforço de migração. Por exemplo, você está fazendo um "lift and shift" rigoroso de sua infraestrutura existente para Máquinas Virtuais do Azure? Nesse caso, pode estar tentado a fazer um "lift and improve" ao migrar.

É melhor se ater ao "lift and shift" puro na medida do possível, fazendo as alterações necessárias detalhadas neste guia. Defina o que você quer dizer por "migração concluída" para saber quando chegou a essa etapa. Quando tiver atingido a "migração concluída", você poderá tirar um instantâneo das máquinas virtuais, conforme descrito em Criar um instantâneo de um disco rígido virtual. É mais seguro fazer as melhorias depois de verificar se você pode restaurar com êxito a partir do seu snapshot. Dessa forma, você pode prosseguir sem medo de perder o progresso da migração alcançado até o momento.

Determinar se as ofertas predefinidas do Azure Marketplace são um bom ponto de partida

O Red Hat e a Microsoft fizeram parceria para trazer um conjunto de modelos de solução do Azure para o Azure Marketplace e fornecer um ponto de partida sólido para a migração para o Azure. Você pode ver a lista de ofertas na seção JBoss EAP em Máquinas Virtuais do Azure do Red Hat JBoss EAP no Azure.

Para ter uma ideia da oferta predefinida do Azure Marketplace, consulte IInício Rápido: implantar um cluster JBoss EAP em VMs (Máquinas Virtuais) do Azure.

Se nenhuma das ofertas existentes for um bom ponto de partida, será necessário reproduzir a implantação manualmente usando os recursos disponíveis nas Máquinas Virtuais do Azure. Para obter mais informações, confira O que é IaaS?

Determinar se a versão do JBoss EAP é compatível

Sua versão existente do JBoss EAP deve ser compatível com a versão nas ofertas de IaaS (infraestrutura como serviço). As páginas do portal do Azure para as ofertas mostram quais versões do JBoss EAP estão disponíveis. Para obter mais informações, consulte a oferta Cluster do JBoss EAP em VMs no portal do Azure. Se a versão existente do JBoss EAP não for compatível com as versões disponíveis na oferta, você deverá reproduzir a implantação manualmente usando recursos de IaaS do Azure. Para obter mais informações, confira O que é IaaS?

Verificar se você tem as licenças necessárias

Ao usar as ofertas predefinidas do Azure Marketplace, você deve ter licenças atuais da Red Hat para todos os seus servidores do JBoss EAP. Ao movê-los para o Azure, você pode escolher entre as seguintes opções de implantação para atender às suas necessidades:

  • Implantar em máquinas virtuais pagas conforme o uso do Red Hat Enterprise Linux. Essa opção é conhecida como PAYG.
  • Mover suas assinaturas do Red Hat JBoss EAP e do Red Hat Enterprise Linux para o Azure por meio do programa Red Hat Cloud Access. Essa opção é conhecida como BYOS.

Em ambas as opções, para portabilidade de licença, você será solicitado a fornecer o ID do Pool da Red Hat. Certifique-se de ter essa ID em mãos antes de experimentar as ofertas.

As ofertas predefinidas do Azure Marketplace incluem suporte ao Red Hat Satellite para o gerenciamento de licenças. Para obter uma visão geral do Red Hat Satellite, consulte Red Hat Satellite.

Observação

Se você não tiver um direito de EAP, poderá se inscrever para uma assinatura de desenvolvedor gratuita por meio da Assinatura do Red Hat Developer para pessoas físicas. Guarde os detalhes da conta para uso como o nome de usuário e a senha do RHSM nas ofertas predefinidas do Azure Marketplace.

As etapas para descobrir sua ID do Pool são explicadas na seção Pré-requisitos em Início Rápido: implantar um cluster do JBoss EAP em VMs (Máquinas Virtuais) do Azure.

Inventariar a capacidade do servidor

Documente o hardware (memória, CPU, disco) dos servidores de produção atuais, assim como as contagens de solicitações média e de pico e a utilização de recursos. Você precisará dessas informações independentemente do caminho de migração que escolher. Elas são úteis, por exemplo, para ajudar a orientar a seleção do tamanho das VMs no pool de nós, da quantidade de memória a ser usada pelo contêiner e de quantos compartilhamentos de CPU o contêiner precisa.

É possível redimensionar pools de nós no AKS. Para saber como, consulte Redimensionar pools de nós no AKS (Serviço de Kubernetes do Azure).

Inventariar todos os segredos

Verifique todas as propriedades e os arquivos de configuração no(s) servidor(es) de produção em busca de segredos e senhas. Certifique-se de verificar o arquivo jboss-web.xml em seus WARs. Arquivos de configuração que contenham senhas ou credenciais também podem ser encontrados dentro de seu aplicativo.

Considere armazenar esses segredos no Azure Key Vault. Para saber mais, consulte Conceitos básicos do Azure Key Vault.

Inventariar todos os certificados

Documente todos os certificados usados para pontos de extremidade SSL públicos. Você pode exibir todos os certificados nos servidores de produção executando o seguinte comando:

keytool -list -v -keystore <path to keystore>

Validar se a versão Java com suporte funciona corretamente

O JBoss EAP nas VMs do Azure exige uma versão compatível do Java. Para obter orientações sobre qual versão do JDK usar, consulte Configurações com suporte na documentação do Red Hat.

Observação

Essa validação é especialmente importante se o servidor atual estiver sendo executado em um JDK não compatível (como Oracle JDK ou IBM OpenJ9).

Para determinar a sua versão atual do Java, entre no servidor de produção e execute o seguinte comando:

java -version

Recursos externos de inventário

Recursos externos, como fontes de dados, agentes de mensagem JMS e outros, são injetados por meio de JNDI (Interface de Nomenclatura e Diretório do Java). Alguns desses recursos podem exigir migração ou reconfiguração.

Dentro de seu aplicativo

Inspecione os arquivos WEB-INF/jboss-web.xml e/ou WEB-INF/web.xml. Procure elementos de <Resource> dentro do elemento <Context>.

Fontes de dados

Fontes de dados são recursos de JNDI com o atributo type definido como javax.sql.DataSource. Para cada fonte de dados, documente as seguintes informações:

  • Qual é o nome da fonte de dados?
  • Qual é a configuração do pool de conexões?
  • Onde posso encontrar o arquivo JAR do driver JDBC?

Para obter mais informações, consulte Sobre fontes de dados do JBoss EAP na documentação do JBoss EAP.

Todos os outros recursos externos

Não é possível documentar todas as dependências externas possíveis neste guia. É responsabilidade da sua equipe verificar se você pode atender a todas as dependências externas de seu aplicativo após a migração.

Determinar se e como o sistema de arquivos é usado

Qualquer uso do sistema de arquivos no servidor de aplicativos exigem reconfiguração ou, em casos raros, alterações de arquitetura. Os módulos do JBoss EAP ou pelo código do aplicativo podem usar o sistema de arquivos. Você pode identificar alguns ou todos os cenários descritos nas seções a seguir.

Conteúdo estático somente leitura

Se seu aplicativo estiver servindo conteúdo estático no momento, você precisará de um local alternativo para ele. Talvez você queira considerar a migração de conteúdo estático para o Armazenamento de Blobs do Azure e a adição da CDN do Azure para downloads extremamente rápidos, globalmente. Para obter mais informações, confira Hospedagem de site estático no Armazenamento do Microsoft Azure e Início rápido: Integrar uma conta de armazenamento do Azure à CDN do Azure.

Conteúdo estático publicado dinamicamente

Se o aplicativo permitir conteúdo estático que é carregado/produzido pelo aplicativo, mas não puder ser alterado após sua criação, você poderá usar o Armazenamento de Blobs do Azure e a CDN do Azure, conforme descrito acima, com uma Função do Azure para lidar com uploads e atualização de CDN. Fornecemos uma implementação de exemplo para seu uso em Carregar conteúdo estático e fazer o pré-carregamento desse conteúdo pela CDN com o Azure Functions.

Determinar se uma conexão com o local é necessária

Se seu aplicativo precisar acessar qualquer um dos seus serviços locais, você precisará provisionar um dos serviços de conectividade do Azure. Para obter mais informações, consulte Conectar uma rede local ao Azure. Como alternativa, você precisará refatorar seu aplicativo para usar APIs disponíveis publicamente que seus recursos locais expõem.

Determinar se as Filas ou os Tópicos do JMS (Java Message Service) estão em uso

Se seu aplicativo estiver usando Filas ou Tópicos do JMS, você precisará migrá-los para um servidor do JMS hospedado externamente. O Barramento de Serviço do Azure e o AMQP (Advanced Message Queuing Protocol) podem ser uma excelente estratégia de migração para pessoas que usam o JMS. Para obter mais informações, confira Usar o Java Message Service 1.1 com o padrão de Barramento de Serviço do Azure e o AMQP 1.0.

Se os armazenamentos persistentes JMS tiverem sido configurados, você deverá capturar a configuração deles e aplicá-la após a migração.

Determinar se conectores JCA estão em uso

Se o aplicativo usar conectores JCA, valide se você pode usar o conector JCA no JBoss EAP. Se você puder usar o conector JCA no JBoss EAP, adicione os JARs ao classpath do servidor e coloque os arquivos de configuração necessários na localização correta nos diretórios do servidor do JBoss EAP para que o conector esteja disponível.

Determinar se o JAAS está sendo usado

Se seu aplicativo estiver usando o JAAS, você precisará capturar como o JAAS está configurado. Se estiver usando um banco de dados, você poderá convertê-lo em um domínio JAAS no JBoss EAP. Caso se trate de uma implementação personalizada, será necessário validar que ela pode ser usada no JBoss EAP.

Determinar se seu aplicativo é composto por vários WARs

Se seu aplicativo for composto por vários WARs, você deverá tratar cada um desses WARs como aplicativos separados e consultar este guia para cada um deles.

Determinar se seu aplicativo está empacotado como um EAR

Se seu aplicativo estiver empacotado como um arquivo EAR, examine o arquivo application.xml e capture a configuração.

Observação

Se você deseja conseguir escalar cada um dos seus aplicativos Web independentemente para um melhor uso dos recursos de sua VM do Azure, divida o EAR em aplicativos Web separados.

Identificar todos os processos e daemons externos em execução nos servidores de produção

Se você tiver processos em execução fora do servidor de aplicativos, como daemons de monitoramento, precisará eliminá-los ou migrá-los para outro lugar.

Migração

Selecionar uma oferta do JBoss EAP em Máquinas Virtuais do Azure

As ofertas descritas nas seções a seguir estão disponíveis para o JBoss EAP em Máquinas Virtuais do Azure.

Durante a implantação de uma oferta, você deverá escolher o tamanho da máquina virtual para seus nós do JBoss EAP. É importante considerar todos os aspectos do dimensionamento (memória, processador, disco) ao escolher o tamanho da VM. Para obter mais informações, consulte Tamanhos dos Serviços de Nuvem (clássico).

JBoss EAP nos Conjuntos de Dimensionamento de Máquinas Virtuais do Azure

Os Conjuntos de Dimensionamento de Máquinas Virtuais fornecem grupos de máquinas virtuais altamente escalonáveis e com balanceamento de carga para cargas de trabalho de qualquer tamanho. Para obter mais informações, consulte O que são Conjuntos de Dimensionamento de Máquinas Virtuais?

JBoss EAP em Máquinas Virtuais do Azure Clusterizadas

Se preferir, um cluster tradicional de VMs usando o mecanismo de clustering do JBoss EAP é adequado para um "lift-and-shift" de implantações que já estão usando esse recurso. Para obter mais informações, consulte Clustering em aplicativos Web na documentação do JBoss EAP. A oferta predefinida do Azure Marketplace inclui suporte ao modo de domínio. Para obter uma visão geral dos domínios do EAP e do modo de domínio, consulte Gerenciamento de Domínio.

Servidor único do JBoss EAP

Se você precisar somente de um único servidor, talvez para teste e avaliação, ou para cargas de trabalho leves, há uma oferta que implanta um servidor único do JBoss EAP em uma única VM.

Kit de Ferramentas de Migração para Aplicativos do Red Hat

O Kit de Ferramentas de Migração para Aplicativos do Red Hat é uma extensão gratuita para o Visual Studio Code. Essa extensão analisa o código e a configuração do aplicativo para fornecer recomendações para a migração para a nuvem do local. Para obter mais informações, consulte Visão geral do Kit de Ferramentas de Migração para Aplicativos.

O conteúdo deste guia ajuda você a abordar os outros componentes da jornada de migração, como escolher o tamanho correto da VM e externalizar o estado da sessão.

Pós-migração

Depois de atingir as metas de migração que você definiu na etapa de pré-migração, execute um teste de aceitação de ponta a ponta para verificar se tudo funciona conforme o esperado. Para obter informações sobre alguns possíveis aprimoramentos pós-migração, consulte os seguintes artigos: