Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS ECS中的任务和服务有什么区别?_Amazon Web Services_Amazon Ecs - Fatal编程技术网

Amazon web services AWS ECS中的任务和服务有什么区别?

Amazon web services AWS ECS中的任务和服务有什么区别?,amazon-web-services,amazon-ecs,Amazon Web Services,Amazon Ecs,似乎可以运行任务或基于任务定义的服务。任务和服务之间有什么区别和相似之处?在创建任务而不是服务时可以指定“任务组”这一事实中有没有线索?任务和服务在任务定义的层次结构上是相等的实例化,还是服务由任务组成?A任务定义是一个或多个容器配置的集合。某些任务可能只需要一个容器,而其他任务可能需要同时运行两个或多个潜在链接的容器。任务定义允许您指定要使用哪个Docker映像、要公开哪些端口、要分配多少CPU和内存、如何收集日志以及定义环境变量 当您直接运行任务时,将创建一个任务,该任务将启动容器(在任务定

似乎可以运行任务或基于任务定义的服务。任务和服务之间有什么区别和相似之处?在创建任务而不是服务时可以指定“任务组”这一事实中有没有线索?任务和服务在任务定义的层次结构上是相等的实例化,还是服务由任务组成?

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

当您直接运行任务时,将创建一个任务,该任务将启动容器(在任务定义中定义),直到容器自行停止或退出,此时不会自动替换容器。直接运行任务是短时间运行作业的理想选择,可能是通过CRON完成的一个示例

服务用于确保始终运行一定数量的任务。如果任务的容器因错误而退出,或者底层EC2实例失败并被替换,ECS服务将替换失败的任务。这就是为什么我们创建集群,以便该服务在CPU、内存和网络端口方面有大量资源可供使用。对我们来说,运行哪个实例任务并不重要,只要它们运行就行。服务配置引用任务定义。服务负责创建任务

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

更新:

我不确定按等级来考虑这些事情是否有帮助


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

由@Talendemrjones用文字完美解释。下面的图片将帮助您轻松地将其可视化:)


任务定义:

这是描述要运行哪些Docker容器并表示您的应用程序的蓝图。它包括几个任务

服务:

任务定义的实例。它还定义了在任何给定时间运行的一个任务定义中的最小和最大任务、自动缩放和负载平衡

ECS容器实例:

这是一个EC2实例,其上运行Docker和ECS容器代理。代理负责ECS与实例之间的通信,提供正在运行的容器状态,管理正在运行的新容器

关系:


非常感谢@talentedmrjones!那么,它是否像“将任务用于短期运行的作业,将服务用于长期运行的服务”这样简单呢?您是否有可能评论“任务定义的任务和服务在层次结构上是否相等,或者服务是否由任务组成?”?我不明白的是:为什么在创建任务时,我可以更改环境变量的值,但对于service@NikolayKlimchuk服务只管理任务——是任务本身定义和使用了envars。什么是“任务组”这是我读过的澄清了令人困惑的基础知识的精彩文章之一。非常感谢“天才琼斯先生”。的确很有天赋:-)很好的视觉效果!-)如果有任何回答观者想深入了解亚马逊ECS,请访问。解释得很好@realPK确实非常有用的页面,谢谢您的推荐!我发现从答案列表中可以清楚地理解感谢@XWA130感谢以上答案。我有一个疑问,如果我从任务定义开始5个任务,这是否意味着有5个EC2实例分配给该服务,或者是否有其他配置定义了服务背后运行的EC2实例的确切数量?@mshikher ECS容器实例具有ECS容器代理,该代理将协调任务的运行位置。当然,您可以指定要运行的EC2实例的数量。