在亚马逊上从 Oracle 迁移 WebLogic 到 Apache Tomcat (ToMee) ECS - AWS Prescriptive Guidance

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

在亚马逊上从 Oracle 迁移 WebLogic 到 Apache Tomcat (ToMee) ECS

由 Anya Epishcheva (AWS) 和 Harshad Gohil () 创作 AWS

摘要

此模式讨论了使用亚马逊弹性容器服务(亚马逊)将运行 Oracle 的本地 Oracle Solaris SPARC 系统迁移 WebLogic 到运行 Apache toMe e(增加了容器支持的 Apache Tomcat)的基于 Docker 容器的安装的步骤。ECS

有关将与要从 Oracle 迁移的应用程序关联的数据库迁移 WebLogic 到 Tomcat 的信息,请参阅此目录中的数据库迁移模式。 

最佳实践

迁移 Java 和 Java Enterprise Edition (Java EE) Web 应用程序的步骤有所不同,具体取决于应用程序使用的容器特定资源的数量。基于 Spring 的应用程序通常更容易迁移,因为它们对部署容器有少量依赖项。相比之下,使用企业 JavaBeans (EJBs) 和托管容器资源(例如线程池、Java 身份验证和授权服务 (JAAS) 以及容器管理的持久性 (CMP))的 Java EE 应用程序需要付出更多努力。 

为 Oracle Application Server 开发的应用程序经常使用 Oracle Identity Management 套件。迁移到开源应用程序服务器的客户通常会选择使用SAML基于联合的身份验证重新实现身份和访问管理。其他人则使用 Oracle HTTP Server Webgate 来处理无法从 Oracle 身份管理套件迁移的情况。 

Java 和 Java EE Web 应用程序非常适合部署在基于 Docker 的AWS服务上,例如 Farg AWS ate 和 Amazon。ECS客户经常选择预装最新版本的目标应用程序服务器(例如 ToMee)和 Java 开发套件 (JDK) 的 Docker 镜像。他们将应用程序安装在基本 Docker 映像之上,将其发布到亚马逊弹性容器注册表 (AmazonECR) 注册表中,然后使用它在 Far AWS gate 或亚马逊上扩展部署应用程序。ECS 

理想情况下,应用程序部署是有弹性的;也就是说,应用程序实例的数量根据流量或工作负载而缩小或缩小。这意味着应用程序实例需要上线或终止按根据需求调整容量。 

将 Java 应用程序移至时AWS,请考虑将其设置为无状态。这是 Well-Architecte AWS d Framework 的一项关键架构原则,它将使用容器化实现水平扩展。例如,多数基于 Java 的 Web 应用程序在本地存储用户会话信息。为了避免由于亚马逊弹性计算云 (AmazonEC2) 中的自动扩展或其他原因而导致应用程序实例终止,用户会话信息应在全球范围内存储,这样 Web 应用程序用户就可以继续无缝透明地工作,而无需重新连接或重新登录 Web 应用程序。这种方法有多种架构选项,包括 Amazon ElastiCache for Redis,或者将会话状态存储在全局数据库中。TomEE 等应用程序服务器具有插件,可以通过 Redis、数据库和其他全局数据存储实现会话存储和管理。

使用可轻松与 Amazon 和 AWS X-Ray 集成的通用集中式日志 CloudWatch 和调试工具。迁移提供了改进应用程序生命周期功能的机会。例如,您可能希望自动化构建过程,以便使用持续集成和持续交付 (CI/CD) 管道轻松进行更改。这可能需要对应用程序进行更改,以便可以在不停机的情况下部署。 

先决条件和限制

先决条件

  • 一个活跃的AWS账户 

  • Java 源代码和 JDK

  • 使用 Oracle 构建的源应用程序 WebLogic

  • 为身份和访问管理定义的解决方案(SAML或 Oracle Webgate)

  • 为应用程序会话管理定义的解决方案(移动 like-for-like或与 Amazon 一起移动 ElastiCache,或者根据需要使应用程序处于无状态状态)

  • 了解团队是否需要重构特定于 J2EE 的库才能移植到 Apache ToMee(参见 Apache 网站上的 Java EE 7 实施状态

  • 根据安全要求强化 ToMee 镜像

  • 带有预装目标 ToMee 容器镜像 

  • 同意并在需要时实施应用程序补救措施(例如,记录调试版本、身份验证)

产品版本

  • 甲骨文 WebLogic OC4J,9i,10g 

  • Tomcat 7(使用 Java 1.6 或更高版本)

架构

 源技术堆栈

  • 使用 Oracle 构建的 Web 应用程序 WebLogic

  • 使用 Oracle Webgate 或SAML身份验证的 Web 应用程序

  • 连接到 Oracle 数据库 10g 及以上版本的 Web 应用程序

目标技术堆栈

目标架构

AWS Cloud architecture diagram showing VPC, application subnets, and shared services integration.

工具

若要在 ToMee 上运行,必须将 Java 应用程序重新构建为.war 文件。在某些情况下,可能需要更改应用程序才能在 TomEE 上运行应用程序;您应该检查以确保正确定义了必要的配置选项和环境属性。  

此外,还应正确定义 Java 命名和目录接口 (JNDI) 查找和 P JavaServer ages (JSP) 命名空间。 考虑检查应用程序使用的文件名,以避免与内置 T 库发生命名冲突。例如,persistence.xml 是 Apache Open JPA 框架(与 Open in ToMee 捆绑在一起)用于配置目的的文件名。EJB中的 persistence.xml 文件PUI包含 Spring 框架 bean 声明。  

Tomee 版本 7.0.3 及更高版本(Tomcat 8.5.7 及更高版本)针对带有特殊字符的原始(未编码)返回 HTTP 400 响应(错误请求)。URLs服务器响应对最终用户显示为空白页。早期版本的Tomee和Tomcat允许在中使用某些未编码的特殊字符URLs;但是,正如-2016-6816网站上所述,它被认为是不安全的。CVE要解决URL编码问题, JavaScript 必须使用 encode URI () 方法对直接URLs传递给浏览器的内容进行编码,而不是用作原始字符串。

在 Tomee 中部署.war 文件后,在 Linux cat监视任何缺失的共享库的启动日志,并监视特定于 Oracle 的扩展,以添加 Tomcat 库中缺少的组件。 

一般过程

  • 在 ToMee 配置应用程序。

  • 识别并重新配置应用程序服务器特定的配置文件和资源,从源格式转换为目标格式。

  • 识别并重新配置JNDI资源。

  • 将EJB命名空间和查询调整为目标应用程序服务器所需的格式(如果适用)。

  • 重新配置特定于JAAS应用程序容器的安全角色和主映射(如果适用)。

  • 将应用程序和共享库打包至 WAR 文件。

  • 使用提供的 Docker 容器在 ToMee 部署.war 文件。

  • 监控启动日志,找出任何缺少的共享库和部署描述符扩展。如果找到任何任务,请返回第一项任务。

  • 对照已恢复的 Amazon RDS 数据库测试已安装的应用程序。

  • 按照部署 Docker 容器中的说明启动带有负载均衡器和 Amazon ECS 集群的完整架构。

  • 更新为指URLs向负载均衡器。

  • 更新配置管理数据库 (CMDB)。

操作说明

任务描述所需技能
执行应用程序发现(当前状态占用空间和性能基准)。BA,迁移主管
验证源和目标数据库的版本。DBA
验证源应用程序和目标应用程序的设计(身份和会话管理)。DBA、迁移工程师、应用程序所有者
确定目标服务器实例的硬件要求。DBA, SysAdmin
根据容量、存储功能和网络功能选择正确的实例类型。DBA, SysAdmin
确定源数据库和目标数据库的网络访问安全要求。DBA, SysAdmin
确定应用程序迁移/切换策略。DBA,移民主管
完成应用程序迁移设计与迁移指南。构建主管,迁移主管
完成应用程序迁移运行手册。构建主管,割接主管,测试主管,迁移主管
任务描述所需技能
创建虚拟私有云 (VPC)。SysAdmin
创建安全组。SysAdmin
配置并启动 Amazon RDS 数据库实例。DBA, SysAdmin
配置亚马逊ECS部署。SysAdmin
将应用程序打包为 Docker 映像。SysAdmin
将映像推送到 Amazon ECR 注册表(或跳过此步骤并将其推送到 Amazon ECS 集群)。SysAdmin
为应用程序和 Amazon ECS 服务选项配置任务定义。SysAdmin
配置您的集群,查看安全设置并设置 Ident AWS ity and Access Management (IAM) 角色。SysAdmin
根据应用程序迁移运行手册启动设置并运行测试。SysAdmin
任务描述所需技能
获得安全保障团队的许可,将生产数据移至AWS。DBA、迁移工程师、应用程序所有者
创建或获取对端点访问权限,以获取数据库备份文件。DBA
使用原生 Microsoft SQL Server 工具或第三方工具迁移数据库对象和数据。DBA
从应用程序迁移运行手册中运行必要的测试,以确认数据迁移成功。DBA、迁移工程师、应用程序所有者
任务描述所需技能
提交变更申请 (CR) 以进行迁移。割接主管
获得 CR 批准,以进行迁移。割接主管
遵循应用程序迁移运行手册的应用程序迁移策略。DBA、迁移工程师、应用程序所有者
升级应用程序(如需要)。DBA、迁移工程师、应用程序所有者
完成功能测试、非功能测试、数据验证测试和性能测试。SLA测试负责人、应用程序所有者、应用程序用户
任务描述所需技能
获得应用程序所有者或企业主的签名。割接主管
运行表格主题练习,演练割接运行手册的所有步骤。DBA、迁移工程师、应用程序所有者
将应用程序客户端切换至新基础设施。DBA、迁移工程师、应用程序所有者
任务描述所需技能
关闭临时AWS资源。DBA,迁移工程师, SysAdmin
审核和验证项目文档。迁移主管
收集与迁移时间、工具成本节约等相关的指标。迁移主管
关闭项目并提供反馈。迁移主管,应用程序所有者

参考

教程和视频