本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Terraform 为容器化 Blu Age 应用程序部署环境
由 Richard Milner-Watts 创作 () AWS
环境:生产 | 源:大型机 | |
目标:容器 | 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 网站
先决条件和限制
先决条件
该示例容器化了 Blu Age 应用程序,其由对经过 Blu Age 现代化改造的大型机工作负载进行容器化模式提供。示例应用程序提供了处理现代化应用程序的输入和输出的逻辑,并且它可以与此体系结构集成。
部署此资源需要 Terraform。
限制
亚马逊弹性容器服务 (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
目标架构
下图显示了解决方案架构。
该解决方案部署了以下IAM角色:
批处理任务角色
批处理任务执行角色
服务任务角色
服务任务执行角色
Step Functions 角色
AWSBackup 角色
RDS增强的监控角色。
这些角色符合最低权限访问原则。
ECRAmazon 用于存储由此模式编排的容器镜像。
AWSSystems Manager Parameter Store 在运行时向亚马逊ECS任务定义提供有关每个环境的配置数据。
AWSSecrets Manager 在运行时向亚马逊ECS任务定义提供有关环境的敏感配置数据。数据已由加密AWSKMS。
Terraform 模块为所有实时和批处理ECS任务创建 Amazon 任务定义。
亚马逊使用 AWS Fargate 作为计算引擎来ECS运行批处理任务。这是一项短暂的任务,由 Ste AWS p Functions 按要求启动。
Amazon Aurora Postgre SQL-Compatible 提供了一个支持现代化应用程序的数据库。这取代了 IBM Db2 或 IBM IMS DB 等大型机数据库。
Amazon ECS 运行一项长期服务,以提供现代化的实时工作负载。这些无状态应用程序永久运行,容器分布至可用区中。
网络负载均衡器用于授予对实时工作负载访问权限。Network Load Balancer 支持较早的协议,例如IBMCICS。或者,您可以将 Application Load Balancer 用于HTTP基于工作负载的工作负载。
Amazon S3 为任务输入和输出提供对象存储。容器应处理 Amazon S3 中的拉取和推送操作,以为 Blu Age 应用程序准备工作目录。
AWSStep Functions 服务用于编排运行亚马逊ECS任务以处理批量工作负载。
SNS每个批处理工作负载的主题用于将现代化的应用程序与其他系统(例如电子邮件)集成,或者启动其他操作,例如将FTP输出对象从 Amazon S3 传送到。
注意:默认情况下,此解决方案无法访问互联网。此模式假设虚拟私有云 (VPC) 将使用诸如 Tr AWSansit Gatew
自动化和扩缩
在整个模式中使用无服务器资源有助于确保,通过横向扩展,此设计的规模几乎没有限制。这样可以减少邻居噪音担忧,例如在原始大型机上可能遇到的对计算资源的竞争。可以根据需要安排批处理任务同时运行。
单个容器受到 Fargate 支持的最大大小限制。有关更多信息,请参阅 Amazon ECS 文档中的任务CPU和内存部分。
若要水平扩展实时工作负载
工具
AWS服务
Amazon Aurora Postgre SQL 兼容版是一款完全托管、ACID兼容的关系数据库引擎,可帮助您设置、操作和扩展 Postgre 部署。SQL
AWSBackup 是一项完全托管的服务,可帮助您集中和自动执行跨AWS服务、云端和内部部署的数据保护。
Amazon Elastic Container Registry (AmazonECR) 是一项安全、可扩展且可靠的托管容器镜像注册服务。
Amazon 弹性容器服务 (AmazonECS) 是一项快速且可扩展的容器管理服务,可帮助您在集群上运行、停止和管理容器。
AWSIdentity and Access Management (IAM) 通过控制谁经过身份验证并有权使用AWS资源,从而帮助您安全地管理对资源的访问权限。
AWS密钥管理服务 (AWSKMS) 可帮助您创建和控制加密密钥,以帮助保护您的数据。
AWSS@@ ecrets Manager 可帮助您将代码中的硬编码凭据(包括密码)替换为API调用 Secrets Manager 以编程方式检索密钥。
亚马逊简单通知服务 (AmazonSNS) 可帮助您协调和管理发布者与客户之间的消息交换,包括网络服务器和电子邮件地址。
Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
AWSSt ep Functions 是一项无服务器编排服务,可帮助您组合 Lam AWS bda 函数和其他AWS服务来构建业务关键型应用程序。
AWSSystems Manager Parameter Store 为配置数据管理和密钥管理提供安全的分层存储。
其他服务
HashiCorp Terraform
是一种开源基础设施即代码 (IaC) 工具,可帮助您使用代码来配置和管理云基础架构和资源。此模式使用 Terraform 创建示例架构。
代码存储库
此模式的源代码可在 GitHub Blu Age 示例ECS基础架构 (Terraform) 存储
最佳实践
对于测试环境,请使用诸如配置现代化应用程序的
forceDate
选项之类的功能,以通过始终运行已知时间段来生成一致的测试结果。单独调整每个任务以消耗最佳数量的资源。您可以使用 Amazon Conta CloudWatch iner Insights 获取有关潜在瓶颈的指导。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
克隆解决方案源代码。 | 从GitHub 项目 | DevOps 工程师 |
通过部署资源存储 Terraform 状态来引导环境。 |
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
查看和更新 Terraform 配置。 | 在根目录中,打开文件
| DevOps 工程师 |
部署 Terraform 文件。 | 请从终端运行 请注意,此基础设施部署时间可能为 15 分钟以上。 | DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
将 Blu Age 容器镜像推送到亚马逊ECR。 | 将容器推送到您在上一篇长篇故事中创建的 Amazon ECR 存储库中。有关说明,请参阅 Amazon ECR 文档。 记下容器镜像URI。 | DevOps 工程师 |
更新 Terraform,以引用 Blu Age 容器映像。 | 更新文件 | DevOps 工程师 |
重新部署 Terraform 文件。 | 从您的终端运行 | DevOps 工程师 |