选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用 Terraform 为容器化 Blu Age 应用程序部署环境

聚焦模式
使用 Terraform 为容器化 Blu Age 应用程序部署环境 - AWS Prescriptive Guidance

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

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

由 Richard Milner-Watts (AWS) 编写

摘要

将传统的大型机工作负载迁移至现代云架构可以消除维护大型机的成本,而这些成本只会随着环境的老化而增加。然而,从大型机迁移作业可能会带来独特挑战。内部资源可能不熟悉工作逻辑,与一般 CPUs商用相比,大型机在这些特殊任务中的高性能可能很难复制。重写这些工作可能是一项艰巨的任务,因此需要付出巨大的努力。

Blu Age 将传统的大型机工作负载转换为现代 Java 代码,然后您可将其作为容器运行。

此模式提供了示例无服务器架构,用于运行已使用 Blu Age 工具进行现代化改造的容器化应用程序。随附的 HashiCorp Terraform 文件将为编排 Blu Age 容器构建安全的架构,同时支持批处理任务和实时服务。

有关使用 Blu Age 和 Amazon Web Services 实现工作负载现代化的更多信息,请参见以下 AWS Prescriptive Guidance 出版物:

如需有关使用 Blu Age 对大型机工作负载进行现代化改造的帮助,请在 Blu Age 网站上选择联系我们的专家。要获得有关将现代化工作负载迁移到 AWS、将其与 Amazon Web Services 集成以及将其投入生产的帮助,请联系您的 AWS 客户经理或填写 AWS Professional Services 表

先决条件和限制

先决条件

限制

  • Amazon Elastic Container Service (Amazon ECS) 对容器可用的任务资源设定了限制。这些资源包括 CPU、RAM 和存储。例如将 Amazon ECS 与 AWS Fargate 配合使用时,任务资源限制适用

产品版本

此解决方案已使用以下版本进行测试:

  • Terraform 1.3.6

  • Terraform AWS Provider 4.46.0

架构

源技术堆栈

  • Blu Age

  • Terraform

目标技术堆栈

  • Amazon Aurora PostgreSQL 兼容版

  • AWS Backup

  • Amazon Elastic Container Registry(Amazon ECR)

  • Amazon ECS

  • AWS Identity and Access Management Service (IAM)

  • AWS Key Management Server (AWS KMS)

  • AWS Secrets Manager

  • Amazon Simple Notification Service(Amazon SNS)

  • Amazon Simple Storage Service(Amazon S3)

  • AWS Step Functions

  • AWS Systems Manager

目标架构

下图显示了解决方案架构。

描述如下图所示。
  1. 解决方案部署了以下 IAM 角色:

    • 批处理任务角色

    • 批处理任务执行角色

    • 服务任务角色

    • 服务任务执行角色

    • Step Functions 角色

    • AWS Backup 角色

    • RDS 增强型监控角色。

    这些角色符合最低权限访问原则。

  2. Amazon ECR 用于存储由此模式编排容器映像。

  3. AWS Systems Manager Parameter Store 在运行时向 Amazon ECS 任务定义提供关于每个环境的配置数据。

  4. AWS Secrets Manager 在运行时向 Amazon ECS 任务定义提供关于环境的敏感配置数据。这些数据通过 AWS KMS 加密。

  5. Terraform 模块为所有实时和批处理任务创建 Amazon ECS 任务定义。

  6. Amazon ECS 使用 AWS Fargate 作为计算引擎运行批处理任务。这是一项短暂任务,由 AWS Step Functions 按要求启动。

  7. Amazon Aurora PostgreSQL-Compatible 提供了一个支持现代化应用程序的数据库。这取代了大型机数据库,例如 IBM Db2 或者 IBM IMS 数据库。

  8. Amazon ECS 运行长期服务,以提供现代化的实时工作负载。这些无状态应用程序永久运行,容器分布至可用区中。

  9. 网络负载均衡器用于授予对实时工作负载访问权限。网络负载均衡器支持较早协议,例如 IBM CICS。或者,您可以将应用程序负载均衡器与基于 HTTP 的工作负载结合使用。

  10. Amazon S3 为任务输入和输出提供对象存储。容器应处理 Amazon S3 中的拉取和推送操作,以为 Blu Age 应用程序准备工作目录。

  11. AWS Step Functions 服务用于编排运行 Amazon ECS 任务以处理批量工作负载。

  12. 每个批处理工作负载的 SNS 主题用于将现代化应用程序与其他系统(例如电子邮件)集成,或启动其他操作,例如将输出对象从 Amazon S3 传送到 FTP。

注意

默认情况下,该解决方案无法访问互联网。此模式假设虚拟私有云(VPC)将使 AWS Transit Gateway 等服务连接到其他网络。因此,部署了多个接口 VPC 端点,授予对解决方案使用的 Amazon Web Services 的访问权限。要开启直接互联网接入,您可以使用 Terraform 模块中的切换开关将 VPC 端点替换为互联网网关和相关资源。

自动化和扩缩

在整个模式中使用无服务器资源有助于确保,通过横向扩展,此设计的规模几乎没有限制。这样可以减少邻居噪音担忧,例如在原始大型机上可能遇到的对计算资源的竞争。可以根据需要安排批处理任务同时运行。

单个容器受到 Fargate 支持的最大大小限制。有关更多信息,请参阅 Amazon ECS 文档中的任务 CPU 和内存部分。

若要水平扩展实时工作负载,您可添加容器。

工具

Amazon Web Services

其他服务

  • HashiCorp Terraform 是一种开源基础设施即代码 (IaC) 工具,可帮助您使用代码来配置和管理云基础架构和资源。此模式使用 Terraform 创建示例架构。

代码存储库

此模式的源代码可在 GitHub Blu Age 示例 ECS 基础架构 (Terraform) 存储库中找到。

最佳实践

  • 对于测试环境,请使用诸如配置现代化应用程序的 forceDate 选项之类的功能,以通过始终运行已知时间段来生成一致的测试结果。

  • 单独调整每个任务以消耗最佳数量的资源。您可以使用 Amazon Conta CloudWatch iner Insights 获取有关潜在瓶颈的指导。

操作说明

Task描述所需技能

克隆解决方案源代码。

GitHub 项目中克隆解决方案代码。

DevOps 工程师

通过部署资源存储 Terraform 状态来引导环境。

  1. 打开终端窗口,确认 Terraform 已安装且 AWS 凭证可用。

  2. 导航到 bootstrap-terraform文件夹。

  3. 如果您想更改 S3 存储桶 (<accountId>-terraform-backend) 和 Amazon DynamoDB 表 (terraform-lock) 的名称,请编辑 main.tf 文件。

  4. 运行 terraform apply命令以部署资源。记下 S3 存储桶与 DynamoDB 表名称。

DevOps 工程师

为部署做好环境准备

Task描述所需技能

克隆解决方案源代码。

GitHub 项目中克隆解决方案代码。

DevOps 工程师

通过部署资源存储 Terraform 状态来引导环境。

  1. 打开终端窗口,确认 Terraform 已安装且 AWS 凭证可用。

  2. 导航到 bootstrap-terraform文件夹。

  3. 如果您想更改 S3 存储桶 (<accountId>-terraform-backend) 和 Amazon DynamoDB 表 (terraform-lock) 的名称,请编辑 main.tf 文件。

  4. 运行 terraform apply命令以部署资源。记下 S3 存储桶与 DynamoDB 表名称。

DevOps 工程师
Task描述所需技能

查看和更新 Terraform 配置。

在根目录中,打开文件 main.tf,,查看内容,然后考虑进行以下更新:

  1. 通过搜索字符串 eu-west-1,并将其替换为您要使用的所需区域来更新 AWS 区域。

  2. 如果在之前的操作说明中更改了默认存储桶名称,请更新 Terraform Backend 块中的存储桶名称。

  3. 如果在之前的操作说明中更改了默认 dynamodb_table 值,请更新该值。

  4. stack_prefix 变量的值更新为所需字符串。此字符串将放在由此模式创建的所有资源名称之前。

  5. 更新vpc_cidr值。这应该至少是一个 /24地址范围的值。

  6. 查看 Locals部分。这用于定义将要部署的 Blu Age 任务。该解决方案将遍历列表对象 bluage_batch_modules,为列表的每个元素创建关联的资源 (Step Functions 状态机、任务定义和 SNS 主题)。在某些情况下,您可能需要针对不同环境调整变量。例如,要在测试环境中强制运行时系统,可更改 force_execution_time 变量的值。

  7. 要开启互联网接入,请将 direct_internet_access_required 值从 false 更改为 true。这将部署互联网网关,以及为基础设施开启公共互联网访问的 NAT 网关和路由表。默认情况下,该解决方案会将接口 VPC 端点部署到无需直接访问互联网的 VPC 中。

  8. 要授予对通过 Elastic Load Balancing 提供的任何客户端-服务器工作负载的访问权限,请使用应允许的 CIDR 网络更新 additional_nlb_igress_cidrs 值。

DevOps 工程师

部署 Terraform 文件。

请从终端运行 terraform apply 命令部署所有资源。查看 Terraform 生成的更改,然后输入,以启动构建。

请注意,此基础设施部署时间可能为 15 分钟以上。

DevOps 工程师

部署解决方案基础设施

Task描述所需技能

查看和更新 Terraform 配置。

在根目录中,打开文件 main.tf,,查看内容,然后考虑进行以下更新:

  1. 通过搜索字符串 eu-west-1,并将其替换为您要使用的所需区域来更新 AWS 区域。

  2. 如果在之前的操作说明中更改了默认存储桶名称,请更新 Terraform Backend 块中的存储桶名称。

  3. 如果在之前的操作说明中更改了默认 dynamodb_table 值,请更新该值。

  4. stack_prefix 变量的值更新为所需字符串。此字符串将放在由此模式创建的所有资源名称之前。

  5. 更新vpc_cidr值。这应该至少是一个 /24地址范围的值。

  6. 查看 Locals部分。这用于定义将要部署的 Blu Age 任务。该解决方案将遍历列表对象 bluage_batch_modules,为列表的每个元素创建关联的资源 (Step Functions 状态机、任务定义和 SNS 主题)。在某些情况下,您可能需要针对不同环境调整变量。例如,要在测试环境中强制运行时系统,可更改 force_execution_time 变量的值。

  7. 要开启互联网接入,请将 direct_internet_access_required 值从 false 更改为 true。这将部署互联网网关,以及为基础设施开启公共互联网访问的 NAT 网关和路由表。默认情况下,该解决方案会将接口 VPC 端点部署到无需直接访问互联网的 VPC 中。

  8. 要授予对通过 Elastic Load Balancing 提供的任何客户端-服务器工作负载的访问权限,请使用应允许的 CIDR 网络更新 additional_nlb_igress_cidrs 值。

DevOps 工程师

部署 Terraform 文件。

请从终端运行 terraform apply 命令部署所有资源。查看 Terraform 生成的更改,然后输入,以启动构建。

请注意,此基础设施部署时间可能为 15 分钟以上。

DevOps 工程师
Task描述所需技能

将 Blu Age 容器映像推送到 Amazon ECR。

将容器推送到上一篇操作说明中创建的 Amazon ECR 存储库。有关说明,请参阅 Amazon ECR 文档

记下容器映像 URI。

DevOps 工程师

更新 Terraform,以引用 Blu Age 容器映像。

更新文件 main.tf ,以引用您上传的容器映像。

DevOps 工程师

重新部署 Terraform 文件。

从您的终端运行 terraform apply 以部署所有资源。查看来自 Terraform 的建议更新,然后输入 继续部署。

DevOps 工程师

(可选)部署有效的 Blu Age 容器化应用程序

Task描述所需技能

将 Blu Age 容器映像推送到 Amazon ECR。

将容器推送到上一篇操作说明中创建的 Amazon ECR 存储库。有关说明,请参阅 Amazon ECR 文档

记下容器映像 URI。

DevOps 工程师

更新 Terraform,以引用 Blu Age 容器映像。

更新文件 main.tf ,以引用您上传的容器映像。

DevOps 工程师

重新部署 Terraform 文件。

从您的终端运行 terraform apply 以部署所有资源。查看来自 Terraform 的建议更新,然后输入 继续部署。

DevOps 工程师

相关资源

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。