Amazon ECS 서비스 - Amazon Elastic Container Service

Amazon ECS 서비스

Amazon ECS 서비스를 사용하면 Amazon ECS 클러스터에서 지정된 수의 태스크 정의 인스턴스를 동시에 실행하고 관리할 수 있습니다. 어떤 이유로 작업이 실패 또는 중지되는 경우 Amazon ECS 서비스 스케줄러가 태스크 정의의 다른 인스턴스를 시작하여 이를 대체하고 서비스의 원하는 작업 수를 유지합니다.

서비스에서 원하는 작업 수를 유지하는 이외에도 선택적으로 로드 밸런서를 통해 서비스를 실행할 수 있습니다. 로드 밸런서는 서비스와 연결된 태스크 간에 트래픽을 분산합니다.

서비스 스케줄러 개념

서비스 스케줄러는 장기 실행 상태 비저장 서비스 및 애플리케이션에 매우 적합합니다. 서비스 스케줄러는 지정한 일정 전략을 따르는지 확인하고 작업이 실패하는 경우(예: 어떤 이유로 기본 인프라가 실패하는 경우) 작업 일정을 조정합니다. 작업 배치 전략과 제약을 사용하여 스케줄러가 태스크를 배치하고 종료하는 방법을 사용자 지정할 수 있습니다. 서비스의 작업이 중지되는 경우 스케줄러는 새 태스크를 시작하여 대체합니다. 이 프로세스는 서비스에서 사용하는 일정 전략(서비스 유형이라고도 함)에 따라 서비스가 원하는 실행 작업 수에 도달할 때까지 계속됩니다.

서비스 스케줄러에는 반복적으로 시작에 실패할 경우 작업이 다시 시작되는 빈도를 제한하는 로직이 포함됩니다. 작업이 RUNNING 상태로 되지 않고 중단되어 startedAt 타임스탬프를 갖는 작업에 따라 결정되면, 서비스 스케줄러가 시작 시도를 증분적으로 늦추기 시작하고 서비스 이벤트 메시지를 생성합니다. 이 동작은 실패한 작업에 불필요한 리소스가 사용되는 것을 방지하여 문제를 해결하기 위한 기회를 제공합니다. 서비스가 업데이트되면 서비스 스케줄러는 정상 동작을 다시 시작합니다. 자세한 내용은 서비스 스로틀 로직서비스 이벤트 메시지 섹션을 참조하세요.

사용 가능한 서비스 스케줄러 전략으로 다음 두 가지가 있습니다.

  • REPLICA—복제본 일정 전략은 클러스터에 원하는 작업 수를 배치하고 유지합니다. 기본적으로 서비스 스케줄러는 가용 영역에 태스크를 분산합니다. 태스크 배치 전략과 제약을 사용하여 태스크 배치 결정을 사용자 지정할 수 있습니다. 자세한 내용은 복제본 섹션을 참조하세요.

  • DAEMON—데몬 일정 전략은 사용자가 클러스터에 지정하는 작업 배치 제약을 모두 충족하는 각 활성 컨테이너 인스턴스에 한 작업씩 정확히 배포합니다. 서비스 스케줄러는 실행 중인 작업에 대한 작업 배치 제약 조건을 평가하고 배치 제약 조건을 충족하지 않는 태스크를 중지합니다. 이 전략을 사용하는 경우 원하는 태스크 수, 태스크 배치 전략을 지정하거나 서비스 자동 크기 조정 정책을 사용할 필요가 없습니다. 자세한 내용은 데몬

    참고

    Fargate 태스크는 DAEMON 일정 전략을 지원하지 않습니다.

데몬

데몬 일정 전략은 클러스터에 지정된 작업 배치 제약을 모두 충족하는 각 활성 컨테이너 인스턴스에 한 작업씩 정확히 배포합니다. 또한 서비스 스케줄러는 실행 중인 작업에 대한 작업 배치 제약 조건을 평가하고 배치 제약 조건을 충족하지 않는 태스크를 중지합니다. 이 전략을 사용하는 경우 원하는 태스크 수, 태스크 배치 전략을 지정하거나 서비스 자동 크기 조정 정책을 사용할 필요가 없습니다.

Amazon ECS는 데몬 태스크를 위해 CPU, 메모리 및 네트워크 인터페이스를 포함한 컨테이너 인스턴스 컴퓨팅 리소스를 예약합니다. 다른 복제 서비스가 있는 클러스터에서 데몬 서비스를 시작하면 Amazon ECS가 데몬 작업의 우선순위를 인스턴스에서 시작하는 첫 번째 태스크와 중지할 마지막 작업으로 지정합니다. 이 전략은 보류 중인 복제 작업에서 리소스를 사용하지 않고 데몬 작업에 사용할 수 있도록 합니다.

데몬 서비스 스케줄러는 DRAINING 상태인 인스턴스에는 태스크를 배치하지 않습니다. 컨테이너 인스턴스가 DRAINING으로 전환하면 이 컨테이너 인스턴스에 대한 데몬 작업이 중지됩니다. 또한 클러스터에 새 컨테이너 인스턴스가 추가되는지 모니터링하고 새 컨테이너 인스턴스에 데몬 태스크를 추가합니다.

배포 구성이 지정된 경우 최대 백분율 파라미터는 100이어야 합니다. maximumPercent에 대한 데몬 서비스의 기본값은 100%입니다. minimumHealthyPercent에 대한 데몬 서비스의 기본값은 0%입니다.

데몬 서비스에 대한 배치 제약 조건 변경 사항이 적용되려면 서비스를 다시 시작해야 합니다. Amazon ECS는 데몬 작업에 적합한 인스턴스에 예약된 리소스를 동적으로 업데이트합니다. 기존 인스턴스의 경우 스케줄러는 인스턴스에 태스크를 배치하려고 시도합니다.

태스크 정의에서 태스크 크기 또는 컨테이너 리소스 예약을 변경하면 서비스 배포가 시작됩니다. Amazon ECS는 데몬에 대한 업데이트된 CPU 및 메모리 예약을 선택한 다음, 데몬 작업에 대한 해당 용량을 차단합니다.

위의 경우 중 하나에 대한 리소스가 부족하면 다음과 같은 상황이 발생합니다.

  • 작업 배치가 실패합니다.

  • CloudWatch 이벤트가 생성됩니다.

  • Amazon ECS는 리소스를 사용할 수 있을 때까지 기다리면서 인스턴스에 대한 태스크를 계속 시도하고 예약합니다.

  • Amazon ECS는 더 이상 배치 제약 조건을 충족하지 않는 예약 인스턴스를 확보하고 해당 데몬 태스크를 중지합니다.

데몬 일정 전략은 다음과 같은 경우에 사용될 수 있습니다.

  • 애플리케이션 컨테이너 실행

  • 로깅, 모니터링 및 추적 태스크를 위한 지원 컨테이너 실행

Fargate 시작 유형이나 CODE_DEPLOY 또는 EXTERNAL 배포 컨트롤러 유형을 사용하는 태스크는 데몬 일정 전략을 지원하지 않습니다.

참고

데몬 서비스 스케줄러는 Classic Load Balancer의 사용을 지원하지 않습니다.

서비스 스케줄러는 실행 태스크를 중지할 때 클러스터의 가용 영역 간에 밸런싱을 유지하려고 합니다. 스케줄러는 다음 논리를 사용합니다.

  • 배치 전략이 정의된 경우 해당 전략을 사용하여 종료할 태스크를 선택합니다. 예를 들어 서비스에 가용 영역 분산 전략이 정의되어 있으면, 나머지 태스크를 최적 분산 상태로 만드는 작업이 선택됩니다.

  • 정의된 배치 전략이 없으면 다음 논리에 따라 클러스터의 가용 영역의 밸런스를 관리합니다.

    • 유효한 컨테이너 인스턴스를 정렬하며, 해당 가용 영역에서 이 서비스에 대해 실행되고 있는 작업의 수가 가장 많은 인스턴스에 우선순위가 주어집니다. 예를 들어 영역 A에는 실행 중인 서비스 작업이 1개이고, 영역 B 및 C에는 2개일 경우 영역 B 또는 C의 컨테이너 인스턴스가 최적 종료로 간주됩니다.

    • 최적 가용 영역(이전 단계에서 결정됨)의 컨테이너 인스턴스에서 태스크를 중지하되, 이 서비스의 실행 작업 수가 가장 큰 컨테이너 인스턴스를 우선으로 합니다.

복제본

복제본 일정 전략은 클러스터에 원하는 작업 수를 배치하고 유지합니다.

Fargate에서 태스크를 실행하는 서비스를 생성할 때 서비스 스케줄러가 새 태스크를 시작하거나 실행 중인 태스크를 중지하면 가용 영역 간의 균형을 유지하려고 시도합니다. 작업 배치 전략이나 규제 조건을 지정할 필요가 없습니다.

EC2 인스턴스에서 태스크를 실행하는 서비스를 생성할 때 선택적으로 작업 배치 전략과 제약을 지정하여 작업 배치 결정을 사용자 지정할 수 있습니다. 작업 배치 전략이나 제약 조건이 지정되지 않은 경우 서비스 스케줄러는 기본적으로 가용 영역에 태스크를 분산합니다. 서비스 스케줄러는 다음 논리를 사용합니다.

  • 클러스터에서 어느 컨테이너 인스턴스가 서비스의 태스크 정의(예: 필요한 CPU, 메모리, 포트 및 컨테이너 인스턴스 속성)를 지원할 수 있는지 판단합니다.

  • 서비스에 대해 정의된 배치 제약 조건을 어느 컨테이너 인스턴스가 충족하는지 확인합니다.

  • 배치 전략이 정의되어 있으면, 해당 전략을 사용하여 나머지 후보에서 인스턴스를 선택합니다.

  • 정의된 배치 전략이 없으면 다음 논리에 따라 클러스터의 가용 영역에 태스크를 분산합니다.

    • 유효한 컨테이너 인스턴스를 정렬하며, 해당 가용 영역에서 이 서비스에 대해 실행되고 있는 작업의 수가 가장 적은 인스턴스에 우선순위가 주어집니다. 예를 들어 영역 A에는 실행 중인 서비스 작업이 1개이고, 영역 B 및 C에는 0개일 경우 영역 B 또는 C가 최적 배치로 간주됩니다.

    • 새 서비스 태스크를 최적 가용 영역(이전 단계에서 결정됨)의 유효한 컨테이너 인스턴스에 배치하되, 이 서비스의 실행 작업 수가 가장 작은 컨테이너 인스턴스를 우선으로 합니다.

추가 서비스 개념

  • 선택적으로 로드 밸런서를 통해 서비스를 실행할 수 있습니다. 자세한 내용은 서비스 로드 밸런싱 섹션을 참조하세요.

  • 선택적으로 서비스에 대해 배포 구성을 지정할 수 있습니다. 배포는 태스크 정의 또는 원하는 서비스 수를 업데이트하여 트리거됩니다. 서비스 스케줄러는 최소 정상 상태 백분율최대 백분율 파라미터를 사용하여 배포 전략을 결정합니다. 자세한 내용은 서비스 정의 파라미터 섹션을 참조하세요.

  • 선택적으로 Amazon ECS 서비스 검색을 사용하도록 서비스를 구성할 수 있습니다. 서비스 검색은 Amazon Route 53자동 이름 지정 API를 사용하여 서비스 태스크에 대해 DNS 항목을 관리하고 VPC 내에서 검색이 가능하도록 지원합니다. 자세한 내용은 서비스 검색 섹션을 참조하세요.

  • 서비스를 삭제할 때 정리가 필요한 작업이 실행 중인 경우 서비스 상태가 ACTIVE에서 DRAINING으로 전환되고, 서비스는 더 이상 콘솔 또는 ListServices API 작업에 표시되지 않습니다. 모든 작업이 STOPPING 또는 STOPPED 상태로 전환되면 서비스 상태가 DRAINING에서 INACTIVE로 전환됩니다. DRAINING 또는 INACTIVE 상태의 서비스도 DescribeServices API 태스크를 사용하여 계속 볼 수 있습니다. 하지만 나중에 INACTIVE 서비스는 Amazon ECS 기록 보존에서 정리 및 제거될 수 있으며, 그러면 해당 서비스에 대한 DescribeServices 호출이 ServiceNotFoundException 오류를 반환합니다.