Auto Scaling과 CloudWatch를 이용한 알림 서비스
목표
특징 메트릭이 임계치를 넣을 때, 수평 확장이 자동으로 진행되게 하는 것이 바람직함
Auto Scaling Group (ASG)의 원리를 파악하고 주요 메트릭의 임계치 달성 시점을 경보 형태로 제공해야 함
이를 SNS 및 람다를 통해 구현한다.
최소 요구 사항
- EC2 서버를 ASG를 통해 구성
- CloudWatch 알람을 통해 ASG의 스케일 인/아웃 진행
- 스케일 인/아웃 진행 시 디스코드 알람 전송
- 메트릭을 바탕으로 장애 발생 예상 시점에 디스코드 알람 전송
=> CPU 사용률 (CPUUtilization) 값이 특정 값 이상일 때 경보 발생
시작 템플릿 구성
- 그룹정보
- 원하는 용량 : 1
- 최소 용량 : 1
- 최대 용량 : 1 - 시작 템플릿 구성
- Ubuntu Server (LTS)
- t2.nano
- 기존 혹은 신규 키 페어를 사용함
- 보안그룹 : 인바운드 HTTP 및 SSH 허용
- 사용자 데이터
#!/bin/bash
echo "Hello, World" > index.html
sudo apt update
sudo apt install stress
nohup busybox httpd -f -p 80 &
CloudWatch와 조정 정책
- CloudWatch를 통한 Auto Scaling 그룹 지표 수집 활성화 필요
- Scale-in 조건 : CPU 40% 이하
- Scale-out 조건 : CPU 50% 이상
- (로드 밸런서 설정 X)
아키텍처 구성
- 경보 생성 레퍼런스
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/US_AlarmAtThresholdEC2.html
CPU 사용량 경보 생성 - Amazon CloudWatch
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
- 제공받은 Lambda를 활용한 람다 함수 생성 (Python 3.x 버전)
부하 테스트
% stress -c 1 // CPU 사용량 증가 - top 명령어를 통한 CPU 사용량 확인
#1. Auto Scaling 그룹 생성
- 시작 템플릿 생성
=> ubuntu 20.04 LTS // t2.nano
- 키페어 및 보안그룹 선택 또는 생성
- 고급 세부 정보 -> 사용자 데이터 입력
- 이후 VPC & subnet 설정 + CloudWatch 그룹 지표 수집 활성화
- 그룹 크기 설정 및 생성 마무리
#2. 람다 함수 생성
- python 3.x 확인
- 람다 코드 수정 및 배포
- 구성 -> 환경변수 추가
#3. SNS 생성 및 구독 생성 (람다)
#4. CloudWatch 내 경보 생성
- 생성 -> 지표선택 -> EC2 -> 인스턴스별 지표
- EC2 찾기 + CPUUtilization 선택
- sacle-out, scale-in으로 총 2개 생성
- SNS 연결
- Scale-out, Scale-in 생성
#5. EC2 접속 및 CPU 사용량 증가 시키기
$ stress -c 1
- scale-out 확인 후 stress 명령어 종료
- scale-in 확인
* 세부 CloudWatch 모니터링 요금 정책 링크
https://aws.amazon.com/ko/cloudwatch/pricing/
Amazon CloudWatch 요금 – Amazon Web Services(AWS)
aws.amazon.com