Amazon EC2 Auto Scaling은 Amazon EC2 인스턴스를 자동으로 시작하거나 종료하여 애플리케이션 로드를 처리하기에 적절한 수의 Amazon EC2 인스턴스를 유지할 수 있도록 설계된 완전관리형 서비스입니다. Amazon EC2 Auto Scaling을 사용하면 비정상 인스턴스를 탐지하여 교체하는 EC2 인스턴스 플릿 관리 또는 사용자가 정의하는 조건에 따라 Amazon EC2 용량을 자동으로 확장 또는 축소함으로써 애플리케이션 가용성을 유지할 수 있습니다. Amazon EC2 Auto Scaling을 사용하면 수요가 급증할 경우 Amazon EC2 인스턴스의 수를 자동으로 늘려 성능을 그대로 유지하고, 수요가 적을 경우 자동으로 용량을 줄여 비용을 절감할 수 있습니다.
여러 서비스에 걸쳐 여러 리소스의 규모를 조정하려면 AWS Auto Scaling을 사용해야 합니다. AWS Auto Scaling을 사용하면 사전 정의된 규모 조정 정책을 사용하여 여러 EC2 Auto Scaling 그룹 또는 다른 리소스에 대한 동적 규모 조정 정책을 정의할 수 있습니다. AWS Auto Scaling을 사용하여 애플리케이션의 확장 가능한 모든 리소스에 대한 규모 조정 정책을 구성하는 것이 개별 서비스 콘솔에서 리소스별로 규모 조정 정책을 관리하는 것보다 빠릅니다! 또한 AWS Auto Scaling에는 규모 조정 정책 설정을 간소화할 수 있는 사전 정의된 규모 조정 정책이 포함되어 있어 더 쉽습니다.
Amazon EC2 Auto Scaling 그룹의 규모만 조정하면 되거나 EC2 플릿의 상태만 유지 관리하려는 경우 Amazon EC2 Auto Scaling을 사용해야 합니다. 또한, Amazon EC2 Auto Scaling 그룹을 생성 또는 구성해야 하거나 예약 또는 단계별 규모 조정 정책을 설정해야 하는 경우에도 EC2 Auto Scaling을 사용해야 합니다. (AWS Auto Scaling에서는 목표 추적 규모 조정 정책만 지원합니다.)
EC2 Auto Scaling 그룹은
EC2 콘솔
,Auto Scaling API
또는CloudFormation
등 AWS Auto Scaling 외부에서 생성 및 구성해야 합니다.
AWS Auto Scaling에서는 기존 EC2 Auto Scaling 그룹에 대해 동적 규모 조정 정책을 구성할 수 있습니다.
Predictive Scaling 정책은 AWS Auto Scaling 플랜을 통해 제공되는 유사한 예측 알고리즘을 EC2 Auto Scaling의 기본 조정 정책으로 가져옵니다. Simple Scaling 또는 Target Tracking 등과 같은 다른 조정 정책을 사용할 때와 마찬가지로 AWS 명령줄 인터페이스 (CLI), EC2 Auto Scaling 관리 콘솔 및 AWS SDK를 통해 직접 예측 조정을 사용할 수 있습니다. 단지 예측 조정을 사용하기 위해 AWS Auto Scaling 플랜을 생성할 필요는 없습니다.
Amazon EC2 Auto Scaling은 Amazon EC2 인스턴스 가용성을 유지하는 데 도움이 됩니다. 하나의 Amazon EC2 인스턴스를 실행하든 수천 개를 실행하든 Amazon EC2 Auto Scaling을 사용하면 손상된 Amazon EC2 인스턴스를 탐지하고 개입 없이 이를 교체할 수 있습니다. 따라서 애플리케이션이 사용자가 기대하는 수준의 컴퓨팅 파워를 확보할 수 있습니다. Amazon EC2 Auto Scaling을 사용하면 애플리케이션의 수요 곡선을 따라 Amazon EC2 플릿을 자동으로 확장할 수 있으므로 미리 수동으로 Amazon EC2 용량을 프로비저닝해야 할 필요도 줄어듭니다.
예를 들면 Amazon EC2 플릿의 평균 사용률이 높을 때 새로운 Amazon EC2 인스턴스를 ASG에 증분식으로 추가하도록 조건을 설정할 수 있으며 마찬가지로 CPU 사용량이 낮을 때 Amazon EC2 인스턴스를 증분식으로 제거하도록 조건을 설정할 수 있습니다. Amazon CloudWatch를 통해 용량 조정 활동을 트리거하는 경보를 전송하고 Elastic Load Balancing(ELB)을 사용하여 ASG 내 인스턴스로 트래픽을 분산할 수 있습니다. 예측 가능한 로드가 변경되는 경우 Predictive Scaling 정책을 사용하여 향후 수요가 발생하기 전에 미리 용량을 늘릴 수 있습니다. Amazon EC2 Auto Scaling을 사용하면 Amazon EC2 Fleet을 최적의 사용률로 실행할 수 있습니다 !
애플리케이션이 Amazon EC2 인스턴스에서 실행되는 경우플릿
이라고 부르는 것을 보유하게 됩니다. 플릿 관리는 비정상 인스턴스를 자동으로 교체하고 플릿을 원하는 용량으로 유지하는 기능을 말합니다. Amazon EC2 Auto Scaling 플릿 관리를 통해 애플리케이션이 트래픽을 수신하고 인스턴스 자체가 올바르게 작동하는지 확인할 수 있습니다. Auto Scaling에서 상태 확인 실패를 탐지하면, 자동으로 해당 인스턴스를 교체할 수 있습니다.
Amazon EC2 Auto Scaling의 동적 조정 기능은 로드 또는 다른 지표를 기반으로 용량을 자동으로 확장 또는 축소하는 기능을 말합니다. 예를 들어 CPU가 80% 이상 급증하면(그리고 경보가 설정되어 있으면) Amazon EC2 Auto Scaling에서 새로운 인스턴스를 동적으로 추가할 수 있습니다.
대상 추적은 몇 가지 간단한 단계로 애플리케이션에 대한 동적 조정 기능을 설정하는 데 사용할 수 있는 새로운 조정 정책 유형입니다. 대상 추적에서는 사용자가 CPU 사용률 또는 요청 수와 같은 애플리케이션에 대해 로드 지표를 선택하고 대상값을 설정하며, Amazon EC2 Auto Scaling이 해당 목표 값을 유지하는 데 필요한 대로 ASG 내 EC2 인스턴스 수를 조정합니다. 이는 시스템을 자동으로 조정하여 원하는 온도로 환경을 유지하는 집의 온도 조절기처럼 작동합니다. 예를 들어 웹 서버 플릿의 CPU 사용률을 50%로 유지하도록 대상 추적을 구성할 수 있습니다. 그러면 Amazon EC2 Auto Scalin이 평균 CPU 사용률을 50%로 유지하는 데 필요한 대로 EC2 인슽너스를 시작하거나 종료합니다.
Amazon EC2 Auto Scaling 그룹에는 비슷한 특성을 공유하고 플릿 관리 및 동적 조정을 위해 논리적 그룹으로 취급되는 EC2 인스턴스 모음이 포함됩니다. 예를 들어 단일 애플리케이션이 여러 인스턴스에서 작동하는 경우, 애플리케이션의 성능을 향상시키기 위해 해당 그룹의 인스턴스 수를 늘리거나, 수요가 적을 때는 비용 절감을 위해 인스턴스 수를 줄이려 할 수 있습니다. Amazon EC2 Auto Scaling은 인스턴스가 비정상이 되더라도 고정된 인스턴스 수를 유지하도록 또는 지정한 기준에 따라 그룹의 인스턴스 수를 자동으로 조정합니다.
실행 중인 인스턴스가 있는 EC2 ASG(Auto Scaling Group)을 삭제하도록 선택한 경우, 해당 인스턴스는 종료되고 ASG는 삭제됩니다.
Amazon EC2 Auto Scaling을 사용하여 자동으로 애플리케이션의 규모를 조정하는 경우, EC2 Auto Scaling이 EC2 Auto Scaling 그룹에서 EC2 인스턴스를 시작하거나 종료하는 시점을 알면 유용합니다. Amazon SNS는 구독 클라이언트 또는 엔드포인트로 알림을 전달하거나 전송하는 것을 조정하고 관리합니다. EC2 Auto Scaling 그룹이 조정될 때마다 SNS 알림을 전송하도록 EC2 Auto Scaling을 구성할 수 있습니다. Amazon SNS는 HTTP 또는 HTTPS POST, 이메일(SMTP, 평문 텍스트 또는 JSON 형식) 또는 Amazon SQS 대기열에 게시되는 메시지로 알림을 전달할 수 있습니다. 예를 들어 autoscaling: EC2_INSTANCE_TERMINATE 알림 유형을 사용하도록 EC2 Auto Scaling 그룹을 구성한 경우, EC2 Auto Scaling 그룹이 인스턴스를 종료하면 이메일 알림을 전송합니다. 이 이메일에는 종료된 인스턴스의 세부 정보 (예: 인스턴스 ID 및 인스턴스 종료 사유)가 포함됩니다.
시작 구성은 EC2 Auto Scaling 그룹에서 EC2 인스턴스를 시작하는 데 사용하는 템플릿입니다. 시작 구성을 생성할 때는 Amazon 머신 이미지(AMI)의 ID, 인스턴스 유형, 키 페어, 하나 이상의 보안 그룹, 블록 디바이스 매핑 등 인스턴스에 대한 정보를 지정합니다. 이전에 EC2 인스턴스를 시작한 적이 있었다면 이와 동일한 정보를 지정하여 인스턴스를 시작했을 겁니다. EC2 Auto Scaling 그룹을 생성할 때는 시작 구성을 지정해야 합니다. 시작 구성을 여러 개의 EC2 Auto Scaling 그룹에 지정할 수 있습니다. 하지만 EC2 Auto Scaling 그룹에 대해서는 한 번에 한 개의 시작 구성만 지정할 수 있으며 시작 구성을 한 번 생성한 후에는 수정할 수 없습니다. 따라서 EC2 Auto Scaling 그룹의 시작 구성을 변경하려면 새로운 시작 구성을 생성한 다음 새 시작 구성으로 EC2 Auto Scaling 그룹을 업데이트해야 합니다. EC2 Auto Scaling 그룹의 시작 구성을 변경하면 새로운 모든 인스턴스는 새로운 구성 파라미터를 사용하여 시작되지만 기존 인스턴스는 영향을 받지 않습니다.
EC2 할당량에서 허용하는 한도 내에서 EC2 Auto Scaling 그룹에 원하는 만큼 인스턴스를 추가할 수 있습니다 !
Amazon EC2 Auto Scaling은 실행할 수 있는 Amazon EC2 인스턴스 한도를 초과하여 확장할 수 없습니다.
EC2 Auto Scaling 그룹은 리전별 구조입니다. 여러 가용 영역으로 확장될 수 있지만 여러 AWS 리전으로 확장될 수는 없습니다.
AWS CodeDeploy 또는 CloudFormation을 사용하여 EC2 Auto Scaling 그룹의 여러 인스턴스에 대한 코드 변경을 오케스트레이션할 수 있습니다.
데이터는 기존 인스턴스에서 새로운 인스턴스로 자동으로 복사되지 않습니다. 수명 주기 후크를 사용하여 데이터를 복사하거나 Amazon RDS 데이터베이스를 사용하여 복제본을 만들 수 있어요 !
기존 인스턴스에서 Auto Scaling 그룹을 생성하는 경우, 새로운 AMI가 생성되지 않아요...
가용 영역 전체에서 리소스를 밸런싱하는 것은 Well-Architected 애플리케이션의 모범 사례입니다. 전체 시스템 가용성을 크게 향상하기 때문이죠. EC2 Auto Scaling 그룹 설정에 여러 개의 영역을 구성하면 Amazon EC2 Auto Scaling이 영역 전체에서 EC2 인스턴스를 자동으로 밸런싱합니다. Amazon EC2 Auto Scaling은 항상 새로운 인스턴스를 시작할 때 전체 플릿에 걸쳐 인스턴스가 영역 간에 최대한 균등하게 밸런싱되도록 합니다. 그뿐만 아니라 Aamzon EC2 Auto Scaling은 요청된 인스턴스 유형에 대한 가용 용량이 있는 가용 영역에서만 시작합니다.
수명 주기 후크를 사용하면 인스턴스가 서비스에 사용되지 전에 또는 종료되기 전에 조치를 취할 수 있어요! 이는 소프트웨어 환경을 Amazon 머신 이미지(AMI)로 베이크하지 않는 경우 특히 유용하답니다. 예를 들어 시작 후크는 Amazon EC2 Auto Scaling이 로드 밸런서에 연결되기 전에 트래픽을 처리할 모든 준비를 갖추도록 인스턴스에서 소프트웨어 구성을 수행할 수 있습니다. 이를 수행하는 한 가지 방법은 인스턴스에서 RunCommand를 호출하는 AWS Lambda 함수에 시작 후크를 연결하는 것입니다. 종료 후크는 종료되기 전에 인스턴스에서 중요한 데이터를 수집할 때 유용할 수 있습니다. 예를 들어 종료 후크를 사용하면 인스턴스 서비스가 중단될 때 플릿의 로그 파일을 Amazon S3 버킷으로 복사하여 이를 보존할 수 있습니다.
비정상 인스턴스란 하드웨어가 어떤 이유에서 손상되거나(불량 디스크 등) 사용자가 구성한 ELB 상태 확인을 통과하지 못한 인스턴스를 말합니다. Amazon EC2 Auto Scaling은 정기적으로 개별 EC2 인스턴스에 대한 상태 확인을 수행하며, 인스턴스가 Elastic Load Balancing 로드 밸런서에 연결되어 있는 경우 ELB 상태 확인도 수행할 수 있습니다.
예, SetInstanceHealth라는 API가 있습니다. 이 API를 사용하면 인스턴스 상태를 UNHEALTHY로 변경할 수 있으며 그러면 종료와 교체가 발생합니다.
넵, SuspendProcesses API를 사용하여 Amazon EC2 Auto Scaling 상태 확인을 일시적으로 중단할 수 있습니다. ResumeProcesses API를 사용하여 자동 상태 확인을 재개할 수 있습니다.
그룹에서 Elastic Load Balancing(ELB)을 사용하고 있는 경우 ELB 상태 확인을 선택해야 하며 그룹에서 ELB를 사용하고 있지 않은 경우 EC2 상태 확인을 선택해야 합니다.
Auto Scaling을 사용하기 위해 ELB를 사용할 필요는 없어요. EC2 상태 확인을 사용하여 비정상 인스턴스를 식별하고 교체할 수 있으니까요.
네, Amazon EC2 Auto Scaling은 상태 확인 기능을 비롯하여 Application Load Balancer 및 Network Load Balancer와 연동됩니다 !
볼륨은 새로운 인스턴스가 추가될 때 이에 연결됩니다. Amazon EC2 Auto Scaling에서는 기존 볼륨이 용량 한도에 근접하더라도 자동으로 볼륨을 추가하지 않아요! EC2 API를 사용하면 기존 인스턴스에 볼륨을 추가할 수 있습니다.
우리가 상태 저장 인스턴스라고 할 때는 그 인스턴스에만 존재하는 데이터가 있는 인스턴스를 말합니다. 일반적으로 상태 저장 인스턴스를 종료한다는 것은 인스턴스에 있는 데아터(또는 상태 정보)가 손실된다는 의미입니다. 수명 주기 후크를 사용하여 상태 저장 인스턴스가 종료하기 전에 인스턴스의 데이터를 복사하거나, 인스턴스 보호를 사용하여 Amazon EC2 Auto Scaling이 인스턴스를 종료하지 않도록 할 수 있습니다.
손상된 인스턴스가 상태 확인에 실패하면, Amazon EC2 Auto Scaling이 자동으로 이를 종료하고 새로운 인스턴스로 교체합니다. Elastic Load Balancing 로드밸런서를 사용하고 있는 경우, Amazon EC2 Auto Scaling이 새로운 인스턴스를 프로비저닝하여 로드 밸런서에 연결하기 전에 손상된 인스턴스를 로드 밸런서에서 단계적으로 분리합니다. 이 작업은 모두 자동으로 수행되므로 인스턴스를 교체해야 하는 경우 수동으로 대응할 필요가 없습니다.
사용자는 각 Amazon EC2 Auto Scaling 그룹에서 Amazon EC2 Auto Scaling이 그룹에 인스턴스를 추가하거나(확장) 그룹에서 인스턴스를 제거(축소) 시점을 제어합니다. 인스턴스를 연결하거나 분리하여 수동으로 그룹 크기를 조정하거나, 조정 정책을 사용하여 이러한 프로세스를 자동화할 수 있습니다. 자동으로 축소하도록 Amazon EC2 Auto Scaling을 설정한 경우, Amazon EC2 Auto Scaling에서 먼저 종료해야 하는 인스턴스가 무엇인지 결정해야 합니다. 이 작업은 종료 정책을 사용하여 구성할 수 있습니다. 또한, 인스턴스 보호 기능을 사용하여 Amazon EC2 Auto Scaling이 축소를 위해 인스턴스를 종료할 때 특정 인스턴스를 선택에서 배제하도록 할 수도 있습니다. 인스턴스에 데이터가 있으며 인스턴스를 축소하더라도 해당 데이터를 유지해야 하는 경우, S3, RDS 또는 DynamoDB와 같은 서비스를 사용하여 인스턴스 외부로 데이터를 저장할 수 있습니다.
소요 시간은 몇 분 이내입니다. 교체 대부분이 5분 이내에 처리되며 평균적으로 5분에 훨씬 못 미칩니다. 이는 인스턴스 AMI를 부팅하는 데 걸리는 시간 등 다양한 요소에 따라 달라집니다.
ELB에서 인스턴스가 비정상임을 알게 되면 해당 인스턴스로 요청을 라우팅하는 것을 중단합니다. 하지만 인스턴스가 비정상임을 발견하기 전에 해당 인스턴스로 전송된 일부 요청은 실패하게 됩니다.
Route 53과 통합하면 됩니다. 현재 Amazon EC2 Auto Scaling에서 이를 바로 지원하지는 않지만 많은 고객이 사용합니다. 또한, 자체 역방향 프록시를 사용하거나 내부 마이크로서비스의 경우 서비스 검색 솔루션을 사용할 수도 있습니다.
Amazon EC2 Auto Scaling은 다음을 수행할 수 있는 서비스인 AWS Identity and Access Management(IAM)와 통합됩니다.
- 조직의 AWS 계정에 사용자와 그룹 생성
- AWS 계정의 각 사용자에게 고유한 보안 자격 증명을 할당
- AWS 리소스를 사용하여 태스크를 수행할 수 있는 각 사용자의 권한을 제어
- 다른 AWS 계정의 사용자가 AWS 리소스를 공유하도록 허용
- AWS 계정의 역할을 생성하고 해당 역할을 맡을 수 있는 사용자 또는 서비스를 정의
- 엔터프라이즈의 기존 자격 증명을 사용하여 AWS 리소스를 사용해 태스크를 수행할 수 있는 권한 부여
예를 들어, 관리자 그룹에 DescribeAutoScalingGroups, DescribeLaunchConfigurations, DescirbeScalingActivities, and DescribePolicies API 작업만 사용할 수 있는 권한을 부여하는 IAM 정책을 만들 수 있습니다. 그러면 관리자 그룹의 사용자들은 Amazon EC2 Auto Scaling 그룹과 시작 구성에서 이러한 작업을 사용할 수 있습니다. Amazon EC2 Auto Scaling 리소스 수준 권하을 사용해 특정 EC2 Auto Scaling 그룹 또는 시작 구성에 대한 액세스를 제한할 수 있습니다.
CreateLaunchConfiguration에 키 이름 파라미터를 사용하여 키 페어를 인스턴스에 연결할 수 있습니다. 그런 다음 EC2에서 GetPasswordData API를 사용하면 됩니다. AWS Management Console을 통해서도 이 작업을 수행할 수 있습니다.
AMI에 CloudWatch 에이전트가 포함된 경우, EC2 Auto Scaling 그룹을 생성하면 에이전트가 자동으로 EC2 인스턴스에 설치됩니다. 기본 Amazon Linux AMI의 경우에는 에이전트를 설치해야 합니다(yum 패키지 관리자를 통해 설치 권장)
네, 단일 Auto Scaling 그룹에서 여러 EC2 인스턴스 유형, 가용 영역, 온디맨드, RI 및 스팟 구매 옵션에 걸쳐 EC2 기능을 프로비저닝하고 자동으로 확장할 수 있습니다. 또한 온디맨드와 스팟 용량 간 원하는 비율을 정의하고, 애플리케이션에 적합한 인스턴스 유형을 선택하고, EC2 Auto Scaling이 각 구매 모델 내에서 ASG 용량을 배포하는 방식에 대한 우선순위를 지정할 수 있습니다.
네, 모든 용량을 스팟 인스턴스로만 채우거나 모든 용량을 온디맨드 인스턴스와 RI로만 채우도록 ASG를 구성할 수 있습니다.
네, 구매 모델을 조합하도록 ASG를 설정할 때 그룹의 기본 용량을 온디맨드 인스턴스로 채우도록 지정할 수 있습니다. ASG가 확장되거나 축소되면, EC2 Auto Scaling이 기본 용량은 온디맨드로 채우고 기본 용량을 초과하는 용량은 스팟 인스턴스로 채우거나 온디맨드 또는 스팟 인스턴스의 지정된 비율로 채웁니다.
네, 다른 ASG 파라미터와 마찬가지로 고객은 기존 ASG를 업데이트하여 구매 모델 조합 및 여러 인스턴스 유형 지정과 관련된 하나 또는 모든 파라미터(예: 인스턴스 유형, 온디맨드 인스턴스의 우선순위, 온디맨드와 스팟 인슽너스의 비율, 할당 전략)를 수정할 수 있습니다.
네, 예를 들어 C4 인스턴스에 대한 RI를 보유하고 있는데 EC2 Auto Scaling에서 C4를 시작하는 경우, 온디맨드 인스턴스에 대해 RI 요금이 적용됩니다.
네, 리전에서 제공하는 모든 인스턴스 유형을 지정할 수 있습니다. 또한 각 인스턴스 유형에 대해 선택적 가중치를 지정할 수 있으며, 이는 각 인스턴스가 애플리케이션 성능에 기여하는 용량 유닛을 정의합니다.
가용 영역에서 지정된 모든 인스턴스 유형을 제공하지 않은 경우, Auto Scaling은 Auto Scaling 그룹과 연결된 다른 가용 영역에서 시작하도록 대상을 다시 지정합니다. Auto Scaling은 항상 여러 가용 영역 간에 컴퓨팅의 균형을 유지하려고 하며 한 가용 영역에서 모든 인스턴스 유형을 사용할 수 없는 경우 대상을 다시 지정합니다.
EC2 인스턴스용 Amazon EC2 Auto Scaling 플릿 관리에는 추가 비용이 발생하지 않습니다. 마찬가지로 Amazon CloudWatch에서 활성화하는 Amazon EC2 Auto Scaling의 동적 조정 기능에는 추가 비용이 발생하지 않습니다. Amazon EC2 및 Amazon CloudWatch 서비스 비용이 부과되며 별도로 청구됩니다.