Amazon ECS에서 X-Ray 대몬(daemon) 실행하기 - AWS X-Ray

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon ECS에서 X-Ray 대몬(daemon) 실행하기

Amazon ECS에서 X-Ray 대몬(daemon)을 실행하는 도커 이미지를 생성하여 도커 이미지 리포지토리에 업로드한 다음 Amason ECS 클러스터에 배포합니다. 작업 정의 파일의 포트 매핑 및 네트워크 모드 설정을 사용하여 애플리케이션이 데몬 컨테이너와 통신하도록 할 수 있습니다.

공식 도커 이미지 사용

X-Ray는 애플리케이션과 함께 배포할 수 있는 Amazon ECR의 도커 컨테이너 이미지를 제공합니다. 자세한 내용은 대몬(daemon) 다운로드하기를 참조하세요.

예 태스크 정의
{ "name": "xray-daemon", "image": "amazon/aws-xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "hostPort": 0, "containerPort": 2000, "protocol": "udp" } ] }

도커 이미지 생성 및 빌드

사용자 지정 구성의 경우 자체 도커 이미지를 정의해야 할 수 있습니다.

작업 역할에 관리형 정책을 추가해 대몬(daemon)에 트레이스 데이터를 X-Ray에 업로드할 권한을 부여합니다. 자세한 내용은 대몬(daemon)에 X-Ray로 데이터를 전송할 권한 부여 섹션을 참조하세요.

다음 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
참고

다중 컨테이너 환경의 루프백을 수신 대기하는 바인딩 주소를 지정하려면 플래그 -t-b가 필요합니다.

예 Dockerfile — Ubuntu

데비안 파생 버전의 경우, 설치 프로그램을 다운로드할 때 문제가 발생하지 않도록 CA(인증 기관) 인증서도 설치해야 합니다.

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

사용하는 네트워크 모드에 따라 작업 정의의 구성이 달라집니다. 기본값은 브리지 네트워킹이며, 기본 VPC에서 사용할 수 있습니다. 브리지 네트워크에서 AWS_XRAY_DAEMON_ADDRESS 환경 변수를 설정하여 SDK에 참조할 컨테이너 포트를 알리고 호스트 포트를 설정합니다. 예를 들어, UDP 포트 2000을 게시하고 애플리케이션 컨테이너에서 데몬 컨테이너로 이어지는 링크를 생성합니다.

예 태스크 정의
{ "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" ] }

VPC의 프라이빗 서브넷에서 클러스터를 실행하는 경우, awsvpc 네트워크 모드를 사용하여 컨테이너에 ENI(탄력적 네트워크 인터페이스)를 연결할 수 있습니다. 이로써 링크 사용을 피할 수 있습니다. 포트 매핑, 링크 및 AWS_XRAY_DAEMON_ADDRESS 환경 변수에서 호스트 포트를 생략합니다.

예 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 } ] } ] }

Amazon ECS 콘솔에서 명령줄 옵션 구성

명령줄 옵션은 이미지의 구성 파일에서 충돌하는 모든 값을 재정의합니다. 명령줄 옵션은 일반적으로 로컬 테스트에 사용되지만 환경 변수를 설정하는 동안 편의를 위해 사용하거나 시작 프로세스를 제어하기 위해 사용할 수도 있습니다.

명령줄 옵션을 추가하면 컨테이너에 전달되는 Docker CMD가 업데이트됩니다. 자세한 내용은 Docker 실행 참조를 확인하십시오.

명령줄 옵션 설정
  1. https://console.aws.amazon.com/ecs/에서 Amazon ECS 클래식 콘솔을 엽니다.

  2. 탐색 모음에서 태스크 정의가 들어 있는 리전을 선택합니다.

  3. 탐색 창에서 태스크 정의(Task Definitions)를 선택합니다.

  4. 작업 정의 페이지에서 개정할 작업 정의 왼쪽의 확인란을 선택한 후 새 개정 생성을 선택합니다.

  5. 작업 정의의 새 개정 생성 페이지에서 컨테이너를 선택합니다.

  6. 환경 섹션에서 쉼표로 구분된 명령줄 옵션 목록을 명령 필드에 추가합니다.

  7. 업데이트를 선택합니다.

  8. 정보를 확인한 후 생성(Create)을 선택합니다.

다음 예제에서는 RoleARN 옵션에 대해 쉼표로 구분된 명령줄 옵션을 작성하는 방법을 보여줍니다. RoleARN 옵션은 지정된 IAM 역할을 맡아 세그먼트를 다른 계정으로 업로드합니다.

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

X-Ray에서 사용할 수 있는 명령줄 옵션에 대한 자세한 내용은 AWS X-Ray 대몬(daemon) 구성을 참조하십시오.