View a markdown version of this page

使用 Auto Scaling 从 IBM WebSphere 应用程序服务器迁移到亚马逊 EC2 上的 Apache Tomcat - AWS 规范指引

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Auto Scaling 从 IBM WebSphere 应用程序服务器迁移到亚马逊 EC2 上的 Apache Tomcat

Kevin Yung 和 Afroz Khan,Amazon Web Services

Summary

此模式为在启用了 Amazon Aut EC2 o Scaling 的亚马逊弹性计算云 (亚马逊 EC2) 实例上将 Java WebSphere 应用程序从 IBM 应用程序服务器迁移到 Apache Tomcat 提供了指导。 

通过使用此示例,您可实现:

  • 降低 IBM 许可成本

  • 使用多可用区部署,实现高可用性

  • 使用 Amazon A EC2 uto Scaling 提高了应用程序的弹性

先决条件和限制

先决条件

  • Java 应用程序(版本 7. x 或 8. x)应该在 LAMP 堆栈中开发。

  • 目标状态是在 Linux 主机托管的 Java 应用程序。此示例已在 Red Hat Enterprise Linux (RHEL) 7 环境中成功实现。其他 Linux 发行版可遵循这种模式,但应参考 Apache Tomcat 发行版的配置。

  • 您应该了解 Java 应用程序的依赖项。

  • 您必须有权访问 Java 应用程序源代码才能更改。

限制和更换平台的变化

  • 您应该了解企业存档 (EAR) 组件,确认所有库都打包在 Web 组件 WAR 文件中。您需要配置 Apache Maven WAR Plugin 并生成 WAR 文件构件。

  • 使用 Apache Tomcat 8,servlet-api.jar 和应用程序包内置 jar 文件之间存在已知冲突。若要解决此问题,请将 servlet-api.jar 从应用程序包中删除。

  • 您必须配置位于 Apache Tomcat 配置类路径中的 Web-inf/资源。默认情况下,将 JAR 库加载至以下目录。或者,您可以部署下的所有资源src/main/resources

  • 检查 Java 应用程序中是否存在任何硬编码的上下文根,并更新 Apache Tomcat 上下文根目录

  • 若要设置 JVM 运行时选项,可以在 Apache Tomcat bin 文件夹中创建配置文件 setenv.sh;如 JAVA_OPTS、JAVA_HOME。 

  • 身份验证是在容器级别配置,并在 Apache Tomcat 配置中设置为一个领域。已为以下三个领域中的任何一个建立身份验证: 

    • JDBC Database Realm 在 JDBC 驱动程序访问的关系数据库查找用户。

    • DataSource Database Realm 在 JNDI 访问的数据库中查找用户。

    • JNDI Directory Realm 在 JNDI 提供者可以访问的轻型目录访问协议 (LDAP) 目录中查找用户。查询需要: 

      • LDAP 连接详细信息:用户搜索库、搜索筛选条件、角色库、角色筛选条件 

      • 密钥 JNDI Directory Realm:连接至 LDAP、对用户进行身份验证并检索用户所属的所有群组

  • 授权:如果容器具有基于角色授权,可以检查 web.xml 中的授权限制,则必须定义 Web 资源并将其与约束条件中定义的角色进行比较。如果 LDAP 没有组角色映射,则必须在 web.xml 中设置属性 < security-role-ref > 才能实现组角色映射。要查看配置文档的示例,请参见 Oracle 文档。 

  • 数据库连接:在 Apache Tomcat 中通过 Amazon Relational Database Service (Amazon RDS) 端点 URL 和连接详细信息创建资源 使用 JNDI 查找更新应用程序代码以引用 a DataSource 。中定义的现有数据库连接 WebSphere 不起作用,因为它使用 WebSphere的 JNDI 名称。你可以<resource-ref>在 web.xml 中添加一个带有 JNDI 名称和 DataSource 类型定义的条目。若要查看示例配置文档,请参阅 Apache Tomcat 文档。

  • 日志记录:默认情况下,Apache Tomcat 将日志记录到控制台或日志文件中。您可通过更新 logging.properties(参见Tomcat 日志记录),启用 realm 级追踪。如果您使用 Apache Log4j 将日志附加至文件中,则必须下载 tomcat-juli 并将其添加至 classpath

  • 会话管理:如果您保留 IBM WebSEAL 用于应用程序负载平衡与会话管理,则无需进行任何更改。如果您在 AWS 上使用应用程序负载均衡器或网络负载均衡器来取代 IBM WebSEAL 组件,则必须使用带有 Memcached 集群的 Amazon ElastiCache 实例来设置会话管理,并将 Apache Tomcat 设置为使用开源会话管理。 

  • 如果您使用的是 IBM WebSEAL 转发代理,则必须设置新的适用于 AWS 的网络负载均衡器。使用 Network Load Balancer IPs 提供的 WebSEAL 接合点配置。

  • SSL 配置:我们建议您使用安全套接字层 (SSL) 进行 end-to-end通信。若要在 Apache Tomcat 中设置 SSL 服务器配置,请按照 Apache Tomcat 文档中的说明进行操作。 

架构

源技术堆栈

  • IBM WebSphere 应用程序服务器

目标技术堆栈

目标架构

工具

操作说明

Task说明所需技能
创建虚拟私有云(VPC)。
创建子网。
必要时创建路由表。
创建网络访问控制列表 (ACLs)。
设置 AWS Direct Connect 或企业 VPN 连接。
Task说明所需技能
重构应用程序构建 Maven 配置,以生成 WAR 构件。
在 Apache Tomcat 中重构应用程序依赖项数据来源。
重构应用程序源代码,以使用 Apache Tomcat 中的 JNDI 名称。
将 WAR 神器部署至 Apache Tomcat 中。
完成应用程序验证与测试。
Task说明所需技能
配置公司防火墙,以允许连接到依赖项服务。
将公司防火墙配置为允许最终用户访问 Elastic Load Balancing on AWS。
Task说明所需技能
在 EC2 实例上创建和部署应用程序。
创建 Amazon f ElastiCache or Memcached 集群用于会话管理。
为后端数据库创建 Amazon RDS Multi-AZ 实例。
创建 SSL 证书并将其导入 AWS Certificate Manager (ACM)。
在负载均衡器上安装 SSL 证书。
为 Apache Tomcat 服务器安装 SSL 证书。
完成应用程序验证与测试。
Task说明所需技能
关闭现有基础设施。
将数据库从生产环境恢复至 Amazon RDS。
通过更改 DNS 割接应用程序。

参考

教程和视频