메뉴
Amazon Elastic Compute Cloud
User Guide for Linux Instances

스팟 집합의 자동 조정

자동 조정은 수요에 따라 스팟 집합의 대상 용량을 자동으로 늘리거나 줄이는 기능입니다. 선택하는 범위 내에서 하나 이상의 조정 정책에 대한 응답으로 스팟 집합이 인스턴스 시작(스케일 아웃) 또는 인스턴스 종료(스케일 인)를 수행할 수 있습니다. 스케일 아웃과 스케일 인에 대해 각각 하나씩 두 개의 정책을 생성하는 것이 좋습니다.

조정 정책은 CloudWatch 경보를 사용하여 조정 프로세스를 트리거합니다. 예를 들어, CPU 사용률이 특정 레벨에 도달하면 확장하려는 경우 Amazon EC2에서 제공하는 CPUUtilization 측정치를 사용하여 경보를 생성합니다.

조정 정책을 생성할 때 다음 조정 조절 유형 중 하나를 지정해야 합니다.

  • [Add] - 지정된 수의 용량 단위 또는 지정된 현재 용량의 퍼센트까지 집합의 대상 용량을 늘립니다.

  • [Remove] - 지정된 수의 용량 단위 또는 지정된 현재 용량의 퍼센트까지 집합의 대상 용량을 줄입니다.

  • [Set to] - 집합의 대상 용량을 지정된 수의 용량 단위로 설정합니다.

경보가 트리거되면 Auto Scaling 프로세스가 이행된 용량과 조정 정책을 사용하여 새로운 대상 용량을 계산한 후 그에 따라 목표 용량을 업데이트합니다. 예를 들어 목표 용량과 이행된 용량이 10이고 조정 정책이 1을 추가한다고 가정하십시오. 경보가 트리거되면 Auto Scaling 프로세스가 10에 1을 더해 11이 되므로 스팟 집합이 1 인스턴스를 시작합니다.

인스턴스 가중치 부여를 사용 중인 경우 스팟 집합이 필요에 따라 목표 용량을 초과할 수 있고, 이행된 용량이 부동 소수점 숫자일 수 있으나 목표 용량은 정수여야 하므로, 스팟 집합은 결과를 다음 정수로 올림한다는 사실에 유의하십시오. 경보가 트리거되면 조정 정책의 결과를 확인할 때 이러한 동작을 고려해야 합니다. 예를 들어 목표 용량이 30, 이행된 용량이 30.1이고 조정 정책이 1을 뺀다고 가정하십시오. 경보가 트리거되면 Auto Scaling 프로세스가 30.1에서 1을 빼 29.1을 도출한 후 30으로 올리므로 조정 작업이 수행되지 않습니다. 다른 예를 들자면, 선택한 인스턴스의 가중치가 2, 4, 8이고 목표 용량이 10이지만 가중치 2인 인스턴스를 사용할 수 없었기 때문에 스팟 집합이 가중치 4와 8인 인스턴스를 프로비저닝하여 이행된 용량이 12가 되었다고 가정하십시오. 조정 정책이 목표 용량을 20% 줄이고 경보가 트리거되면 Auto Scaling 프로세스가 12에서 12*0.2를 빼 9.6을 도출한 후 10으로 올리므로 조정 작업이 수행되지 않습니다.

조정 정책에 대한 휴지 기간 또한 구성할 수 있습니다. 이 기간은 이전 트리거 관련 조정 활동이 향후 조정 이벤트에 영향을 줄 수 있는 경우 조정 활동이 완료된 후의 시간(초)입니다. 확장 정책의 경우, 휴지 기간이 진행되는 동안 휴지하기 시작한 이전 확장 이벤트에 의해 추가된 용량은 다음 확장에 대해 원하는 용량의 일부로 계산됩니다. 지속적이지만 과도하지는 않게 확장하기 위한 목적입니다. 축소 정책의 경우, 휴지 기간은 만료될 때까지 후속 축소 요청을 차단하기 위해 사용됩니다. 보수적으로 축소하여 애플리케이션의 가용성을 보호하기 위한 목적입니다. 그러나 축소 후 휴지 기간 동안 다른 경보가 확장 정책을 트리거하면 Auto Scaling은 확장 가능한 대상을 즉시 확장합니다.

목표 용량이 감소하여 스팟 집합이 인스턴스를 종료할 때, 해당 인스턴스는 스팟 인스턴스 중단 공지를 받게 됩니다.

제한

  • 스팟 집합 요청에 maintain 요청 유형이 있어야 합니다. 1회 요청 또는 스팟 블록에는 자동 조정이 지원되지 않습니다.

사전 조건

  • 어떤 CloudWatch 지표가 애플리케이션에 중요한지 생각하십시오. AWS에서 제공하는 측정치 또는 사용자 지정 측정치를 기반으로 CloudWatch 경보를 생성할 수 있습니다.

  • 조정 정책에 사용할 AWS 측정치에 대해 측정치를 제공하는 서비스에서 기본적으로 활성화하지 않는 경우 CloudWatch 측정치 수집을 활성화합니다.

  • AWS Management Console을 사용하여 스팟 집합에 대한 자동 조정을 활성화하는 경우 정책에 대한 경보를 설명하고, 집합의 현재 용량을 모니터링하고, 집합의 용량을 수정할 수 있는 권한을 Auto Scaling에 부여하는 aws-ec2-spot-fleet-autoscale-role 역할이 생성됩니다. AWS CLI 또는 API를 사용하여 자동 조정을 구성하는 경우 이 역할이 존재하면 이 역할을 사용하거나, 이 용도로 사용할 고유의 역할을 수동으로 생성할 수 있습니다.

    수동으로 역할을 생성하려면

    1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

    2. 탐색 창에서 [Roles]를 선택합니다.

    3. [Create New Role(새 역할 만들기)]을 선택합니다.

    4. [Set Role Name] 페이지에서 역할 이름을 입력한 다음, [Next Step]을 선택합니다.

    5. [Select Role Type] 페이지에서 [Amazon EC2 ] 옆의 [Select]를 선택합니다.

    6. [Attach Policy] 페이지에서 AmazonEC2SpotFleetAutoscaleRole 정책을 선택한 후 [Next Step]을 선택합니다.

    7. [Review] 페이지에서 [Create Role]을 선택합니다.

    8. 방금 생성한 역할을 선택합니다.

    9. [Trust Relationships] 탭에서 [Edit Trust Relationship]을 선택합니다.

    10. ec2.amazonaws.comapplication-autoscaling.amazonaws.com으로 변경한 후 [Update Trust Policy]를 선택합니다.

CloudWatch 경보를 생성하려면

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 Alarms를 선택합니다.

  3. [Create Alarm]을 선택합니다.

  4. [CloudWatch Metrics by Category]에서 범주를 선택합니다. 예를 들어, [EC2 Spot Metrics], [Fleet Request Metrics]를 선택합니다.

  5. 지표를 선택한 후 [Next]를 선택합니다.

  6. [Alarm Threshold]에서 경보의 이름과 설명을 입력하고 임계값 및 경보의 기간 수를 설정합니다.

  7. (선택 사항) 조정 이벤트에 대한 알림을 받으려면 [Actions]에서 [New list]를 선택하고 이메일 주소를 입력합니다. 또는 지금 알림을 삭제하고 필요에 따라 나중에 추가할 수 있습니다.

  8. [Create Alarm]을 선택합니다.

콘솔을 사용하여 스팟 집합에 대한 자동 조정을 구성하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 [Spot Requests]를 선택합니다.

  3. 스팟 집합 요청을 선택한 후 [Auto Scaling] 탭을 선택합니다.

  4. 자동 조정이 구성되어 있지 않으면 [Configure]를 선택합니다.

  5. [Scale capacity between]을 사용하여 집합에 대한 최소 및 최대 용량을 설정합니다. 자동 조정에서 최소 용량 미만이거나 최대 용량을 초과하는 집합을 조정하지 않습니다.

  6. 처음에 [Scaling policies]에 ScaleUp 및 ScaleDown이라는 정책이 포함됩니다. 이러한 정책을 완료하거나 [Remove policy]를 선택하여 삭제할 수 있습니다. 또한 [Add policy]를 선택하여 정책을 추가할 수도 있습니다.

  7. 정책을 정의하려면 다음을 수행합니다.

    1. [Policy name]에서 정책의 이름을 입력합니다.

    2. [Policy trigger]에서 기존 경보를 선택하거나 [Create new alarm]을 선택하여 Amazon CloudWatch 콘솔을 열고 경보를 생성합니다.

    3. [Modify capacity]에서 조정 조절 유형을 선택하고, 숫자를 선택한 후 단위를 선택합니다.

    4. (선택 사항) 단계 조정을 수행하려면 [Define steps]를 선택합니다. 기본적으로 추가 정책에 하한값으로 -infinity 값이, 상한값으로 경보 임계치가 적용됩니다. 또한 제거 정책에 하한값으로 경보 임계치 및 상한값으로 +infinity 값이 기본적으로 적용됩니다. 다른 단계를 추가하려면 [Add step]을 선택합니다.

    5. (선택 사항) 휴지 기간의 기본값을 수정하려면 [Cooldown period]에서 숫자를 선택합니다.

  8. [Save]를 선택합니다.

AWS CLI를 사용하여 스팟 집합에 대한 자동 조정을 구성하려면

  1. register-scalable-target 명령을 사용하여 스팟 집합 요청을 확장 가능 대상으로 등록합니다.

  2. put-scaling-policy 명령을 사용하여 조정 정책을 생성합니다.

  3. put-metric-alarm 명령을 사용하여 조정 정책을 트리거하는 경보를 생성합니다.