例如,我需要将三个docker示例部署到我的ecs上,它有三个ec2。是否可以将这三个docker示例部署到不同的ec2机器上?我在考虑将kafka集群、broker1、broker2、broker3和zookeeper1、zookeeper2、zookeeper3分别部署到三个ec2。
bf1o4zei1#
查看守护程序服务。ecs提供两种服务类型-副本和守护程序。副本将任务分布在可用性区域,并将多个任务(docker容器)放置在同一ec2主机上,以根据放置策略进行平衡。daemon为每个ec2容器主机的每个服务放置一个任务以满足您的期望。ps:守护程序服务不能与fargate一起工作。看起来你用的不是fargate。
g9icjywg2#
如果你有 BrokerService , ZooKeeperService 然后,任务将通过分散放置策略在可用性区域之间进行平衡,因此这应该会发生,但如果它们的容量不足,则可能无法获得理想的放置。法尔盖特计算机有几种方法可以强迫你。我能想到的最简单的方法就是 Fargate 是一种选择。这将确保最高级别的高可用性,但是您必须使用fargate,而不是 ec2 ,这可能会违反您的要求,例如,您可能需要块存储,而这不是从fargate获得的。它可能会花费或节省您的钱,这取决于它是否会节省您部署新ec2示例的需要,但是您可能有您想要使用的保留示例,所以这取决于它。每个az的服务,否则您可以为每个az创建一个服务。每项服务将有一个 PlacementConstraints 使用群集查询语言定义它应该驻留在哪个区域:
BrokerService
ZooKeeperService
Fargate
ec2
PlacementConstraints
"PlacementConstraints": [{ "Type": "memberOf", "Expression": "attribute:ecs.availability-zone != us-east-1a" }
你会用 us-east-1{a-c} 每项服务。在每个az中创建具有不同示例的不同集群也可以实现这一点。
us-east-1{a-c}
ej83mcc03#
可以使用differenceInstance放置约束将服务的副本任务放置在不同的示例上。
3条答案
按热度按时间bf1o4zei1#
查看守护程序服务。ecs提供两种服务类型-副本和守护程序。
副本将任务分布在可用性区域,并将多个任务(docker容器)放置在同一ec2主机上,以根据放置策略进行平衡。
daemon为每个ec2容器主机的每个服务放置一个任务以满足您的期望。
ps:守护程序服务不能与fargate一起工作。看起来你用的不是fargate。
g9icjywg2#
如果你有
BrokerService
,ZooKeeperService
然后,任务将通过分散放置策略在可用性区域之间进行平衡,因此这应该会发生,但如果它们的容量不足,则可能无法获得理想的放置。法尔盖特计算机
有几种方法可以强迫你。我能想到的最简单的方法就是
Fargate
是一种选择。这将确保最高级别的高可用性,但是您必须使用fargate,而不是ec2
,这可能会违反您的要求,例如,您可能需要块存储,而这不是从fargate获得的。它可能会花费或节省您的钱,这取决于它是否会节省您部署新ec2示例的需要,但是您可能有您想要使用的保留示例,所以这取决于它。每个az的服务,否则您可以为每个az创建一个服务。每项服务将有一个
PlacementConstraints
使用群集查询语言定义它应该驻留在哪个区域:你会用
us-east-1{a-c}
每项服务。在每个az中创建具有不同示例的不同集群也可以实现这一点。
ej83mcc03#
可以使用differenceInstance放置约束将服务的副本任务放置在不同的示例上。