nginx 클러스터와 spring 클러스터를 연결함에 있어 문제가 발생하였다.
컨테이너를 직접 연결하였을 땐 접속이 잘 되었다 → 즉, 스프링부트에는 문제가 없음
1️⃣ 그래서 nginx 설정을 변경하였다.
server {
resolver 10.0.0.2 valid=5s;
location / {
set $target "{nlb DNS 주소}";
proxy_pass http://$target;
proxy_set_header Host $target;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
[참고] https://okky.kr/article/405601 , https://circlee7.medium.com/nginx-proxy-pass-의-aws-elb-연결-설정-f0c4b792ef71
그러자 nginx에러 LB로 연결이 잘 되는 것을 확인할 수 있었다.
그러나 여전히 접속은 안됨..
또 다른 문제 발생! 스프링 ECS 컨테이너들이 자꾸만 알 수 없는 이유로 종료되어버리는 것이다. [ionShutdownHook]
2️⃣ 스프링 컨테이너 인바운드 규칙 변경 → NLB 추가
nlb는 alb와 다르게 생성 시 보안 그룹이 따로 필요하지 않다.
그래서 인바운드 규칙 설정이 따로 필요 없다고 생각하였으나 그게 아니었던 것!
nlb는 연결되는 스프링 단에서 보안그룹 설정이 따로 필요하였다.
[참고] https://sarc.io/index.php/aws/1583-tip-aws-network-load-balancer-security-group-nlb-sg , https://aws.amazon.com/ko/premiumsupport/knowledge-center/ecs-fargate-health-check-failures/