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

应用程序架构

您可以按照以下两种模型之一运行容器:

  • Fargate 启动类型 - 这是一个无服务器随用随付选项。您可以在无需管理基础设施的情况下运行容器。

  • EC2 启动类型 - 在集群中配置和部署 EC2 实例以运行容器。

如何在 Amazon ECS 上构建您的应用程序取决于几个因素,其中您使用的启动类型是一个关键因素。我们给出以下指导,按启动类型分类,应该能在操作过程中提供帮助。

使用 Fargate 启动类型

Fargate 启动类型适用于以下工作负载:

  • 需要低运营开销的大型工作负载

  • 偶尔会突增的小型工作负载

  • 小工作负载

  • 批处理工作负载

使用 Amazon Fargate 为运行 Amazon ECS 构建应用程序时,您必须决定是把多个容器部署到同一个任务定义中,还是分别在多个任务定义中部署容器。

当需要满足以下条件时,我们建议您在相同任务定义中部署多个容器:

  • 您的容器共享公共生命周期(即,它们应该一起启动和终止)。

  • 您的容器需要在相同的底层主机上运行(即一个容器在 localhost 端口上引用另一个容器)。

  • 需要您的容器共享资源。

  • 您的容器共享数据卷。

当不需要满足这些条件时,我们建议您在多个任务定义中单独部署容器。这是因为,通过这样做,您可以分别对其进行扩展、预置和取消预置。

使用 EC2 启动类型

EC2 启动类型适用于必须进行价格优化的大型工作负载。

当考虑如何使用 EC2 启动类型对任务定义和服务建模时,我们建议您考虑哪些流程必须一起运行以及您将如何扩展每个组件。

例如,假设某个应用程序包含以下组件:

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

  • 一项为前端服务提供 API 的后端服务

  • 数据存储

对于此示例,创建将用于共同目的的容器分组的任务定义。将不同的组件分离为多个单独的任务定义。以下示例集群具有运行三个前端服务容器、两个后端服务容器和一个数据存储服务容器的三个容器实例。

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

在拥有任务定义后,您可以从这些任务定义创建服务以保持所需任务的可用性。有关更多信息,请参阅在经典控制台中创建 Amazon ECS 服务。在您的服务中,您可以将容器与 Elastic Load Balancing 负载平衡器关联。有关更多信息,请参阅服务负载均衡。当您的应用程序要求发生更改时,您可以更新服务以增大或减小所需任务数。或者,您可以更新服务以在任务中部署较新版本的容器。有关更多信息,请参阅使用控制台更新服务


					包含三个实例的应用程序架构示例。实例 1 具有前端服务容器和数据库服务容器。实例 2 和实例 3 具有前端服务容器和后端服务容器。