La liaison des conteneurs entre les définitions de tâches dans AWS ECS?

j'essaie de configurer une application web de base, qui a une base de données associée, en AWS ECS. Localement, j'ai ces configurations dans des conteneurs différents, et sur ECS, j'aimerais avoir des définitions de tâches séparées pour que je puisse les mettre à l'échelle séparément.

  1. j'ai enregistré ma première définition de tâche comme david_mongodb succès à L'ECS. Il dispose d'un conteneur nommé david_mongodb.
  2. Puis j'ai essayé d'enregistrer mon deuxième tâche de définition david_web, qui a un récipient nommé david_web qui relie la base de données via david_mongodb:db.
  3. quand je clique sur 'Create', il retourne une erreur:

    Unable to create Task Definition
    Linked container 'david_mongodb:db' doesn't exist.
    

il semble que les définitions de tâches ne peuvent pas voir les noms de conteneur dans les autres définitions de tâches? Je pense mettre les deux david_web et david_mongodb les conteneurs dans la même définition de tâche fonctionnerait, mais je ne veux pas faire cela: il m'empêcherait de mettre à l'échelle soit l'application web ou la base de données séparément. vue d'ensemble semble confirmez que mon architecture est recommandée...

alors comment relier les conteneurs qui vivent dans des définitions de tâches différentes? Ou y a-t-il une autre façon intelligente de gérer ça?

40
demandé sur David Elner 2015-12-29 21:57:50

1 réponses

les liens dans une définition de tâche ECS sont analogues à Panneau liens ne fonctionnent que lorsque les conteneurs sont partie de la même définition de tâche (conteneurs qui font partie d'une seule définition de tâche sont placés sur le même hôte). Afin de communiquer entre les conteneurs dans différentes définitions de tâches, vous aurez besoin d'un mécanisme pour découvrir où les conteneurs sont situés (quel hôte) ainsi que le port pour la communication.

L'ECS a une intégration avec Équilibrage des charges élastiques (équilibreurs de charges D'Application, équilibreurs de charges réseau et équilibreurs de charges classiques) par le biais de service où les tâches seront automatiquement enregistrées à la BEI et révoquées de manière appropriée.

ECS a aussi une intégration avec Route 53 Automatique De Nommage pour la découverte de services basée sur le DNS en utilisant A et SRV enregistrements. Les tâches de votre service peuvent être automatiquement saisies et retirées du DNS dossier.

Découverte de Service pour Amazon ECS à l'Aide de DNS décrit une approche différente où une fonction Lambda écoute le flux d'événements ECS à travers les événements CloudWatch et met à jour les enregistrements DNS Route 53. cette méthode a été remplacée par la fonction de nommage automatique de la Route 53 décrite ci-dessus.

si vous voulez éviter les équilibreurs de charge et DNS, un autre modèle pourrait être un l'ambassadeur conteneur (il y a un échantillon appelé ecs-tâche-cerf-volant qui utilise L'API ECS) ou vous pourriez être intéressé par un réseau de superposition (Weave a un guide de démarrage pour leur solution).

Nathan Peck suit de près un certain nombre de sujets liés aux SCE, y compris la découverte de services, ici.

59
répondu Samuel Karp 2018-04-23 17:10:03