자바 앱이 내부 ALB로 붙는데 며칠 지나면 연결 타임아웃이 납니다
조회 2 · 댓글 0
사내 배치성 자바 앱(Spring Boot 2.7, Temurin JDK 17, RHEL 8)에서 AWS 내부 ALB의 DNS 이름으로 REST 호출을 하는데, 배포 직후에는 멀쩡하다가 며칠 지나면 특정 인스턴스에서만 연결이 안 됩니다. 앱을 재기동하면 바로 정상으로 돌아옵니다.
증상이 나는 쪽 스택은 이렇게 찍힙니다.
java.net.SocketTimeoutException: Connect timed out
at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect
...
Caused while calling https://internal-xxxx.ap-northeast-2.elb.amazonaws.com/api/...그 시점에 장비에서 직접 확인해보면 DNS 자체는 정상입니다.
# dig +short internal-xxxx.ap-northeast-2.elb.amazonaws.com
10.31.20.41
10.31.20.9
# (앱 재기동 전에 잡아둔 패킷에서는)
# SYN 목적지가 10.31.20.133 -> 응답 없음즉 OS resolver가 주는 IP와 앱이 실제로 붙는 IP가 다릅니다. ALB가 스케일되면서 예전 노드 IP가 빠진 걸로 보이는데, 앱만 옛날 주소를 계속 물고 있는 모양입니다. JVM 기동 옵션에는 DNS 관련으로 넣은 게 없고 -Dsun.net.inetaddr.ttl 같은 걸 줘봐도 안 먹는 것 같습니다.
ALB는 60초 TTL이라고 알고 있는데 왜 앱은 하루이틀 지난 IP를 붙잡고 있는지, 그리고 이걸 애플리케이션 레벨에서 어디로 제어하는 게 맞는지 궁금합니다. 조언 부탁드립니다.
로그인 후 답글을 남길 수 있습니다.