
최근 ECS Anywhere를 통해 하이브리드 클라우드를 구축하는 과정에서 겪었던 ALB의 온프레미스 라우팅 및 헬스체크 실패 이슈와 관련하여 트러블슈팅을 기록해보고자 합니다.
Github Issue
https://github.com/squatboy/hybrid-public-cloud-infra/issues/15

문제는 Terraform으로 하이브리드 네트워크(VPC + VPN)와 로드밸런서(ALB) 구성을 마치고 apply를 완료한 직후 발생했습니다.
하이브리드 아키텍처 특성상, AWS에 위치한 ALB가 **경로 기반 라우팅(/pii/*)**을 통해 VPN 너머에 있는 온프레미스 서버(10.10.10.20)로 트래픽을 전달해야 했습니다. 하지만 ALB 대상 그룹(Target Group)의 헬스체크가 계속 실패하고 있었습니다.
Unhealthy (Request timed out)Established (정상 연결됨)네트워크 문제임을 직감하고 온프레미스 서버에서 tcpdump를 떠보았으나, ALB가 보낸 헬스체크 패킷이 전혀 들어오지 않는 침묵 상태였습니다.

원인은 ALB가 위치한 서브넷의 라우팅 테이블에 있었습니다.
저의 아키텍처 구성은 다음과 같습니다.
Terraform 코드 작성할때 내부 리소스(ECS, RDS)가 온프레미스와 통신할 수 있도록 Private Route Table에는 VPN 경로 전파(Route Propagation)는 설정했지만, ALB가 위치한 Public Route Table에는 VPN 경로를 추가하지 않았기 때문에 온프레미스로 트래픽이 전달되지 않았던 것입니다. (이에 따라 헬스체크가 계속 실패함...)
즉, ALB -> On-Premise 의 라우팅 문제. . .
우선적으로 라우팅 문제임을 빠르게 검증하기 위해 AWS 콘솔에서 즉시 Public Route Table을 열고, 온프레미스 대역에 대한 타겟을 기존 VGW(Virtual Private Gateway)로 추가했습니다.
저장하자마자 온프레미스 서버의 tcpdump에 패킷이 들어오기 시작했고, ALB 상태가 Healthy로 바뀌는 것을 확인했습니다.

IaC에 아래와 같이 vpn 모듈에 Public Route Table에 대한 경로 전파 요소를 반영하였습니다!
