应用程序架构 - Amazon Elastic Container Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

应用程序架构

您如何在上构建应用程序 Amazon ECS 取决于几个因素, 启动类型您正在使用,它是一个关键的差异化因素。我们给出以下 指南,按发射类型细分, 应该 协助完成流程。

使用 Fargate 启动类型

当使用 Fargate 启动类型 主要问题是,您应该何时将多个容器 与在多个任务中单独部署容器相同的任务定义 定义。

如果出现以下情况,应将多个容器放在相同的任务定义中:

  • 容器有共同的生命周期(即,它们应启动, 一起终止)。

  • 容器需要在相同的基础主容器中运行(即, 一个容器在localhostport上参照另一个容器)。

  • 您希望您的容器共享资源。

  • 您的容器共享数据量。

否则,您应该在单独的任务定义中定义容器,以便 您可以分别进行扩展、配置和取消配置。

使用 EC2 启动 类型

当您考虑如何使用 EC2 启动类型,它有助于思考需要运行哪些流程 以及如何扩展每个组成部分。

例如,想象一个由以下内容组成的应用程序 组分:

  • 在网页上显示信息的前端服务

  • 为前端服务提供API的前端服务

  • 一个数据存储区

在您的开发环境中,您可能会在 您的Dockerhost。您可能希望在生产中使用相同的方法 但这种方法有几个缺点:

  • 变更一个组成部分会影响所有三个组成部分,这可能是 变更范围超出预期。

  • 每个部分更难扩展,因为您必须扩展 容器按比例。

  • 任务定义只能有10个容器定义, 应用程序堆栈现在或将来可能需要更多。

  • 任务定义中的每个容器必须放在同一个容器上 实例,这可能会将您的实例选择限制为最大大小。

相反,您应该创建任务定义,将 用于共同目的,并将不同的组件分为多个任务 定义。在本例中,三个任务定义分别指定一个容器。的 以下示例群集有三个容器实例在三个前端注册 服务容器、两个备份服务容器和一个数据存储服务 容器。


                    应用程序架构示例

您可以将任务定义中的相关容器进行分组,例如链接的容器 必须一起运行。例如,您可以将日志流容器添加到 并将此包含在相同的任务定义中。

获得任务定义后,您可以根据这些定义创建服务, 保持所需任务的可用性。更多信息,请参阅 创建服务. 在您的服务中, 可以将容器与 Elastic Load Balancing 负载平衡器。更多信息,请参阅 服务负载平衡. 何时 您的应用要求会发生变化,您可以更新您的服务以扩展 所需任务的数量(向上或向下),或将更新版本的容器部署在 您的任务。更多信息,请参阅 更新服务.