AWS

Auto Scaling(오토 스케일링)에 관해 좀 더 자세히 알아보기 (2)

S_N_Y 2024. 6. 13. 20:17


오토 스케일링 정리하면서 나머지 조금 남은 부분이 있어서 짧은 글로 정리해보려고 한다.

 

#0 Auto Scaling group 내의 스케일링 프로세스들에 대해

✅ Launch(런치) 프로세스 : EC2 인스턴스를 그룹으로 추가해서 용량을 증가시키는 프로세스

✅ Terminate 프로세스 : 그룹으로부터 EC2 인스턴스를 제거해 용량을 줄이는 프로세스

✅ Health Check 프로세스 : 인스턴스의 상태를 점검하는 프로세스

✅ ReplaceUnhealthy 프로세스 : 비정상 인스턴스를 종료하고 재생성하는 프로세스

✅ AZRebalance 프로세스 : ASG를 확인해 EC2 인스턴스의 개수가 전체 가용 영역에 걸쳐 동등라게 균형을 이루고 있는지를 점검하는 프로세스

✅ AlarmNotification 프로세스 : 스케일링 관련 CloudWatch 알림을 받는 프로세스

✅ ScheduledActions 프로세스 : 스케일링을 위해 생성한 예약 동작을 수행하는 프로세스

✅ AddToLoadBalancer 프로세스 : ASG로부터 원하는 로드 밸런서나 해당 로드 밸런서의 대상 그룹으로 인스턴스를 추가해주는 프로세스

✅ InstanceRefresh 프로세스 : 모든 인스턴스를 종료하고 새로운 인스턴스를 생성함으로써 인스턴스 새로고침을 수행해주는 프로세스

 

=> ASG의 장점은 모든 프로세스를 유예할 수 있다는 점인데 예를 들어 문제 해결 등의 이유로 인해서 비정상 인스턴스들을 교체하는 것을 원치 않는 경우라면 비정상 프로세스의 교체를 유예한 뒤, 문제가 된 인스턴스를 찾기 위해 디버깅을 실행할 수 있다.

 

#1 Auto Scaling의 Health Check

ASG를 위해서는 당연하게 Health Check가 올바르게 수행되어야 하고 여기에 다양한 Health Check가 존재한다.

 

1. EC2 State Checks

2. ELB Health Checks(HTTP) : ASG 앞에 ELB가 있는 경우에 사용되는 ELB Health Check..!(HTTP 기반)

 

만약 인스턴스가 비정상인 것으로 판명이 되면 그 이유가 EC2 나 ELB Health Check의 결과가 안 좋게 나왔기 때문이다.

=> 그러면 ASG는 비정상 인스턴스를 종료하고 새로운 인스턴스를 시작하게 된다.
( Health Check 결과가 나쁜 경우에 ASG가 마구 화를 내면서 인스턴스들을 종료하기 시작하는 것..😡)

 따라서 Health Check는 단순하게 진행되어야 하고 인스턴스의 상태에 대한 정확한 점검이 이루어져야 한다.

 

➕) 예시

- Good Health Check일 때 :

ASG가 EC2 인스턴스 상에서 /health-server라는 라우트를 확인하면 서버가 " 나 살아있고 제대로 작동 중이야~"라고 응답하는 것이다.

- Bad Health Check일 때 :

ASG이 무거운 작업을 진행하는 라우트를 확인할 때, 예를 들어 EC2 인스턴스의 /number-customers 라우트를 확인하려면 EC2 인스턴스가 데이터베이스 호출을 통해 모든 고객의 수를 세고, 데이터베이스가 응답할 때까지 대기한 뒤, ASG이 응답을 받는다.

데이터베이스가 실패하거나 무언가가 오래 걸리는 경우에는 ASG가 EC2 인스턴스를 비정상인 것으로 판단해 종료해버리는 것이다..!