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

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

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

由 Richard Milner-Watts 创作 () AWS

代码存储库:Blu Age 示例ECS基础架构 (Terraform)

环境:生产

源:大型机

目标:容器

R 类型:更换平台

工作负载:IBM; 所有其他工作负载

技术:大型机、容器和微服务

AWS服务:亚马逊ECS;AWSStep Functions;亚马逊VPC;亚马逊 Aurora

Summary

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

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

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

有关使用 Blu Age 和AWS服务实现工作负载现代化的更多信息,请参阅以下AWS规范性指南出版物:

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

先决条件和限制

先决条件

限制

  • 亚马逊弹性容器服务 (AmazonECS) 对容器可用的任务资源设置了限制。这些资源包括CPURAM、和存储。例如,将 Amazon ECS 与 AWS Fargate 配合使用时,任务资源限制适用。

产品版本

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

  • Terraform 1.3.6

  • Terraform Provider 4.4 AWS 6.0

架构

源技术堆栈

  • Blu Age

  • Terraform

目标技术堆栈

  • 亚马逊 Aurora Postgre SQL-兼容版

  • AWSBackup

  • 亚马逊弹性容器注册表(亚马逊ECR)

  • Amazon ECS

  • AWSIdentity and Access 管理服务 (IAM)

  • AWS密钥管理服务器 (AWSKMS)

  • AWS Secrets Manager

  • 亚马逊简单通知服务(亚马逊SNS)

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Step Functions

  • AWS Systems Manager

目标架构

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

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

    • 批处理任务角色

    • 批处理任务执行角色

    • 服务任务角色

    • 服务任务执行角色

    • Step Functions 角色

    • AWSBackup 角色

    • RDS增强的监控角色。

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

  2. ECRAmazon 用于存储由此模式编排的容器镜像。

  3. AWSSystems Manager Parameter Store 在运行时向亚马逊ECS任务定义提供有关每个环境的配置数据。

  4. AWSSecrets Manager 在运行时向亚马逊ECS任务定义提供有关环境的敏感配置数据。数据已由加密AWSKMS。

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

  6. 亚马逊使用 AWS Fargate 作为计算引擎来ECS运行批处理任务。这是一项短暂的任务,由 Ste AWS p Functions 按要求启动。

  7. Amazon Aurora Postgre SQL-Compatible 提供了一个支持现代化应用程序的数据库。这取代了 IBM Db2 或 IBM IMS DB 等大型机数据库。

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

  9. 网络负载均衡器用于授予对实时工作负载访问权限。Network Load Balancer 支持较早的协议,例如IBMCICS。或者,您可以将 Application Load Balancer 用于HTTP基于工作负载的工作负载。

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

  11. AWSStep Functions 服务用于编排运行亚马逊ECS任务以处理批量工作负载。

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

注意:默认情况下,此解决方案无法访问互联网。此模式假设虚拟私有云 (VPC) 将使用诸如 Tr AWSansit Gatew ay 之类的服务连接到其他网络。因此,部署了多个接口VPC端点来授予对解决方案所用AWS服务的访问权限。要开启直接互联网接入,你可以使用 Terraform 模块中的切换开关将VPC端点替换为互联网网关和相关资源。

自动化和扩缩

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

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

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

工具

AWS服务

其他服务

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

代码存储库

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

最佳实践

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

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

操作说明

任务描述所需技能

克隆解决方案源代码。

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 工程师
任务描述所需技能

查看和更新 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 提供的任何客户端-服务器工作负载的访问权限,请additional_nlb_igress_cidrs使用应允许的CIDR网络更新的值。

DevOps 工程师

部署 Terraform 文件。

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

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

DevOps 工程师
任务描述所需技能

将 Blu Age 容器镜像推送到亚马逊ECR。

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

记下容器镜像URI。

DevOps 工程师

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

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

DevOps 工程师

重新部署 Terraform 文件。

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

DevOps 工程师

相关资源