1. 개요
- Auto Scaling은 사용자가 미리 정의한 일정 또는 리소스 부하율에 따라 서버를 자동으로 생성하거나 삭제하고, 이 결과를 사용자에게 전달해줌으로써, 서버 사용율에 따라 자원규모를 유연하게 관리하여 고가용성 확보 및 안정적인 서비스를 제공합니다.
- Auto Scaling에 특정 정책을 설정하면 정책에 따라 Scale-out, in을 합니다.
- 필요한 경우에는 서버를 2대에서 수백, 수만대로 스케일 아웃이 가능합니다.
- 위의 특징으로 인해 서버의 과부하, 장애 등과 같이 서비스 불능 상황 발생시 유리합니다.
- 온 프레미스상에서 서버증설을 위한 작업은 까다로운 반면 클라우드 환경에서는 Auto Scaling을 통해 정의한 내용에 따라 자동으로 증설 및 감소가 가능합니다.
2. 구성도
2.1 기본 구성
- VPC
- Subnet
- EC2 인스턴스 (Web Server)
- ALB 구성
2.2 기본 흐름 설명
- Client가 도메인 주소나 ALB DNS주소를 웹 브라우저에 입력 시 오토스케일링에 포함된 서버로 요청을 분배합니다.
- 오토스케일링 그룹에 포함된 인스턴스(서버)들은 상황에 따라 Auto Scaling 정책에 따라 Scaling-out, in을 합니다.
3. Auto Scaling 설정
3.1 커스텀 이미지 생성
- Auto Scaling을 사용하기 위해서 기본적인 이미지 템플릿을 구성합니다.
- 이미지 템플릿에 구성할 패키지, 구성 정보들을 미리 구성하여 더 빠른 확장성을 제공할 수 있습니다.
3.1.1 이미지 생성
EC2 > 인스턴스 선택 > 이미지 및 템플릿 > 이미지 생성 메뉴로 이동합니다.
템플릿의 이름과 이미지의 기본 볼륨 유형 및 크기를 지정합니다.
3.1.2 생성된 AMI 확인
EC2 > AMI > 내소유 메뉴로 이동합니다.
3.2 Auto Scaling 시작 구성
3.2.1 시작 구성 생성
이름: 임의값 지정 합니다.
AMI: 앞서 생성한 AMI 지정 합니다. ( Auto Scaling을 통해 관리할 EC2 인스턴스 AMI지정)
보안그룹: HTTP 80번에 대한 트래픽 오픈합니다.
키 페어: Auto Scaling을 통하여 생성 된 EC2에 접속할 키 페어 정보를 선택합니다.
3.2.2 생성 확인
EC2 > Auto Scaling > 시작 구성 메뉴로 이동합니ㅏㄷ.
3.3 Auto Scaling 그룹 생성
3.3.1 Auto Scaling 그룹 생성
EC2 > Auto Scaling > 시작 구성 > 작업 > Auto Scaling 그룹 생성 메뉴로 이동합니다.
Auto Scaling 그룹 이름: 임의 값을 설정합니다.
시작 구성: 생성한 시작 구성 선택합니다.
VPC , 가용영역 및 서브넷: 정의 조건에 따라 Auto Scaling을 통해 생성 될 EC2 인스턴스가 위치할 VPC 가용영역 및 서브넷을 지정합니다.
로드 밸런싱: ALB에서 트래픽을 분산할 수 있도록 설정할 것이기 때문에 기존 로드밸런서에 연결 / 선택, 해당 사항이 없을 경우 로드 밸런서 없음을 선택 합니다.
기존 로드 밸런서 대상 그룹: ALB의 대상 그룹 즉 해당 서버가 포함되어있는 대상 그룹 선택합니다.
상태 확인 유형: 상태 확인은 EC2, ALB 둘 다 가능 상황에 따라 설정합니다.
유예 기간: 첫번 째 상태 확인을 수행하기까지의 시간입니다.
모니터링: 모니터링 수집 활성화 체크하여 모니터링 할 수 있습니다.
그룹크기: 시작시 인스턴스의 개수, 최소 인스턴스의 개수, 최대 인스턴스의 개수를 지정합니다.
원하는 용량은 최소 용량보다 적을 수 없으며 최대 용량보다 클 수 없습니다.
알림추가: 가이드에서는 미설정 하였지만 SNS 알림여부는 필요에따라 설정 가능합니다.
태그 추가: 구분이 가능하도록 태그를 추가합니다.
4. 결과
4.1 Auto Scaling 확인
4.1.1 Auto Scaling 그룹 작업 기록 확인
EC2 > Auto Scaling 그룹 > 활동, 인스턴스 관리, 모니터링 메뉴로 이동합니다.
Auto Scaling을 통해 생성된 인스턴스에 대하여 상태 등의 작업 기록을 확인 가능합니다.
인스턴스 관리를 통해 상태확인 가능합니다.
4.1.2 인스턴스 확인
EC2 > 인스턴스
Auto Scaling의 최소 용량 개수인 2개에 맞춰 인스턴스가 자동으로 생성 된 것을 확인할 수 있습니다.
4.1.3 대상 그룹 확인
EC2 > 로드밸런싱 > 대상 그룹
Auto Scaling을 통해 생성 된 EC2 인스턴스들이 자동으로 대상 그룹에 포함되어 있음을 확인합니다.
상태 확인: healthy와 unhealthy로 나타납니다.
4.1.4 웹페이지 확인
4.2 Auto Scaling 정책 테스트
Scale Out: Scale Up으로는 한계가 있기에 컴퓨팅 성능 상승보다는 컴퓨팅 수를 늘리는 것을 의미합니다.
Scale In: 작업이 완료 되어 더 이상 필요없는 Scale Out으로 늘렸던 컴퓨팅 수를 줄이는 것을 의미합니다.
4.2.1 Auto Scaling 정책 설정
EC2 > Auto Scaling 그룹 > 대상 선택 > 자동 크기 조정 > 동적 크기 조정 정책 생성 메뉴로 이동합니다.
정책유형: 단계 조정
조정 정책 이름: SCALE-OUT
CloudWatch 경보: 4.2.3 생성법 확인
정책유형: 단계 조정
조정 정책 이름: SCALE-IN
CloudWatch 경보: 4.2.3 생성법 확인
4.2.2 SNS 알림 설정
EC2 > Auto Scaling그룹 > Auto Scaling 그룹 이름 체크 > 활동 > 알림생성 메뉴로 이동합니다.
Scale Out과 Scale In에 대한 알림 설정 입니다.
아래 캡처 화면을 참고하여 SCALE-OUT 알림 생성을 진행합니다.
아래 캡처 화면을 참고하여 SCALE-IN 알림 생성을 진행합니다.
4.2.3 Auto Scaling - Cloud Watch 경보 생성
CloudWatch > 경보 > 경보 생성 > 지표선택 메뉴로 이동합니다.
CPU검색 후 Auto Scaling 그룹별 선택, CPUUtiliztion 선택합니다.
임계값 지정 후 다음클릭 합니다.
SNS알림은 기존에 설정해 두었던 SCALE-OUT으로 설정합니다.
이름 및 설명 추가 후 생성
경보이름: 임의 값 지정
Scale in에 대한 경보도 설정합니다.
임계값: ≥30
4.2.4 스케일아웃
인스턴스에 부하를 주어 Scale out 되는 것을 확인 합니다.
아래의 명령어를 통해 cpu 사용량을 늘릴 수 있습니다.
yes > /dev/null &
정책에 설정해준 용량에 따라 Scale Out, 인스턴스 개수가 늘어나는 것을 확인할 수 있습니다.
CloudWatch 상태 또한 경보 상태로 변경이 된 것을 확인할 수 있습니다.
4.2.5 스케일인
Scale-in 테스트를 위해 실행시켰던 yes 프로세스를 종료 후 Scale-in이 되는지 확인합니다.
CPU사용률이 줄어들자 최소용량인 2로 Scale-in이 되는 것을 확인할 수 있습니다.
'AWS' 카테고리의 다른 글
[AWS] Control Tower란? (0) | 2023.11.13 |
---|---|
[AWS] Control Tower AWS Marketplace Solutions (0) | 2023.11.11 |
[AWS] Transit Gateway 구성 가이드 (0) | 2023.11.03 |
[AWS] IAM 계정 생성 (0) | 2023.09.05 |
[AWS] GWLB 구성 가이드 with Terraform(2) (0) | 2023.08.31 |