有没有可能确保我的三个docker示例在ecs的不同ec2上运行?

hmmo2u0o  于 2021-06-04  发布在  Kafka
关注(0)|答案(3)|浏览(307)

例如,我需要将三个docker示例部署到我的ecs上,它有三个ec2。是否可以将这三个docker示例部署到不同的ec2机器上?
我在考虑将kafka集群、broker1、broker2、broker3和zookeeper1、zookeeper2、zookeeper3分别部署到三个ec2。

bf1o4zei

bf1o4zei1#

查看守护程序服务。ecs提供两种服务类型-副本和守护程序。
副本将任务分布在可用性区域,并将多个任务(docker容器)放置在同一ec2主机上,以根据放置策略进行平衡。
daemon为每个ec2容器主机的每个服务放置一个任务以满足您的期望。
ps:守护程序服务不能与fargate一起工作。看起来你用的不是fargate。

g9icjywg

g9icjywg2#

如果你有 BrokerService , ZooKeeperService 然后,任务将通过分散放置策略在可用性区域之间进行平衡,因此这应该会发生,但如果它们的容量不足,则可能无法获得理想的放置。
法尔盖特计算机
有几种方法可以强迫你。我能想到的最简单的方法就是 Fargate 是一种选择。这将确保最高级别的高可用性,但是您必须使用fargate,而不是 ec2 ,这可能会违反您的要求,例如,您可能需要块存储,而这不是从fargate获得的。它可能会花费或节省您的钱,这取决于它是否会节省您部署新ec2示例的需要,但是您可能有您想要使用的保留示例,所以这取决于它。
每个az的服务,否则您可以为每个az创建一个服务。每项服务将有一个 PlacementConstraints 使用群集查询语言定义它应该驻留在哪个区域:

"PlacementConstraints": [{
          "Type": "memberOf",
          "Expression": "attribute:ecs.availability-zone != us-east-1a"
        }

你会用 us-east-1{a-c} 每项服务。
在每个az中创建具有不同示例的不同集群也可以实现这一点。

ej83mcc0

ej83mcc03#

可以使用differenceInstance放置约束将服务的副本任务放置在不同的示例上。

相关问题