应用程序架构
您可以按照以下两种模型之一运行容器:
-
Fargate 启动类型 - 这是一个无服务器随用随付选项。您可以在无需管理基础设施的情况下运行容器。
-
EC2 启动类型 - 在集群中配置和部署 EC2 实例以运行容器。
如何在 Amazon ECS 上构建您的应用程序取决于几个因素,其中您使用的启动类型是一个关键因素。我们给出以下指导,按启动类型分类,应该能在操作过程中提供帮助。
使用 Fargate 启动类型
Fargate 启动类型适用于以下工作负载:
-
需要低运营开销的大型工作负载
-
偶尔会突增的小型工作负载
-
小工作负载
-
批处理工作负载
使用 Amazon Fargate 为运行 Amazon ECS 构建应用程序时,您必须决定是把多个容器部署到同一个任务定义中,还是分别在多个任务定义中部署容器。
当需要满足以下条件时,我们建议您在相同任务定义中部署多个容器:
-
您的容器共享公共生命周期(即,它们应该一起启动和终止)。
-
您的容器需要在相同的底层主机上运行(即一个容器在 localhost 端口上引用另一个容器)。
-
需要您的容器共享资源。
-
您的容器共享数据卷。
当不需要满足这些条件时,我们建议您在多个任务定义中单独部署容器。这是因为,通过这样做,您可以分别对其进行扩展、预置和取消预置。
使用 EC2 启动类型
EC2 启动类型适用于必须进行价格优化的大型工作负载。
当考虑如何使用 EC2 启动类型对任务定义和服务建模时,我们建议您考虑哪些流程必须一起运行以及您将如何扩展每个组件。
例如,假设某个应用程序包含以下组件:
-
一项在网页上显示信息的前端服务
-
一项为前端服务提供 API 的后端服务
-
数据存储
对于此示例,创建将用于共同目的的容器分组的任务定义。将不同的组件分离为多个单独的任务定义。以下示例集群具有运行三个前端服务容器、两个后端服务容器和一个数据存储服务容器的三个容器实例。
您可以对任务定义中的相关容器(例如,必须一起运行的已链接的容器)进行分组。例如,将日志流容器添加到前端服务,并将其包含在同一任务定义中。
在拥有任务定义后,您可以从这些任务定义创建服务以保持所需任务的可用性。有关更多信息,请参阅在经典控制台中创建 Amazon ECS 服务。在您的服务中,您可以将容器与 Elastic Load Balancing 负载平衡器关联。有关更多信息,请参阅服务负载均衡。当您的应用程序要求发生更改时,您可以更新服务以增大或减小所需任务数。或者,您可以更新服务以在任务中部署较新版本的容器。有关更多信息,请参阅使用控制台更新服务。
