amazon web services - pricing - ¿Vinculación de contenedores entre definiciones de tareas en AWS ECS?
install docker amazon linux 2 (1)
Los enlaces en una definición de tarea ECS son análogos a los enlaces Docker y solo funcionan cuando los contenedores son parte de la misma definición de tarea (los contenedores que son parte de una definición de tarea individual se colocan juntos en el mismo host). Para comunicarse entre contenedores en diferentes definiciones de tareas, necesitará un mecanismo para descubrir dónde están ubicados los contenedores (qué host), así como también el puerto para la comunicación.
ECS tiene integración con Elastic Load Balancing (Balanceadores de carga de aplicación, Balanceadores de carga de red y Balanceadores de carga clásicos) a través de la característica de service , donde las tareas se registrarán automáticamente en ELB y se eliminarán en el ELB de manera apropiada.
ECS también tiene integración con Route 53 Auto Naming para el descubrimiento de servicios basado en DNS utilizando los registros A
y SRV
. Las tareas de su servicio se pueden ingresar y eliminar automáticamente de los registros DNS.
Service Discovery para Amazon ECS El uso de DNS describe un enfoque diferente donde una función Lambda escucha la secuencia de eventos de ECS a través de CloudWatch Events y actualiza los registros DNS de la Ruta 53. Este método ha sido reemplazado por la función de asignación automática de ruta 53 descrita anteriormente.
Si desea evitar equilibradores de carga y DNS, otro patrón podría ser un contenedor embajador (hay una muestra llamada ecs-task-kite que usa la API de ECS) o podría estar interesado en una red de superposición (Weave tiene una obtención bastante detallada guía iniciada para su solución).
Nathan Peck realiza un seguimiento de una serie de temas relacionados con ECS, incluido el descubrimiento de servicios, here .
Estoy intentando configurar una aplicación web básica, que tiene una base de datos asociada, en AWS ECS. A nivel local, tengo esta configuración en diferentes contenedores, y en ECS, me gustaría tener definiciones de tareas separadas para poder escalar las dos por separado.
- Registré mi primera definición de tarea como
david_mongodb
éxito en ECS. Tiene un contenedor llamadodavid_mongodb
en él. - Luego intenté registrar mi segunda definición de tarea como
david_web
, que tiene un contenedor llamadodavid_web
que vincula la base de datos a través dedavid_mongodb:db
. Cuando hago clic en ''Crear'', devuelve un error:
Unable to create Task Definition Linked container ''david_mongodb:db'' doesn''t exist.
Parece que las definiciones de tareas no pueden ver los nombres de los contenedores en otras definiciones de tareas? Estoy pensando en poner tanto los david_web
como david_web
en la misma definición de tarea, pero no quiero hacer eso: me impediría escalar la aplicación web o la base de datos por separado. Esta visión general parece confirmar que mi arquitectura es recomendada ...
Entonces, ¿cómo puedo vincular contenedores que viven en diferentes definiciones de tareas? ¿O hay otra manera ingeniosa de manejar esto?