Fel*_*lix 7 amazon-web-services amazon-ecs aws-fargate
我是 docker 和 ECS 的新手,所以我可能不会使用正确的术语。如果我需要澄清,请告诉我。
我的场景:我有许多独立的容器。每个容器代表一个网站。每个容器都应该一直运行,但可能会出现长时间不活动的情况(例如,CPU 使用率为零)。为了便于说明,我们假设我有 10 个容器,每个容器需要最多 200MB RAM 和最多 1vCPU。我们进一步假设我总共只需要 2vCPU 来处理所有 10 个容器的组合负载(因为它们不会同时看到高负载)。
Fargate 选项 1:我为每个容器创建一个不同的任务:(2GB,1vCPU)x 10(2GB 是 1vCPU 的最小 RAM)。
Fargate 选项 2:我使用所有容器创建一个任务:(2GB,2vCPU)。
EC2 选项:我为每个容器创建一个任务,所有任务都映射到单个 EC2 实例。
如果我理解正确的话,Fargate 选项 2 比 Fargate 选项 1 便宜得多,因为我知道我最多只需要 2vCPU。但选项 2 的灵活性要差得多,因为它是停止/启动/缩放的任务,并且我希望将我的容器视为彼此独立(例如独立地停止/启动/缩放)。
此外,如果我理解正确的话,EC2 选项是我既可以获得每个容器一个任务的灵活性,又可以为我实际需要的资源付费的唯一方法。
所以:看来对于资源利用率较低的独立容器来说,Fargate此时不太适合。
我的理解正确吗?
没错,对于相同的 vCPU/RAM 数量,Fargate 比 EC2 更贵。
例如:
具有 0.25 vCPU 和 0.5 GB RAM 的最小Fargate 容器的成本为 0.019 美元/小时,即每个容器每月约 14 美元。
如果您需要 1 个 vCPU,则最小 RAM 量为 2GB(请参阅Fargate 支持的配置),并且每个容器的价格突然达到约55 美元/月。在您的情况下,乘以 10 项任务即可获得 550 美元/月。
另一方面,如果您有信心可以将所有这些压缩到单个t3.small(2 个 vCPU、2 GB RAM)中,那么您将花费 0.0208 美元/小时,即大约15 美元/月。即使您碰巧需要 2 或 3 个t3.small实例来支持您的负载,它仍然比 Fargate 便宜得多。
如果您将所有容器集中到一个 Fargate 任务中(如选项 2中建议的那样),它仍然比使用 EC2 ECS 更昂贵,而且在一项任务中拥有多个独立容器会带来复杂性。不值得这么麻烦。
总而言之,如果您想 24x7 运行容器,并且它们并未始终得到充分利用,那么最好在基于 EC2 的 ECS 集群上运行它们。
使用 Fargate,您需要为灵活性支付额外费用。
如果您的容器仅短暂运行以完成任务然后退出,或者如果它们根据需求扩展和缩小,那么您在 Fargate 中运行它们会更容易 - 您无需扩展和缩小底层 EC2集群来支持负载。
在许多情况下,即使每个 vCPU/RAM 更昂贵,在 Fargate 上运行效果更好。我们每天一次旋转数次数百个容器进行某些处理,每个容器仅运行约 10 分钟。如果我们必须在每次运行之前扩展 EC2/ECS 集群,等待它稳定下来,处理故障,然后运行我们的批处理作业,然后再次缩小,那么开销将非常高,并且我们的批处理将花费更长的时间。
Fargate 在这里对我们来说非常有用。但我不会将其用于永远在线的服务。
希望有帮助:)
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |