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
La arquitectura usa Elastic Load Balancing (versión 2). Si usa IBM WebSeal para la gestión de identidades y el equilibrio de carga, puede seleccionar un equilibrador de carga de red en AWS para integrarlo con el proxy inverso IBM WebSeal.
Las aplicaciones Java se implementan en un servidor de aplicaciones Apache Tomcat. Este se ejecuta en una instancia de EC2 de un grupo de Amazon EC2 Auto Scaling. Puede configurar una política de escalado basada en las métricas de Amazon CloudWatch, como el uso de la CPU.
Si va a dejar de usar IBM WebSeal como equilibrador de carga, puede gestionar las sesiones mediante Amazon ElastiCache para Memcached.
En la base de datos de backend, puede implementar alta disponibilidad (Multi-AZ) para Amazon RDS y seleccionar un tipo de motor de base de datos.
Arquitectura de destino

Herramientas
Apache Tomcat (versión 7.x o 8.x)
RHEL 7 o Centos 7
Amazon ElastiCache para Memcached (opcional)
Epics
| Tarea | Descripción | Habilidades 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. |
| Tarea | Descripción | Habilidades 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. |
| Tarea | Descripción | Habilidades 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. |
| Tarea | Descripción | Habilidades 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. |
| Tarea | Descripción | Habilidades 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. |
Recursos relacionados
Referencias
Tutoriales y videos