本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对经过 Blu Age 现代化改造的大型机工作负载进行容器化
由 Richard Milner-Watts 创作 () AWS
摘要
此模式为运行已使用 Blu Age
有关使用 Blu Age 和AWS服务实现工作负载现代化的更多信息,请参阅以下AWS规范性指南出版物:
如需有关使用 Blu Age 对大型机工作负载进行现代化改造的帮助,请在 Blu Age 网站
先决条件和限制
先决条件
Blu Age 创建的现代化 Java 应用程序。出于测试目的,此模式提供了示例 Java 应用程序,您可将其用作概念验证。
Docker
环境,您可以用它来构建容器。
限制
根据您使用的容器编排平台,可供容器使用的资源(例如CPURAM、和存储)可能会受到限制。例如,如果您将亚马逊ECS与 AWS Fargate 配合使用,请参阅亚马逊ECS文档,了解限制和注意事项。
架构
源技术堆栈
Blu Age
Java
目标技术堆栈
Docker
目标架构
下图显示了 Docker 容器中 Blu Age 应用程序的架构。
容器的入口点是包装器脚本。该 bash 脚本负责为 Blu Age 应用程序准备运行时环境,并处理输出。
容器内的环境变量用于配置包装器脚本中的变量,例如 Amazon Simple Storage Service (Amazon S3) 存储桶名称和数据库凭证。环境变量由 S AWS ecrets Manager 或 Parameter Store 提供,后者是 S AWS ystems Manager 的一项功能。如果您使用亚马逊ECS作为容器编排服务,则还可以在亚马逊ECS任务定义中对环境变量进行硬编码。
在运行 Blu Age 应用程序前,包装脚本负责将所有输入文件从 S3 存储桶提取到容器中。AWS命令行界面 (AWSCLI) 安装在容器中。这提供了一种通过网关虚拟私有云 (VPC) 终端节点访问存储在 Amazon S3 中的对象的机制。
Blu Age 应用程序的 Java Archive (JAR) 文件可能需要与其他数据源(例如 Amazon Aurora)进行通信。
完成后,包装脚本将生成的输出文件传送到 S3 存储桶中以供进一步处理(例如,由 Amazon CloudWatch 日志服务处理)。如果您使用的是标准 CloudWatch 日志记录的替代方案,则该模式还支持将压缩的日志文件传送到 Amazon S3。
工具
AWS 服务
Amazon Elastic Container Registry (AmazonECR) 是一项安全、可扩展且可靠的托管容器镜像注册服务。
Amazon 弹性容器服务 (AmazonECS) 是一项快速且可扩展的容器管理服务,可帮助您在集群上运行、停止和管理容器。
工具
代码存储库
此模式的代码可在 GitHub Blu Age 示例容器存储库
最佳实践
使用环境变量,将变量外部化以改变应用程序的行为。这些变量使容器编排解决方案能够更改运行时环境,而无需重建容器。此模式包括对 Blu Age 应用程序有用的环境变量示例。
在运行 Blu Age 应用程序之前,请验证所有应用程序依赖项。例如,验证数据库是否可用以及凭证是否有效。在包装脚本中编写测试以验证依赖项,如果不满足则提前失败。
在包装器脚本中使用详细日志记录。直接与正在运行的容器交互可能具有挑战性,具体取决于编排平台以及作业所需时间。确保将有用的输出写入到
STDOUT
,以帮助诊断任何问题。例如,输出可能包括运行应用程序之前和之后应用程序工作目录的内容。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
选项 1-与 Blu Age 合作获取应用程序的JAR文件。 | 这种模式中的容器需要 Blu Age 应用程序。或者,您可使用随此模式提供的示例 Java 应用程序作为原型。 与 Blu Age 团队合作,为您的应用程序获取一个可以烘焙到容器中的JAR文件。如果JAR文件不可用,请参阅下一个任务以改用示例应用程序。 | 云架构师 |
选项 2-生成或使用提供的示例应用程序JAR文件。 | 此模式提供了一个预先构建的示例JAR文件。此文件将应用程序的环境变量输出到 此文件名为 如果您想修改代码并构建自己的JAR文件版本,请使用位于的源代码。 /java_ sample/src/sample _java_app.java 在存储库 | 应用程序开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
克隆 GitHub 存储库。 | 使用以下命令克隆代码存储库示例:
| AWS DevOps |
使用 Docker 构建容器。 | 在将容器推送到 Docker 注册表(例如亚马逊)之前,使用 Docker 构建容器:ECR
| AWS DevOps |
测试 Blu Age 容器。 | (可选)如有必要,请使用以下命令在本地测试容器:
| AWS DevOps |
向您的 Docker 存储库进行身份验证。 | 如果您计划使用亚马逊ECR,请按照亚马逊ECR文档中的说明安装和配置 Docker,并使用您的默认注册表对 Docker CLI 进行身份验证。AWS CLI 我们建议您使用get-login-password 命令 注意 如果您使用查看推送命令按钮,Amazon ECR 控制台
如果您不打算使用 AmazonECR,请按照为您的容器注册系统提供的说明进行操作。 | AWS DevOps |
创建容器存储库。 | 在 Amazon 中创建存储库ECR。有关说明,请参见示例使用 Terraform 为容器化 Blu Age 应用程序部署环境。 如果您使用的是其他容器注册表系统,请按为该系统提供的说明进行操作。 | AWS DevOps |
标记您的容器,并将其推送到目标存储库。 | 如果您使用的是亚马逊ECR:
有关更多信息,请参阅亚马逊ECR用户指南中的推送 Docker 镜像。 | AWS DevOps |
相关资源
AWS 资源
其他资源