ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker 컨테이너 환경에서 Eureka Client 등록시 ip 문제
    Spring/Trouble Shooting 2023. 11. 7. 00:41

    문제 상황

    Eureka 클라이언트를 등록하고 Spring Cloud Gateway를 통해 로드 밸런싱 처리를 하도록 설정해뒀다. 하지만 로드밸런싱 처리는 되지 않았고 직접 ip 주소를 통해 요청을 할 때는 정상적으로 요청이 전달되고, Eureka Server에 등록된 클라이언트의 목록에는 이상이 없었다.

    원인은?

    문제는 Eureka Client가 등록될 때 클라이언트들이 외부 ip 기준으로 등록되는 것이 아니라, 내부 ip를 기준으로 등록되어 문제가 발생하는 것이였다. 원인은 배포 환경을 Docker를 통해 진행했는데, Eureka Client의 경우 컨테이너 환경에서 배포가 될 경우 알아서 실제 배포되는 ip로 등록되는 것이 아닌 내부 ip를 기준으로 등록되는 것이였다.

    알아낸 방법

    이를 알아낸 방법은 /Eureka/apps 에 접속해보면 등록된 Client들의 ip 주소를 확인할 수 있었는데, AWS EC2에 배포되어 있는 서비스가 탄력적 IP로 등록되어있는 것이 아닌 내부 Local주소로 되어있어서 알았다. 추가로 테스트를 진행하기 위해 로컬 환경에서 클라이언트 등록들 실험해본결과 외부 ip 주소가 아닌 공유기의 내부 ip 주소로 등록되는 것을 보고 알았다.

    해결 방법

    해결 방법으로

    eureka:  
    	client:  
    		...
    	instance:
    		...
    		prefer-ip-address: true  
    		ip-address: "실제 외부 IP 주소"
    

    application.yml에 prefer-ip-address를 true로 하고 실제 사용되는 외부 ip 주소를 등록해주면 instance의 ip가 외부 ip로 연결이 된다.

    댓글

Designed by black7375.