Migración de aplicaciones de JBoss EAP a Red Hat OpenShift en Azure

En esta guía se describe lo que debe tener en cuenta cuando desee migrar una aplicación JBoss EAP existente para ejecutarla en Red Hat OpenShift en Azure.

Antes de la migración

Para asegurarse de que la migración se realiza correctamente, antes de empezar, complete los pasos de evaluación e inventario descritos en las secciones siguientes.

Asegúrese de que el destino es el adecuado para su esfuerzo de migración

El primer paso para migrar una aplicación JBoss EAP a Azure con éxito es seleccionar el destino de migración más adecuado. JBoss EAP funciona bien en máquinas virtuales (VM) de Azure o Red Hat OpenShift en Azure.

El destino de la máquina virtual es la opción más fácil, ya que se asemeja más a una implementación local. La experiencia administrativa y de implementación de las máquinas virtuales es similar a la de las instalaciones locales. La selección de máquinas virtuales le permite aplazar la modernización.

Red Hat OpenShift reúne servicios probados y de confianza para reducir la fricción del desarrollo, modernización, implementación, ejecución y administración de aplicaciones. Red Hat OpenShift en Azure se basa en Kubernetes. Red Hat OpenShift de Azure proporciona una experiencia coherente en la nube pública, en el entorno local, en la nube híbrida o en las arquitecturas perimetrales.

Si minimizar el cambio es el factor más importante para su esfuerzo de migración, considere una migración basada en máquinas virtuales. En este caso, consulte Migrar aplicaciones JBoss EAP a JBoss EAP en VM de Azure. Si puede tolerar convertir su aplicación para que se ejecute dentro de Red Hat OpenShift para reducir el coste de tiempo de ejecución, considere una migración basada en Red Hat OpenShift en Azure. En este caso, continúe con Migrar aplicaciones de JBoss EAP a JBoss EAP en Red Hat OpenShift en Azure. Para comprender las diferencias entre JBoss EAP y JBoss EAP para OpenShift, consulte Comparación: JBoss EAP y JBoss EAP para OpenShift.

Determinación de si la oferta de Azure Marketplace preconfigurada es un buen punto de partida

En primer lugar, decida que Red Hat OpenShift en Azure es el objetivo de implantación adecuado. A continuación, decida si la oferta predefinida de Azure Marketplace es un buen punto de partida. Considere los siguientes puntos sobre la oferta prediseñada de Azure Marketplace:

  • Red Hat y Microsoft crearon esta oferta para permitir un aprovisionamiento rápido de JBoss EAP en Red Hat OpenShift en Azure.
  • A alto nivel, la oferta automatiza los siguientes pasos para usted.
    • Instalar EAP Operator en Red Hat OpenShift en Azure.
    • Compile una imagen de aplicación mediante la plantilla eap-s2i-build. Para obtener más información sobre código fuente a imagen (S2I), consulte Uso de source-to-image para OpenShift con OpenJDK 11.
    • Implemente la aplicación Java utilizando el operador EAP. Para obtener más información, consulte la documentación de referencia de EAP Operator en Red Hat.

Si no utiliza la oferta prediseñada de Azure Marketplace, deberá aprender a utilizar el Operador EAP directamente. Dominar el operador está más allá del alcance de este artículo. La documentación completa para el EAP Operator está disponible en Red Hat.

El resto de esta sección proporciona algunas consideraciones para decidir si utilizar la oferta prediseñada de Azure Marketplace o utilizar el operador directamente.

Determinación de si la versión de JBoss EAP es compatible

Su versión existente de JBoss EAP debe ser una de las versiones compatibles con el operador. Para más información, consulte Compatibilidad y soporte de versiones en la documentación de Red Hat.

Capacidad del servidor de inventario

Documente el hardware (memoria, CPU, disco) de los servidores de producción actuales, así como el promedio y máximo del número de solicitudes y el uso de recursos. Necesitará esta información independientemente de la ruta de migración que elija. Los siguientes aspectos, y más, se benefician de tener un inventario detallado de la capacidad del servidor.

  • Para ayudar a seleccionar el tamaño de las máquinas virtuales de su grupo de nodos.
  • Para conocer la cantidad de memoria que usará el contenedor.
  • Para saber cuántas CPU compartidas necesita el contenedor.

Es posible redimensionar las agrupaciones de nodos en Red Hat OpenShift en Azure. Para obtener más información, consulte Redimensionar un clúster--Microsoft Azure en la documentación de Red Hat.

Inventariar todos los secretos

Antes de la llegada de las tecnologías de "configuración como servicio", como Azure Key Vault, no había un concepto bien definido de "secretos". En su lugar, tenías un conjunto heterogéneo de opciones de configuración que, en la práctica, funcionaban como lo que hoy llamamos "secretos". Con los servidores de aplicaciones como JBoss EAP, estos secretos se encuentran en muchos archivos y almacenes de configuración diferentes. Revise todos los archivos de propiedades y de configuración del/los servidor(es) de producción en busca de secretos y contraseñas. Asegúrese de revisar los archivos de configuración como custom-config.xml o jboss-web.xml en sus aplicaciones. Los archivos de configuración que contienen contraseñas o credenciales también se pueden encontrar dentro de la aplicación. Para más información, consulte Conceptos básicos de Azure Key Vault.

Una vez que tenga un inventario sólido de secretos, consulte la documentación del Operador EAP relativa a los secretos. Para más información, consulte Crear un secreto en la documentación de Red Hat.

Inventario de todos los certificados

Documente todos los certificados usados para los puntos de conexión SSL públicos. Para ver todos los certificados de los servidores de producción, ejecute el siguiente comando:

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

Una vez que tenga un inventario sólido de certificados, puede configurarlos en Red Hat OpenShift en Azure. Para obtener más información, consulte Configuración de TLS en OpenShift Container Platform(replace) en la documentación de Red Hat.

Comprobación de que la versión compatible de Java funciona correctamente

Todas las rutas de migración de JBoss EAP a Red Hat OpenShift en Azure requieren una versión específica de Java, que varía para cada ruta de acceso. Deberá comprobar que la aplicación puede ejecutarse correctamente con esa versión compatible.

Nota:

Esta validación es especialmente importante si el servidor actual se está ejecutando en un JDK no compatible (como Oracle JDK o IBM OpenJ9).

Para obtener la versión actual de Java, inicie sesión en el servidor de producción y ejecute el siguiente comando:

java -version

Inventario de los recursos de JNDI

Realice un inventario de todos los recursos de JNDI. Por ejemplo, las fuentes de datos, como las bases de datos, pueden tener un nombre JNDI asociado que permite a JPA vincular correctamente instancias de a una base de datos concreta. Para más información sobre recursos JNDI y bases de datos, consulte la Gestión de fuentes de datos en la documentación de Red Hat. Otros recursos relacionados con JNDI, como los brokers de mensajes ActiveMQ Artemis, pueden requerir migración o reconfiguración. Para obtener más información sobre la configuración de ActiveMQ Artemis, consulte Configuración de la mensajería en la documentación de Red Hat.

Determinación de si se usa la replicación de sesión

Si su aplicación depende de la replicación de sesiones, con o sin Infinispan, tiene tres opciones:

  • Infinispan funciona bien en máquinas virtuales de Azure, pero si usa un perfil que proporciona funcionalidades de alta disponibilidad, tenga en cuenta la configuración de JGroups. Determine si su sistema funciona como un dominio administrado o como un servidor independiente.
    • Si está en un dominio administrado, los perfiles ha y full-ha gestionan JGroups.
    • Si se encuentra en un servidor independiente, los archivos de configuración standalone-ha.xml o standalone-full-ha.xml se ocupan de JGroups.
    • Microsoft Azure no admite protocolos de detección de JGroups basados en multidifusión UDP. Para más información, consulte Uso de JBoss EAP High Availability en Microsoft Azure en la documentación de Red Hat.
  • Refactorice la aplicación para utilizar una base de datos para la administración de sesiones.
  • Refactorice la aplicación para externalizar la sesión en el servicio Azure Redis. Para más información, consulte Azure Cache for Redis.

Para todas estas opciones, es una buena idea dominar cómo JBoss EAP realiza la replicación del estado de sesión HTTP. Para obtener más información, consulte Acerca de la replicación de sesiones HTTP en la documentación de Red Hat.

Orígenes de datos del documento

Si su aplicación usa bases de datos, debe capturar la siguiente información:

  • ¿Cuál es el nombre del origen de datos?
  • ¿Cuál es la configuración del grupo de conexiones?
  • ¿Dónde puedo encontrar el archivo JAR del controlador JDBC?

Para obtener más información sobre los controladores JDBC en JBoss EAP, consulte Administración de fuentes de datos en la documentación de Red Hat.

Determinación de si se ha personalizado JBoss EAP

Determine cuáles de las siguientes personalizaciones se han realizado y registre lo que se ha hecho.

  • ¿Se han cambiado los scripts de inicio? Estos scripts incluyen host, eap_env, standalone y domain.
  • ¿Se han pasado parámetros específicos a JVM?
  • ¿Se han agregado archivos JAR a la ruta de clases del servidor?

Estas personalizaciones deben capturarse en la imagen del contenedor que se ejecuta en Red Hat OpenShift en Azure. Para obtener más información, consulte Configurar la imagen de JBoss EAP para OpenShift para su aplicación Java en la documentación de Red Hat.

Determinación de si se necesita una conexión al entorno local

Si su aplicación necesita acceder a cualquiera de los servicios locales, deberá aprovisionar uno de los servicios de conectividad de Azure. Para obtener más información, consulte Conectar una red local a Azure. Como alternativa, será necesario refactorizar la aplicación para usar las API públicas que exponen sus recursos de la infraestructura local.

Determinación de si las colas o los temas de Java Message Service (JMS) están en uso

Si la aplicación utiliza colas o temas de JMS, quizá quiera migrarlos a un servidor de JMS hospedado externamente. Azure Service Bus y Advanced Message Queuing Protocol pueden ser una estrategia de migración excelente para los usuarios que usan JMS. Para obtener más información, consulte Uso de Java Message Service 1.1 con Azure Service Bus estándar y AMQP 1.0.

Si se han configurado almacenes persistentes de JMS, debe capturar su configuración y aplicarla después de la migración.

Para obtener más información, consulte Configuración de la mensajería en la documentación de Red Hat.

Determinación de si usa sus propias bibliotecas de Java EE compartidas personalizadas

Si utiliza la característica de biblioteca de Java EE compartida, tiene dos opciones:

  • Refactorizar el código de la aplicación para quitar todas las dependencias de las bibliotecas y, en su lugar, incorpore la funcionalidad directamente a la aplicación.
  • Agregar las bibliotecas a la ruta de clases del servidor.

Puede gestionar estas bibliotecas mediante las mismas técnicas que se describen en la sección Determinar si JBoss EAP ha sido personalizado.

Determinación de si la aplicación contiene código específico del sistema operativo

Si la aplicación contiene código con dependencias en el sistema operativo del host, deberá refactorizarla para quitar esas dependencias. Por ejemplo, es posible que tenga que reemplazar cualquier uso de o en las rutas del sistema de archivos por o si su aplicación se ejecuta en Windows.

Red Hat OpenShift en Azure se ejecuta en OpenShift 4 con Red Hat Enterprise Linux CoreOS (RHCOS) como sistema operativo para todos los nodos de trabajo y del plano de control. Cualquier código específico del sistema operativo debe ser compatible con RHCOS.

Determinación de si la aplicación se compone de varios WAR

Si la aplicación se compone de varios WAR, debe tratar cada uno como aplicaciones independientes y seguir esta guía para cada una de ellas.

Determinación de si la aplicación está empaquetada como EAR

Si su aplicación está empaquetada como un archivo EAR, asegúrese de capturar sus configuraciones.

Identifique todos los procesos externos y demonios que se ejecutan en los servidores de producción

Si tiene procesos que se ejecutan fuera del servidor de aplicaciones, como demonios de monitorización, tendrá que eliminarlos o migrarlos a otro entorno.

Tenga en cuenta los requisitos de equilibrio de carga

La mejor forma de tener en cuenta el equilibrio de carga es usar la integración de App Gateway. Para más información, consulte ¿Qué es Azure Application Gateway?

Migración

Los pasos de esta sección suponen que su análisis le ha llevado a decidir usar la oferta prediseñada de Azure Marketplace.

Aprovisionamiento de la oferta

Para abrir la oferta en el portal de Azure, consulte JBoss EAP en Red Hat OpenShift en Azure. Seleccione Crear y siga las instrucciones de la oferta.

Migración de las aplicaciones

La oferta admite el proceso Source-to-Image (S2I) para crear y ejecutar una aplicación Java sobre la imagen JBoss EAP para OpenShift. Red Hat tiene un ejemplo que muestra cómo hacerlo manualmente si desea implementarlo más tarde por su cuenta. Para más información, consulte el Capítulo 2. Crear y ejecutar una aplicación Java con la imagen de JBoss EAP para OpenShift en la documentación de Red Hat.

Después de la migración

Una vez que haya alcanzado los objetivos de migración que definió en el paso de premigración, realice pruebas de aceptación de extremo a extremo para verificar que todo funciona según lo previsto. Para obtener información sobre algunas posibles mejoras posteriores a la migración, consulte los siguientes artículos:

  • Implemente el escalado. El escalado dinámico es una propuesta de valor clave para justificar la complejidad de usar Red Hat OpenShift en Azure. Para obtener información sobre cómo implementar su solución de escalado, consulte Aplicación del escalado automático a un clúster de OpenShift Container Platform en la documentación de OpenShift.

  • Es posible que desee realizar más configuraciones en el Application Gateway. Para más información, consulte información general sobre la configuración de Application Gateway.

  • Mejorar la topología de red con servicios avanzados de equilibrio de carga. Para más información, consulte Uso de servicios de equilibrio de carga en Azure.

  • Obtenga una supervisión del rendimiento de las aplicaciones optimizada para Java con Azure Monitor y Application Insights. Para obtener más información, consulte Supervisión de aplicaciones sin instrumentación para Kubernetes - Azure Monitor Application Insights.

  • Implemente sus aplicaciones en su clúster Red Hat OpenShift en Azure migrado con Azure DevOps. Para obtener más información, consulte la documentación para empezar a usar Azure DevOps.

  • Use las identidades administradas de Azure para administrar los secretos y asigne un acceso basado en roles a los recursos de Azure. Para obtener más información, consulta ¿Qué son las identidades administradas para recursos de Azure?

  • Integre la autenticación y autorización de Java EE con el Microsoft Entra ID. Para obtener más información, consulte la guía de introducción a la integración de Microsoft Entra ID con aplicaciones.