서비스 검색을 사용하여 Amazon ECS 서비스를 DNS 이름으로 연결 - Amazon Elastic Container Service

서비스 검색을 사용하여 Amazon ECS 서비스를 DNS 이름으로 연결

Amazon ECS 서비스는 Amazon ECS 서비스 검색을 사용하도록 구성할 수도 있습니다. 서비스 검색은 AWS Cloud Map API 태스크를 사용하여 Amazon ECS 서비스에 대한 HTTP 및 DNS 네임스페이스를 관리합니다. 자세한 내용은 AWS Cloud Map 개발자 안내서의 AWS Cloud Map란 무엇입니까?를 참조하세요.

서비스 검색은 다음 AWS 리전에서 사용할 수 있습니다.

리전 이름 리전

미국 동부(버지니아 북부)

us-east-1

미국 동부(오하이오)

us-east-2

미국 서부(캘리포니아 북부)

us-west-1

미국 서부(오레곤)

us-west-2

아프리카(케이프타운)

af-south-1

아시아 태평양(홍콩)

ap-east-1

아시아 태평양(뭄바이)

ap-south-1

아시아 태평양(하이데라바드)

ap-south-2

아시아 태평양(도쿄)

ap-northeast-1

아시아 태평양(서울)

ap-northeast-2

아시아 태평양(오사카)

ap-northeast-3

아시아 태평양(싱가포르)

ap-southeast-1

아시아 태평양(시드니)

ap-southeast-2

아시아 태평양(자카르타)

ap-southeast-3

아시아 태평양(멜버른)

ap-southeast-4

캐나다(중부)

ca-central-1

캐나다 서부(캘거리)

ca-west-1

중국(베이징)

cn-north-1

중국(닝샤)

cn-northwest-1

유럽(프랑크푸르트)

eu-central-1

유럽(취리히)

eu-central-2

유럽(아일랜드)

eu-west-1

유럽(런던)

eu-west-2

유럽(파리)

eu-west-3

유럽(밀라노)

eu-south-1

유럽(스톡홀름)

eu-north-1

이스라엘(텔아비브)

il-central-1

유럽(스페인)

eu-south-2

중동(UAE)

me-central-1

중동(바레인)

me-south-1

남아메리카(상파울루)

sa-east-1

AWS GovCloud(미국 동부)

us-gov-east-1

AWS GovCloud(미국 서부)

us-gov-west-1

서비스 검색 개념

서비스 검색은 다음과 같은 구성 요소로 이루어집니다.

  • 서비스 검색 네임스페이스: 트래픽을 라우팅할 동일한 도메인 이름(예: example.com)을 공유하는 서비스 검색 서비스의 논리적 그룹입니다. aws servicediscovery create-private-dns-namespace 명령을 직접 호출하거나 Amazon ECS 콘솔을 사용하여 네임스페이스를 생성할 수 있습니다. aws servicediscovery list-namespaces 명령을 사용하여 현재 계정에서 생성한 네임스페이스에 대한 요약 정보를 볼 수 있습니다. 서비스 검색 명령에 대한 자세한 정보는 AWS Cloud Map(서비스 검색) AWS CLI 참조 가이드create-private-dns-namespacelist-namespaces를 참조하세요.

  • 서비스 검색 서비스: 서비스 검색 네임스페이스 내에 존재하며 네임스페이스에 대한 서비스 이름과 DNS 구성으로 구성되어 있습니다. 핵심 구성 요소는 다음과 같습니다.

    • 서비스 레지스트리: DNS 또는 AWS Cloud Map API 태스크를 통해 서비스를 검색하고 서비스 연결에 사용할 수 있는 하나 이상의 가용 엔드포인트를 가져올 수 있도록 허용합니다.

  • 서비스 검색 인스턴스: 서비스 검색 서비스 내에 존재하며 서비스 디렉터리의 각 Amazon ECS 서비스와 연결된 속성들로 구성됩니다.

    • 인스턴스 속성: 다음 메타데이터는 서비스 검색을 사용하도록 구성된 각 Amazon ECS 서비스에 대한 사용자 지정 속성으로 추가됩니다.

      • AWS_INSTANCE_IPV4A 레코드의 경우, DNS 쿼리 및 AWS Cloud Map에 응답하여 Route 53이 반환하는 IPv4 주소는 인스턴스 세부 정보(예: 192.0.2.44)를 검색할 때 반환됩니다.

      • AWS_INSTANCE_PORT – 서비스 검색 서비스와 연계된 포트 값입니다.

      • AVAILABILITY_ZONE – 작업이 시작된 가용 영역입니다. EC2 시작 유형을 사용하는 작업의 경우, 이것은 컨테이너 인스턴스가 존재하는 가용 영역입니다. Fargate 시작 유형을 사용하는 작업의 경우, 이것은 탄력적 네트워크 인터페이스가 존재하는 가용 영역입니다.

      • REGION – 작업이 존재하는 리전입니다.

      • ECS_SERVICE_NAME – 작업이 속한 Amazon ECS 서비스의 이름입니다.

      • ECS_CLUSTER_NAME – 작업이 속한 Amazon ECS 클러스터의 이름입니다.

      • EC2_INSTANCE_ID – 작업이 배치된 컨테이너 인스턴스의 ID입니다. 작업에서 Fargate 시작 유형을 사용하는 경우, 이 사용자 지정 속성은 추가되지 않습니다.

      • ECS_TASK_DEFINITION_FAMILY – 작업에서 사용하는 태스크 정의 패밀리입니다.

      • ECS_TASK_SET_EXTERNAL_ID – 작업 세트가 외부 배포를 위해 생성되고 서비스 검색 레지스트리와 연관되는 경우 ECS_TASK_SET_EXTERNAL_ID 속성에는 작업 세트의 외부 ID가 포함됩니다.

  • Amazon ECS 상태 확인: Amazon ECS는 컨테이너 수준의 상태 확인을 정기적으로 수행합니다. 상태 확인을 전달하지 않는 엔드포인트는 DNS 라우팅에서 제거되고 비정상으로 상태가 표시됩니다.

서비스 검색 고려 사항

서비스 검색을 사용할 때는 다음 사항을 고려해야 합니다.

  • 플랫폼 버전 v1.1.0 이상을 사용 중인 Fargate의 작업에 대해 서비스 검색이 지원됩니다. 자세한 내용은 Amazon ECS에 대한 Fargate 플랫폼 버전 섹션을 참조하세요.

  • 서비스 검색을 사용하도록 구성된 서비스는 서비스당 작업 수가 1,000개로 제한됩니다. 이는 Route 53 서비스 할당량 때문입니다.

  • Amazon ECS 콘솔의 서비스 생성 워크플로는 서비스를 프라이빗 DNS 네임스페이스에 등록하는 것만 지원합니다. AWS Cloud Map 프라이빗 DNS 네임스페이스가 생성되면 Route 53 프라이빗 호스팅 영역이 자동으로 생성됩니다.

  • DNS 확인에 성공하려면 VPC DNS 속성을 구성해야 합니다. 속성을 구성하는 방법에 대한 자세한 정보는 Amazon VPC 사용 설명서VPC에서 DNS 지원을 참조하세요.

  • 서비스 검색 서비스용으로 생성된 DNS 레코드는 퍼블릭 네임스페이스가 사용될 때도 퍼블릭 IP 주소 대신 항상 작업의 프라이빗 IP 주소로 등록합니다.

  • 서비스 검색을 위해서는 작업에서 awsvpc, bridge 또는 host 네트워크 모드(none는 지원되지 않음)를 지정해야 합니다.

  • 서비스 태스크 정의가 awsvpc 네트워크 모드를 사용하는 경우 각 서비스 태스크에 대해 A 또는 SRV 레코드를 임의로 조합해 생성할 수 있습니다. SRV 레코드를 사용하는 경우에는 포트가 필요합니다.

  • 서비스 태스크 정의에서 bridge 또는 host 네트워크 모드를 사용하는 경우 SRV 레코드는 유일하게 지원되는 DNS 레코드 유형입니다. 각 서비스 태스크에 대한 SRV 레코드를 생성합니다. SRV 레코드는 태스크 정의로부터 컨테이너 이름과 컨테이너 포트 조합을지정해야 합니다.

  • 서비스 검색 서비스를 위한 DNS 레코드는 VPC 내에서 쿼리가 가능합니다. 이들은 <service-discovery-service-name>.<service-discovery-namespace> 형식을 사용합니다.

  • 서비스 이름에 대해 DNS 쿼리를 수행할 때 A 레코드는 태스크에 해당하는 여러 개의 IP 주소를 반환합니다. SRV 레코드는 각 작업당 여러 개의 IP 주소와 포트를 반환합니다.

  • 정상 레코드가 8개 이하일 경우 Route 53은 모든 DNS 쿼리에 모든 정상 레코드로 응답합니다.

  • 모든 레코드가 비정상일 경우 Route 53는 최대 8개의 비정상 레코드로 DNS 쿼리에 응답합니다.

  • 로드 밸런서 뒤에 있는 서비스에 대한 서비스 검색을 구성할 수 있지만, 서비스 검색 트래픽은 항상 로드 밸런서가 아닌 태스크로 라우팅됩니다.

  • 서비스 검색은 Classic Load Balancer의 사용을 지원하지 않습니다.

  • 서비스 검색 서비스에 대해 Amazon ECS가 관리하는 컨테이너 수준의 상태 확인을 사용하는 것이 좋습니다.

    • HealthCheckCustomConfig—Amazon ECS가 사용자를 대신하여 상태 확인을 관리합니다. Amazon ECS는 컨테이너와 상태 확인, 태스크 상태의 정보를 사용하여 AWS Cloud Map을 통해 상태를 업데이트합니다. 서비스 검색 서비스를 생성할 때 --health-check-custom-config 파라미터를 사용하여 이를 지정합니다. 자세한 정보는 AWS Cloud Map API 참조HealthCheckCustomConfig를 참조하세요.

  • 서비스 검색이 사용될 때 생성되는 AWS Cloud Map 리소스는 수동으로 정리해야 합니다.

  • 작업과 인스턴스는 컨테이너 상태 확인이 값을 반환할 때까지 UNHEALTHY로 등록됩니다. 상태 확인을 통과하면 상태가 HEALTHY로 업데이트됩니다. 컨테이너 상태 확인이 실패하면 서비스 검색 인스턴스의 등록이 취소됩니다.

서비스 검색 가격

Amazon ECS 서비스 검색을 사용하는 고객들에게는 Route 53 리소스 및 AWS Cloud Map 검색 API 작업에 대해 요금이 부과됩니다. 여기에는 서비스 레지스트리에 대한 Route 53 호스팅 영역 및 쿼리 생성을 위한 비용이 포함됩니다. 자세한 정보는 AWS Cloud Map 개발자 안내서AWS Cloud Map 요금을 참조하세요.

Amazon ECS는 컨테이너 수준의 상태 확인을 수행하고 이를 AWS Cloud Map 사용자 지정 상태 확인 API 작업에 공개합니다. 고객들은 추가 비용 없이 이를 사용할 수 있습니다. 공개된 태스크에 대해 추가적인 네트워크 상태 확인을 구성하는 경우에는 이러한 상태 확인에 대해 요금이 부과됩니다.