Amazon EC2 Auto Scaling (FAQ - 일반)
EC2 Auto Scaling 이란?
Amazon EC2 인스턴스를 자동으로 시작하거나 종료하여 애플리케이션 로드를 처리하기에 적절한 수의 인스턴스를 유지할 수 있도록 설계된 완전관리형 서비스.
Auto Scaling을 사용하면 비정상 인스턴스를 탐지하여 교체하는 EC2 인스턴스 플릿 관리를 통해 사용자가 정의하는 조건에 따라 EC2 용량을 자동으로 확자아 또는 축소함으로써 애플리케이션 가용성을 유지할 수 있음.
Auto Scaling을 사용하면 수요가 급증할 경우 인스턴스의 수를 자동으로 늘려 성능을 그대로 유지하고, 수요가 적을 경우 자동으로 용량을 줄여 비용 절감도 가능.
EC2 Auto Scaling 과 AWS Auto Scaling은 각각 언제 사용해야 할까?
여러 서비스에 걸쳐 여러 리소스의 규모를 조정하려면 AWS Auto Scaling.
AWS Auto Scaling을 아용하면 사전 정의된 규모 조정 정책을 사용하여 EC2 Auto Scaling 그룹 또는 다른 리소스에 대한 동적 규모 조정 정책을 정의할 수 있음.
AWS Auto Scaling을 사용하여 애플리케이션의 확장 가능한 모든 리소스에 대한 규모 조정 정책을 구성하는 것이 개별 서비스 콘솔에서 리소스별로 규모 조정 정책을 관리하는 것보다 빠름.
규모 조정 정책 설정을 간소화 할 수 있는 사전 정의된 규모 조정 정책이 포함도 되어 있으므로 더 쉽기도 함.
EC2의 예측 규모 조정을 생성하기를 원하는 경우에도 AWS Auto Scaling을 사용해야 함.
Amazon EC2 Auto Scaling 그룹의 규모만 조정하면 되거나 EC2 플릿의 상태만 유지 관리하려는 경우 Amazon EC2 Auto Scaling을 사용해야 함.
EC2 Auto Scaling 그룹을 생성 또는 구성해야 하거나 예약된 또는 단계별 규모 조정 정책을 설정해야 하는 경우에도 (AWS Auto Scaling에서는 목표 추적 규모 조정 정책만 지원하므로) EC2 Auto Scaling을 사용해야 함.
EC2 Auto Scaling 그룹은 EC2 콘솔, Auto Scaling API 또는 CloudFormation 등 AWS Auto Scaling 외부에서 생성 및 구성해야 함.
AWS Auto Scaling에서는 기존 EC2 Auto Scaling 그룹에 대해 동적 규모 조정 정책을 구성할 수 있음.
Amazon EC2 Auto Scaling을 사용할 떄의 이점
EC2 Auto Scaling은 Amazon EC2 인스턴스 가용성을 유지하는 데 도움이 됨.
하나의 Amazon EC2 인스턴스를 실행하든 수천개를 실행하든 EC2 Auto Scaling을 사용하면 손상된 EC2 인스턴스를 탐지하고 개입없이 이를 교체 가능.
따라서 애플리케이션이 사용자가 기대하는 수준의 컴퓨팅 파워를 확보 가능.
EC2 Auto Scaling을 사용하면 애플리케이션의 수요 곡선을 따라 EC2 플릿을 자동으로 확장할 수 있으므로 미리 수동으로 EC2 용량을 프로비저닝해야할 필요가 줄어듬.
예를 들면 EC2 플릿의 평균 사용률이 높을 때 새로운 인스턴스를 ASG에 증분식으로 추가하도록 조건을 설정할 수 있으며, 마찬가지로 CPU 사용률이 낮을 때 인스턴스를 증분식으로 제거하도록 조건을 설정 가능.
CloudWatch를 통해 용량 조정 활동을 트리거하는 경보를 전송하고 Elastic Load Balancing(ELB)을 사용하여 ASG 내 인스턴스로 트래픽을 분산할 수 있음.
로드 변화가 예측 가능한 경우에는 EC2 Auto Scaling을 통해 일정을 예약하여 용량 조정 활동을 계획할 수 있음.
EC2 Auto Scaling을 사용하면 EC2 플릿을 최적의 사용률로 실행 가능.
플릿 관리란? 동적 규모 조정과 다른 부분?
애플리케이션이 EC2 인스턴스애서 실행되는 경우 ‘플릿’이라고 부름.
플릿 관리는 비정상 인스턴스를 자동으로 교체하고 플릿을 원하는 용량으로 유지하는 기능을 말함.
EC2 Auto Scaling 플릿관리를 통해 애플리케이션이 트래픽을 수신하고 인스턴스 자체가 올바르게 작동하는지 확인할 수 있음.
Auto Scaling에서 상태확인 실패를 탐지하면, 자동으로 해당 인스턴스 교체 가능.
EC2 Auto Scaling의 동적 조정 기능은 로드 또는 다른 지표를 기반으로 용량을 자동으로 확장 또는 축소하는 기능을 뜻함.
예를 들어 CPU 80% 이상 급증하면 (경보도 설정되어 있으면) EC2 Auto Scaling에서 새로운 인스턴스를 동적으로 추가할 수 있음.
대상 추적이란?
대상 추적은 몇 가지 간단한 단계로 애플리케이션에 대한 동적 조정 기능을 설정하는 데 사용할 수 있는 새로운 조정 저책 유형임.
대상 추적에서 사용자가 CPU 사용률 또는 요청 수와 같은 애플리케이션에 대해 로드 지표를 선택하고 대상 값을 설정하며, Amazon EC2 Auto Scaling이 해당 목표 값을 유지하는 데 필요한 대로 ASG 내 EC2 인스턴스 수를 조정함.
이는 시스템을 자동으로 조정하여 원하는 온도로 환경을 유지하는 집의 집의 온도 조절기처럼 작동함.
예를 들어 웹 서버 플릿의 CPU 사용률을 50%로 유지하도록 대상 추적을 구성할 수 있음.
그러면 EC2 Auto Scaling이 평균 CPU 사용률을 50%로 유지한는 데 필요한 대로 EC2 인스턴스를 시작하거나 종료함.
EC2 ASG(Auto Scaling Group) 이란?
Amazon EC2 Auto Scaling Group(ASG)에는 비슷한 특성을 공유하고 플릿 관리 및 동적 조정을 위해 논리적으로 그룹으로 취급되는 EC2 인스턴스 모음이 포함됨.
예를 들어 단일 애플리케이션이 여러 인스턴스에서 작동하는 경우, 애플리케이션의 성능을 향상하기 위해 해당 그룹의 인스턴스 수를 늘리거나, 수요가 적을 때는 비용 절감을 위해 인스턴스 수를 줄이려 할 수 있음.
Auto Scaling은 인스턴스가 비정상이 되더라도 고정된 인스턴스 수를 유지하도록 또는 지정한 기준에 따라 그룹의 인스턴스 수를 자동으로 조정함.
ASG를 삭제하면 EC2 인스턴스는?
실행 중인 인스턴스가 있는 EC2 ASG를 삭제하도록 선택한 경우, 해당 인스턴스는 종료되고 ASG는 삭제됨.
EC2 Auto Scaling이 EC2 ASG에서 EC2 인스턴스를 시작하거나 종료하는지 알 수 있는 방법?
Auto Scaling을 사용하여 자동으로 애플리케이션의 규모를 조정하는 경우, Auto Scaling이 ASG에서 인스턴스를 시작하거나 종료하는 시점을 알면 유용함.
Amazon SNS는 구동 클라이언트 또는 엔드포인트로 알림을 전달하거나 전송하는 것을 조정하고 관리함.
ASG이 조정될 떄마다 SNS 알림을 전송하도록 Auto Scaling을 구서할 수 있음.
SNS는 HTTP 또는 HTTPS POST, 이메일(SMTP, 평문 텍스트 또는 JSON 형식) 또는 Amazon SQS 대기열에 게시되는 메시지로 알림을 전달할 수 있음.
시작 구성이란?
시작 구성은 EC2 ASG에서 인스턴스를 시작하는 데 상용하는 템플릿.
시작 구성을 생성할 때는 Amazon Machine Image (AMI)의 ID, 인스턴스 유형, 키 페어, 하나 이상의 보안 그룹, 블록 디바이스 매핑 등 인스턴스에 대한 정보를 지정함.
이전에 인스턴스를 시작한 적이 있었다면 이와 동일한 정보를 지정하여 인스턴스를 시작했을 것임.
ASG을 생성할 때는 시작 구성을 지정해야 함.
시작 구성을 여러 개의 ASG에 지정할 수 있음.
하지만 ASG에 대해서는 한번에 한개의 시작 구성만 지정할 수 있으며 시작 구성을 한 번 생성한 후에는 수정할 수 없음.
따라서 ASG의 시작 구성을 변경하려면 새로운 시작 구성을 생성한 다음 새 시작 구성으로 EC2 ASG을 업데이트해야 함.
ASG의 시작 구성을 변경하면 새로운 모든 인스턴스는 새로운 구성 파라미터를 사용하여 시작되지만 기존 인스턴스는 영향을 받지 않음.
EC2 ASG 에 추가할 수 있는 인스턴스 수는 ?
EC2 할당량에서 허용하는 한도 내에서 ASG에 원하는 만큼 추가 가능.
조정 활동으로 인해 인스턴스 한도에 도달하게 되면?
Auto Scaling은 실행할 수 있는 EC2 인스턴스 한도를 초과하여 확장할 수 없음.
ASG은 여러 AWS 리전으로 확장 가능?
ASG은 리전별 구조임.
여러 가용 영역으로 확장될 수 있지만 리전으로는 불가.
ASG의 여러 인스턴스에 걸쳐 변경 사항을 적용하려면?
AWS CodeDeploy 또는 CloudFormation을 사용하여 EC2 ASG의 여러 인스턴스에 대한 코드 변겨을 오케스트레이션할 수 있음.
ASG에 데이터가 섩치되어 있고 새로운 인스턴스가 나중에 동적으로 생성되는 경우, 데이터가 새로운 인스턴스로 복사 가능?
데이터는 기존 인스턴스에서 새로운 인스턴스로 자동으로 복사되지 않음.
lifecycle 후크를 사용하여 데이터를 복사하거나 Amazon RDS 데이터베이스를 사용하여 복제본 생성 가능.
기존 인스턴스에서 ASG을 생성하는 경우, 새로운 AMI가 생성?
기존 인스턴스에서 ASG을 생성하는 경우, 새로운 AMI는 생성되지 않음.
Amazon EC2 Auto Scaling은 용량을 어떻게 밸런싱?
가용 영역 전체에서 리소스를 밸런싱하는 것은 Well-Architected 애플리케이션의 모범 사례임.
전체 시스템 가용성을 크기 향상하기 때문임.
EC2 ASG설정에 여러 개의 영역을 구성하면 EC2 Auto Scaling이 영역 전ㅇ체에서 인스턴스를 자동으로 밸런싱함.
Auto Scaling은 항상 새로운 인스턴스를 시작할 때 전체 플릿에 걸쳐 인스턴스가 영역 간에 최대한 균등하게 밸런싱되도록 함.
Auto Scaling은 요청된 인스턴스 유형에 대한 가용 용량이 있는 가용 영역에서만 시작함.
수명 주기 후크란 (Lifecycle hook)?
Lifecycle hook를 사용하면 인스턴스가 서비스에 사용되기 전에 또는 종료되기 전에 조치를 취할 수 있음.
이는 소프트웨어 환경을 AMI로 베이크하지 않는 경우 특히 유용함.
예를들어 시작 후크는 Auto Scaling이 로드 밸런서에 연결되기 전에 트래칙을 처리할 모든 준비를 갖추도록 인스턴스에서 소프트웨어 구성을 수행할 수 있음.
이를 수행하는 한 가지 방법은 인스턴스에서 RunCommand를 호출하는 AWS Lambda함수에 시작 후크를 연결하는 것임.
종료 후크는 종료되기 전에 인스턴스에서 중요한 데이터를 수집할 때 유용함.
예를들어 종료 후크를 사용하면 인스턴스 서비스가 중단될 때 플릿의 로그 파일을 S3 버킷으로 복사하여 이를 보존 할 수 있음.
‘비정상’ 인스턴스의 특징?
비정상 인스턴스란 하드웨어가 어떤 이유에서 손상되거나(불량 디스크 등) 사용자가 구서한 ELB 상태를 확인을 통과하지 못한 인스턴스를 뜻함.
Amazon EC2 Auto Scaling은 정기적으로 개별 EC2 인스턴스에 대한 상태 확인을 수행하며, 인스턴스가 Elastic Load Balancing 로드 밸런서에 연결되어 있는 경우 ELB 상태 확인도 수행가능.
상태 확인을 사용자 지정 가능?
SetInstanceHealth라는 API가 있음.
이 API를 사용하면 인스턴스 상태를 UNHEALTHY로 변경 가능하며 그러면 종료와 교체가 발생함.
어떤 유형의 상태 확인을 선택?
그룹에서 ELB를 사용하고 있는 경우 ELB 상태 확인을 선택 해야함.
그룹에서 ELB를 사용하고 있지 않은 경우 EC2 상태 확인을 선택.
ELB를 사용하고 있지 않은 경우에도 Amazon EC2 Auto Scaling을 상태 확인에 사용하여 비정상 인스턴스를 교체 할 수 있는가?
Auto Scaling을 사용하기 위해 ELB를 사용할 필요 없음.
EC2 상태 확인을 사용하여 비정상 인스턴스를 식별하고 교체할 수 있음.
ELB 상태 화가인은 Application Load Balancer 및 Network Load Balancer와 연동 되는지 ?
인스턴스와 연결된 대상 그룹이 비정상이 되는 경우 해당 인스턴스가 비정상으로 표시 되는지 ?
표시 되고, Amazon EC2 Auto Scaling은 상태 확인 기능을 비롯하여 ALB 및 NLB와 연동 됨.
Amazon EC2 Auto Scaling을 사용하여 인스턴스를 추가하지 않고 볼륨만 추가할 수 있는 방법은?
볼륨은 새로운 인스턴스가 추가될 때 이에 연결 됨.
Auto Scaling에서는 기존 볼륨이 용량 한도에 근접하더라도 자동으로 볼륨을 추가하지 않음.
EC2 API를 사용하면 기존 인스턴스에 볼륨을 추가할 수 있음.
‘상태 저장 인스턴스’란?
우리가 상태 저장 인스턴스라고 할 때는 그 인스턴스에만 존재하는 데이터가 있는 인스턴스를 말함.
일반적으로 상태 저장 인스턴스를 종료한다는 것은 인스턴스에 있는 데이터(또는 상태 정보)가 손실된다는 의미.
수명 주기 후크를 사용하여 상태 저장 인스턴스가 종료하기 전에 인스턴스의 데이터를 복사하거나, 인스턴스 보호를 사용하여 Amazon EC2 Auto Scaling이 인스턴스를 종료하지 않도록 할 수 있음.