728x90
반응형
Auto Scaling 이란

- 사용자가 정의한 정책, 일정 및 상태 확인에 따라 자동으로 EC2 인스턴스를 시작하거나 종료하도록 설계된 웹 서비스

- 내결함성 향상
  • 비정상 상태일 때를 감지하여 종료 후 이를 대체할 인스턴스를 시작
  • 복수의 AZ에 배포하도록 Auto Scaling Group을 구성하였을때 하나의 AZ가 사용 불가 상태가 되어도 다른 AZ에 같은 수의 인스턴스가 새로 배포되어 서비스 제공

- 가용성 향상
  • 현재 트래픽 요구를 처리할 수 있는 적절한 용량을 갖춤

- 비용 관리 개선
  • 필요에 따라 동적으로 인스턴스 수를 확장 / 축소 하면서 사용한 EC2 인스턴스에 대해서만 비용을 지불

- Auto Scaling Group 안에 인스터스를 추가 / 제외할 수 있음

- 트러블 슈팅을 위해 인스턴스를 Standby 상태로 유지할 수 있음

- 소프트웨어를 설치하고 로그를 검색하기 위해 인스턴스를 Pending 상태로 유지할 수 있음

- 기동중인 인스턴스의 Launch Configuration을 기반으로 Auto Scaling Group을 생성할 수 있음



Auto Scaling 제한

1. 리전 제한

- 리전별 시작 구성 : 200

- 리전별 Auto Scaling Group : 200


2. Auto Scaling Group 제한

- Auto Scaling Group 조정 정책 : 50

- Auto Scaling Group 예약된 작업 : 120

- Auto Scaling Group 수명주기 후크 : 50

- Auto Scaling Group SNS 주제 : 10

- Auto Scaling Group Classic Load Balancer : 50

- Auto Scaling Group 대상 그룹 : 50


3. 조정 정책 제한

- 조정 정책당 단계 조정 : 20


4. Auto Scaling API 제한

- 한번에 최대 20개의 인스턴스 ID에 AttachInstances, DetachInstances, EnterStandby 및 ExitStandby를 사용할 수 있음

- 한번에 최대 10개의 로드밸런서에 AttachLoadBalancers 및 DetachLoadBalancers를 사용할 수 있음

- 한번에 최대 10개의 대상 그룹에 AttachLoadBalancerTargetGroups 및 DetachLoadBalancerTargetGroups를 사용할 수 있음



Auto Scaling LifeCycle

- Auto Scaling Group의 EC2 인스턴스는 다른 EC2 인스턴스와 다른 경로 또는 수명주기를 가지고 있음 (일반적으로 생성된 인스턴스와는 다르다는 것을 의미)

- Auto Scaling Group 설정에 따라 인스턴스를 시작하고 서비스에 추가되었을 때 수명주기가 시작

- 인스턴스를 종료할 때 Lifecycle이 종료되거나 Auto Scaling Group 설정에 따라 서비스에서 인스턴스를 종료할 수 있음


1. Auto Scaling Type

- Vertical Scaling 
  • 인스턴스 사이즈 변경, EBS Capacity 증가

-Horizontal Scaling 
  • 인스턴스를 추가하거나 삭제, ELB 활용


2. Auto Scaling 시나리오

- Auto Scaling Group에 최소 / 최대 운영할 인스턴스 개수 정의

- 언제 Scaling 할지에 대한 정책 설정 (Scaling Plan)

- CloudWatch를 통해 사용량 데이터 수집 및 Scaling 시도

- 지정한 Spot에 Scaling Group에 지정된 형태로 인스턴스 확장


3. Resource 사용량 측정

- CloudWatch
  • 다양한 항목에 대해 사용량을 모니터링하고 관리할 수 있는 서비스
  • 알람을 설정하고 측정된 데이터를 기반으로 어떠한 액션을 취할 수 있도록 알람을 설정할 수 있음

- CloudWatch Alarm
  • CloudWatch에서 알람은 특정 기간 동안 하나의 메트릭을 모니터링하는 것 (메트릭은 모니터링할 대상을 의미 - CPU Used / Network In Traffic 등등)

- 모니터링 항목에 대해 지정한 범위 안의 값이 변경되었을때 알람이 상태를 변경


4. Auto Scaling Group 계획 관리

- 인스턴스를 생성하고 구성하는데 얼마나 시간이 소요되는지

- 어떠한 모니터링 항목이 어플리케이션의 성능을 측정하는데 적정한지

- 기존의 어떠한 자원 (EC2 인스턴스 나 AMIS)는 Auto Scaling Group의 일부로 사용할 수 있음

- 몇개의 AZ에 Auto Scaling Group이 확장시킬 것인지

- 인스턴스를 Auto Scaling 한 후 Application 기동을 수행할 역활 지정


5. Auto Scaling Group에서의 부하 분산

- 들어오는 웹 트래픽에 대해서는 자동으로 분산해야 함

- 어플리케이션에 접근하기 위한 싱글 포인트

- 로드밸런서와 EC2 인스턴스의 사용량 데이터는 CloudWatch로 보내짐

- 어플리케이션을 확장하는데 ELB 모니터링 항목을 사용할 수 있음


6. 아키텍처





Auto Scaling Lifecycle Hooks

- 사용자가 지정한 액션을 오토스케일링이 수행되거나 중단될 때 수행할 수 있게 한다.



1. 아키텍처




2. Bootstrapping

- bootstrapping 으로 수행할 수 있는 기능
  • Software 설치
  • S3로부터 Data Copy
  • DNS에 등록
  • 서비스 기동
  • 패키지 업데이트
  • Reboot 수행
  • 80 Port 오픈 (ELB에 등록, Device Mount)

- Bootstrapping 도구
  • 인스턴스에 포함된 스크립트 (Bash, PowerShell)
  • 설정 관리 도구 (Chef, Puppet)
  • AWS Opsworks


3. EC2 Metadata와 UserData

- 모든 EC2 인스턴스는 로컬 인스턴스의 Metadata와 Userdata 서비스에 접근할 수 있음

- http://169.254.169.254/latest/meta-data/ 의 Metadata를 통해 Hostname, AMI ID, Instance ID, Public/Private DNS, Availability Zone등을 검색할 수 있음

- 인스턴스 생성시 text 16KB까지 사용 가능

- text는 인스턴스에서 설정작업을 위해 스크립트로 Parsing 할 수 있어야 함

- Cloud-init은 인스턴스 최초 부팅 시 UserData를 수행할 수 있어야 함

- Cloud-init은 AWS Linux, RHEL, Ubuntu에 설치되어 있음 (각 플랫폼 별 repo를 통해 설치 가능)

- EC2Config는 Windows Server AMIs에 설치 되어 있음

- UserData를 통해 Apache나 Mysql 등의 패키지를 설치하고 EIP를 연결할 수 있음


참조 URL



반응형

'AWS' 카테고리의 다른 글

AWS CodeCommit  (0) 2019.04.09
AWS CodePipeline  (0) 2019.04.09
AWS Bastion Host  (0) 2019.03.08
AWS VPC 기초 구성도 및 용어 설명  (0) 2019.03.08
AWS CloudFront(CDN)  (0) 2019.03.08

+ Recent posts