Migra aplicaciones de Tomcat a contenedores con Migrate to Containers

Last reviewed 2022-06-17 UTC

Este documento está dirigido a los propietarios de aplicaciones y arquitectos de la nube. En este documento, se describe cómo migrar aplicaciones de Java que se ejecutan en Tomcat a contenedores que se ejecutan en Google Kubernetes Engine (GKE), Autopilot de GKE, Cloud Run o GKE Enterprise. Puedes usar este proceso para migrar aplicaciones de Tomcat desde entornos locales, entornos de hosting privado u otros proveedores de servicios en la nube. También se destacan los beneficios de usar Migrate to Containers para automatizar la migración.

En este documento, se supone que estás familiarizado con los siguientes productos:

Este documento es parte de una serie sobre la migración a Google Cloud. Para obtener una descripción general de la serie, consulta Migración a Google Cloud: Elige la ruta de migración.

Lee este documento para migrar aplicaciones compatibles de Tomcat desde un entorno de origen compatible a un entorno de GKE, GKE Enterprise o Cloud Run mediante Migrate to Containers. Estos entornos de origen pueden incluir los siguientes elementos:

Migrate to Containers usa la herramienta de evaluación de idoneidad para descubrir, inspeccionar y migrar todas tus aplicaciones de Tomcat en las VM de Linux. La herramienta divide las aplicaciones de Tomcat en contenedores de aplicaciones de Tomcat individuales. Después de la migración, puedes agrupar algunas o todas las aplicaciones en una imagen de contenedor compartida. En el siguiente diagrama, se muestra cómo Migrate to Containers divide y migra las aplicaciones:

Migrate to Containers divide y migra aplicaciones de Tomcat.

Migrate to Containers ofrece los siguientes beneficios:

  • Modernización de cargas de trabajo: proporciona las siguientes funciones:
  • Entorno alojado en contenedores: Aloja en contenedores las aplicaciones basadas en VM existentes. Consulta Beneficios de migrar a contenedores.
  • Imagen oficial de Tomcat: Usa la imagen oficial de Tomcat de forma predeterminada o actualiza la migración o el Dockerfile para usar la tuya. Las imágenes oficiales de Docker aplican las prácticas recomendadas de Docker a tus imágenes base.
  • División automática de aplicaciones: Sugiere la división automática de cada aplicación detectada en un contenedor individual, a la vez que mantienes la configuración original de Tomcat.
  • Administración de Secrets: Descubre los almacenes de claves, los almacenes de confianza y los certificados que usa tu servidor de Tomcat y genera automáticamente las primitivas de Kubernetes para externalizarlas y activarlas comoSecrets de Kubernetes.
  • Cambios de registro recomendados: Descubre automáticamente los archivos de configuración comunes del framework de registro de Java (como log4j2, log4j y logback) y sugiere cambios para alinearse con el registro en Kubernetes.

Migrar aplicaciones de Tomcat a contenedores con Migrate to Containers es un paso posible en tu proceso de modernización de la carga de trabajo. La migración te ayuda a transformar las aplicaciones de Tomcat para que se ejecuten en un entorno de nube. También te ayuda a evitar reescrituras costosas.

Los candidatos de migración ideales son aplicaciones que se ejecutan en versiones compatibles de Tomcat y Java, cuya modernización mediante una reescritura completa es demasiado costosa o difícil.

Diseña la migración a Google Cloud

Para migrar las aplicaciones de Tomcat del entorno de origen a los contenedores que se ejecutan en Google Cloud, sigue el framework descrito en la Serie de migración a Google Cloud.

En el siguiente diagrama, se ilustra la ruta del recorrido de tu migración:

Ruta de migración con cuatro fases

El framework que se ilustra en el diagrama anterior consta de las siguientes cuatro fases:

  1. Evalúa: Evalúa tu entorno de origen y las aplicaciones que deseas migrar a Google Cloud, y determina qué aplicaciones de Tomcat son adecuadas para la migración.
  2. Planifica: Crea la infraestructura básica para Migrate to Containers, como aprovisionar la jerarquía de recursos y configurar el acceso a la red.
  3. Implementa: Migra las aplicaciones de Tomcat del entorno de origen a GKE, GKE Autopilot, Cloud Run o GKE Enterprise con Migrate to Containers.
  4. Optimiza: Comienza a aprovechar las tecnologías y capacidades de la nube.

Evalúa el entorno de origen y las aplicaciones

En la fase de evaluación, debes recopilar información sobre tu entorno de origen y las aplicaciones que deseas migrar. Esto te ayuda a dimensionar correctamente los recursos que necesitas, tanto para la migración como para tu entorno de destino.

En la fase de evaluación, debes realizar las siguientes tareas:

  1. Crea un inventario completo de tus aplicaciones.
  2. Cataloga tus aplicaciones según sus propiedades y dependencias.
  3. Capacita y educa a tus equipos en Google Cloud.
  4. Compila un experimento y prueba de concepto en Google Cloud.
  5. Calcula el costo total de propiedad (TCO) del entorno de destino.
  6. Elige las aplicaciones que deseas migrar primero.

Las siguientes secciones se basan en Migración a Google Cloud: Evaluación y descubrimiento de tus cargas de trabajo. Sin embargo, proporcionan información específica para evaluar las aplicaciones de Tomcat que deseas migrar a contenedores con Migrate to Containers.

Compila tus inventarios

Para determinar el alcance de tu migración, debes comprender tu entorno de Tomcat. Para comprender el entorno, recopila información sobre las aplicaciones y sus dependencias.

En Compila un inventario de tus apps, se describe cómo compilar un inventario de las cargas de trabajo y sus dependencias en el entorno de Tomcat. Sigue esa guía y crea tus inventarios. Cuando hayas terminado con ese trabajo, continúa leyendo este documento.

Una vez que hayas creado un inventario de tus cargas de trabajo y sus dependencias, define mejor el inventario. Evalúa los aspectos y las funciones que le interesan a tu organización cuando migre sus aplicaciones Tomcat con Migrate to Containers.

Antes de evaluar el entorno de Tomcat para la migración, completa el trabajo de evaluación en Migra las VM a contenedores con Migrate to Containers y Migración a Google Cloud: Evaluación y descubrimiento de tus cargas de trabajo. Cuando termines con ese trabajo, completa el inventario de tus cargas de trabajo.

Para completar el inventario de tus cargas de trabajo, considera lo siguiente:

  • Sistemas operativos que se ejecutan en instancias de Tomcat: Recopila información sobre los sistemas operativos y sus licencias que se ejecutan en tus instancias de Tomcat, y asegúrate de que los sistemas operativos aparezcan en Sistemas operativos y versiones de Kubernetes compatibles.
  • Versiones de Tomcat que ejecutan tus aplicaciones: Recopila información sobre las versiones de Tomcat que ejecutan tus aplicaciones y asegúrate de que sean compatibles con Migrate to Containers.
  • Aplicaciones implementadas en tus instancias de Tomcat: Evalúa qué aplicaciones se implementan en cada instancia de Tomcat. Luego, asigna las dependencias entre tus aplicaciones, y entre tus aplicaciones y servicios externos. A continuación, recopila información sobre las fuentes de configuración de tus aplicaciones, que pueden incluir las siguientes configuraciones:
    • Variables de entorno
    • Rutas de instalación no estándar de Tomcat
    • Registros de usuarios de LDAP
    • Conexiones de conectividad a bases de datos de Java (JDBC)
    • Proxy de Tomcat
    • Proxy para Java
  • Puntuación de idoneidad de Migrate to Containers: Evalúa si las aplicaciones de Tomcat son adecuadas para migrar con Migrate to Containers. Migrate to Containers proporciona una herramienta de evaluación de idoneidad que debes ejecutar en las VM que alojan tus instancias de Tomcat para calcular una puntuación de idoneidad y recomendar un proceso de migración. Migrate to Containers usa un conjunto de reglas de evaluación para migrar aplicaciones de Tomcat correctamente.
  • Agrupamiento en clústeres de Tomcat: El agrupamiento en clústeres de Tomcat habilita la replicación de sesiones en todos los nodos de Tomcat del clúster. Algunas implementaciones de agrupamiento en clústeres, incluido el proveedor de membresía McastService integrado, no funcionan de forma correcta en Kubernetes debido a la falta de compatibilidad con la multidifusión a nivel de red. Esto significa que configurar el agrupamiento en clústeres de Tomcat requiere cierta configuración manual durante la migración. Para obtener más información, consulta ClusteringCloud en la wiki de Apache Tomcat.
  • Proxy de Tomcat: En muchas situaciones reales, Tomcat podría configurarse para ejecutarse detrás de un proxy inverso. Entre los usos principales de un proxy inverso, se incluyen los siguientes:
  • Proxy de Java: Si usas un servidor proxy para controlar la salida de las aplicaciones de Tomcat y Java, puedes inhabilitar la configuración del proxy de Java. Quita la configuración del proxy de las opciones de línea de comandos de la máquina virtual de Java (JVM). Luego, configura una puerta de enlace de salida de Anthos Service Mesh (ASM) para controlar las herramientas de redes de salida de tu contenedor de Tomcat.

Completa la evaluación

Después de compilar los inventarios relacionados con tu entorno y tus cargas de trabajo de Tomcat, completa el resto de las actividades de la fase de evaluación documentadas en Migración a Google Cloud: Evaluación y descubrimiento de tus cargas de trabajo. Cuando hayas terminado con ese trabajo, continúa leyendo este documento.

Planifica y compila tu base

Después de seguir las instrucciones en Planifica y compila la base, completa la base de Tomcat:

  1. Confirma que las cargas de trabajo y el entorno de origen de Tomcat cumplan con los requisitos para migrar una carga de trabajo de Tomcat.
  2. Para completar la fase de recopilación de datos, ejecuta mfit en las VM que ejecutan tus instancias de Tomcat. Para obtener más información, consulta Usa la herramienta de evaluación de idoneidad.

Para aprovisionar y configurar Migrate for Containers y sus dependencias, consulta Configura Migrate to Containers.

Cuando hayas terminado con ese trabajo, continúa leyendo este documento.

Migra tus aplicaciones de Tomcat a contenedores

En la fase de implementación, usa los siguientes eventos importantes para guiarte.

Genera y revisa el plan de migración

Crea un plan de migración de Migrate to Containers para tus aplicaciones de Tomcat:

  1. Configura los entornos de origen como fuentes de migración de Migrate to Containers: Para migrar las aplicaciones de Tomcat, Migrate to Containers necesita información sobre los entornos de origen en los que se ejecutan tus VM. Para recopilar esa información, realiza las tareas descritas en la sección Compila tus inventarios en este documento. Para obtener más información sobre la configuración de entornos de origen, consulta Agrega una fuente de migración.
  2. Crea un plan de migración: Para especificar qué aplicaciones de Tomcat deseas migrar de un entorno de origen a un entorno de destino compatible, crea un plan de migración. Por ejemplo, puedes configurar dónde deseas almacenar tus datos persistentes.

    Para obtener más información sobre cómo crear y supervisar planes de migración, consulta Crea una migración. A fin de crear un plan de migración para las aplicaciones de Tomcat, usa la herramienta de línea de comandos de migctl como se describe en Ejecuta una migración.

  3. Revisa y personaliza los planes de migración: Después de generar planes de migración para cada una de las VM que deseas migrar, revisa y personaliza cada plan a fin de asegurarte de que se adapte a tus requisitos. Para obtener más información sobre cómo personalizar los planes de migración, consulta Personaliza un plan de migración.

Genera artefactos de migración y descriptores de implementación

A fin de generar los artefactos de Tomcat de destino para tus aplicaciones, Migrate to Containers extrae las aplicaciones que se ejecutan en las VM que configuraste en los planes de migración. Luego, crea varios artefactos y los coloca en un bucket de Cloud Storage. Migrate to Containers también genera descriptores de implementación que puedes personalizar y usar para implementar instancias de las imágenes de contenedor en el entorno de destino.

Para cada aplicación migrada, Migrate to Containers crea una carpeta que contiene los siguientes elementos:

  • Dockerfile
  • Objetos binarios de la aplicación
  • Archivos de configuración de Tomcat
  • Secuencia de comandos de compilación
  • YAML Skaffold, para compilar e implementar
  • (Opcional) Secuencia de comandos secrets.sh
  • (Opcional) Archivo de registro

Puedes supervisar el progreso de los artefactos del contenedor que creas y migras. Para obtener más información sobre cómo supervisar una migración, consulta la sección sobre cómo supervisar las cargas de trabajo migradas.

Verifica y valida los descriptores y recursos generados

Después de generar artefactos de contenedor y descriptores de implementación con Migrate to Containers, revisa y actualiza esos artefactos y descriptores para asegurarte de que cumplan con tus requisitos. Por ejemplo, considera los siguientes aspectos:

  • Descriptores de imágenes de contenedor: Revisa los descriptores de imágenes de contenedor que generaste con Migrate to Containers, y verifica que sean adecuados para la carga de trabajo del contenedor. Si necesitas actualizar la imagen del contenedor base, actualiza el valor de FROM en el Dockerfile generado. También puedes cambiar la variable de entorno CATALINA_OPTS en el Dockerfile para configurar o cambiar las variables de entorno de JVM.
  • Registro a nivel de aplicación: Migrate to Containers genera de forma automática un archivo de registro modificado, que puedes usar para modificar la configuración de registro a fin de escribir registros en la consola, en lugar de en archivos locales.

Para obtener más información sobre cómo revisar los artefactos de contenedores y los descriptores de implementación, consulta Revisa los artefactos.

Implementa y valida las cargas de trabajo alojadas en contenedores en GKE, GKE Autopilot, Cloud Run o GKE Enterprise

Cuando los descriptores de implementación para tus cargas de trabajo estén listos, puedes realizar las siguientes tareas:

  1. Compila una imagen de contenedor de la aplicación: Compila una imagen de contenedor de la aplicación para la carga de trabajo migrada. Para obtener instrucciones, consulta Compila la imagen de contenedor.
  2. Implementa tus aplicaciones migradas en el entorno de destino:
  3. Supervisa las cargas de trabajo migradas: Después de implementar el contenedor de la aplicación Tomcat, puedes recopilar datos sobre su rendimiento en el entorno de destino. Para obtener más información, consulta Supervisa las cargas de trabajo migradas.
  4. Integra tus cargas de trabajo migradas: Después de implementar tus cargas de trabajo en el entorno de destino, integra los procesos de generación e implementación de artefactos de contenedores de las cargas de trabajo con tus canalizaciones y procesos de implementación. Si no tienes un proceso de implementación automatizado e implementas tus cargas de trabajo de forma manual, te recomendamos que migres de implementaciones manuales a implementaciones automatizadas.

Desinstala Migrate to Containers

Después de completar la migración de tus cargas de trabajo con Migrate to Containers, te recomendamos que realices las siguientes acciones:

  1. Asegúrate de tener todas las referencias a los artefactos que Migrate to Containers generó durante la migración.
  2. Desinstala Migrate to Containers.

Optimiza tu entorno después de la migración

Para completar la migración, consulta Optimiza tu entorno.

Puedes realizar estas optimizaciones específicas de Tomcat para las aplicaciones de Tomcat migradas:

  • Ajusta el registro: A diferencia de las VM en las que los archivos de registro se suelen escribir en el sistema de archivos local, los registros de Kubernetes se suelen transmitir a stdout o stderr. Luego, los registros se almacenan, analizan y consultan a través de un backend dedicado, como Cloud Logging. Puedes usar los cambios recomendados de Migrate to Containers en el artefacto de archivo logConfigs o cambiar de forma manual la configuración de registro para escribir registros en stdout o stderr.
  • Protege tus datos sensibles: Coloca contraseñas y cualquier otro dato sensible en Secrets de Kubernetes. Usa los Secrets de Kubernetes para reemplazar los marcadores de posición de configuración cuando se inicia el contenedor.
  • Ajusta el perfil de recursos: A fin de ayudar a Kubernetes a programar tus Pods de manera eficiente, ajusta las restricciones de recursos para solicitudes y límites. Ajustar los recursos para que se alineen al tamaño del montón de JVM también es fundamental a fin de evitar excepciones de memoria insuficiente (OOM).
  • Controla la ubicación de Pods: Si tus aplicaciones de Tomcat migradas se comunican con frecuencia entre sí, es posible que desees programarlas para que se ejecuten en los mismos nodos. Si controlar la ubicación de los Pods sería beneficioso para tus aplicaciones migradas, consulta Asigna Pods a nodos.

¿Qué sigue?