API Gateway가 User Service에 연결할 수 없는 문제 발생
500 Server Error for HTTP POST "/v1/auth/signup"
io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: /172.17.0.2:10001
환경구성>
Eureka Server : Lightsail 인스턴스 (43.203.45.192:8761)
API Gateway : EC2 인스턴스 (3.34.137.212:10000)
User Service : EC2 인스턴스 (3.35.3.139:10001)
→ 각 서비스는 Docker 컨테이너로 실행됨
User-service의 application.yml
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://43.203.45.192:8761/eureka/
instance:
prefer-ip-address: true
원인
Dockers 내부 IP vs EC2 IP 문제
- User Service가 Eureka에 등록될 때 IP를 명시하지 않아 내부IP(172.17.0.2)를 등록
- 내부IP는 해당 EC2 인스턴스 내에서만 유효하므로 다른 EC2에서 접근 불가능
- API Gateway가 Eureka에서 조회한 User Service IP (172.17.0.2) 주소로 연결을 시도했으나 실패함
해결 방법
1) User Service의 Eureka 클라이언트 설정을 수정 - EC2의 실제 IP 주소를 등록하도록 변경
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://43.203.45.192:8761/eureka/
instance:
prefer-ip-address: true
ip-address: 3.35.3.139 # EC2의 실제 IP 주소
instance-id: ${eureka.instance.ip-address}:${server.port}
2) 호스트모드
: 컨테이너가 호스트의 네트워크 스택을 직접 사용
-d --network=host
docker run -d --network=host --name user-serivce --restart always user-service
'DevOps > AWS' 카테고리의 다른 글
AWS Lightsail 배포 (1) | 2025.05.07 |
---|---|
AWS EC2 배포 (JAR 파일을 이용한 수동 배포) (0) | 2025.05.07 |