본문 바로가기
Project/3-Tier Architecture

[3-Tier] AWS Cloud Watch를 활용한 Auto Scaling Stress부하 테스트

by ganyga 2024. 3. 19.

해당 글은 아래 첨부한 글과 이어집니다.

 

[3-Tier] AutoScaling 그룹 생성 및 LoadBalancer 라운드 로빈 테스트

EC2 > AutoScliang WEB Auto Scaling 그룹 생성 시작 템플릿 지정 VPC와 가용 영역 지정 로드 밸런서 연결 > 기존 로드 밸런서에 연결 > 로드 밸런서 대상 그룹에서 선택 Elastic Load Balancer 상태 확인 켜기 상태

ganyga.tistory.com


저번시간에 Auto Scaling 그룹을 생성하면서 대상 추적 크기 조정 정책(확대 정책)을 다음과 같이 생성했었음

대상 추적 크기 조정 정책 생성

  • 원하는 최소 용량 : 1
  • 원하는 최대 용량 : 2
  • 대상 추적 크기 조정 정책
  • 대상 값 : 80
  • 인스턴스 워밍업 : 30
  • 평균 CPU 사용률이 80 이상이 되면 최대 용량으로 지정한 2만큼 인스턴스가 스케일 아웃되도록 생성
  • 확대 정책만 생성하려면 축소 비활성화 체크 

 

이번 시간에는 인스턴스에 부하를 줘서 CPU가 80 이상 도달 했을 때, 최대 용량으로 지정한 2만큼 인스턴스가 스케일 아웃되는 것을 확인하고, 다시 특정 임계값을 도달했을 때 인스턴스 최소 용량으로 지정한 1로 줄어드는 것을 확인

 

EC2 > Auto Scaling 그룹 > Ga-WEB-AS

  • 확대 정책만 생성되어 있음을 확인

동적 크기 조정 정책 생성 - 인스턴스 축소 정책

  • 정책 유형 : 단순 크기 조정
  • 크기 조정 정책 이름 : Ga-WAS-CPU-LOW
  • Cloud Watch 경보 생성

 

CloudWatch 경보 생성

지표 선택

 

검색에 CPUUtilization 입력 후 EC2 > Auto Scaling 그룹별 선택

 

Ga-WAS-AS 선택

 

지표 및 조건 지정

  • 기간 : 1분
  • 보다 작음 < 임계값
  • 30

 

알림 제거 누르기

  • 실습 시 과금이 되는 요소를 최소화하기 위해 알림을 제거함

생성 확인

 

다시 동적 크기 조정 정책 생성에 돌아와서 Cloud Watch 경보 새로 고침 후 넣어주기


Cloud Watch

 

Ga-WAS-CPU-LOW 정책(축소 정책) → CPU 임계치가 30 이하면 경보 상태로 바뀌는 것을 확인

  • 데이터 부족에서 경보 상태로 바뀌는 데 좀 걸림
  • 아직 아무것도 안 했을 때(부하를 주지 않은 상태)는 CPU가 30 이하니까 경보 상태가 떠야 함
  • 데이터를 수집하고 그 수집한 데이터가 CPUUtilization < 30 이니까 경보 상태임
  • 만약, stress 부하를 줘서 임계치가 30이 넘어간다면 경보가 정상 상태로 바뀜을 확인하면 됨


Stress 패키지 설치

  • CPU 80을 넘기기 위해 임의로 stress를 주는 패키지를 설치해 부하 테스트하는 과정

WAS-C

  • AutoScaling 그룹을 생성할 때 지정한 시작 템플릿이 가용영역 c에 생성되는 WAS-C이므로 여기에 stress 패키지를 설치해야 함
[root@was-c ~]# amazon-linux-extras install epel
[root@was-c ~]# yum install stress

 

부하 주기 

  • 1개의 CPU 코어를 사용하여 (1200초) 20분 동안 스트레스를 발생시키는 것
  • 5~10분 뒤 경보 확인해 보기
  • 너무 오래 걸리는 거 같으면, 확대 정책에서 CPU 대상 값을 80에서 50으로 낮추고 확인하면 됨
[root@was-c ~]# stress --cpu 1 --timeout 1200
stress: info: [30912] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

 

Cloud Watch에서 경보 확인하기

stress 주기 전 인스턴스 5대

 

확대 정책

  • TargetTracking CPUUtilization > 80 : 경보 상태 → 인스턴스가 늘어남
  • TargetTracking CPUUtilization < 80 : 정상 상태

인스턴스 WAS-C가 1대에서 2대로 늘어남을 확인

 

축소 정책

stress 줬던 것을 control + C 해서 중지하고, 10분 정도 뒤에 확인하기

[root@was-c ~]# stress --cpu 1 --timeout 1200
stress: info: [30912] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
^C

부하를 중지하면 확대 정책은 정상 상태가 되고, 축소 정책은 경보 상태가 됨 → 인스턴스가 줄어듦

  • CPUUtilization < 30 경보 상태 → 인스턴스가 줄어듦
  • CPUUtilization > 30 정상 상태 → 인스턴스가 확장되고 있는 상태

인스턴스가 줄어듦

 

 

경보가 울린다는 것은 어떤 행동을 취함을 의미, 확대하거나 축소하거나