Amazon ECS 서비스 파라미터 모범 사례
Amazon ECS 서비스 파라미터 모범 사례
애플리케이션 다운타임이 없도록 배포 프로세스는 다음과 같이 진행돼요:
- 기존 컨테이너를 실행 상태로 유지하면서 새 애플리케이션 컨테이너를 시작합니다.
- 새 컨테이너가 정상(healthy)인지 확인합니다.
- 이전 컨테이너를 중지합니다.
출처: 문서
본문
배포 구성과 클러스터의 여유 공간에 따라 모든 이전 태스크를 새 태스크로 교체하는 데 이 과정이 여러 라운드 필요할 수 있어요. 이 횟수를 수정하는 데 사용할 수 있는 서비스 구성 옵션은 두 가지가 있습니다:
minimumHealthyPercent: 100%(기본값) 배포 중 서비스의 태스크 수 중RUNNING상태로 유지되어야 하는 하한선이에요.desiredCount의 백분율로, 가장 가까운 정수로 올림합니다. 이 파라미터를 사용하면 추가 클러스터 용량 없이 배포할 수 있어요.maximumPercent: 200%(기본값) 배포 중 서비스의 태스크 수 중RUNNING또는PENDING상태가 허용되는 상한선이에요.desiredCount의 백분율로, 가장 가까운 정수로 내림합니다.
예시: 기본 구성 옵션
총 8개 태스크를 담을 수 있는 클러스터에 배포된 6개 태스크가 있는 서비스를 고려해 보세요. 기본 서비스 구성 옵션은 6개 원하는 태스크의 100% 아래로 배포가 내려가는 것을 허용하지 않아요. 배포 프로세스는 다음과 같습니다:
- 목표는 6개 태스크를 교체하는 것입니다.
- 스케줄러는 기본 설정이 6개 실행 태스크를 요구하므로 새 태스크 2개를 시작합니다. 이제 기존 태스크 6개와 새 태스크 2개가 있습니다.
- 스케줄러는 기존 태스크 2개를 중지합니다. 이제 기존 태스크 4개와 새 태스크 2개가 있습니다.
- 스케줄러가 새 태스크 2개를 추가로 시작합니다. 이제 기존 태스크 4개와 새 태스크 4개가 있습니다.
- 스케줄러가 기존 태스크 2개를 종료합니다. 이제 기존 태스크 2개와 새 태스크 4개가 있습니다.
- 스케줄러가 새 태스크 2개를 추가로 시작합니다. 이제 기존 태스크 2개와 새 태스크 6개가 있습니다.
- 스케줄러가 마지막 기존 태스크 2개를 종료합니다. 이제 새 태스크 6개가 있습니다.
앞선 예시에서 옵션에 기본값을 사용하면 시작되는 각 새 태스크에 2.5분씩 기다립니다. 또한 로드 밸런서는 이전 태스크가 중지되는 데 5분을 기다려야 할 수도 있어요.
예시: minimumHealthyPercent 수정
minimumHealthyPercent 값을 50%로 설정하면 배포를 더 빠르게 할 수 있어요. 총 8개 태스크를 담을 수 있는 클러스터에 배포된 6개 태스크가 있는 서비스를 고려해 보세요. 배포 프로세스는 다음과 같습니다:
- 목표는 6개 태스크를 교체하는 것입니다.
- 스케줄러가 기존 태스크 3개를 중지합니다. 여전히 실행 중인 기존 태스크 3개가
minimumHealthyPercent값을 충족합니다. - 스케줄러가 새 태스크 5개를 시작합니다. 기존 태스크 3개와 새 태스크 5개가 있습니다.
- 스케줄러가 나머지 기존 태스크 3개를 중지합니다. 새 태스크 5개가 있습니다.
- 스케줄러가 마지막 새 태스크를 시작합니다. 새 태스크 6개가 있습니다.
예시: 클러스터 여유 공간 수정
추가 태스크를 실행할 수 있도록 여유 공간을 추가할 수도 있어요. 총 10개 태스크를 담을 수 있는 클러스터에 배포된 6개 태스크가 있는 서비스를 고려해 보세요. 배포 프로세스는 다음과 같습니다:
- 목표는 기존 태스크를 교체하는 것입니다.
- 스케줄러가 기존 태스크 3개를 중지합니다. 기존 태스크 3개가 있습니다.
- 스케줄러가 새 태스크 6개를 시작합니다. 기존 태스크와 새 태스크 6개가 있습니다.
- 스케줄러가 기존 태스크 3개를 중지합니다. 새 태스크 6개가 있습니다.
권장 사항
태스크가 한동안 유휴 상태이고 사용률이 높지 않을 때는 서비스 구성 옵션에 다음 값을 사용하세요:
minimumHealthyPercent: 50%maximumPercent: 200%