서버를 생성하고 삭제하는 것을 빨리할 수 있으며 증가된 로드에 맞게 EC2 인스턴스를 추가하고 (Scale Out), 감소된 로드에 맞게 EC2 인스턴스를 제거 (Scale In)
EC2 인스턴스 증가와 감소를 특정량까지만 가능하도록 ASG에서 실행되는 최소 및 최대 시스템 수를 정의
새 인스턴스를 로드 밸런서에 자동으로 등록하는 기능 존재
Auto Scaling Group in AWS
Minimum size는 ASG에서 실행해야 되는 EC2 인스턴스의 수
Autual Size / Desired Capacity는 ASG의 현재 순간에 실행 중인 EC2 인스턴스의 수
Maximum size는 로드가 올라갈 때 필요한 경우 Scale Out에 포함할 수 있는 인스턴스의 수
Minimum size와 Maximum size의 매개변수를 알아야 함
Auto Scaling Group in AWS With Load Balancer
트래픽을 세 개의 인스턴스에 곧장 보낼 수 있으며, ASG Scale Out을 통해 EC2 인스턴스를 추가한 다음 로드 밸런서 역시 목표를 등록하면 상태 확인을 수행하고 트래픽에 직접 도달
ASGs have the following attributes
ASG의 런칭 구성 1) AMI + 인스턴스 유형 2) EC2 사용자 데이터 3) EBS 볼륨 4) 보안 그룹 5) SSH 키 쌍
최소 사이즈 / 최대 사이즈 / 초기 용량을 셋팅 가능
네트워크와 서브넷 정의
로드 밸런서 정보, 목표 그룹 정보 정의
Scaling Policies 정의 (Scale Out의 트리거, Scale In의 트리거)
Auto Scaling Alarms
Auto Scaling의 Auto Scaling Part에 도달할 때의 알람
측정 항목을 모니터링하고 알려주는 CloudWatch 알람에 기반하여 ASG를 계산하는 것이 가능 예) Scale Out 가능합니다, 인스턴스를 추가할 수 있습니다, Scale In 가능합니다 등 원하는 어떤 측정항목에 대해서라도 가능 (CPU 평균 등을 모니터링)
Auto Scaling New Rules
EC2에서 직접 관리하는 더 나은 Auto Scaling 규칙을 정의할 수 있음 1) Target Average CPU Usage 목표 CPU 사용량 충족을 위한 로드 기반 규칙 (Scale Out, Scale In) 2) Number of requests on the ELB per instance 요청 수를 기반으로 하는 룰은 인스턴스 당 ELB를 갖게 됨 3) Average Network In 4) Average Network Out
이전 규칙보다 설정하기 쉬우며 더 합리적이라고 생각할 수 있음 예) ELB에서 인스턴스당 1000개의 요청을 받게 해달라, CPU 사용량을 평균 40$로 만들어라
Auto Scaling Custom Metric
자신만의 측정 항목에 맞추어 Auto Scale할 수 있고 사용자 지정 Metric을 정의할 수 있음 예) 앱에 연결된 사용자 숫자
이를 위해 앱에 Custom Metric을 생성하고 PutMetric API를 이용해 CloudWatch에 보내게 되면 해당 측정 항목이 값이 낮거나 높은 것에 반응하기 위해 CloudWatch 알람을 생성
ASG Brain Dump
ASG에 Scaling Policies를 가져야 하고 이 정책은 CPU, Network가 될 수도 있고, Custom Metric이 될 수 있음 예) 사전에 알고 있던 계획에 기반하여 사용자가 도착하기 전에 더 많은 인스턴스를 사전에 추가
ASG는 런칭 구성 또는 런칭 템플릿을 사용할 수 있고, 런칭 템플릿은 런칭 구성의 최신버전이므로 사용을 추천
ASG를 업데이트하길 원한다면 런칭 구성이나 런칭 템플릿의 새 버전을 제공한 후 시간이 지남에 따라 교체 가능
ASG에 IAM 역할을 연결한다면 IAM 역할을 자동적으로 런칭한 EC2 인스턴스에 할당됨
ASG는 무료이며, 만약 비용을 지불하게 된다면 런칭되는 기본 리소스에 의해 지불되는 것 예) EC2 인스턴스가 EBS 볼륨에 되는 것 등으로 인한 지불
ASG 아래에 인스턴스가 있다는 것은 어떤 이유로든 인스턴스가 종료되는 경우 ASG가 자동으로 새 인스턴스를 교체용으로 생성한다는 것을 의미하므로 안전
ASG는 자동적으로 로드밸런서에 의해 비정상으로 표시된 인스턴스를 종료한 후 새로 만들어 교체
<ASG 실습>
오토 스케일링 그룹을 연습하기 위해 모든 인스턴스 종료 EC2에 실행 중인 인스턴스의 개수가 0이 되도록 해야 함
오토 스케일링 그룹 생성 DemoASG라는 이름으로 오토 스케일링 그룹을 생성하며 시작 템플릿을 생성해야 함 시작 템플릿 이름은 MyDemoTemplate, 템플릿 설명은 TemplateDemo이며 AMI, 인스턴스 유형, 키 페어, 네트워크 설정, 스토리지 구성, 사용자 데이터는 이전 EC2 인스턴스 구성과 동일하게 구성 그리고 방금 만든 시작 템플릿을 오토 스케일링 그룹 생성에서 선택
인스턴스 구매 옵션에는 시작 템플릿에 정의된 내용을 따르거나 스팟, 온디맨드 인스턴스를 선택할 수 있는 것과 인스턴스 유형과 구매 옵션을 결합하여 사용할 수 있는 것이 존재하며 이는 온디맨드 인스턴스의 기준점을 알 수 있고 스팟 용량 검색을 통해 유연성을 누리고 비용 최적화를 달성할 수 있음 이번에는 단순한 작업을 위해 시작 템플릿 준수를 선택하며 가용 영역으로는 모든 VPC에 실행하도록 함
ASG에 대한 로드 밸런싱을 선택해야 하는데 선택 사항이므로 로드 밸런서 없이도 ASG는 가능하지만 EC2 인스턴스를 로드 밸런서에 연결하기 위해서는 기존 로드 밸런서에 연결을 시켜야 함 그 후 관련 대상 그룹을 설정해야 하므로 my-first-target-group HTTP라는 그룹을 설정하면 ALB인 DemoALB에 연결됨
ASG에서 상태 확인을 위한 두 가지 옵션이 있는데 둘 다 선택 첫 번째는 EC2 기반이며 EC2 인스턴스에 소프트웨어나 하드 웨어 오류가 없도록 확인함 두 번째 옵션은 ELB 기반 상태 확인으로 인스턴스가 ELB 상태 확인에 실패한 경우 오토 스케일링 그룹에서도 비정상으로 표시 그러면 오토 스케일링 그룹이 인스턴스를 종료시킨 후에 새로운 인스턴스가 다시 실행되게 됨 이를 통해 오토 스케일링 그룹 내 모든 인스턴스가 항상 정상 상태를 유지할 수 있게 함
이 외는 모두 기본과 동일하게 둔 후, 오토 스케일링 그룹 생성
시작 템플릿
오토 스케일링 작동 확인 오토 스케일링 그룹이 잘 생성되고 나면 오토 스케일링 그룹이 EC2 인스턴스를 하나 생성하게 됨 Activity의 작업 기록을 확인하게 되면 새 인스턴스 실행 중이라는 설명이 나타나게 됨 기대 용량은 1이었기 때문에 그 숫자만큼의 EC2 인스턴스를 ASG에 추가해서 기대 용량을 충족시킴 그리고 인스턴스 관리를 살펴보면 ASG가 EC2 인스턴스 하나를 생성한 것을 볼 수 있으며 인스턴스 탭에서도 확인 가능
또한 ASG를 대상 그룹에 연결했기 때문에 대상 그룹에서 타깃을 보면 EC2 인스턴스가 ALB에 등록 중인 것을 확인할 수 있음 그러므로 ALB로 이동해서 새로 고침하면 Hello World라는 응답을 받을 수 있게 됨
원하는 용량 1원하는 용량만큼 EC2 인스턴스 생성EC2 인스턴스 생성ALB에 등록된 EC2 인스턴스ALB에 등록된 EC2 인스턴스로 인해 Hello World 응답을 받을 수 있음
만약 인스턴스의 상태가 비정상일 경우 EC2 인스턴스가 잘못 구성되거나 보안 그룹의 문제, EC2 유저 데이터 스크립트의 문제로 인해 인스턴스의 상태가 비정상일 경우 ASG가 비정상 인스턴스를 종료하도록 설정해두었으므로 잠시 기다리면 인스턴스가 종료되고 새 인스턴스가 생성됨 그리고 작업 기록을 보게 되면 새 인스턴스가 생성된 것을 볼 수 있음
오토 스케일링 그룹의 크기를 편집하여 스케일 업 인스턴스 기대 용량을 2로 바꾸면 최대 용량도 맞춰서 증가시켜야 함 이렇게 수정을 함으로써 ASG에게 EC2 인스턴스를 하나 더 생성하도록 요청하게 되므로 작업 기록을 보게 되면 새로운 활동 기록이 나타난 것을 확인할 수 있으며 두 번째 EC2 인스턴스가 생성된 것을 볼 수 있음 또한 대상 그룹에 등록되므로 ALB에서 새로 고침을 하면 두 개의 IP를 확인할 수 있음
인스턴스 기대 용량과 최대 용량 변경새로 생성된 두 번째 EC2 인스턴스대상 그룹에 등록된 두 번째 EC2 인스턴스
오토 스케일링 그룹의 크기를 편집하여 스케일 다운 반대로 다시 스케일 다운하면 인스턴스가 하나가 아니라 두 개의 인스턴스를 가지게 되는 것이므로 ASG가 인스턴스 두 개 중에서 하나를 골라 종료시키며 대상 그룹에서도 등록이 해지되게 되어 EC2 인스턴스 하나만 남게 됨