Amazon EC2 Auto Scaling의 동적 조정 - Amazon EC2 Auto Scaling

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EC2 Auto Scaling의 동적 조정

동적 조정은 트래픽의 변화에 따라 Auto Scaling 그룹의 용량을 조정합니다.

Amazon EC2 Auto Scaling은 다음과 같은 타입의 동적 조정 정책을 지원합니다.

  • 목표 추적 조정 —Amazon CloudWatch 지표와 목표 값을 기반으로 그룹의 현재 용량을 늘리거나 줄입니다. 이는 온도 조절기가 집안 온도를 유지하는 방식과 비슷하게 작동합니다. 사용자가 온도만 선택하면 나머지는 온도 조절기가 알아서 합니다.

  • 단계별 조정(Step scaling) - 그룹의 현재 용량을 일련의 조정 조절에 따라 늘리고 줄이며 경보 위반의 크기에 따라 달라지는 단계 조절이라고 합니다.

  • 단순 조정(Simple scaling) - 단일 조정 설정에 따라 그룹의 현재 용량을 늘리고 줄입니다. 각 조정 작업 간에는 냉각 기간이 발생합니다.

대상 추적 조정 정책을 사용하고 Auto Scaling 그룹의 용량 변화에 반비례하여 변경되는 지표를 선택하는 것이 좋습니다. 따라서 Auto Scaling 그룹 크기를 두 배로 늘리면 지표가 50% 감소합니다. 이렇게 하면 지표 데이터가 비례적 조정 이벤트를 정확하게 트리거할 수 있습니다. 평균 CPU 사용률 또는 대상당 평균 요청 수와 같은 지표도 포함됩니다.

대상 추적을 사용하면 Auto Scaling 그룹이 애플리케이션의 실제 부하에 정비례하여 조정됩니다. 즉, 대상 추적 정책은 로드 변화에 대응하여 즉각적인 용량 요건을 충족하는 것 외에도, 계절적 변동 등으로 인해 시간 경과에 따라 발생하는 로드 변화에도 맞추어 조정할 수 있습니다.

또한 대상 추적 정책을 사용하면 CloudWatch 경보와 규모 조정을 수동으로 정의할 필요가 없습니다. Amazon EC2 Auto Scaling은 사용자가 설정한 대상에 따라 이 문제를 자동으로 처리합니다.

동적 조정 정책 작동 방식

동적 조정 정책은 Amazon EC2 Auto Scaling에 CloudWatch 특정 지표를 추적하도록 지시하고, CloudWatch 관련 경보가 ALARM에 있을 때 취해야 할 조치를 정의합니다. 경보 상태를 호출하는 데 사용되는 지표는 Auto Scaling 그룹의 모든 인스턴스에서 보내는 지표를 집계한 것입니다. 예컨대, 하나는 CPU 사용률이 60%이고 다른 하나는 CPU 사용률이 40%인 두 개의 인스턴스로 구성된 Auto Scaling 그룹이 있다고 가정해 보겠습니다. 두 인스턴스의 평균 CPU 사용률은 50%입니다. 정책이 적용되면 경보의 임계값이 위반될 때 Amazon EC2 Auto Scaling이 그룹의 원하는 용량을 늘리거나 줄입니다.

동적 조정 정책이 호출될 때 용량 계산에서 그룹의 최소 및 최대 크기 범위를 벗어나는 숫자를 생성하는 경우, Amazon EC2 Auto Scaling은 새 용량이 최소 및 최대 크기 제한을 벗어나지 않도록 합니다. 용량은 두 가지 방법 중 하나로 측정됩니다. 하나는 원하는 용량을 인스턴스로 설정할 때 선택한 것과 동일한 단위를 사용하거나 용량 단위 (인스턴스 가중치가 적용된 경우) 를 사용하는 것입니다.

  • 예 1: Auto Scaling 그룹 최대 용량 3, 현재 용량 2, 인스턴스 3개를 추가하는 조정 정책. 이 정책을 호출할 때 Amazon EC2 Auto Scaling은 그룹에 인스턴스를 하나만 추가하여 그룹이 최대 크기를 초과하지 않도록 합니다.

  • 예 2: Auto Scaling 그룹 최소 용량 2, 현재 용량 3, 인스턴스 2개를 제거하는 동적 조정 정책. 이 정책을 호출할 때 Amazon EC2 Auto Scaling은 그룹에서 인스턴스를 하나만 제거하여 그룹이 최소 크기보다 작아지지 않도록 합니다.

원하는 용량이 최대 크기 제한에 도달하면 스케일 아웃이 중지됩니다. 수요가 감소하고 용량이 줄어들면 Amazon EC2 Auto Scaling이 다시 스케일 아웃할 수 있습니다.

인스턴스 가중치를 사용하는 경우는 예외입니다. 이 경우, Amazon EC2 Auto Scaling은 최대 크기 제한을 초과하여 스케일 아웃할 수 있지만 최대 인스턴스 가중치까지만 스케일 아웃할 수 있습니다. 그 의도는 최대한 새로운 원하는 용량에 근접하면서도 그룹에 지정된 할당 전략을 고수하는 것입니다. 할당 전략에 따라 시작할 인스턴스 타입이 결정됩니다. 가중치는 인스턴스 타입에 따라 각 인스턴스가 그룹의 원하는 용량에 기여하는 용량 유닛 수를 결정합니다.

  • 예 3: Auto Scaling 그룹 최대 용량 12, 현재 용량 10, 용량 유닛 5를 추가하는 동적 조정 정책. 인스턴스 타입에는 1, 4 또는 6의 세 가지 가중치 중 하나가 할당됩니다. 이 정책을 호출할 때 Amazon EC2 Auto Scaling은 할당 전략에 따라 가중치가 6인 인스턴스 타입을 시작하도록 선택합니다. 이 스케일 아웃 이벤트의 결과는 원하는 용량이 12이고 현재 용량이 16인 그룹입니다.

여러 동적 조정 정책

대부분의 경우에는 Auto Scaling 그룹이 자동으로 스케일 아웃 및 축소되도록 구성하는 데 대상 추적 조정 정책으로 충분합니다. 대상 추적 조정 정책을 사용하면 원하는 결과를 선택하고, 그러한 결과를 얻기 위해 필요에 따라 Auto Scaling 그룹이 인스턴스를 추가 및 제거하도록 할 수 있습니다.

고급 조정 구성의 경우, Auto Scaling 그룹에 하나 이상의 조정 정책이 있을 수 있습니다. 예컨대, 하나 이상의 대상 추적 조정 정책, 하나 이상의 단계별 조정 정책, 또는 둘 모두를 정의할 수 있습니다. 이로 인해 유연성이 늘어나고 여러 시나리오를 처리할 수 있습니다.

여러 개의 동적 조정 정책이 함께 작동하는 방식에 대해 알아보기 위해, Auto Scaling 그룹을 사용하는 애플리케이션과 해당 그룹 EC2 인스턴스에 요청을 전송하는 Amazon SQS 대기열을 고려해 보겠습니다. 애플리케이션에서 최적의 수준으로 작업이 수행되도록 보장하기 위해, Auto Scaling 그룹이 스케일 아웃되어야 하는 시기를 제어하는 두 개의 정책이 마련되어 있습니다. 하나는 대상 추적 정책으로, 맞춤 지표를 사용하여 대기열에 있는 SQS 메시지 수에 따라 용량을 추가 및 제거합니다. 다른 하나는 지정된 기간 동안 인스턴스 사용률이 90% 를 초과할 경우 Amazon CloudWatch CPUUtilization 지표를 사용하여 용량을 추가하는 단계별 조정 정책입니다.

동시에 여러 정책이 실행되는 경우, 각 정책이 동시에 Auto Scaling 그룹이 스케일 아웃(또는 축소)하도록 지시할 수 있습니다. 예를 들어, SQS 사용자 지정 CPUUtilization 측정치가 급증하여 사용자 지정 측정치 경보의 임계값을 위반하는 동시에 측정치가 급증하여 CloudWatch 경보 임계값을 위반할 수 있습니다.

이러한 상황이 발생하는 경우, Amazon EC2 Auto Scaling은 스케일 아웃 및 축소를 위한 최대 용량을 제공하는 정책을 선택합니다. 예컨대, CPUUtilization에 대한 정책에서 1개의 인스턴스를 출범하는 한편, SQS 대기열에 대한 정책에서는 2개의 인스턴스를 출범하는 경우를 생각해 볼 수 있습니다. 만일 두 정책의 스케일 아웃 조건이 동시에 충족되는 경우, Amazon EC2 Auto Scaling은 SQS 대기열 정책을 우선 적용합니다. 이렇게 하면 Auto Scaling 그룹에서 인스턴스 두 개가 시작됩니다.

가장 큰 용량을 제공하는 정책에 우선순위를 부여하는 접근법은 다른 스케일 아웃 기준을 사용하는 정책에도 적용됩니다. 예컨대, 어떤 정책은 인스턴스 세 개를 해지하고, 다른 정책은 인스턴스 수를 25% 줄이며, 축소 시점 현재 해당 그룹에 인스턴스가 여덟 개 있는 경우, Amazon EC2 Auto Scaling은 헤딩 그룹에 가장 많은 수의 인스턴스를 제공하는 정책을 우선 적용합니다. 따라서 Auto Scaling 그룹은 인스턴스 두 개를 해지합니다(8의 25% = 2). 목표는 Amazon EC2 Auto Scaling에서 인스턴스를 너무 많이 제거하지 않도록 하는 것입니다.

그러나 대상 추적 조정 정책과 단계별 조정 정책을 함께 사용하는 경우, 정책 간 충돌로 인해 바람직하지 않은 동작이 발생할 수 있으므로 주의해야 합니다. 예컨대, 대상 추적 정책이 축소 준비되기 전에 단계별 조정 정책이 축소 활동을 시작하는 경우, 축소 활동이 차단되지 않습니다. 축소 작업이 완료된 후 대상 추적 정책이 그룹에 다시 스케일 아웃하도록 지시할 수 있습니다.