我该怎么用?管理器和节点应该能够一起通信,并且节点不应该以任何方式进行负载平衡。因此,他们需要管理者可以与之通信的专用内部IP。
理想情况下,我希望可以偶尔运行一个脚本来启动服务器,并轻松关闭它们。轻松启动此设置?
#1 楼
看一下AWS Fargate-它使您可以运行Docker容器,而不必为ECS集群启动EC2实例。您只需安排任务(或服务),每个任务都有自己的IP地址,并且它们可以相互通信。您还可以使用AWS Service Discovery简化任务IP地址的注册和查找。
BTW请注意,默认的Fargate并发限制为20个任务/服务-如果您需要其中的100个,则必须提高服务限额支持票。
我们已经将其提高到200个并发任务,因为我们的处理并行运行160多个容器,全部在Fargate上进行,而无需管理单个EC2。
更新-如何旋转100个容器
我可以告诉您我们如何使用Fargate-在CI / CD管道中,我们构建容器映像并将其上传到ECR 。源的一部分还是CloudFormation(CFN)模板,在管道的部署阶段,我们创建/更新CFN堆栈,该堆栈会使用所有容器参数创建ECS TaskDefinition。
然后,我们有了一个用Python编写并由CloudWatch Event(类似于cron的调度程序)触发的调度程序作业,该作业查找TaskDefinition ARN并从该单个TaskDef运行160多个任务。您可以为每个Task提供一个额外的参数,或者覆盖一些配置等。否则,可以直接旋转它。将ECS AutoScaling组划分为数十个节点以支持我们的工作负载,然后最终将其扩展回0。希望对您有所帮助:)
评论
我也看过Fargate,但是节点正在运行模拟,因此我不确定我不能控制它们的实例大小是否“不好”。但是,除了不必考虑EC2之外,ECS / EC2与ECS / Fargate的初始设置是否几乎相同?
–手推车
18-09-27在10:05
@Trolley通过我们拆分160多个容器的方法更新了答案。
–MLu
18-09-28在23:46
@Trolley Fargate为您的容器保留了CPU和内存-与EC2相比,我们没有发现Fargate的性能下降。
–MLu
18-09-28在23:48