用于在上运行 Blu Age 现代化工作负载的解决方案架构 AWS - AWS 规范性指导

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

用于在上运行 Blu Age 现代化工作负载的解决方案架构 AWS

该解决方案在 Docker 容器中运行现代化的应用程序,该容器由亚马逊弹性容器服务 (Amazon ECS) Service 编排。在容器映像中运行的封装 shell 脚本管理现代化的 Java 应用程序,例如输入的收集、Java 代码的操作以及输出的处理和交付。

容器内的 Java 应用程序代码超出了本指南的范围。简而言之,包装器 shell 脚本充当容器的入口点,它负责协调各种任务。在运行时,ECS 任务定义通过使用AWS Secrets Manager与参数存储的本机集成来提供环境元数据,例如亚马逊简单存储服务 (Amazon S3) Service 存储桶,而参数存储的功能为。 AWS Systems Manager

以下架构旨在使用无服务器运行现代化的大型机工作负载 AWS 服务,无需管理和维护本地基础架构。

在 AWS 无服务器基础架构上运行的现代化大型机应用程序的架构图。

此图显示以下流程:

  1. 创建容器镜像并将其存储在亚马逊弹性容器注册表 (Amazon ECR) Con tainer Registry 中。Amazon ECS 任务定义使用图像标签来引用图像。

  2. 使用以下类型的 Elastic Load Balancing 资源之一为请求提供入口点:

    • 对于基于 HTTP 的服务,请使用 Application Loa d Bal ancer。这允许使用 TLS 证书来提供传输中的加密和应用程序运行状况检查。

    • 对于其他服务,例如 IBM CICS,请使用 N etwork Load Bal ancer。这可以透明地创建到 Amazon ECS 集群中容器的代理 TCP 连接(第 4 层)。

      注意

      对于网络负载均衡器,容器运行状况检查需要建立 TCP 连接。

  3. 将环境配置(例如数据库端点和凭据)存储在 Secrets Manager 或 Parameter Store 中。使用 Secrets Manager,您可以根据存储的密钥数量和进行的 API 调用进行付费。此服务最适合任何敏感数据,例如数据库凭证。使用 Parameter Store,无需为标准参数和 API 交互的标准吞吐量收取额外费用。此服务最适合存放其他非敏感数据,例如 Java 日志参数。

  4. 使用 Amazon S3 存储任务输入和输出。bash 包装器内的 AWS Command Line Interface (AWS CLI) 处理容器与 Amazon S3 的集成。Amazon S3 事件(例如PutObject请求)可用于触发工作流程,例如为批处理任务运行 Amazon ECS 任务或向下游用户交付输出。

  5. 使用兼容 Amazon Aurora PostgreSQL 的版本来替代大型机数据库引擎,例如 IBM Db2 或 IBM IMS。连接详细信息(例如端点和凭据)在运行时提供给任务。对大型机工作负载进行现代化改造时,最具挑战性的方面之一是确保输入在大型机版本和应用程序的现代化版本之间保持一致。能够将数据从大型机复制到现代数据库引擎(例如 PostgreSQL)的实时变更数据捕获 (CDC) 解决方案很少。确保您对现代化应用程序所需的数据以及如何提供这些数据有很好的了解。

  6. 实时服务的任务定义包括有关容器镜像的详细信息、应向负载平衡资源提供哪些 TCP/IP 端口,以及任何给定时间所需的容器数量。内置的 Amazon ECS 部署断路器(AWS 博客文章)提供了一种托管的滚动更新部署机制,可消除管理服务部署的运营开销。

  7. 批处理作业的任务定义包括有关容器镜像的详细信息以及配置所需的任何环境变量。这些资源可能包括可用资源(例如 CPU、RAM 或临时存储)、输入、输出和其他设置。

  8. 使用 Amazon S3 事件通知亚马逊 EventBridge启动工作流程。这些服务可以根据 Amazon S3 中的事件(例如任务向存储桶写入输出对象时)启动工作 AWS Step Functions 流程或处理对象。

  9. AWS Step Functions用于在 Amazon ECS 中封装批处理作业的操作。该工作流可以启动批处理任务、监控其进度并处理任何错误。

对于大型机工作负载,可能需要一定程度的自定义。该架构旨在与常见用例兼容,您可以对其进行扩展以支持许多需求。