Este documento é destinado a proprietários de aplicativos e arquitetos de nuvem. Neste documento, descrevemos como migrar aplicativos Java executados no Tomcat para contêineres em execução no Google Kubernetes Engine (GKE), GKE Autopilot, Cloud Run, ou GKE Enterprise. É possível usar esse processo para migrar aplicativos Tomcat de ambientes locais, ambientes de hospedagem particulares ou outros provedores de nuvem. Ele também destaca os benefícios de usar a opção Migrate to Containers para automatizar a migração.
Ele pressupõe que você esteja familiarizado com os seguintes produtos:
- Aplicativos Java implantados em servidores de aplicativos Tomcat e executados em máquinas virtuais (VMs) do Linux.
- Conceitos do Kubernetes e o uso básico da ferramenta de linha de comando do Kubernetes.
Este documento faz parte de uma série sobre migração para o Google Cloud. Para uma visão geral da série, consulte Migração para o Google Cloud: como escolher o caminho de migração.
Leia este documento para migrar aplicativos Tomcat compatíveis de um ambiente de origem compatível para um ambiente do GKE, GKE Enterprise ou Cloud Run. usando o recurso Migrate to Containers. Esses ambientes de origem podem incluir o seguinte:
- Um ambiente do Compute Engine
- Um ambiente VMware vSphere
- Um ambiente de VM do Microsoft Azure
- Um ambiente do Amazon Elastic Compute Cloud (Amazon EC2)
A ferramenta Migrate to Containers usa a ferramenta de avaliação de adequação para descobrir, inspecionar e migrar todos os aplicativos Tomcat nas VMs do Linux. A ferramenta divide os aplicativos Tomcat em contêineres de aplicativos Tomcat individuais. Após a migração, você pode agrupar alguns ou todos os aplicativos em uma imagem de contêiner compartilhada. O diagrama a seguir mostra como a Migrate to Containers divide e migra os aplicativos:
Migrate to Containers oferece os seguintes benefícios:
- Modernização de cargas de trabalho: oferece os seguintes recursos:
- Microsserviços em contêineres, que têm um tamanho de imagem base menor
- Descoberta de serviços
- Elasticidade, usando implantações e HorizontalPodAutoscaler
- Cloud Logging
- Cloud Monitoring
- Ambiente em contêiner: coloca em contêiner os aplicativos atuais baseados em VM. Veja os benefícios de migrar para contêineres.
- Imagem oficial do Tomcat: use a imagem oficial do Tomcat por padrão. É possível atualizar a migração ou o Dockerfile para usar a sua. As imagens oficiais do Docker trazem práticas recomendadas do Docker para suas imagens de base.
- Divisão automática de aplicativos: sugere automaticamente a divisão de cada aplicativo descoberto em um contêiner individual, mantendo a configuração original do Tomcat.
- Gerenciamento de secrets: descobre os keystores, truststores e certificados usados pelo servidor do Tomcat e gera automaticamente primitivos do Kubernetes para externalizar e montá-los como Secrets do Kubernetes.
- Mudanças recomendadas na geração de registros: descobre automaticamente arquivos de configuração de framework de geração de registros comuns do Java (como log4j2, log4j e logback) e sugere alterações para se alinhar à geração de registros no Kubernetes.
Migrar aplicativos Tomcat para contêineres com o Migrate to Containers é uma etapa possível na sua jornada de modernização da carga de trabalho. A migração ajuda a transformar os aplicativos Tomcat para que eles sejam executados em um ambiente de nuvem. Isso também ajuda a evitar substituições caras.
Os candidatos ideais para migração são aplicativos executados em versões compatíveis do Tomcat e Java para as quais a modernização por meio de uma substituição completa é muito cara ou muito difícil.
Projetar a migração para o Google Cloud
Para migrar os aplicativos Tomcat do ambiente de origem para contêineres em execução no Google Cloud, siga o framework descrito na Série de migração para o Google Cloud.
No diagrama a seguir, veja o caminho da sua jornada de migração.
O framework ilustrado no diagrama anterior tem quatro fases:
- Avaliar: avalia o ambiente de origem, avalia os aplicativos que você quer migrar para o Google Cloud e avalia quais aplicativos Tomcat são adequados para migração.
- Planejar: você cria a infraestrutura básica para Migrate to Containers, como provisionar a hierarquia de recursos e configurar o acesso à rede.
- Implantar: você migra os aplicativos Tomcat do ambiente de origem para o GKE, o Autopilot do GKE, o Cloud Run ou o GKE Enterprise com o Migrate to Containers.
- Otimização: você começa a aproveitar as tecnologias e os recursos da nuvem.
Como avaliar o ambiente e os aplicativos de origem
Na fase de avaliação, você reúne informações sobre o ambiente de origem e os aplicativos que você quer migrar. Isso ajuda a dimensionar os recursos necessários, tanto para a migração como para o ambiente de destino.
Na fase de avaliação, faça o seguinte:
- Crie um inventário abrangente dos seus aplicativos.
- Catalogue seus apps de acordo com as propriedades e dependências deles.
- Treine e instrua suas equipes no Google Cloud.
- Crie um experimento e uma prova de conceito no Google Cloud.
- Calcule o custo total de propriedade (TCO) do ambiente de destino.
- Escolha os aplicativos que você quer migrar primeiro.
As seções a seguir são baseadas na Migração para o Google Cloud: como avaliar e descobrir suas cargas de trabalho. No entanto, eles fornecem informações específicas para avaliar os aplicativos Tomcat que você quer migrar para contêineres com o Migrate to Containers.
Criar seus inventários
Para definir o escopo da migração, é necessário entender o ambiente do Tomcat. Para entender seu ambiente, colete informações sobre seus aplicativos e as respectivas dependências.
O guia Como criar um inventário dos seus apps descreve como criar um inventário das cargas de trabalho e as dependências delas no ambiente do Tomcat. Siga essas orientações e crie seus inventários. Quando terminar esse trabalho, continue lendo este documento.
Depois de criar um inventário das cargas de trabalho e das respectivas dependências, refine-o. Avalie os aspectos e recursos que interessam à sua organização ao migrar os aplicativos Tomcat com o Migrate to Containers.
Antes de avaliar o ambiente do Tomcat para a migração, conclua o trabalho de avaliação em Como migrar VMs para contêineres com o Migrate to Containers e Migração para o Google Cloud: como avaliar e descobrir suas cargas de trabalho. Quando terminar esse trabalho, conclua o inventário das suas cargas de trabalho.
Para concluir o inventário das suas cargas de trabalho, considere o seguinte:
- Sistemas operacionais em execução nas instâncias do Tomcat: colete informações sobre os sistemas operacionais e as licenças deles em execução nas instâncias do Tomcat e verifique se os sistemas operacionais estão listados em Sistemas operacionais e versões do Kubernetes compatíveis.
- Versões do Tomcat que executam seus aplicativos: colete informações sobre as versões do Tomcat que executam seus aplicativos e garanta a compatibilidade com o Migrate to Containers.
- Aplicativos implantados nas instâncias do Tomcat: avalie quais
aplicativos serão
implantados em cada instância do Tomcat. Em seguida, mapeie as dependências entre seus aplicativos
e entre seus aplicativos e os serviços externos. Em seguida,
reúna informações sobre as origens de configuração dos seus aplicativos,
que podem incluir as seguintes configurações:
- Variáveis de ambiente
- Caminhos de instalação do Tomcat não padrão
- Registros de usuário LDAP
- Conexões Java Database Connectivity (JDBC)
- Proxy Tomcat
- Proxy Java
- Pontuação de adequação do Migrate to Containers: avalie se os aplicativos Tomcat estão prontos para migração com o Migrate to Containers. O Migrate to Containers oferece uma ferramenta de avaliação de adequação que você precisa executar nas VMs que hospedam as instâncias do Tomcat para calcular uma pontuação de ajuste e recomendar uma jornada de migração. O Migrate to Containers usa um conjunto de regras de avaliação para migrar aplicativos Tomcat com sucesso.
- Cluster do Tomcat: o cluster do Tomcat permite a replicação de sessões em todos os nós do Tomcat no cluster. Algumas
implementações de clustering, incluindo o provedor de assinatura
McastService
integrado, não funcionam corretamente no Kubernetes devido à falta de compatibilidade com multicast no nível da rede. Isso significa que a configuração do cluster do Tomcat requer algumas configurações manuais durante a migração. Para saber mais, consulte ClusteringCloud (em inglês) no wiki do Apache Tomcat. - Proxy Tomcat: em muitos cenários reais, o Tomcat pode ser configurado
para ser executado com um
proxy reverso.
Os principais usos de um proxy reverso incluem o seguinte:
- Descarregamento de SSL: o encerramento das comunicações criptografadas antes de transmitir a solicitação para o servidor de back-end pretendido. O descarregamento de SSL pode ser substituído ao criar uma Entrada com um certificado gerenciado pelo Google.
- Armazenamento em cache: o armazenamento em cache de uma cópia local de uma resposta diminui a sobrecarga do servidor de back-end e diminui o tempo de resposta das chamadas subsequentes. O armazenamento em cache pode ser substituído pela criação de um BackendConfig com o Cloud CDN.
- Compactação: a compactação de respostas do servidor reduz os requisitos de largura de banda da rede. A entrada padrão do GKE não compacta nem descompacta respostas. É possível usar um
controlador de entrada personalizado,
como o
controlador de entrada NGINX,
e ativar a compactação gzip definindo o
Opção use-gzip para
true
.
- Proxy Java:se você usa um servidor proxy para controlar a saída de aplicativos Tomcat e Java, desative as configurações de proxy Java. Remova as configurações de proxy das opções de linha de comando da máquina virtual Java (JVM). Em seguida, configure um gateway de saída do Anthos Service Mesh (ASM) para controlar a rede de saída do contêiner do Tomcat.
Concluir a avaliação
Depois de criar os inventários relacionados ao ambiente e às cargas de trabalho baseadas em Tomcat, conclua o restante das atividades da fase de avaliação documentadas em Migração para o Google Cloud: como avaliar e descobrir suas cargas de trabalho. Quando terminar esse trabalho, continue lendo este documento.
Planeje e crie sua base
Depois de seguir as orientações em Como planejar e criar sua base, conclua sua base do Tomcat:
- Confirme se as cargas de trabalho do Tomcat e o ambiente de origem atendem aos pré-requisitos para migrar uma carga de trabalho do Tomcat.
- Para concluir a fase de coleta de dados, execute
mfit
nas VMs que executam as instâncias do Tomcat. Para mais informações, consulte Como usar a ferramenta de avaliação de adequação.
Para provisionar e configurar o Migrate to Containers e as dependências dele, consulte Configurar o Migrate to Containers.
Quando terminar esse trabalho, continue lendo este documento.
Migrar seus aplicativos Tomcat para contêineres
Na fase de implantação, use os marcos a seguir como orientação.
Gerar e analisar o plano de migração
Crie um plano de migração para contêineres para seus aplicativos Tomcat:
- Configurar os ambientes de origem como origens de migração do Migrate to Containers: para migrar aplicativos tradicionais do WAS, o Migrate to Containers precisa de informações sobre os ambientes de origem em que as VMs são executadas. Você coletou essas informações executando as tarefas descritas na seção Criar seus inventários neste documento. Para mais informações sobre como configurar ambientes de origem, consulte Como adicionar uma origem de migração.
Crie um plano de migração: para especificar quais aplicativos do Tomcat você quer migrar de um ambiente de origem para um ambiente de destino compatível, crie um plano de migração. Por exemplo, é possível configurar onde você quer armazenar os dados permanentes.
Para mais informações sobre como criar e monitorar planos de migração, consulte Como criar uma migração. Para criar um plano de migração para aplicativos Tomcat, use a ferramenta de linha de comando
migctl
, conforme descrito em Como executar uma migração.Revise e personalize planos de migração: após gerar planos de migração para cada uma das VMs que você quer migrar, revise e personalize cada plano de migração para garantir que ele atenda aos seus requisitos. Para mais informações sobre como personalizar planos de migração, consulte Como personalizar um plano de migração.
Gerar artefatos de migração e descritores de implantação
Para gerar os artefatos Tomcat de destino para seus aplicativos, o Migrate to Containers extrai os aplicativos em execução nas VMs configuradas nos planos de migração. Em seguida, ele cria vários artefatos e os coloca em um bucket do Cloud Storage. O Migrate to Containers também gera os descritores de implantação, que podem ser personalizados e usados para implantar instâncias das imagens de contêiner no ambiente de destino.
Para cada aplicativo migrado, o Migrate to Containers cria uma pasta contendo o seguinte:
- Dockerfile
- Binários de aplicativo
- Arquivos de configuração do Tomcat
- Script de criação
- YAML do Skaffold, para criação e implantação
- (Optional) script do
secrets.sh
- (Opcional) Arquivo de geração de registros
É possível monitorar o progresso dos artefatos de contêiner criados e migrados. Para mais informações sobre como monitorar uma migração, consulte Como monitorar cargas de trabalho migradas.
Verificar e validar os recursos e descritores gerados
Depois de gerar artefatos de contêiner e descritores de implantação com o Migrate to Containers, revise e atualize esses artefatos e descritores para garantir que eles atendam aos seus requisitos. Por exemplo, considere os aspectos a seguir.
- Descritores de imagens de contêiner: analise os descritores de imagem de contêiner gerados com o Migrate to Containers e verifique se eles são adequados para a carga de trabalho de contêiner. Se você precisar atualizar a imagem do contêiner
base, atualize o valor
FROM
no Dockerfile gerado. É possível também alterar a variável de ambienteCATALINA_OPTS
no Dockerfile para definir ou alterar as variáveis de ambiente da JVM. - Geração de registros no nível do aplicativo: o Migrate to Containers gera automaticamente um arquivo de geração de registros modificado, que você pode usar para modificar a configuração de geração de registros para gravar registros no console em vez de arquivos locais de dados.
Para mais informações sobre como analisar artefatos de contêiner e descritores de implantação, consulte Analisar os artefatos.
Implantar e validar as cargas de trabalho conteinerizadas no GKE, GKE Autopilot, Cloud Run ou GKE Enterprise
Quando os descritores de implantação para suas cargas de trabalho estiverem prontos, será possível executar as seguintes tarefas:
- Crie uma imagem de contêiner do aplicativo: crie uma imagem de contêiner de aplicativo para a carga de trabalho migrada. Para instruções, consulte Criar a imagem do contêiner.
- Implante suas cargas de trabalho migradas no ambiente de destino:
- Para implantar os aplicativos migrados no GKE, no Autopilot do GKE ou no GKE Enterprise, siga as instruções em Como implantar uma carga de trabalho do Tomcat em um cluster de destino.
- Para implantar aplicativos migrados no Cloud Run, siga as instruções em Como implantar no Cloud Run.
- Monitore suas cargas de trabalho migradas: depois de implantar o contêiner de aplicativo Tomcat, é possível coletar dados sobre o desempenho delas no ambiente de destino. Para mais informações, consulte Como monitorar cargas de trabalho migradas.
- Integre suas cargas de trabalho migradas: depois que suas cargas de trabalho forem implantadas no ambiente de destino, integre a geração de artefatos e os processos de implantação de cargas de trabalho aos processos de implantação e pipelines. Se você não tiver um processo de implantação automatizado em vigor e implantar suas cargas de trabalho manualmente, recomendamos migrar das implantações manuais para implantações automatizadas.
Desinstalar o Migrate to Containers
Depois de concluir a migração das cargas de trabalho com o Migrate to Containers, recomendamos que você faça o seguinte:
- Verifique se você tem todas as referências aos artefatos que o Migrate to Containers gerou durante a migração.
- Desinstale o Migrate to Containers.
Otimizar o ambiente após a migração
Para concluir a migração, consulte Como otimizar o ambiente.
É possível executar essas otimizações específicas do Tomcat para seus aplicativos migrados do Tomcat:
- Ajuste sua geração de registros: diferentemente das VMs em que os arquivos de registro normalmente são gravados no sistema de arquivos local, os registros do Kubernetes normalmente são transmitidos para
stdout
oustderr
. Em seguida, os registros são armazenados, analisados e consultados por meio de um back-end dedicado, como o Cloud Logging. É possível usar as alterações recomendadas no Migrate to Containers no artefato de arquivologConfigs
ou alterar manualmente a configuração de geração de registros para gravar registros emstdout
oustderr
. - Como proteger dados confidenciais:coloque senhas e outros dados confidenciais no Secrets do Kubernetes. Use secrets do Kubernetes para substituir os marcadores de configuração na inicialização do contêiner.
- Ajustar o perfil de recurso: para ajudar o Kubernetes a programar seus pods de maneira eficiente, ajuste as restrições de recursos para solicitações e limites. O ajuste fino dos recursos para se alinhar ao tamanho do heap da JVM também é fundamental para evitar exceções de falta de memória (OOM, na sigla em inglês).
- Posição do pod de controle:caso seus aplicativos Tomcat migrados se comuniquem com frequência uns com os outros, programe-os para serem executados nos mesmos nós. Se controlar o posicionamento de pods for útil para os aplicativos migrados, consulte Como atribuir pods a nós.
A seguir
- Veja um guia passo a passo para migrar um aplicativo Tomcat para um contêiner.
- Veja um guia passo a passo para migrar vários aplicativos Tomcat executados em um proxy reverso para um contêiner.
- Saiba mais sobre as práticas recomendadas para criar e operar contêineres.
- Leia sobre as práticas recomendadas para executar aplicativos econômicos do Kubernetes no GKE.
- Leia sobre a arquitetura de microsserviços.
- Como migrar VMs para contêineres com o Migrate to Containers
- Como migrar aplicativos do WebSphere para contêineres com o Migrate to Containers
- Confira arquiteturas de referência, diagramas e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.