you*_*inz 5 python amazon-web-services amazon-ecs celery aws-fargate
我正在使用 AWS ECS 开展一个项目。我想使用 Celery 作为分布式任务队列。Celery Worker 可以构建为 EC2 类型,但由于实例处于空闲状态的时间很长,我认为 AWS Fargate 运行作业并立即退出将具有成本效益。
您对如何在 AWS 云中高效使用 Celery Worker 有什么建议吗?
Fargate 启动类型比 EC2 启动类型需要更长的时间来启动,因为当你开始任务时,AWS 会为你做所有的“主机事情”,包括众所周知的 ENI 连接缓慢,以及可能从一个Docker 回购。现在没有竞争,EC2 启动类型每次都更快。
所以这真的取决于你希望工人做的工作类型。由于上述原因,您可以预期新的 Fargate 任务需要几分钟才能进入 RUNNING 状态。另一方面,EC2 启动,因为 ENI 已经在您的主机上就位并且图像已经下载(最好)或大部分下载(可能最差),将从 PENDING 快速移动到 RUNNING。
这是当前流行的智慧,通常作为成本因素进行讨论,因为 Fargate 无法利用典型的 EC2 成本节约机制,如预留实例和现货定价。与 EC2 相比,一直运行 Fargate 的成本很高。
需要明确的是,在 Fargate 中 100% 运行完全没问题(我们这样做),但您必须愿意接受这样做的缺点 - 扩展速度较慢和成本。
请注意,您可以在同一个集群中运行这两种启动类型。集群无论如何都是合乎逻辑的,只是一种组织资源的方式。
此示例显示运行 4 个 celery 任务的静态 EC2 启动类型服务。任务数量、规格、实例大小等等都无关紧要,随心所欲。重要的是 - EC2 启动类型的服务不需要扩展;Fargate 启动类型服务能够根据您的扩展规则从无运行(在几乎没有工作或没有工作要做的时期)扩展到您可以处理的尽可能多的工作程序。
运行 1 个 EC2 启动类型t3.medium(2vcpu/4GB)。
最小任务:2,期望:4,最大任务:4
在此 EC2 启动类型中在 512/1024 运行 4 个 celery 任务。
无扩展策略
最小任务:0,期望:(x),最大任务:32
在 512/1024 运行 (x) celery 任务(与 EC2 启动类型相同的任务定义)
向该服务添加扩展策略
| 归档时间: |
|
| 查看次数: |
3476 次 |
| 最近记录: |