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

Este guia descreve o que você deve saber quando quiser migrar um aplicativo JBoss EAP existente para 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 correspondentes do Azure Marketplace são um ponto de partida para acelerar a migração de suas cargas de trabalho EAP JBoss 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 a "migração for concluída", você poderá tirar um instantâneo de suas 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 é possível restaurar com êxito a partir do snapshot. Dessa forma, você pode prosseguir sem medo de perder o progresso migratório que alcançou até agora.

Determine se as ofertas pré-criadas do Azure Marketplace são um bom ponto de partida

A Red Hat e a Microsoft fizeram uma parceria para trazer um conjunto de modelos de solução do Azure para o Azure Marketplace para 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 pré-criada do Azure Marketplace, consulte Guia de início rápido: implantar o JBoss EAP Server na VM do Azure usando o portal do Azure.

Se nenhuma das ofertas existentes for um bom ponto de partida, você precisará 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?

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

Sua versão EAP JBoss existente deve ser compatível com a versão nas ofertas de infraestrutura como serviço (IaaS). 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 JBoss EAP Cluster on VMs no portal do Azure. Se sua versão EAP JBoss existente não for compatível com as versões disponíveis na oferta, você precisará reproduzir a implantação manualmente usando os recursos de IaaS do Azure. Para obter mais informações, confira O que é IaaS?

Certifique-se de ter as licenças necessárias

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

  • Implante em máquinas virtuais pré-pagas do Red Hat Enterprise Linux. Essa opção é conhecida como PAYG.
  • Mova 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, é solicitado o ID do Pool da Red Hat. Certifique-se de ter este ID em mãos antes de experimentar as ofertas.

As ofertas pré-criadas do Azure Marketplace incluem suporte ao Red Hat Satellite para 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 de Desenvolvedor do Red Hat para Pessoas. Anote os detalhes da conta para uso como o nome de usuário RHSM e a senha RHSM nas ofertas pré-criadas do Azure Marketplace.

As etapas para descobrir sua ID de Pool são explicadas na seção Pré-requisitos em Guia de início rápido: implantar o JBoss EAP Server em uma máquina virtual do Azure usando o portal 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. É útil, por exemplo, ajudar a orientar a seleção do tamanho das VMs no pool de nós, a quantidade de memória a ser usada pelo contêiner e 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 Serviço de Kubernetes do Azure (AKS).

Inventariar todos os segredos

Verifique todas as propriedades e arquivos de configuração no servidor de produção ou servidores para obter 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 em VMs do Azure requer uma versão com suporte do Java. Para obter orientação sobre qual versão do JDK usar, consulte Configurações suportadas na documentação da 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 requer reconfiguração ou, em casos raros, alterações de arquitetura. Os módulos EAP do JBoss ou o 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 movimentaçã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. Você também pode implantar diretamente o conteúdo estático em um aplicativo no plano Azure Spring Apps Enterprise. Para mais informações, veja Implantar arquivos estáticos da web.

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. Você também pode implantar diretamente o conteúdo estático em um aplicativo no plano Azure Spring Apps Enterprise. Para mais informações, veja Implantar arquivos estáticos da web.

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, confira Escolher uma solução para 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, consulte Usar o JMS com o 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ê quiser ser capaz de dimensionar cada um de seus aplicativos Web independentemente para melhor uso de seus recursos de VM do Azure, você deve dividir 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

Selecione uma oferta de EAP JBoss 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ê será solicitado a escolher o tamanho da máquina virtual para os nós do servidor 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 para serviços de nuvem (clássico).

JBoss EAP em conjuntos de dimensionamento de máquina virtual do Azure

Os Conjuntos de Dimensionamento de Máquina Virtual 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áquina virtual?

JBoss EAP em máquinas virtuais clusterizadas

Se você preferir, um cluster tradicional de VMs usando o mecanismo de clustering JBoss EAP é adequado para um aumento e deslocamento de implantações que já estão usando esse recurso. Para obter mais informações, consulte Configurando um cluster EAP 7 do Red Hat JBoss na documentação do JBoss EAP. A oferta pré-criada do Azure Marketplace inclui suporte para o modo de domínio. Para obter uma visão geral dos domínios EAP e do modo de domínio, consulte Gerenciamento de domínio.

JBoss EAP Servidor Único

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

Kit de ferramentas de migração Red Hat para aplicativos

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

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: