Ejecución del daemon de X-Ray en Amazon ECS - AWS X-Ray

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejecución del daemon de X-Ray en Amazon ECS

En Amazon ECS, cree una imagen de Docker que ejecute el daemon de X-Ray, cárguelo en el repositorio de imágenes de Docker y luego impleméntelo en su clúster de Amazon ECS. Puede utilizar mapeos de puertos y la configuración del modo de red en el archivo de definición de tareas para permitir que la aplicación se comunique con el contenedor del demonio.

Uso de la imagen de Docker oficial de la

X-Ray proporciona una imagen del contenedor de Docker en Amazon ECR que puede implementar junto con la aplicación. Para obtener más información, consulte Descarga del daemon.

ejemplo Definición de tarea
{ "name": "xray-daemon", "image": "amazon/aws-xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "hostPort": 0, "containerPort": 2000, "protocol": "udp" } ] }

Creación y compilación de una imagen de Docker

Si desea realizar una configuración personalizada, es posible que tenga que definir su propia imagen de Docker.

Añada políticas administradas al rol de tarea para conceder permiso al daemon para cargar datos de rastreo en X-Ray. Para obtener más información, consulte Permiso para el envío de datos a X-Ray desde el daemon.

Utilice uno de los siguientes Dockerfiles para crear una imagen que ejecute el demonio.

ejemplo Dockerfile: Amazon Linux
FROM amazonlinux RUN yum install -y unzip RUN curl -o daemon.zip https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-linux-3.x.zip RUN unzip daemon.zip && cp xray /usr/bin/xray ENTRYPOINT ["/usr/bin/xray", "-t", "0.0.0.0:2000", "-b", "0.0.0.0:2000"] EXPOSE 2000/udp EXPOSE 2000/tcp
nota

Las marcas -t y -b son necesarias para especificar una dirección de enlace que escuche el bucle invertido de un entorno con varios contenedores.

ejemplo Dockerfile: Ubuntu

Para los derivados de Debian, tendrá que instalar certificados de una autoridad de certificación (CA) para evitar problemas al descargar el instalador.

FROM ubuntu:16.04 RUN apt-get update && apt-get install -y --force-yes --no-install-recommends apt-transport-https curl ca-certificates wget && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/* RUN wget https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-3.x.deb RUN dpkg -i aws-xray-daemon-3.x.deb ENTRYPOINT ["/usr/bin/xray", "--bind=0.0.0.0:2000", "--bind-tcp=0.0.0.0:2000"] EXPOSE 2000/udp EXPOSE 2000/tcp

En la definición de tarea, la configuración depende del modo de red que se utilice. El modo de red puente es la opción predeterminada y se puede utilizar en la VPC predeterminada. En una red en modo puente, establezca la variable de entorno AWS_XRAY_DAEMON_ADDRESS para indicar al SDK de X-Ray a qué puerto del contenedor se ha de hacer referencia y establezca el puerto de host. Por ejemplo, podría publicar el puerto UDP 2000 y crear un enlace desde el contenedor de la aplicación hasta el contenedor del demonio.

ejemplo Definición de tarea
{ "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "hostPort": 0, "containerPort": 2000, "protocol": "udp" } ] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" }, { "name" : "AWS_XRAY_DAEMON_ADDRESS", "value" : "xray-daemon:2000" } ], "portMappings" : [ { "hostPort": 5000, "containerPort": 5000 } ], "links": [ "xray-daemon" ] }

Si ejecuta el clúster en la subred privada de una VPC, puede utilizar el modo de red awsvpc para asociar una interfaz de red elástica (ENI) a los contenedores. De este modo, puede evitar utilizar enlaces. Omita el puerto de host en los mapeos de puertos, el enlace y la variable de entorno AWS_XRAY_DAEMON_ADDRESS.

ejemplo Definición de tarea de VPC
{ "family": "scorekeep", "networkMode":"awsvpc", "containerDefinitions": [ { "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "containerPort": 2000, "protocol": "udp" } ] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" } ], "portMappings" : [ { "containerPort": 5000 } ] } ] }

Configuración de las opciones de línea de comandos en la consola de Amazon ECS

Las opciones de línea de comandos anulan cualquier valor que presente algún conflicto del archivo de configuración de la imagen. Las opciones de línea de comandos se suelen utilizar para pruebas locales, pero también se pueden utilizar para mayor comodidad al establecer variables de entorno o con el fin de controlar el proceso de inicio.

Al añadir opciones de línea de comandos, se actualiza el CMD de Docker que se pasa al contenedor. Para obtener más información, consulte Docker run reference.

Para establecer una opción de línea de comandos
  1. Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/.

  2. En la barra de navegación, seleccione la región que contiene la definición de tarea.

  3. En el panel de navegación, elija Task Definitions.

  4. En la página Task Definitions, seleccione la casilla situada a la izquierda de la definición de tarea que revisar y seleccione Create new revision.

  5. En la página Create new revision of Task Definition (Crear nueva revisión de definición de tarea), seleccione el contenedor.

  6. En la sección ENVIRONMENT (ENTORNO), añada al campo Command (Comando) la lista de opciones de línea de comandos separadas por comas.

  7. Elija Actualizar.

  8. Verifique la información y seleccione Create.

En el ejemplo siguiente se muestra cómo escribir una opción de línea de comandos separada por comas para la opción RoleARN. La opción RoleARN asume el rol de IAM especificado para cargar segmentos en una cuenta diferente.

--role-arn, arn:aws:iam::123456789012:role/xray-cross-account

Para obtener más información sobre las opciones de línea de comandos disponibles en X-Ray, consulte Configuración del daemon de AWS X-Ray.