본문 바로가기
AWS

[AWS] Auto Scaling 차근 차근 따라하기 (고급)(2) - 일시 중지된 프로세스

by chan10 2023. 3. 17.

일시 중지된 프로세스

옵션이 적용되지 않은 상태에서 EC2 인스턴스를 중지해보고 이후 테스트 결과와 어떤 차이가 있는지 보겠습니다.

 

현재 인스턴스 상황으로 Auto Scaling에 의해 2대의 인스턴스가 관리되고 있습니다.

 

Auto Scaling 관리 대상 중 하나의 인스턴스를 중지해보겠습니다.

 

정상적으로 인스턴스가 종료되었고 Auto Scaling에서 확인을 해보면

 

인스턴스가 중지 된 것을 감지하고 헬스체크가 실패되어 비정상으로 판단하게 됩니다. 그에 따라 중지된 인스턴스는 다른 인스턴스로 교체되었습니다.

 

EC2 인스턴스 목록을 확인해보면 기존 인스턴스는 수동으로 중지를 시켰지만 Auto Scaling이 헬스 체크 실패로 인해 비정상으로 판단하여 중지한 인스턴스를 종료시켰고 새로운 인스턴스를 생성하였습니다.

 

Health Check 테스트

Health Check 프로세스는 Amazon EC2 또는 Elastic Load Balancing에서 해당 인스턴스가 정상 상태가 아니라고 Auto Scaling에 알리는 경우, 인스턴스의 상태를 확인하고 인스턴스에 비정상(Unhealthy) 표시를 합니다.

 

ELB의 헬스 체크 상태를 감지하기 위해 ‘상태확인 - ELB’를 체크합니다.

Health Check 프로세스를 일시 중지하기 위해 고급 구성 - 일시 중지된 프로세스 - Health Check’를 선택합니다.

 

헬스체크 실패를 위해 특정 인스턴스에 접속하여 서비스를 중지합니다.

 

Target Group에서 인스턴스 상태를 확인 시 Health checks failed로 헬스 체크가 실패되었습니다.

 

그러나 Auto ScalingHealth Check 프로세스를 일시 중지했기에 ELB가 보내는 헬스 체크 실패 알림에 대해 인스턴스의 정상 유무를 판단하지 않습니다.

따라서 ‘상태확인 - ELB’를 체크했음에도 불구하고 Health Check 프로세스를 일시 중지했기에 Auto Scaling 해당 인스턴스를 정상으로 판단하여 Auto Scaling을 진행하지 않습니다.

 

ELB 헬스 체크 뿐만 아니라 Auto Scaling에서 EC2에 대한 Health Check도 중지되었기에 인스턴스를 중지하여도 이를 감지하지 못하고 Healthy상태로 유지하게 됩니다.

 

Terminate 테스트

Terminate 프로세스는 Auto Scaling 그룹이 Scale-in, Auto Scaling 최대 수명 기간 초과, 헬스 체크 실패로 인스턴스가 종료되는 경우와 같은

다른 이유로 인스턴스를 종료하도록 선택할 때 Auto Scaling 그룹에서 인스턴스를 제거하는 프로세스 입니다.

그렇기에 Launch, Terminate 프로세스를 일시 중지 할 경우 다른 프로세스가 제대로 동작하지 않을 수 있기에 특별한 경우가 아니면 해당 프로세스를 중지하는 것은 배제해야 합니다.

 

Terminate 프로세스를 일시 중지하기 위해 ‘고급 구성 - 일시 중지된 프로세스 - Terminate’를 선택합니다.

 

인스턴스를 중지 시켜 Auto Scaling 헬스체크 실패 시 동작을 보려고 합니다.

기존 동작 과정은 인스턴스 중지 -> Auto Scaling 감지 (Unhealthy) -> 비정상으로 판단하여 중지된 인스턴스를 종료 시키고 다른 인스턴스로 교체했습니다.

인스턴스를 선택해 중지시켜 보겠습니다. (인스턴스 상태 -> 인스턴스 중지)

 

인스턴스가 정상적으로 중지되었고 Auto Scaling에서도 이를 감지하여 Unhealthy 상태가 되었습니다.

Unhealthy상태가 되면 해당 인스턴스를 종료시키고 교체가 되었으나 Terminate 프로세스를 종료했기에 인스턴스 비정상이 감지되어도 종료시키지 않습니다.

Auto Scaling의 원하는 인스턴스 용량은 2개로 설정했기에 인스턴스 갯수는 일치해 Scale-out이 실행되지 않습니다.

중지한 인스턴스 종료해보기

이렇게 Terminate 프로세스를 중지 시키면 Auto Scaling 동작이 정상적으로 수행되지 않을 수 있으니 주의해야합니다.

그런데 중지한 인스턴스를 종료 시키면 Auto Scaling 동작이 다시 이루어질까 하는 궁금증이 생겨 종료해 봤습니다.

 

인스턴스는 종료되어 없어졌지만 Auto Scaling에서는 해당 인스턴스가 제거되는 것이 아닌 Unhealthy 상태를 유지하고 있었습니다.

 

시간이 지나도 해당 인스턴스가 제거되지 않자 해당 인스턴스를 Auto Scaling에서 분리시켰습니다.

 

분리 후 비정상 인스턴스는 제거 되었고 잠시 후 원하는 용량 설정에 인스턴스 개수를 2개로 맞추기 위해 하나의 인스턴스가 새로 생성되었습니다.

 

타켓 그룹도 새로운 인스턴스가 등록되어 다시 정상적인 Auto Scaling동작을 수행하는 것을 볼 수 있습니다.

이렇듯 프로세스를 중지하면 Auto Scaling동작이 원활하지 않을 수 있어 주의가 필요합니다.