AWS Elastic Container Service: ejecute el servicio en múltiples zonas de disponibilidad

AWS Elastic Container Service: ejecute el servicio en múltiples zonas de disponibilidad

Estoy ejecutando tareas de larga duración a través de ECS. Las instancias de contenedor están distribuidas en múltiples zonas de disponibilidad. ¿Es posible definir en ECS que cuando se tiene más de 1 instancia de una tarea, cada tarea debe ejecutarse en otra zona de disponibilidad (si es posible)? Esta característica sería excelente para alta disponibilidad y tolerancia a fallas. En este momento, sería posible que todas mis 5 instancias de una tarea se ejecuten en la misma máquina, por lo tanto, cuando la máquina muere, el programador tendría que colocar todas las tareas en otro lugar y esto provocaría un tiempo de inactividad del servicio.

Espero me puedas ayudar.

Respuesta1

Hoy se anunció la programación consciente de AZ, por lo que esto ya está solucionado.

Publicación del blog de Amazon

Respuesta2

Estoy enfrentando el mismo problema.

Por el momento, estoy usando mi propia AMI con Docker y awscli. Inyecto el script de inicio con ec2_Data. Este script inicia Dockers, aplica crontabs (para métricas y copias de seguridad de Cloudwatch) e inicializa alarmas.

No quiero usar un registro privado o Dockerhub, estoy cargando imágenes de Docker desde S3.

s3curl --id clouddocker -- -s --retry 5 --retry-delay 30 URL.gz | gunzip|docker load

Respuesta3

Con ecs-cli, puede definir subredes.

>ecs-cli up --help
NAME:
   up - Create the ECS Cluster (if it does not already exist) and the AWS resources required to set up the cluster.

USAGE:
   command up [command options] [arguments...]

OPTIONS:
   --keypair        Specify the name of an existing Amazon EC2 key pair to enable SSH access to the EC2 instances in your cluster.
   --capability-iam Acknowledge that this command may create IAM resources.
   --size       [Optional] Specify the number of instances to register to the cluster. The default is 1.
   --azs        [Optional] Specify a comma-separated list of 2 VPC availability zones in which to create subnets (these AZs must be in the 'available' status). This option is recommended if you do not specify a VPC ID with the --vpc option. WARNING: Leaving this option blank can result in failure to launch container instances if an unavailable AZ is chosen at random.
   --security-group     [Optional] Specify an existing security group to associate it with container instances. Defaults to creating a new one.
   --cidr       [Optional] Specify a CIDR/IP range for the security group to use for container instances in your cluster. Defaults to 0.0.0.0/0 if --security-group is not specified
   --port       [Optional] Specify a port to open on a new security group that is created for your container instances if an existing security group is not specified with the --security-group option. Defaults to port 80.
   --subnets        [Optional] Specify a comma-separated list of existing VPC Subnet IDs in which to launch your container instances. This option is required if you specify a VPC with the --vpc option.
   --vpc        [Optional] Specify the ID of an existing VPC in which to launch your container instances. If you specify a VPC ID, you must specify a list of existing subnets in that VPC with the --subnets option. If you do not specify a VPC ID, a new VPC is created with two subnets.
   --instance-type  [Optional] Specify the EC2 instance type for your container instances.

información relacionada