-
AWS auto scaling 을 사용하기 위해 알아두면 좋을 내용들AWS 2016. 7. 17. 17:00
간혹 auto scaling 을 사용하면 서비스 중단없이 인프라 자원이 확장되었다 축소되었다 하는걸로 환상을 가지고 있는 사람들이 종종 있다.
AWS 에서 제공하는 auto scaling 을 인프라 자원에 대한 확장이고 서비스는 그들의 관심사가 아니다
서비스를 무중단으로 auto scaling 하는 것은 운영자의 몫..
관련하여 auto scaling 에 대한 명확한 개념 정리와 최대한 서비스를 중단시키지 않는 방법은 무엇이 있는지 차근차근 확인해보려고 한다.
일단 이번에는 auto scaling 의 개념과 사용방법에 대해서 먼저 알아보았다.
1. Auto Scaling Lifecycle
auto scaling group 의 EC2 인스턴스는 다른 EC2 인스턴스의와 다른 경로 또는 수명주기를 가지고 있음
auto scaling group 설정에 따라 인스턴스를 시작하고 서비스에 추가되었을 때 수명주기가 시작됨.
인스턴스를 종료 할 때 라이프 사이클이 종료되거나 auto scaling group 설정에 따라 서비스에서 인스턴스를 종료할 수 있음
1) Auto Scaling : Auto Scaling은 사용자가 정의한 정책, 일정 및 상태 확인에 따라 자동으로 Amazon EC2 인스턴스를 시작하거나 종료하도록 설계된 웹 서비스입니다.
auto scaling 룰 자체를 주는 것에 대해서는 무료이지만 인스턴스 사용 요금은 내야함
2) Auto Scaling types
- Vertical Scaling : 인스턴스 사이즈 변경, EBS capacity 증가
- horizontal Scaling : 인스턴스를 추가하거나 삭제, ELB 활용
3) auto scaling 시나리오
- auto scaling group 에 최소/최대 운영할 인스턴스 개수 정의
- 언제 scaling 할지에 대한 정책 설정 (scaling plan)
- cloudwatch 를 통해 사용량 데이터 수집 및 scaling 시도
- 지정한 spot 에 scaling group 에 지정된 형태로 인스턴스 확장
4) 자원 사용량 측정
- CloudWatch : 다양한 항목에 대해 사용량을 모니터링 하고 관리할 수 있는 서비스,
알람을 설정하고 측정되는 데이터를 기반으로 어떠한 액션을 취할 수 있도록 알람을 설정할 수 있다.
- CloudWatch Alarm : CloudWatch에서 알람은 특정 기간 동안 하나의 메트릭을 모니터링하는 것이며 메트릭은 모니터링할 대상을 뜻함 (ex. CPU Usage , Network In traffic 등)
- 모니터링 항목에 대해 지정한 범위 안의 값이 변경되었을 때 알람이 상태를 변경함.
5) Auto scaling group 계획 관리
- 인스턴스를 생성하고 구성하는데 얼마나 시간이 소요되는지?
- 어떠한 모니터링 항목이 어플리케이션의 성능을 측정하는데 적정한지?
- 기존의 어떠한 자원 (EC2 인스턴스나 AMIS) 는 오토스케일링 그룹의 일부로 사용할 수 있음
- 몇개의 AZ 에 auto scaling group 이 확장시킬 것인지?
- 인스턴스를 auto scaling 한 후 application 기동을 수행할 역할 지정
6) auto scaling group 에서의 부하 분산
- 들어오는 웹 트래픽에 대해서 자동으로 분산해야 함
- 어플리케이션에 접근하기 위한 싱글 포인트
- 로드밸러서와 EC2 인스턴스의 사용량 데이터는 CloudWatch 로 보내짐
- 어플리케이션을 확장하는데 ELB 모니터링 항목을 사용할 수 있음
2. Auto Scaling Lifecycle Hooks
- Auto Scaling lifecycle hooks 는 사용자가 지정한 액션을 오토스케일링이 수행되거나 중단될 때 수행할 수 있게 한다.
관련하여 필요한 요소들은 아래와 같다.
1) bootstrapping 이란?
- bootstrapping 을 통해 수행할 수 있는 일들
. 최근의 software 를 설치
. S3 로부터 data copy
. DNS 에 등록
. 서비스 기동
. 패키지 업데이트
. 리부팅 수행
. 포트 80 오픈 (ELB 에 등록, 디바이스 마운트)
- bootstrapping 도구
. 인스턴스에 포함된 스크립트 (Bash, Powershell)
. 설정 관리 도구 (chef, Puppet)
. Amazon Opsworks
2) EC2 Metadata 와 UserData
- 모든 EC2 인스턴스는 로컬 인스턴스의 metadata 와 userdata 서비스에 접근할 수 있다.
- metadata : 인스턴스에 대해 변경할 수 없는 정보
. 인스턴스에서 http://169.254.169.254/latest/meta-data/ 로 확인할 수 있다.
- Metadata 를 통해 Hostname, AMI ID, Instance ID, Public/Private DNS, Availability Zone 등을 검색할 수 있음
- 인스턴스 생성 시 text 16KB 까지 사용 가능
- text 는 인스턴스에서 설정작업을 위해 스크립트로 parsing 할 수 있어야 한다.
- Cloudinit 은 인스턴스 최초 부팅 시 UserData 를 수행할 수 있다.
- Cloudinit 은 Amazon Linux, Ubuntu, RHEL AMI 에 설치되어 있다. (각 플랫폼 별 repo 를 통해 설치할 수 있음)
- EC2Config 는 Windows Server AMIs 에 설치되어 있다.
- Userdata 를 통해 Apache 나 MySQL 등의 패키지를 설치하고 EIP 를 연결할 수 있다.
3. 마무리
1) 하나의 Autoscaling 그룹으로 모든걸 만족시킬 수 없다.
- 적절한 모니터링 항목을 선택할 것
. CPU Usage, Queue Depth, 현재 유저의 수 등..
- 너무 공격적으로 확장하지 말 것
. Over provisioning 을 비용을 증가시킴
. 탄력적인 확장 : scaling up 한 이후에 너무 빠른 시간안에 scale back 하게 되면 오히려 비용이 증가됨
- 너무 소극적으로 확장하지 말것
. 서비스 성능이 저하될 수 있음
. 용량 부족으로 서비스 중단될 수 있음
- 너무 성급하게 확장하고 천천히 축소하는 것을 지양해야 함
2) 추가된 기능 (2015년 ;;)
- auto scaling group 안에 인스턴스를 추가/제외 할 수 있음
- 트러블 슈팅을 위해 인스턴스를 스탠바이 상태로 유지할 수 있음
- 소프트웨어를 설치하고 로그를 검색하기 위핸 인스턴스를 펜딩 상태로 유지할 수 있음
- 기동중인 인스턴스의 launch configuration 을 기반으로 auto scaling group 을 생성할 수 있음
위 내용은 아래 링크의 문서를 기반으로 스터디 한 내용입니다.
http://www.slideshare.net/awskorea/kr-webinar-2015-autoscaling-masterclass
반응형'AWS' 카테고리의 다른 글
[aws summit seoul 2023] Amazon EKS, 중요한 건 꺾이지 않는 안정성 (1) 2024.03.18 [aws summit seoul 2023] 12가지 디자인 패턴으로 알아보는 클라우드 네이티브 마이크로서비스 아키텍처 (0) 2024.03.15 [aws summit seoul 2023] 삼성전자/쿠팡의 대규모 트래픽 처리를 위한 클라우드 네이티브 데이터베이스 활용 (0) 2024.03.04 AWS cloudformation , codedeploy 를 활용한 프로비저닝 관리 (0) 2016.08.03 Auto Scaling 사용 관련하여 알아두어야 할 것 2 (0) 2016.08.03