我需要在系统上进行一些大规模测试。该系统包括2个主要部分:管理器和节点。只有一台管理器服务器,但有100个节点。管理器和节点都是Docker映像。开始。

我该怎么用?管理器和节点应该能够一起通信,并且节点不应该以任何方式进行负载平衡。因此,他们需要管理者可以与之通信的专用内部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

#2 楼

您为什么不为此目的使用Terraform?它可以启动任意数量的实例,为您创建网络,创建安全组,ECS,IAM或您想要创建的任何对象,并在需要时轻松终止。现在,它已在工业中广泛使用。