Migración de aplicaciones de JBoss EAP a JBoss EAP en máquinas virtuales de Azure
En esta guía se describe lo que hay que tener en cuenta para migrar una aplicación de JBoss EAP existente para que se ejecute en JBoss EAP en máquinas virtuales de 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.
Definición del significado de "migración completa"
Esta guía, y las ofertas de Azure Marketplace correspondientes, son un punto de partida para acelerar la migración de las cargas de trabajo de JBoss EAP a Azure. Es importante definir el ámbito del trabajo de migración. Por ejemplo, ¿está realizando una migración lift-and-shift estricta de la infraestructura existente a Azure Virtual Machines? Si es así, es posible que se sienta la tentación de realizar algunas mejoras mientras realiza la migración.
En la medida de lo posible, es mejor centrarse en un traslado lift-and-shift, teniendo en cuenta los cambios necesarios que se indican en esta guía. Defina lo que quiere decir con "migración completa" para que sepa cuándo ha alcanzado el objetivo. Cuando haya realizado la "migración completa", puede hacer una instantánea de sus máquinas virtuales, tal y como se describe en Creación de una instantánea de un disco duro virtual. Es más seguro realizar las mejoras después de comprobar que puede restaurar correctamente desde la instantánea. De este modo, puede continuar sin miedo a perder el progreso de la migración que ha logrado hasta ahora.
Determinación de si las ofertas de Azure Marketplace preconfiguradas son un buen punto de partida
Red Hat y Microsoft se han asociado para incorporar a Azure Marketplace un conjunto de plantillas de soluciones de Azure que ofrecen un punto de partida sólido para la migración a Azure. Puede ver la lista de ofertas en la sección JBoss EAP en máquinas virtuales de Azure de Red Hat JBoss EAP en Azure.
Para obtener una idea de la oferta preconfigurada de Azure Marketplace, consulte Inicio rápido: Implementación de un clúster de JBoss EAP en máquinas virtuales de Azure.
Si ninguna de las ofertas existentes es un buen punto de partida, tendrá que reproducir la implementación a mano con los recursos disponibles en máquinas virtuales de Azure. Para más información, consulte ¿Qué es IaaS?
Determinación de si la versión de JBoss EAP es compatible
La versión existente de JBoss EAP debe ser compatible con la versión de las ofertas de infraestructura como servicio (IaaS). Las páginas de Azure Portal de las ofertas muestran qué versiones de JBoss EAP están disponibles. Para obtener más información, consulte la oferta Clúster de JBoss EAP en máquinas virtuales en Azure Portal. Si la versión actual de JBoss EAP no es compatible con las versiones disponibles en la oferta, debe reproducir la implementación a mano mediante recursos de IaaS de Azure. Para más información, consulte ¿Qué es IaaS?
Asegúrese de que tiene las licencias necesarias
Al usar las ofertas preconfiguradas de Azure Marketplace, debe tener licencias actuales de Red Hat para todos los servidores de JBoss EAP. Al moverlos a Azure, puede elegir entre las siguientes opciones de implementación para satisfacer sus necesidades:
- Implemente en máquinas virtuales de pago por uso de Red Hat Enterprise Linux. Esta opción se conoce como PAYG.
- Mueva sus suscripciones de Red Hat JBoss EAP y Red Hat Enterprise Linux a Azure a través del programa Red Hat Cloud Access. Esta opción se conoce como BYOS.
En ambas opciones, para la portabilidad de licencias, se le pide el identificador de grupo de Red Hat. Asegúrese de que tiene este identificador a mano antes de probar las ofertas.
Las ofertas preconfiguradas de Azure Marketplace incluyen compatibilidad con Red Hat Satellite para la administración de licencias. Para obtener información general sobre Red Hat Satellite, consulte Red Hat Satellite.
Nota:
Si no tiene ningún derecho de EAP, puede registrarse para obtener una suscripción gratuita para desarrolladores a través de la Suscripción para desarrolladores de Red Hat para usuarios. Guarde los detalles de la cuenta para utilizarlos como nombre de usuario de RHSM y contraseña de RHSM en las ofertas preconfiguradas de Azure Marketplace.
Los pasos para detectar el identificador de grupo se explican en la sección Requisitos previos de Inicio rápido: Implementación de un clúster de JBoss EAP en máquinas virtuales de Azure.
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. Por ejemplo, resulta útil para guiar la selección del tamaño de las máquinas virtuales en el grupo de nodos, la cantidad de memoria que va a usar el contenedor y el número de recursos compartidos de CPU que necesitará el contenedor.
Es posible cambiar el tamaño de los grupos de nodos en AKS. Para obtener información sobre cómo hacerlo, consulte Cambio del tamaño de los grupos de nodos en Azure Kubernetes Service (AKS).
Inventario de todos los secretos
Compruebe los secretos y las contraseñas en todas las propiedades y los archivos de configuración de los servidores o servidores de producción. Asegúrese de comprobar el archivo jboss-web.xml en sus WAR. Los archivos de configuración que contienen contraseñas o credenciales también se pueden encontrar dentro de la aplicación.
Considere la posibilidad de almacenar dichos secretos en Azure KeyVault. Para más información, consulte Conceptos básicos de Azure Key Vault.
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>
Comprobación de que la versión compatible de Java funciona correctamente
JBoss EAP en máquinas virtuales de Azure requiere una versión compatible de Java. Para obtener instrucciones sobre qué versión del JDK se va a usar, consulte Configuraciones admitidas en la documentación de Red Hat.
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
Recursos externos de inventario
Los recursos externos, tales como los orígenes de datos, los agentes de mensajes JMS y otros, se insertan a través de la interfaz de directorio y nomenclatura de Java (JNDI). Algunos de estos recursos pueden requerir una migración o reconfiguración.
Dentro de la aplicación
Inspeccione los archivos WEB-INF/jboss-web.xml y WEB-INF/web.xml. Busque elementos <Resource>
dentro del elemento <Context>
.
Orígenes de datos
Los orígenes de datos son recursos de JNDI con el atributo type
establecido en javax.sql.DataSource
. Para cada origen de datos, documente 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 más información, consulte Acerca de los orígenes de datos de JBoss EAP en la documentación de JBoss EAP.
Todos los demás recursos externos
No es factible documentar todas las dependencias externas posibles en esta guía. Es responsabilidad del equipo comprobar que puede cumplir todas las dependencias externas de la aplicación después de la migración.
Determinación de si se usa el sistema de archivos y cómo
Para usar el sistema de archivos en el servidor de aplicaciones será necesario cambiar la configuración o, en raras ocasiones, la arquitectura. Los módulos de JBoss EAP o el código de aplicación pueden usar el sistema de archivos. Es posible que identifique algunos o todos los escenarios descritos en las secciones siguientes.
Contenido estático de solo lectura
Si su aplicación actualmente sirve contenido estático, necesitará una ubicación alternativa para él. Quizás quiera considerar la posibilidad de mover el contenido estático a Azure Blob Storage y agregar Azure CDN para tener descargas de alta velocidad globalmente. Para más información, consulte Hospedaje de sitios web estáticos en Azure Storage e Inicio rápido: Integración de una cuenta de una instancia de Azure Storage con Azure CDN.
Contenido estático publicado dinámicamente
Si su aplicación permite que haya contenido estático que la aplicación carga o produce, pero que es inmutable una vez creado, puede usar Azure Blob Storage y Azure CDN con una función de Azure para controlar las cargas y la actualización de la red CDN. Hemos proporcionado una implementación de ejemplo para su uso en Cargar y carga previa en CDN de contenido estático con Azure Functions.
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 más información, consulte Connect an on-premises network to Azure (Conexión de una red local a Azure). También tendrá que refactorizar la aplicación para que use las API disponibles públicamente que exponen los recursos locales.
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, deberá migrarlos a un servidor de JMS hospedado externamente. Azure Service Bus y Advanced Message Queuing Protocol (AMQP) 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.
Determinación de si se están usando conectores de JCA
Si su aplicación usa conectores de JCA, valide que puede usar el conector de JCA en JBoss EAP. Si puede usar el conector de JCA en JBoss EAP, para que esté disponible tendrá que agregar los archivos JAR a la ruta de acceso del servidor y colocar los archivos de configuración necesarios en la ubicación correcta de los directorios del servidor de JBoss EAP.
Determinación de si JAAS está en uso
Si la aplicación usa JAAS, deberá capturar cómo está configurado JAAS. Si utiliza una base de datos, puede convertirla en un dominio de JAAS en JBoss EAP. Si se trata de una implementación personalizada, deberá validar que se puede usar en JBoss EAP.
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 la aplicación está empaquetada como un archivo EAR, examine el archivo application.xml y capture la configuración.
Nota:
Si desea poder escalar cada una de las aplicaciones web de forma independiente para usar mejor los recursos de las máquinas virtuales de Azure, debe dividir los archivos EAR en aplicaciones web independientes.
Identificación de todos los procesos externos y los demonios que se ejecutan en los servidores de producción
Si tiene procesos que se ejecutan fuera del servidor de aplicaciones, como los demonios de supervisión, tendrá que eliminarlos o migrarlos a otro lugar.
Migración
Selección de una oferta de JBoss EAP en Azure Virtual Machines
Las ofertas descritas en las secciones siguientes están disponibles para JBoss EAP en Azure Virtual Machines.
Durante la implementación de una oferta, se le pedirá que elija el tamaño de máquina virtual para los nodos de servidor de JBoss EAP. Es importante tener en cuenta todos los aspectos (memoria, procesador y disco) a la hora de elegir el tamaño de la máquina virtual. Para obtener más información, consulte Tamaños de Cloud Services (clásico).
JBoss EAP en Azure Virtual Machine Scale Sets
Virtual Machine Scale Sets proporcionan grupos de máquinas virtuales altamente escalables y con equilibrio de carga para cargas de trabajo de cualquier tamaño. Para obtener más información, consulte ¿Qué son los Virtual Machine Scale Sets?
JBoss EAP en máquinas virtuales agrupadas en clúster
Si lo prefiere, un clúster tradicional de máquinas virtuales que usa el mecanismo de agrupación en clústeres de JBoss EAP es adecuado para una migración mediante lift-and-shift de implementaciones que ya usan esta característica. Para obtener más información, consulte Agrupación en clústeres en aplicaciones web. La oferta preconfigurada de Azure Marketplace incluye compatibilidad con el modo de dominio. Para obtener información general sobre los dominios EAP y el modo de dominio, consulte Administración de dominios.
Servidor único de JBoss EAP
Si solo necesita un único servidor, quizás para pruebas y evaluación, o para cargas de trabajo ligeras, hay una oferta que implementa un servidor único de JBoss EAP en una sola máquina virtual.
Kit de herramientas de migración para aplicaciones de Red Hat
El Kit de herramientas de migración para aplicaciones de Red Hat es una extensión gratuita para Visual Studio Code. Esta extensión analiza el código y la configuración de la aplicación para proporcionar recomendaciones para migrar a la nube desde el entorno local. Para obtener más información, consulte Información general sobre el kit de herramientas de migración para aplicaciones.
El contenido de esta guía le ayuda a abordar los otros componentes del recorrido de migración, como elegir el tamaño de máquina virtual correcto y externalizar el estado de sesión.
Después de la migración
Una vez alcanzados los objetivos de migración que se han definido antes de la migración, realice pruebas integrales de aceptación para comprobar 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:
Uso de Azure Storage para servir el contenido estático montado en las máquinas virtuales. Para obtener más información, consulte Conexión o desconexión de un disco de datos para una máquina virtual de laboratorio en Azure DevTest Labs.
Implemente las aplicaciones en el clúster de JBoss EAP migrado con Azure DevOps. Para obtener más información, consulte la documentación de introducción a Azure DevOps.
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.
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 Guía de introducción a la integración de Microsoft Entra ID con aplicaciones.
Usar Azure Key Vault para almacenar toda la información que funcione como un "secreto". Para más información, consulte Conceptos básicos de Azure Key Vault.