Verknüpfen von Containern zwischen Taskdefinitionen in AWS ECS?
Ich versuche zum einrichten einer einfachen web-Anwendung, die über eine zugehörige Datenbank, in der AWS ECS. Lokal habe ich diese setup in verschiedenen Behältern und auf ECS, ich hätte gerne separate task-Definitionen, so dass ich skalieren können die beiden separat.
- Registrierte ich meine erste Aufgabe-definition als
david_mongodb
erfolgreich in ECS. Es hat einen container mit dem Namendavid_mongodb
. - Ich versuchte dann meine zweite Aufgabe-definition als
david_web
die einen container mit dem Namendavid_web
dass die Verknüpfung der Datenbank überdavid_mongodb:db
. - Wenn ich auf 'Create', gibt es einen Fehler:
Unable to create Task Definition Linked container 'david_mongodb:db' doesn't exist.
Scheint es wie task-Definitionen nicht sehen können container Namen in anderen task-Definitionen? Ich ' m denken setzen beide david_web
und david_mongodb
Container in der gleichen Aufgabenstellung arbeiten würde, aber ich will nicht zu tun: es würde verhindern, dass mir von der Skalierung entweder web-app oder der Datenbank getrennt. Diese übersicht scheint zu bestätigen, dass meine Architektur ist empfohlen...
So, wie kann ich link-Container, die Leben in den unterschiedlichen aufgabendefinitionen? Oder gibt es eine andere clevere Art und Weise des Umgangs mit diesen?
InformationsquelleAutor der Frage David Elner | 2015-12-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Links in einem ECS-Aufgabe definition sind Analog zu Andockfenster links und funktionieren nur, wenn die Container sind Teil der gleichen Aufgabenstellung (Behälter, die Teil einer einheitlichen Aufgabenstellung zusammen gebracht werden auf dem gleichen host). Um die Kommunikation zwischen den Behältern in unterschiedlichen aufgabendefinitionen, müssen Sie einen Mechanismus für die Entdeckung, wo sich die Behälter befinden (was host) sowie den port für die Kommunikation.
ECS hat integration mit Elastic Load Balancing (Application Load-Balancer, Network Load Balancer und Klassische Load-Balancer) durch die service Funktion, wo Aufgaben werden automatisch eingetragen in den ELB-und abgemeldet, in die ELB entsprechend.
ECS hat auch die integration mit Route 53 Auto-Naming für DNS-based service discovery mit
A
undSRV
records. Ihre service-Aufgaben können automatisch an und entfernt von DNS-Datensätzen.Service-Discovery für Amazon ECS Mit DNS beschreibt einen anderen Ansatz, wo eine Lambda-Funktion hört die ECS-event-stream über CloudWatch Events und updates Route 53-DNS-records.Diese Methode wurde abgelöst durch die Route 53 Auto Naming-Funktion oben beschrieben.Wenn Sie vermeiden möchten, load-Balancer und DNS, ein anderes Muster könnte ein Botschafter container (es ist ein Beispiel genannt ecs-task-kite , verwendet die ECS API)) oder Sie könnten daran interessiert sein, ein overlay-Netzwerk (Weben hat eine ziemlich detaillierte erste-Schritte-Handbuch zu Ihrer Lösung).
Nathan Peck ist die Verfolgung einer Reihe von verschiedenen Themen, ECS, darunter service discovery, hier.
InformationsquelleAutor der Antwort Samuel Karp