例如,我需要将三个docker实例部署到具有三个EC2的ECS。是否可以将这三个docker实例部署到不同的EC2计算机上?
我在考虑部署一个kafka集群,broker1,broker2,broker3和zookeeper1,zookeeper2,zookeeper3分别部署到三个EC2。
发布于 2020-11-16 09:33:11
如果你有BrokerService,ZooKeeperService,那么任务将通过spread放置策略在可用区之间进行平衡,所以这应该会发生,但如果它们的容量不够,你可能得不到理想的放置。
Fargate计算
有几种方法可以强制执行。我能想到的最简单的情况是,如果Fargate是一个选项。这将确保最高级别的高可用性,但随后您将被迫使用Fargate,而不是ec2,这可能会违反您的要求,例如,您可能需要从Fargate获得的块存储。它可以花费或节省您的资金,这取决于它是否会节省您部署新ec2实例的需要,但您可能已经保留了想要使用的实例,因此它取决于您的需求。
每个AZ的服务,否则您可以为每个AZ创建一个服务。每个服务都有一个使用Cluster query language的PlacementConstraints来定义它应该驻留在哪个区域中:
"PlacementConstraints": [{
"Type": "memberOf",
"Expression": "attribute:ecs.availability-zone != us-east-1a"
}您将为每个服务使用us-east-1{a-c}。
在每个AZ中创建具有不同实例的不同集群也可以实现这一点。
发布于 2020-11-16 12:06:13
调查一下daemon services。ECS提供两种服务类型-副本和守护程序。
PS:守护服务不能与Fargate一起工作。不管怎么说,看起来你并没有在使用Fargate。
发布于 2020-11-17 02:59:39
您可以使用distinctInstance placement constraint将服务的副本任务放置在不同的实例上。
https://stackoverflow.com/questions/64841380
复制相似问题