- AutoScaling Group의 AutoScaling Policy에 의해, 또는 AutoScaling Group의 Desired 수치를 수동으로 증가시키면 새 인스턴스 생성이 시작됨
- 약 10초 후 AWS > EC2 > Auto Scaling > Auto Scaling Groups > Activity History 탭에 새 인스턴스의 id가 표시되며 'Not yet in Service'라고 표시됨
- 약 70초 후 'Not yet in Service'가 'Successful'로 변경되며 인스턴스는 실제 구동할 수 있는 상태가 되고 터미널로도 접근 가능해짐
Successful
은 인스턴스의 네트워크 서비스 등 기본적인 로딩이 완료되었음을 의미할 뿐, 인스턴스 상에 구성될 사용자 애플리케이션까지 구동할 수 있는 상태를 의미하는 것은 아님- Health Check 방식을 의미하는
Health Check Type
은EC2
,ELB
,Custom Health check
이렇게 3가지이며,EC2
Health Check가 기본값이다. 즉,EC2
의 Status Check 결과를 기준으로 AutoScaling에서의 인스턴스 Healthy 여부를 판단한다는 의미. EC2
Status Check 주기는 1분이고,- 실제
Successful
로 전환되는 시기도Not yet in Service
로 표시된 후 대략 1분 이후인 걸로봐서 AutoScaling Group에서 설정한 Health Check의 결과를 기준으로Successful
로 전환되는 것으로 추정 - 새로 로딩되는 인스턴스는 AutoScaling Group에서 설정한
Health Check Grace Period
기간인 300초 동안은 Status Check의 결과가 OK가 아니더라도 AutoScaling Group에서 제외되지 않음
Successful
로 전환됨과 거의 동시에, 즉Health Check Grace Period
가 만료되기 전에 AWS > EC2 > Load Balancing > Load Balancers > instances 탭에서 새 인스턴스가OutOfService
상태로 목록에 표시됨- 즉
EC2
의 Statuc Check 결과를 기준으로 인스턴스 자체의 로딩은 성공했지만,ELB
의 Health Check 까지 통과한 것은 아니므로,ELB
의 관점에서는 아직OutOfService
인 상태
- 즉
- 터미널로 접근해서 nginx의 access.log를 확인하면,
Health Check Grace Period
가 만료되기 전부터 이미ELB
에 설정한 주기(10초)와 대상 경로(/
)로ELB
가 Health Check를 시도하고 있음 /
가 사용자 애플리케이션에 바인딩 되어 있는 경우, 사용자 애플리케이션은 아직 로딩 완료된 상태가 아니므로,ELB
의 Health Check는HTTP 502
를 반환하며ELB
의 Health Check 실패ELB
의 Health Check가ELB
설정의Unhealthy Threshold
에 설정한 회수 이상 지속되면ELB
는 새 인스턴스를Unhealthy Host
로 판정- 이 시기에 발생하는
HTTP 502
에러는, 새 인스턴스가 ELB에InService
상태가 아니므로,ELB
의 5xx 에러 집계 화면에는 카운트되지 않음
- 사용자 애플리케이션의 로딩이 완료되면 ELB의 Health Check는
HTTP 200
을 반환받으며 성공 ELB
Health Check가ELB
설정의Healthy Threshold
로 설정한 회수 이상 성공하면 인스턴스가 Healthy 한 것으로 간주되고InService
상태가 되며ELB
가 실제 트래픽을 새 인스턴스에 전달하기 시작