0
votes

Est-il possible de s'assurer que trois de mes instances de docker s'exécutent sur différents EC2 d'ECS?

Par exemple, je dois déployer trois instances docker sur mon ECS, qui a trois EC2. Est-il possible de déployer ces trois instances Docker sur différentes machines EC2?

Je pense déployer un cluster kafka, broker1, broker2, broker3 et zookeeper1, zookeeper2, zookeeper3 sur trois EC2 respectivement.


2 commentaires

oui il est possible que vous ayez besoin d'orchestrations. comme Kubernetes ou Docker Swarm


Il existe une section dans la documentation ECS sur le placement des tâches Amazon ECS . Vous pouvez le configurer pour qu'il préfère différentes instances, mais pas pour le forcer. Vous pouvez également installer ce logiciel sur des instances dédiées et y connecter votre cluster.


3 Réponses :


1
votes

Si vous avez BrokerService , ZooKeeperService , les tâches seront déjà équilibrées entre les zones de disponibilité par la stratégie de placement de propagation , ce qui devrait se produire, mais il est vrai que si leur capacité n'était pas suffisante, vous n'obtiendrez peut-être pas le placement idéal.

Calcul de Fargate

Il y a plusieurs façons de forcer. Le plus simple Fargate je puisse penser est de savoir si Fargate était une option. Cela garantira le plus haut niveau de haute disponibilité, mais vous serez alors obligé d'utiliser Fargate, au lieu d' ec2 , ce qui pourrait enfreindre vos exigences, car vous pourriez par exemple avoir besoin d'un stockage en bloc que vous n'obtenez pas de Fargate. Cela pourrait vous coûter ou vous faire économiser de l'argent selon si cela vous éviterait de déployer de nouvelles instances ec2, mais vous pouvez avoir des instances réservées que vous souhaitez utiliser, cela dépend.

Service par AZ Sinon, vous pouvez créer un service pour chaque AZ. Chaque service aura un PlacementConstraints utilisant le langage de requête de cluster pour définir dans quelle zone il doit résider:

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

Vous utiliseriez us-east-1{ac} pour chaque service.

La création de différents clusters ayant différentes instances dans chaque AZ permettrait également d'atteindre cet objectif.


0 commentaires

1
votes

Examinez les services démons . ECS propose 2 types de services: réplique et démon.

  • Le réplica répartit les tâches entre les zones de disponibilité et placera plusieurs tâches (conteneurs Docker) sur le même hôte EC2 à équilibrer en fonction de la stratégie de placement.
  • Daemon place une tâche par service par hôte de conteneur EC2 pour répondre à vos attentes.

PS: les services Daemon ne fonctionnent pas avec Fargate. Il ne semble pas que vous utilisiez Fargate de toute façon.


0 commentaires

1
votes

Vous pouvez utiliser la contrainte de placement distinctInstance pour placer les tâches de réplica d'un service sur différentes instances.


0 commentaires