스텝 스케일링: 스텝 스케일링 정책으로 Spot Fleet 확장하기
스텝 스케일링: 스텝 스케일링 정책으로 Spot Fleet 확장하기
스텝 스케일링 정책(step scaling policies)을 사용하면 CloudWatch 알람을 지정해 스케일링 프로세스를 트리거할 수 있어요. 예를 들어 CPU 사용률이 특정 수준에 도달하면 확장(scale out)하고 싶다면, Amazon EC2가 제공하는 CPUUtilization 지표를 사용해 알람을 만들어요.
출처: 문서
본문
스텝 스케일링 정책을 만들 때는 다음 스케일링 조정 유형 중 하나를 지정해야 해요.
- Add – 플릿의 대상 용량을 지정된 수의 용량 단위만큼 또는 현재 용량의 지정된 비율만큼 증가시킵니다.
- Remove – 플릿의 대상 용량을 지정된 수의 용량 단위만큼 또는 현재 용량의 지정된 비율만큼 감소시킵니다.
- Set to – 플릿의 대상 용량을 지정된 수의 용량 단위로 설정합니다.
알람이 트리거되면 자동 확장 프로세스가 충족 용량(fulfilled capacity)과 스케일링 정책을 사용해 새 대상 용량을 계산한 다음, 그에 따라 대상 용량을 업데이트해요. 예를 들어 대상 용량과 충족 용량이 10이고 스케일링 정책이 1을 더한다고 가정해 봅시다. 알람이 트리거되면 자동 확장 프로세스는 1을 10에 더해 11을 얻고, Spot Fleet은 인스턴스 1개를 실행해요.
Spot Fleet이 대상 용량 감소로 인해 Spot 인스턴스를 종료하면 인스턴스는 Spot Instance 중단 알림(interruption notice)을 받아요.
사전 요구 사항
- Spot Fleet 요청의 요청 유형이
maintain이어야 해요.request유형의 요청에는 자동 확장이 지원되지 않아요. - Spot Fleet 자동 확장에 필요한 IAM 권한을 구성하세요.
- 애플리케이션에 중요한 CloudWatch 지표를 고려하세요. AWS가 제공하는 지표나 여러분의 사용자 지정 지표를 기반으로 CloudWatch 알람을 만들 수 있어요.
- 스케일링 정책에 사용할 AWS 지표의 경우, 지표를 제공하는 서비스가 기본으로 활성화하지 않는다면 CloudWatch 지표 수집을 활성화하세요.
- 고려 사항을 검토하세요.
CloudWatch 알람 만들기
- CloudWatch 콘솔(https://console.aws.amazon.com/cloudwatch/)을 엽니다.
- 탐색 창에서 Alarms를 확장하고 All alarms를 선택합니다.
- Create alarm을 선택합니다.
- Specify metric and conditions 페이지에서 Select metric을 선택합니다.
EC2 Spot, Fleet Request Metrics를 선택한 다음 지표(예:TargetCapacity)를 선택하고 Select metric을 선택합니다.- Specify metric and conditions 페이지가 나타나 선택한 지표에 대한 그래프와 기타 정보를 보여줍니다.
- Period에서 알람의 평가 기간을 선택합니다(예:
1 minute). 알람을 평가할 때 각 기간은 하나의 데이터 포인트로 집계됩니다.
참고 — 더 짧은 기간은 더 민감한 알람을 만들게 돼요.
- Conditions에서 임계값 조건을 정의해 알람을 정의합니다. 예를 들어 지표 값이 80% 이상일 때마다 알람을 트리거하도록 임계값을 정의할 수 있어요.
- Additional configuration의 Datapoints to alarm에서 알람을 트리거하기 위해 ALARM 상태여야 하는 데이터 포인트(평가 기간) 수를 지정합니다. 예를 들어 1개 평가 기간 또는 3개 중 2개 평가 기간처럼요. 이렇게 하면 그만큼의 연속 기간이 위반(breaching)일 때 ALARM 상태가 되는 알람이 만들어져요. 자세한 내용은 Amazon CloudWatch 사용 설명서의 Evaluating an alarm 항목을 참고하세요.
- Missing data treatment에서 옵션 중 하나를 선택합니다(또는 기본값인
Treat missing data as missing을 그대로 둡니다). 자세한 내용은 Amazon CloudWatch 사용 설명서의 Configuring how CloudWatch alarms treat missing data 항목을 참고하세요. - Next를 선택합니다.
- (선택) 스케일링 이벤트의 알림을 받으려면 Notification에서 알림을 받는 데 사용할 Amazon SNS 토픽을 선택하거나 만들 수 있습니다. 그렇지 않으면 지금 알림을 삭제하고 나중에 필요할 때 추가할 수 있어요.
- Next를 선택합니다.
- Add name and description에서 알람의 이름과 설명을 입력하고 Next를 선택합니다.
- Create alarm을 선택합니다.
Spot Fleet의 스텝 스케일링 정책 구성하기
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Spot Requests를 선택합니다.
- Spot Fleet 요청을 선택합니다.
- 화면 하단 근처의 Auto Scaling 탭을 선택합니다. Spot Fleet의 링크를 선택했다면 탭이 없고, 대신 Auto Scaling 섹션까지 스크롤합니다.
- 자동 확장이 구성되어 있지 않다면 Configure를 선택합니다.
- Scale capacity between을 사용해 플릿의 최소·최대 용량을 설정합니다. 스케일링 정책은 플릿을 최소 용량 아래로 또는 최대 용량 위로 확장하지 않아요.
- Scaling policies의 Policy type에서
Step scaling policy를 선택합니다. - 처음에는 Scaling policies에
ScaleUp과ScaleDown이라는 이름의 스텝 스케일링 정책이 들어 있습니다. 이 정책들을 완성하거나 Remove policy를 선택해 삭제할 수 있어요. Add policy를 선택할 수도 있어요. - 정책을 정의하려면 다음을 수행합니다.
- Policy name에 정책의 이름을 입력합니다.
- Policy trigger에서 기존 알람을 선택하거나 Create alarm을 선택해 Amazon CloudWatch 콘솔을 열고 알람을 만듭니다.
- Modify capacity에서 스케일링할 양과 스텝 조정의 하한·상한을 정의합니다. 특정 수의 인스턴스를 추가하거나 제거하거나, 기존 플릿 크기의 비율을 추가하거나 제거하거나, 플릿을 정확한 크기로 설정할 수 있어요.
- 예를 들어 플릿의 용량을 30% 늘리는 스텝 스케일링 정책을 만들려면
Add를 선택하고 다음 필드에30을 입력한 다음percent를 선택합니다. 기본적으로 add 정책의 하한은 알람 임계값이고 상한은 양(+)의 무한대입니다. 기본적으로 remove 정책의 상한은 알람 임계값이고 하한은 음(-)의 무한대입니다.
- (선택) 다른 스텝을 추가하려면 Add step을 선택합니다.
- Cooldown period에서 새 값(초)을 지정하거나 기본값을 유지합니다.
- Save를 선택합니다.
AWS CLI로 Spot Fleet의 스텝 스케일링 정책 구성하기
register-scalable-target명령을 사용해 Spot Fleet 요청을 확장 가능 대상으로 등록합니다.put-scaling-policy명령을 사용해 스케일링 정책을 만듭니다.put-metric-alarm명령을 사용해 스케일링 정책을 트리거하는 알람을 만듭니다.
더 알아보기
- 대상 추적 스케일링 (Target tracking scaling)
- 예약 스케일링 (Scheduled scaling)