문제 상황은 다음과 같다.

github action, code deploy를 이용하여 asg와 연동 및 blue/green 배포를

그런데 배포 작업이 끝났는데, blue → green으로의 전환 작업이 적용이 안되는, 즉 배포가 적용이 안되는 이슈가 발생했다.

그래서 ec2에 직접 접속하여 인스턴스를 확인해 봤더니, 새로운 인스턴스가 정상적으로 떠 있었다.

심지어 인스턴스 내부로 직접 접속하여, docker 컨테이너 내부 로그도 찍어봤는데, 정상적으로 서버가 뜬 상황이었다.

로컬에서도 서버에는 문제가 없었기에 인프라 쪽에서 발생한 것이라 생각.

nlb에서 라우팅 되고 있는 인스턴스 그룹을 확인한 결과 현재 요청이 기존 인스턴스 그룹으로 라우팅 되고 있다는 점이었다.

그리고, 새로운 인스턴스 그룹의 헬스체크가 비정상으로 표시되고 있었다.

원인은 서버가 뜬 후, 잠시간 기다렸다가 헬스 체크를 해주어야 되는데, 인스턴스가 프로비저닝 된 후 그냥 헬스체크를 바로 진행, 그러고 비정상으로 체크 된 것이었다.

해결 방법으로 인스턴스 프로비저닝 후 Health check grace period을(휴지 기간) 좀 더 늘려줬고,

배포 시간과 트레이드오프하여 해결할 수 있었다.

아마도 예전에 배포시간을 단축한다고 워밍업 시간을 줄여놔서 이런 이슈가 발생한 것 같다.

image.png

[이미지는 퍼옴]