在 ECS 集群下对 Fargate 应用程序进行分组的依据通常是什么?

fro*_*roi 7 amazon-web-services amazon-ecs

基于亚马逊文档:

Amazon ECS 集群是任务或服务的逻辑分组。如果您正在运行使用 EC2 启动类型的任务或服务,则集群也是一组容器实例。如果您使用容量提供程序,则集群也是容量提供程序的逻辑分组。当您首次使用 Amazon ECS 时,系统会为您创建一个默认集群,但您可以在一个账户中创建多个集群以保持资源独立。

在我们的用例中,我们没有使用 EC2 启动类型。我们主要使用 Fargate。

分组服务的通常基础/策略是什么?这是纯粹主观的事情吗?

假设我有付款服务、发票/收据服务、用户服务和身份验证服务。我是否将其中一些放在 ECS 集群中,或者将它们放在单独的 ECS 集群上是最佳实践吗?

Chr*_*ams 4

服务是一个正在运行的应用程序,因此例如您可能有身份验证服务或支付服务等。

虽然服务可以相互通信,但服务本身应该包含使其工作的所有部分,这些部分就是容器。

您的服务可能就像一个容器一样简单,也可能包含许多容器来提供其功能,例如缓存或后台作业。

服务概念一般来源于服务驱动设计微服务架构的思想。

最终决定取决于您,您可以将所有内容都放在一项服务下,但这可能会导致进一步的问题。

需要注意的一个关键点是容器的扩展是在服务级别完成的,因此您需要增加属于任务定义一部分的所有容器。您通常希望进行扩展以满足功能需求。

ECS 集群可能包含一项服务或包含生成可交付成果的多项服务。例如,在AWS中,S3由200多个微服务组成,这些微服务就是一个集群。但是,您不会期望每个 AWS 服务都属于同一集群。

在您的场景中,您定义了多个服务,我个人会将它们分成不同的集群,因为它们提供完全不同的业务功能。