Migración del servidor de aplicación IBM WebSphere a Apache Tomcat en Amazon EC2 con escalado automático - Recomendaciones de AWS

Migración del servidor de aplicación IBM WebSphere a Apache Tomcat en Amazon EC2 con escalado automático

Kevin Yung y Afroz Khan, Amazon Web Services

Resumen

Este patrón proporciona instrucciones para migrar una aplicación de Java de IBM WebSphere Application Server a Apache Tomcat en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) con Amazon EC2 Auto Scaling activado. 

Con el uso de este patrón, puede lograr lo siguiente:

  • Una reducción de los costos de licencias de IBM

  • Alta disponibilidad mediante la Implementación multi-AZ

  • Aumento de la resiliencia de las aplicaciones con Amazon EC2 Auto Scaling

Requisitos previos y limitaciones

Requisitos previos

  • Las aplicaciones Java (versión 7.x o 8.x) deben desarrollarse en pilas LAMP.

  • El estado de destino es alojar aplicaciones Java en hosts Linux. Este patrón se ha implementado con éxito en un entorno de Red Hat Enterprise Linux (RHEL) 7. Otras distribuciones de Linux pueden seguir este patrón, pero consultando siempre la configuración de la distribución de Apache Tomcat.

  • Debe comprender las dependencias de la aplicación Java.

  • Debe tener acceso al código fuente de la aplicación Java para poder realizar cambios.

Limitaciones y redefiniciones de plataforma

  • Debe comprender los componentes del archivo empresarial (EAR) y comprobar que todas las bibliotecas estén empaquetadas en archivos WAR de componentes web. Debe configurar el complemento WAR de Apache Maven y producir artefactos en los archivos WAR.

  • Al usar Apache Tomcat 8, existe un conflicto conocido entre servlet-api.jar y los archivos jar integrados en el paquete de la aplicación. Para resolver este problema, elimine servlet-api.jar del paquete de la aplicación.

  • Debe configurar WEB-INF/Resources, ubicado en classpath de la Configuración de Apache Tomcat. De forma predeterminada, las bibliotecas JAR no se cargan en el directorio. Como alternativa, puede implementar todos los recursos en src/main/resources.

  • Compruebe si hay alguna raíz de contexto con codificación rígida en la aplicación Java y actualice la nueva raíz de contexto de Apache Tomcat.

  • Para configurar las opciones de tiempo de ejecución de JVM, puede crear el archivo de configuración setenv.sh en la carpeta bin de Apache Tomcat; por ejemplo, JAVA_OPTS, JAVA_HOME, etc.  

  • La autenticación se configura a nivel de contenedor, como un dominio en las configuraciones de Apache Tomcat. La autenticación se establece para cualquiera de los tres dominios siguientes: 

    • JDBC Database Realm busca los usuarios en una base de datos relacional a la que se accede mediante el controlador JDBC.

    • DataSource Database Realm busca usuarios en una base de datos a la que accede JNDI.

    • JNDI Directory Realm busca a los usuarios en el directorio de Lightweight Directory Access Protocol (LDAP) al que accede el proveedor de JNDI. Las búsquedas requieren: 

      • Detalles de la conexión LDAP: base de búsqueda de usuarios, filtro de búsqueda, base de roles, filtro de roles 

      • Dominio clave del directorio JNDI: se conecta a LDAP, autentica a los usuarios y recupera todos los grupos de los que un usuario es miembro

  • Autorización: en el caso de un contenedor con una autorización basada en roles que compruebe las restricciones de autorización en web.xml, los recursos web deben definirse y compararse con los roles indicados en las restricciones. Si LDAP no tiene una asignación de roles de grupo, debe establecer el atributo <security-role-ref> en web.xml para lograr la asignación de roles de grupo. Para ver un ejemplo de un documento de configuración, consulte la documentación de Oracle

  • Conexión de base de datos: cree una definición de recurso en Apache Tomcat con una URL y detalles de conexión de un punto de conexión Amazon Relational Database Service (Amazon RDS). Actualice el código de la aplicación para referenciar un DataSource mediante la búsqueda JNDI. Una conexión de base de datos existente definida en WebSphere no funcionaría, ya que emplea los nombres JNDI de WebSphere. Puede añadir una entrada <resource-ref> en el archivo web.xml con el nombre JNDI y la definición de tipo DataSource. Para ver un ejemplo de documento de configuración, consulte la documentación de Apache Tomcat.

  • Registro: de forma predeterminada, Apache Tomcat inicia sesión en la consola o en un archivo de registro. Puede habilitar el rastreo a nivel de dominio actualizando logging.properties (consulte Registros en Tomcat). Si usa Apache Log4j para añadir registros a un archivo, debe descargar tomcat-juli y añadirlo al classpath.

  • Gestión de sesiones: si va a usar IBM WebSeal como equilibrador de carga de aplicación y gestión de sesiones, no es necesario realizar ningún cambio. Si usa un equilibrador de carga de aplicación o equilibrador de carga de red en AWS para reemplazar el componente IBM WebSeal, debe configurar la administración de sesiones mediante una instancia de Amazon ElastiCache con un clúster de Memcached y configurar Apache Tomcat para que use administración de sesiones de código abierto

  • Si usa el proxy de reenvío WebSeal de IBM, debe configurar un nuevo equilibrador de carga de red en AWS. Use las direcciones IP proporcionadas por el equilibrador de carga de red para la configuración de uniones WebSeal.

  • Configuración SSL: le recomendamos que use Secure Sockets Layer (SSL) en las comunicaciones de extremo a extremo. Para configurar un servidor SSL en Apache Tomcat, siga las instrucciones de la documentación de Apache Tomcat

Arquitectura

Pila de tecnología de origen

  • Servidor de aplicaciones IBM WebSphere

Pila de tecnología de destino

Arquitectura de destino

Nube de AWS architecture with VPC, two availability zones, load balancer, and database components.

Herramientas

Epics

TareaDescripciónHabilidades requeridas
Cree una nube privada virtual (VPC).
Cree subredes.
Cree tablas de enrutamiento si es necesario.
Crear listas de control de acceso (ACL) a la red
Configure AWS Direct Connect o una conexión VPN corporativa.
TareaDescripciónHabilidades requeridas
Refactorice la configuración de Maven en compilación de la aplicación para generar los artefactos de WAR.
Refactorice los orígenes de datos de dependencia de las aplicaciones en Apache Tomcat.
Refactorice los códigos fuente de las aplicaciones para que usen nombres JNDI en Apache Tomcat.
Implemente los artefactos WAR en Apache Tomcat.
Complete las validaciones y pruebas de las aplicaciones.
TareaDescripciónHabilidades requeridas
Configure el firewall corporativo para permitir la conexión a los servicios de dependencia.
Configure el firewall corporativo para permitir el acceso de los usuarios finales a Elastic Load Balancing en AWS.
TareaDescripciónHabilidades requeridas
Cree e implemente la aplicación en una instancia de EC2.
Cree un clúster de Amazon ElastiCache para Memcached para la administración de sesiones.
Cree una instancia de Amazon RDS Multi-AZ para la base de datos de backend.
Cree certificados SSL e impórtelos a AWS Certificate Manager (ACM).
Instale certificados SSL en los equilibradores de carga.
Instale certificados SSL para los servidores Apache Tomcat.
Complete las validaciones y pruebas de las aplicaciones.
TareaDescripciónHabilidades requeridas
Desactive la infraestructura existente.
Restaure la base de datos de producción a Amazon RDS.
Realice cambios en el DNS para interrumpir la aplicación.

Referencias

Tutoriales y videos