메모리를 Amazon ECS의 태스크에 할당하려면 어떻게 해야 하나요?

7분 분량
0

Amazon Elastic Container Service(Amazon ECS)를 사용하여 태스크에 메모리를 할당하고 싶습니다.

간략한 설명

Amazon ECS에서는 태스크 수준과 각 컨테이너 수준에서 메모리를 정의할 수 있습니다. 태스크 수준에서 정의된 메모리는 해당 태스크에 대한 메모리 하드 제한입니다. 컨테이너 수준에는 작업에 메모리를 할당하기 위한 두 가지 매개 변수가 있습니다. memoryReservation(소프트 제한) 및 memory(하드 제한)입니다. Amazon EC2 인스턴스에서 호스팅되는 태스크의 경우 태스크 수준 메모리 필드는 선택 사항이며 모든 값을 사용할 수 있습니다. 태스크 수준 메모리 값이 지정된 경우 컨테이너 수준 메모리 값은 선택 사항입니다. 각 파라미터의 값은 작업을 실행 중일 때 Amazon ECS 컨테이너 인스턴스의 사용 가능한 메모리 단위에서 차감됩니다. 이 계산은 소프트 제한, 하드 제한 또는 태스크 정의의 태스크 수준 메모리를 기반으로 합니다. 자세한 내용은 클러스터 예약을 참조하세요.

참고: memorymemoryReservation 파라미터는 Amazon ECS 태스크 정의의 container definition parameters로 설정됩니다. 컨테이너 수준 memorymemoryReservation 값을 모두 지정할 경우 memorymemoryReservation보다 커야 합니다. memoryReservation을 지정하면 컨테이너가 배치된 컨테이너 인스턴스의 사용 가능한 메모리 리소스에서 해당 값이 차감됩니다. 그렇지 않으면 memory 값이 사용됩니다. 자세한 정보는 메모리를 참조하십시오.

해결 방법

시작하기 전에 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 포함된 Amazon ECS 클러스터가 있는지 확인하십시오. 클러스터 생성에 대한 자세한 내용은 클래식 콘솔을 사용하여 클러스터 생성을 참조하세요. 클러스터 및 컨테이너 인스턴스 구성에 대한 자세한 내용은 컨테이너 인스턴스 메모리 관리를 참조하세요.

컨테이너 인스턴스의 메모리 할당 보기

  1. Amazon ECS 콘솔을 엽니다.
  2. 탐색 창에서 클러스터를 선택합니다.
  3. 생성한 클러스터를 선택합니다.
  4. ECS 인스턴스 보기를 선택한 다음 컨테이너 인스턴스 열에서 생성한 클러스터에 포함된 컨테이너 인스턴스를 선택합니다.
    참고: [Details] 창에 Available 열의 메모리가 Registered 열의 메모리와 동일한 것으로 표시됩니다.
  5. 인스턴스의 리소스 사용량에 대한 통계를 보려면 SSH를 사용하여 인스턴스에 연결한 다음 docker stats 명령을 실행합니다.

소프트 제한으로 작업 정의 생성

  1. Amazon ECS 콘솔의 탐색 창에서 **태스크 정의(Task Definitions)**를 선택합니다.
  2. [Create new Task Definition]을 선택합니다.
  3. 시작 유형에서 [EC2]를 선택한 후 [Next step]을 선택합니다.
  4. [Task Definition Name]에 이름을 입력합니다.
  5. [Container Definitions] 섹션에서 [Add container]를 선택합니다.
  6. [Container name]에 이름을 입력합니다.
  7. [Image]에 nginx 또는 환경에 적합한 도커 이미지를 입력합니다.
  8. [메모리 제한(MiB)]에서 [Soft limit]를 선택한 다음 700을 입력합니다.
  9. **추가(Add)**를 선택한 후 **생성(Create)**를 선택합니다.

소프트 제한이 있는 작업 정의 실행

  1. Amazon ECS 콘솔의 탐색 창에서 **클러스터(Clusters)**를 선택한 후 생성한 클러스터를 선택합니다.
  2. 태스크(Tasks) 보기를 선택하고 **새 태스크 실행(Run new Task)**을 선택합니다.
  3. 시작 유형을 EC2로 선택하고 소프트 제한으로 생성한 태스크 정의를 선택한 다음 **태스크 실행(Run Task)**을 선택합니다. 참고: ECS를 처음 사용하는 경우 이전에 생성한 작업 정의 및 클러스터의 이름을 태스크 정의(Task Definition) 및 **클러스터(Cluster)**에 미리 채울 수 있습니다.
  4. 소프트 제한이 있는 태스크의 마지막 상태(Last status) 열이 RUNNING으로 표시되면 다음 단계로 이동합니다.
    참고: 태스크의 상태를 RUNNING으로 업데이트하려면 페이지를 새로 고칩니다.
  5. ECS 인스턴스 보기를 선택한 다음 [컨테이너 인스턴스] 열에서 인스턴스를 선택합니다.
    참고: [Details] 창에 [Available] 열의 메모리가 [Registered] 열의 메모리보다 작다고 표시됩니다.
  6. 인스턴스의 리소스 사용량에 대한 통계를 보려면 SSH를 사용하여 인스턴스에 연결한 다음 docker stats 명령을 실행합니다.
  7. 탐색 창에서 [Clusters]를 선택한 후 클러스터를 선택합니다.
  8. [Task] 보기를 선택하고 소프트 제한이 있는 작업을 선택한 다음 [Stop]을 선택합니다.
  9. ECS 인스턴스 보기를 선택한 다음 [컨테이너 인스턴스] 열에서 인스턴스를 선택합니다.
    참고: 세부 정보(Details) 창에 사용 가능(Available) 열의 메모리가 등록됨(Registered) 열의 메모리와 동일한 것으로 표시됩니다.

하드 제한이 있는 태스크 정의의 새 버전 생성

  1. Amazon ECS 콘솔의 탐색 창에서 **태스크 정의(Task Definitions)**를 선택합니다.
  2. 소프트 제한으로 생성한 태스크 정의를 선택한 다음 [Create new revision]을 선택합니다.
  3. [Container Definitions] 섹션의 [Container Name] 열에서 소프트 제한이 있는 태스크 정의에 추가한 컨테이너를 선택합니다.
  4. [Memory Limits (MiB)]에서 [Hard limit]을 선택하고 [1000]을 입력합니다.
  5. **업데이트(Update)**를 선택한 후 **생성(Create)**을 선택합니다.

하드 제한이 있는 개정된 작업 정의 실행

  1. Amazon ECS 콘솔의 탐색 창에서 **클러스터(Clusters)**를 선택한 후 생성한 클러스터를 선택합니다.
  2. 태스크(Tasks) 보기를 선택하고 **새 태스크 실행(Run new Task)**을 선택합니다.
  3. 시작 유형을 EC2로 선택
  4. **태스크 정의(Task Definition)**에서 생성한 하드 제한이 있는 태스크 정의를 선택한 후 **태스크 실행(Run Task)**을 선택합니다.
  5. 하드 제한이 있는 수정된 태스크의 마지막 상태(Last status) 열이 RUNNING으로 표시되면 다음 단계로 이동합니다.
    참고: 태스크의 상태를 RUNNING으로 업데이트하려면 페이지를 새로 고칩니다.
  6. ECS 인스턴스 보기를 선택한 다음 [컨테이너 인스턴스] 열에서 인스턴스를 선택합니다.
    참고: [세부 정보] 창에 [사용 가능] 열의 사용 가능한 메모리가 [등록됨] 열의 메모리보다 적다고 표시됩니다.
  7. 인스턴스의 리소스 사용량에 대한 통계를 보려면 SSH를 사용하여 인스턴스에 연결한 다음 docker stats 명령을 실행합니다.
  8. 탐색 창에서 [Clusters]를 선택한 후 클러스터를 선택합니다.
  9. [Tasks] 보기를 선택하고 하드 제한이 있는 태스크를 선택하고 [Stop]을 선택합니다.
  10. ECS 인스턴스 보기를 선택한 다음 [컨테이너 인스턴스] 열에서 인스턴스를 선택합니다.
    참고: 세부 정보(Details) 창에 사용 가능(Available) 열의 메모리가 등록됨(Registered) 열의 메모리와 동일한 것으로 표시됩니다.

소프트 제한과 하드 제한이 모두 있는 태스크 정의의 새 버전 생성

  1. Amazon ECS 콘솔의 탐색 창에서 **태스크 정의(Task Definitions)**를 선택합니다.
  2. 하드 제한으로 생성한 태스크 정의를 선택한 다음 [Create new revision]을 선택합니다.
  3. [Container Definitions] 섹션의 [Container Name] 열에서 하드 제한이 있는 태스크 정의에 추가한 컨테이너를 선택합니다.
  4. [메모리 제한(MiB)]에서 [Soft limit]를 선택한 다음 700을 입력합니다.
  5. [Add Hard limit]을 선택한 다음 1200을 입력합니다.
  6. **업데이트(Update)**를 선택한 후 **생성(Create)**을 선택합니다.

소프트 제한과 하드 제한이 모두 있는 개정된 작업 정의 실행

  1. Amazon ECS 콘솔의 탐색 창에서 **클러스터(Clusters)**를 선택한 후 생성한 클러스터를 선택합니다.
  2. 태스크(Tasks) 보기를 선택하고 **새 태스크 실행(Run new Task)**을 선택합니다.
  3. 시작 유형을 EC2로 선택
  4. **태스크 정의(Task Definition)**에서 소프트 제한과 하드 제한 모두로 생성한 태스크 정의를 선택한 후 **태스크 실행(Run Task)**을 선택합니다.
  5. 태스크의 마지막 상태(Last status) 열이 RUNNING으로 표시되면 다음 단계로 이동합니다.
    참고: 태스크의 상태를 RUNNING으로 업데이트하려면 페이지를 새로 고칩니다.
  6. ECS 인스턴스 보기를 선택한 다음 [컨테이너 인스턴스] 열에서 인스턴스를 선택합니다.
    참고: [Details] 창에 [Available] 열의 메모리가 [Registered] 열의 메모리보다 작다고 표시됩니다.
  7. 인스턴스의 리소스 사용량에 대한 통계를 보려면 SSH를 사용하여 인스턴스에 연결한 다음 docker stats 명령을 실행합니다.
  8. 탐색 창에서 **클러스터(Clusters)**를 선택한 후 클러스터를 선택합니다.
  9. [Tasks] 보기를 선택하고 소프트 제한과 하드 제한이 모두 있는 태스크를 선택한 다음 [Stop]을 선택합니다.
  10. ECS 인스턴스(ECS Instances) 보기를 선택한 다음 컨테이너 인스턴스(Container Instance) 열에서 인스턴스를 선택합니다.
    참고: 세부 정보(Details) 창에 사용 가능(Available) 열의 메모리가 등록됨(Registered) 열의 메모리와 동일한 것으로 표시됩니다.

태스크 수준 메모리 제한이 있는 태스크 정의의 새 수정 버전 생성

  1. Amazon ECS 콘솔의 탐색 창에서 **태스크 정의(Task Definitions)**를 선택합니다.
  2. 하드 및 소프트 제한으로 생성한 태스크 정의를 선택한 후 **새 개정 생성(Create new revision)**을 선택합니다.
  3. **태스크 크기(Task Size)**에서 **태스크 메모리(MiB)**에 1,000 입력
  4. 컨테이너 정의(Container Definitions) 섹션의 컨테이너 이름(Container Name) 열에서 하드 및 소프트 제한이 있는 태스크 정의에 추가한 컨테이너를 선택합니다.
  5. **메모리 제한(MiB)**의 경우 오른쪽에 있는 x 아이콘을 선택하여 **소프트 제한(Soft limit)**을 제거
  6. 다음으로 하드 제한(Hard limit) 값을 선택하고 삭제하여 값 1,200을 제거합니다.
  7. **업데이트(Update)**를 선택한 후 **생성(Create)**을 선택합니다.

수정된 작업 정의를 태스크 수준 메모리 제한으로 실행

  1. Amazon ECS 콘솔의 탐색 창에서 **클러스터(Clusters)**를 선택한 후 생성한 클러스터를 선택합니다.
  2. 태스크(Tasks) 보기를 선택하고 **새 태스크 실행(Run new Task)**을 선택합니다.
  3. **시작 유형(Launch Type)**을 EC2로 선택
  4. **태스크 정의(Task Definition)**에서 생성한 태스크 수준 메모리가 있는 태스크 정의를 선택한 후 **태스크 실행(Run Task)**을 선택합니다.
  5. 태스크의 마지막 상태(Last status) 열이 RUNNING으로 표시되면 다음 단계로 이동합니다.
    참고: 태스크의 상태를 RUNNING으로 업데이트하려면 페이지를 새로 고칩니다.
  6. ECS 인스턴스 보기를 선택한 다음 [컨테이너 인스턴스] 열에서 인스턴스를 선택합니다.
    참고: [Details] 창에 [Available] 열의 메모리가 [Registered] 열의 메모리보다 작다고 표시됩니다.
  7. 인스턴스의 리소스 사용량에 대한 통계를 보려면 SSH를 사용하여 인스턴스에 연결한 다음 docker stats 명령을 실행합니다.
    참고: docker stats 명령으로 표시된 메모리 제한이 컨테이너의 경우 1000MiB가 아닐 수도 있습니다. 이는 **태스크 수준 메모리(Task Level memory)**가 docker 대몬(daemon)이 아니라 ECS 에이전트에서 관리되기 때문입니다.
  8. 탐색 창에서 **클러스터(Clusters)**를 선택한 후 클러스터를 선택합니다.
  9. 태스크(Tasks) 보기를 선택하고 태스크 수준 메모리가 있는 태스크를 선택한 후 **중지(Stop)**를 선택합니다.
  10. ECS 인스턴스(ECS Instances) 보기를 선택한 다음 컨테이너 인스턴스(Container Instance) 열에서 인스턴스를 선택합니다.
    참고: 세부 정보(Details) 창에 사용 가능(Available) 열의 메모리가 등록됨(Registered) 열의 메모리와 동일한 것으로 표시됩니다.

관련 정보

Amazon ECS CloudWatch 지표

Amazon EC2 인스턴스 유형

메모리에 대한 컨테이너 액세스 제한

태스크 크기

AWS 공식
AWS 공식업데이트됨 2년 전