Auto Scaling + CloudWatch를 이용한 알림
갑작스러운 트래픽 증가에 대응하기 위해서는, 서버의 주요 메트릭을 모니터링하고, 특정 메트릭이 임계치를 넘을 때, 수평 확장이 자동으로 진행되게 하는 것이 바람직합니다. 우리는 이미 앞서 AWS를 통해 이러한 서비스를 제공하는 Auto Scaling Group (이하 ASG)에 대해 배웠습니다. 스프린트를 통해 ASG의 원리를 익히고, 메트릭에 따른 스케일링 정책을 세우고 모니터링을 통해 정책이 적용되는지 확인해봅시다.
추가적으로 모니터링을 통해 모든 지표를 항상 관찰할 수 없으므로, 주요 메트릭의 임계치, 또는 장애 발생 예상 시점(예를 들어, CPU 사용량이 80%에 도달할 경우)을 경보의 형태로 제공해야 합니다. 이를 기존에 익혔던 SNS 및 람다를 통해 구현해봅시다.
Bare Minimum Requirement
- EC2 서버를 ASG를 통해 구성합니다. 구성은 다음을 따릅니다.
- CloudWatch 알람을 통해 ASG의 스케일 인/아웃을 진행합니다.
- 스케일 인/아웃이 진행될 때 디스코드에 알림을 보냅니다.
- 메트릭을 바탕으로 장애 발생 예상 시점에 디스코드에 알림을 보냅니다.
- CPU 사용률(CPUUtilization) 값이 특정 값 이상일 때 경보가 발생하게 하세요
Getting Started
시작 템플릿 구성
ASG를 위한 시작 템플릿 구성은 다음을 따릅니다.
- 그룹 정보
- 원하는 용량: 1
- 최소 용량: 1
- 최대 용량: 3
- 시작 템플릿은 다음 구성을 따릅니다.
- 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% 이상
기타
- 로드 밸런서는 설정하지 않아도 좋습니다.

먼저, 오토스케일링그룹부터 만든다.
과거에는 시작구성을 만들어 그걸 기준으로 오토스케일링그룹을 만들었지만 시작구성은 변경사항이 생기면 처음부터 다시 만들어야하는 문제점이 있었다. 그 해결법으로 시작 템플릿이 나왔고 시작 템플릿은 변경사항을 버전으로 관리할 수 있어 유용하다.

위 조건에 맞게 시작 템플릿을 구성했다. 여기서 고급 세부 정보로 들어가면 유저 데이터를 넣을 수 있으니 꼭 까먹지말고 넣자.
그 후 오토 스케일링 그룹을 만들어보자.

오토 스케일링 그룹 또한 위 요구사항에 맞춰 만들면 된다.
이제 클라우드워치에 들어가 경보를 만들어보자.
만드는 방법은 클라우드워치에 들어가 모든경보 - 경보 생성을 하면 된다.
지표는 ec2에 auto scaling 그룹별에 들어가 아까 만든 오토 스케일링 그룹에 CPUUtilitzation을 선택하면 된다.

그 후 조건에서 CPUUtilitzation이 50이상이면 경보가 울리게 설정했다.

마찬가지로 스케일 in도 40보다 작거나 같게 만들어준다.

그럼 이렇게 만들어지는걸 볼 수 있다. 그럼 이제 오토스케일링 그룹에서 크기 조정 정책을 설정해보자.
오토스케일링그룹에 들어가 자동 크기 조정에 들어가서 동적 크기 조정 정책을 만들면 된다.

위처럼 만들면 경보가 울리면 정책이 실행이 되어 스케일인은 하나를 제거하고 스케일 아웃은 하나를 늘린다.
그럼 이제 디스코드 웹훅을 보낼 람다를 만들고 sns랑 이어주면 끝이다.
코드는 주여진 것을 사용하면 되고 파이썬으로 만들어져서 람다도 파이선으로 만들어 준다.
그 후 환경변수 구성에서 hook url을 넣어주고 트리거로 sns을 이어준다.
그리고 ec2에 들어가 아래 명령어로 부하를 줘 경보를 울리고 스케일링 아웃을 하고 디스코드로 알람이 오는 지 확인해보면 된다.
stress -c 1


이렇게 50퍼를 넘기면 경보가 울려 자동으로 스케일 아웃이 된다.

디스코드에도 알람이 오는 것을 확인할 수 있으며 물론 반대로 40퍼 아래로 떨어지면 스케일 인이 되며 ec2가 삭제되고 알림이 오는 지를 확인 할 수 있다.


'TIL' 카테고리의 다른 글
| 65일차 서비스 모니터링 (0) | 2022.07.18 |
|---|---|
| 64일차 서비스 모니터링 (0) | 2022.07.16 |
| 62일차 서비스 모니터링 (0) | 2022.07.13 |
| 57일차 컨테이너 오케스트레이션 (0) | 2022.07.13 |
| 56일차 컨테이너 오케스트레이션 (0) | 2022.07.05 |