Uso de la detección de servicios para conectar los servicios de Amazon ECS con nombres de DNS - Amazon Elastic Container Service

Uso de la detección de servicios para conectar los servicios de Amazon ECS con nombres de DNS

Su servicio de Amazon ECS también puede configurarse para utilizar la detección de servicios de Amazon ECS. La detección de servicios utiliza acciones de la API de AWS Cloud Map para administrar los espacios de nombres de DNS y HTTP para sus servicios de Amazon ECS. Para obtener más información, consulte ¿Qué es AWS Cloud Map? en la Guía para desarrolladores de AWS Cloud Map.

La detección de servicios se encuentra disponible en las siguientes regiones de AWS:

Nombre de la región Región

Este de EE. UU. (Norte de Virginia)

us-east-1

Este de EE. UU. (Ohio)

us-east-2

Oeste de EE. UU. (Norte de California)

us-west-1

Oeste de EE. UU. (Oregón)

us-west-2

África (Ciudad del Cabo)

af-south-1

Asia-Pacífico (Hong Kong)

ap-east-1

Asia Pacífico (Bombay)

ap-south-1

Asia-Pacífico (Hyderabad)

ap-south-2

Asia-Pacífico (Tokio)

ap-northeast-1

Asia-Pacífico (Seúl)

ap-northeast-2

Asia-Pacífico (Osaka)

ap-northeast-3

Asia-Pacífico (Singapur)

ap-southeast-1

Asia-Pacífico (Sídney)

ap-southeast-2

Asia-Pacífico (Yakarta)

ap-southeast-3

Asia-Pacífico (Melbourne)

ap-southeast-4

Canadá (centro)

ca-central-1

Oeste de Canadá (Calgary)

ca-west-1

China (Pekín)

cn-north-1

China (Ningxia)

cn-northwest-1

Europe (Frankfurt)

eu-central-1

Europa (Zúrich)

eu-central-2

Europa (Irlanda)

eu-west-1

Europa (Londres)

eu-west-2

Europa (París)

eu-west-3

Europa (Milán)

eu-south-1

Europa (Estocolmo)

eu-north-1

Israel (Tel Aviv)

il-central-1

Europa (España)

eu-south-2

Medio Oriente (EAU)

me-central-1

Medio Oriente (Baréin)

me-south-1

América del Sur (São Paulo)

sa-east-1

AWS GovCloud (Este de EE. UU.)

us-gov-east-1

AWS GovCloud (Oeste de EE.UU.)

us-gov-west-1

Conceptos sobre la detección de servicios

La detección de servicios consta de los siguientes componentes:

  • Service discovery namespace (Espacio de nombres de detección de servicios): grupo lógico de servicios de detección de servicios que comparten el mismo nombre de dominio, como example.com. Este es el nombre de dominio al que desea dirigir el tráfico. Puede crear un espacio de nombres con una llamada al comando aws servicediscovery create-private-dns-namespace o en la consola de Amazon ECS. Puede utilizar el comando aws servicediscovery list-namespaces para ver la información de resumen de los espacios de nombres creados por la cuenta corriente. Para obtener más información acerca de los comandos de detección de servicios, consulte create-private-dns-namespace y list-namespaces en la Guía de referencia de AWS Cloud Map (detección de servicios) de la AWS CLI.

  • Service discovery service (Servicio de detección de servicios): existe dentro del espacio de nombres de detección de servicios y consta del nombre del servicio y la configuración de DNS para el espacio de nombres. Proporciona los siguientes componentes principales:

    • Registro de servicios: permite buscar un servicio mediante DNS o con las acciones de la API de AWS Cloud Map y recuperar uno o varios puntos de enlace disponibles que se pueden utilizar para conectarse al servicio.

  • Service discovery instance (Instancia de detección de servicios): existe dentro del servicio de detección de servicios y consiste en atributos asociados a cada servicio de Amazon ECS del directorio de servicios.

    • Instance attributes (Atributos de instancia): se agregan los siguientes metadatos como atributos personalizados para cada servicio de Amazon ECS que se configura para utilizar la detección de servicios:

      • AWS_INSTANCE_IPV4: en el caso de un registro A, la dirección IPv4 que Route 53 devuelve en respuesta a consultas de DNS y AWS Cloud Map devuelve al detectar detalles de la instancia, por ejemplo, 192.0.2.44.

      • AWS_INSTANCE_PORT: el valor del puerto asociado al servicio de detección de servicios.

      • AVAILABILITY_ZONE: la zona de disponibilidad en la que se lanzó la tarea. Para tareas que utilizan el tipo de lanzamiento de EC2, esta es la zona de disponibilidad en la que existe la instancia de contenedor. Para tareas que utilizan el tipo de lanzamiento de Fargate, esta es la zona de disponibilidad en la que existe la interfaz de red elástica.

      • REGION: la región en la que existe la tarea.

      • ECS_SERVICE_NAME: el nombre del servicio de Amazon ECS al que pertenece la tarea.

      • ECS_CLUSTER_NAME: el nombre del clúster de Amazon ECS al que pertenece la tarea.

      • EC2_INSTANCE_ID: el ID de la instancia de contenedor en el que se colocó la tarea. Este atributo personalizado no se agrega si la tarea utiliza el tipo de lanzamiento de Fargate.

      • ECS_TASK_DEFINITION_FAMILY: la familia de definición de tareas que utiliza la tarea.

      • ECS_TASK_SET_EXTERNAL_ID: si se crea un conjunto de tareas para una implementación externa y se asocia a un registro de detección de servicios, el atributo ECS_TASK_SET_EXTERNAL_ID contendrá el ID externo del conjunto de tareas.

  • Amazon ECS health checks (Comprobaciones de estado de Amazon ECS): Amazon ECS realiza comprobaciones de estado periódicas en el nivel de contenedor. Si un punto de enlace no supera la comprobación de estado, se elimina del direccionamiento de DNS y se marca como en mal estado.

Consideraciones sobre la detección de servicios

Al utilizar la detección de servicios, se debe tener en cuenta lo siguiente:

  • La detección de servicios es compatible con tareas alojadas en Fargate que utilizan la versión 1.1.0 de la plataforma o una posterior. Para obtener más información, consulte Versiones de la plataforma Fargate para Amazon ECS.

  • Los servicios configurados para utilizar la detección de servicios tienen un límite de 1000 tareas por servicio. Esto se debe a una cuota de servicio de Route 53.

  • El flujo de trabajo de creación de servicio en la consola de Amazon ECS solo es admite el registro de servicios en espacios de nombres de DNS privado. Cuando se crea un espacio de nombres de DNS privado de AWS Cloud Map, se creará automáticamente una zona alojada privada de Route 53.

  • Los atributos de DNS de la VPC deben estar configurados para una resolución de DNS correcta. Para obtener información acerca de cómo configurar los atributos, consulte Compatibilidad de la VPC con DNS en la Guía del usuario de Amazon VPC.

  • Los registros de DNS creados para un servicio de detección de servicios se registran siempre con la dirección IP privada de la tarea, en lugar de la dirección IP pública, incluso cuando se utilizan espacios de nombres públicos.

  • La detección de servicios requiere que las tareas especifiquen el modo de red awsvpc, bridge o host (none no se admite).

  • Si la definición de tarea de servicio usa el modo de red awsvpc, puede crear cualquier combinación de registros A o SRV para cada tarea de servicio. Si utiliza los registros SRV, se necesita un puerto.

  • Si la definición de tarea de servicio usa el modo de red bridge o host, el único tipo de registro de DNS admitido es un registro SRV. Cree un registro SRV para cada tarea de servicio. El registro SRV debe especificar una combinación de nombre y puerto de contenedor en la definición de tarea.

  • Los registros de DNS de un servicio de detección de servicios se pueden consultar dentro de la VPC. Utilizan el siguiente formato <service discovery service name>.<service discovery namespace>.

  • Al realizar una consulta de DNS en el nombre del servicio, los registros A devuelven un conjunto de direcciones IP que corresponden a las tareas. Los registros SRV devuelven un conjunto de direcciones IP y puertos por cada tarea.

  • Si tiene ocho registros o menos en buen estado, Route 53 responde a todas las consultas de DNS con todos los registros en buen estado.

  • Cuando todos los registros están en mal estado, Route 53 responde a las consultas de DNS con hasta ocho registros en mal estado.

  • Puede configurar la detección de servicios para un servicio que se encuentre detrás de un equilibrador de carga, pero el tráfico de la detección de servicios siempre se dirige a la tarea, no al equilibrador de carga.

  • La detección de servicios no admite el uso del equilibrador de carga clásico.

  • Se recomienda utilizar las comprobaciones de estado de nivel de contenedor administradas por Amazon ECS para el servicio de detección de servicios.

    • HealthCheckCustomConfig: Amazon ECS administra las comprobaciones de estado en su nombre. Amazon ECS utiliza información del contenedor y de las comprobaciones de estado, además del estado de la tarea, para actualizar el estado mediante AWS Cloud Map. Esto se especifica a través del parámetro --health-check-custom-config cuando se crea el servicio de detección de servicios. Para obtener más información, consulte HealthCheckCustomConfig en la Referencia de la API de AWS Cloud Map.

  • Los recursos de AWS Cloud Map que se crean cuando se utiliza la detección de servicios se deben limpiar manualmente.

  • Las tareas y las instancias se registran como UNHEALTHY hasta que las comprobaciones de estado del contenedor devuelvan un valor. Si se pasan las comprobaciones de estado, el estado se actualiza a HEALTHY. Si las comprobaciones de estado del contenedor fallan, se anula el registro de la instancia de detección de servicios.

Precios de la detección de servicios

Los clientes que utilizan la detección de servicios de Amazon ECS deben pagar cargos por los recursos de Route 53 y las operaciones de la API de detección de AWS Cloud Map. Se cobran costos por crear zonas alojadas en Route 53 y por las consultas al registro de servicios. Para obtener más información, consulte Precios de AWS Cloud Map en la Guía para desarrolladores de AWS Cloud Map.

Amazon ECS realiza comprobaciones de estado en el nivel de contenedor y las expone a operaciones de la API de comprobación de estado personalizada de AWS Cloud Map. Actualmente, esto está a disposición de los clientes sin ningún costo adicional. Si configura las comprobaciones de estado de red adicionales para tareas expuestas de forma pública, se le cobrará por dichas comprobaciones de estado.