[AWS/EB] 빈스톡 상태 오류 원인 찾기(EB HealthChecker path 수정)
입사 초기에 사수님께 빈스톡 워닝이 왜 뜨는지 여쭤봤었는데 신경 안 써도 된다고 하셔서 어플리케이션은 정상 작동하니까 진짜 신경 안 쓰고 있었는데
그 사수님께서 갑자기 빈스톡 워닝 원인을 좀 찾아보라고 하셔서 찾아보았습니다.
상태 원인을 보면 몇 가지가 있었습니다.
- 100.0 % of the requests are failing with HTTP 5xx.
- Process default has been unhealthy for 95 days (Target.ResponseCodeMismatch).
- 93 % of memory is in use.
오늘은 1번 원인에 대해 알아보고 해결해보겠습니다.
1번은 빈스톡에서 자체적으로 제공해주는 health checker에서 보내주는 알림입니다.
해당 워닝이 뜬 서버의 nginx 로그를 보시면 이렇게 주기적으로 GET / 요청이 들어오는 걸 보실 수 있는데 이게 바로 EB-HealthChecker입니다.
위 어플리케이션에는 / 요청을 받아줄 수 없어서 해당 요청을 처리할 수 있는 GET / API를 하나 만들까 했는데
(기존 저희 회사에도 일부러 해당 요청을 처리할 healthController를 둔 어플리케이션도 있더라구요...! 이걸 왜 이제 봤나하고 이마를 탁!쳤습니다.)
저희는 어플리케이션에서 actuator를 사용하고 있었기 때문에 actuator/health를 이용하면 좋을 것 같다고 생각했습니다.
그러려면 EB health checker의 요청 url을 변경했어야 했는데 당연히 방법이 있더라구요.
https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html
Configure health checks for your Classic Load Balancer - Elastic Load Balancing
Configure health checks for your Classic Load Balancer Your Classic Load Balancer periodically sends requests to its registered instances to test their status. These tests are called health checks. The status of the instances that are healthy at the time o
docs.aws.amazon.com
EC2 -> 로드밸런싱 - 대상 그룹 -> 그룹 선택 -> health check -> edit -> health check path 수정해주세요.
이제 건강한 서버가 되었습니다.