2017-03-22 22 views
20

看起来可以运行基于任务定义的任务或服务。任务和服务之间有什么不同和相似之处?是否有线索可以在创建Task而不是Service时指定“Task Group”?任务和服务在层次上是否等于任务定义的实例化,还是由任务组成的服务?AWS ECS - 正在运行的任务与服务

谢谢。

回答

49

任务定义是1个以上容器配置的集合。某些任务可能只需要一个容器,而其他任务可能需要两个或多个并发运行的潜在链接容器。任务定义允许您指定要使用哪个Docker映像,要公开哪些端口,分配多少CPU和内存,如何收集日志以及定义环境变量。

当您直接运行一个任务是创建一个任务,这将启动容器(S)(在任务定义中定义),直到他们停止或自行退出,在这一点上,他们是不会自动替换 。直接运行任务对于短期运行作业来说非常理想,可能作为通过CRON完成的示例。

一个服务用来保证你总是可以在任何时候正在运行的任务的一些数字。如果某个任务的容器由于错误而退出,或者基础EC2实例失败并被替换,则ECS服务将替换失败的任务。这就是为什么我们创建了群集,以便服务具有足够的资源来使用CPU,内存和网络端口。对我们来说,只要他们运行,哪个实例任务运行并不重要。 A服务配置参考 a任务定义。服务负责创建任务

服务通常用于长时间运行的应用程序,如Web服务器。例如,如果我在俄勒冈州部署了由Node.JS提供支持的网站(us-west-2),为了实现高可用性,我希望说至少有三个任务在三个可用区(AZ)上运行;如果一次失败,我还有另外两次,失败的一次将被替换(读取为自我修复!)。创建服务是实现这一目标的方法。如果我的群集中有6个EC2实例,每个AZ有2个实例,则服务将尽可能自动地平衡各个区域的任务,同时还要考虑cpu,内存和网络资源。

UPDATE:

我不知道它有助于分层想到这些事情。

另一个非常重要的一点是,可以将服务配置为使用负载均衡器,以便创建任务 - 即启动在任务定义中定义的容器 - 服务将自动将容器的EC2实例注册到负载平衡器。无法将任务配置为使用负载均衡器,只有服务可以。

+0

非常感谢@talentedmrjones!那么它是否就像“使用任务进行短期工作并将服务用于长时间运行的服务”一样简单?任何你可以评论“任务和服务是否等同于任务定义的实例化,还是由任务组成的服务”的机会? –

+0

@BobJones请告诉我,如果更新有帮助。 – talentedmrjones

+0

它呢,谢谢。 –