• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

다른서버를 사용하면 lb://MAIN-SERVICE가 작동을 안합니다

23.02.02 08:24 작성 조회수 424

0

예제를 따라하면서

API-GATEWAY와 EUREKA 는 LOCALHOST로 서버를 열고,

MAIN-SERVICE라는 서비스만 AWS EC2에서 실행하였습니다.

직접 주소를 넣었을때는 잘 작동하는데

배운대로 lib://MAIN-SERVICE 의 형태로 하면 작동을 안합니다!..

혹시 방법이 있을까요?

참고로 모든 서버를 LOCA에서 돌렸을때는 lib이 정상 작동 하였습니다

답변 1

답변을 작성해보세요.

0

안녕하세요, 이도원입니다.

EC2에 등록한 서비스의 문제인지, apigateway-service에서 사용하는 Eureka의 서비스명이 문제인지 확인해 보기 위해서, 질문하신 내용에 다시 질문 드립니다.

  1. lb:MAIN-SERVICE가 아니라, http://35.79.145.19:9001 (아마도 EC2 주소 같습니다만)로 직접 설정하면 어떻게 되나요?

  2. 추가로, apigateway-service가 아닌, 웹 브라우저나 Postman에서 직접 해당 주소 (EC2)로 접속 시 서비스가 작동되나요?

위 내용을 확인해 보시고 결과를 공유해 주시면, 다른 원인이 있는지도 확인해 볼 수 있을 것 같습니다.

감사합니다.

S-J L님의 프로필

S-J L

질문자

2023.02.03

  1. 직접설정하면 작동합니다!
    추가적으로 ec2 서버의 탄력적 아이피 주소가 http://35.79.145.16 입니다.
    (test uri : http://35.79.145.16:9001/main-service/swagger-ui/)

    유레카에 연결된 htttp://172.31.43.172는 탄력적 ip가 아니라 ec2 내부 주소? 인 것 같습니다.


  2. 작동합니다!
    1번의 질문에서 localhost:18000/main-service/**로 접근해도 작동이 됩니다.
    브라우저에서 swagger url을 쳐도 작동하고,

    postman을 사용하여 api 호출시에도 잘 됩니다...
    다만 lib://을 쓰는순간 동작이 안되네요..


  3. ureka에 main-service를 클릭하면 나오는 주소가
    http://ip-172-31-43-172.ap-northeast-1.compute.internal:9001/main-service/actuator/info 입니다.
    주소가 왜 저런식으로 맵핑되는지 모르겠으나.. 여기서 actuator을 지우고 swagger 주소를 넣으면 작동이 안됩니다..
    http://ip-172-31-43-172.ap-northeast-1.compute.internal:9001/main-service/swagger-ui/

     

안녕하세요, 이도원입니다.

1번과 2번이 성공하셨고, 3번 결과로 보아, EC2에 방화벽 문제일 수도 있다는 생각이 듭니다. EC2 인스턴스를 생성하면, 공개 IP와 내부(inernal) IP가 부여되는데, 공개 IP는 재부팅 시 변경되어서 지속적인 서비스를 위해서는 Elastic IP를 사용하게 됩니다. 그러나, 내부 IP는 Elastic IP와 상관없이 변경되지 않고 계속 할당되어 있는 상태이고, 해당 Internal IP를 기반으로 해서 ip-172-31-43-172.ap-northeast-1.compute.internal 과 같은 도메인이 부여 됩니다. 작업하신 EC2 관리 콘솔로 이동하신 다음에 보안그룹(Security Group) Inbound 정책에 9001이 열려 있는지도 확인해 보시면 좋을 것 같습니다.

감사합니다.

S-J L님의 프로필

S-J L

질문자

2023.02.04

안녕하세요... 아직까지 미해결중입니다.

1. 인바운드 9001포트는 계속열려있습니다
포트가 열리지 않았다면, 탄력적 ip:9001로 접속이 되지 않아야 할텐데 그건 되는듯합니다.

2. 혹시 MAIN-SERVICE가 존재하는 프로젝트의 applicaion.yml에서 세팅으로
내부아이피가 아닌 탄력적ip로 eureka와 api-gateway에 등록 시킬 수 있는 방법이 없을까요? 자동으로 내부아이피를 지정해줘서 이런 문제가 발생하는 듯합니다..
이 문제로 너무 골머리를 썩고 있습니다. 도와주세요..!

=========================================

<API-GATEWAY>
imageURI 옵션을 lb://MAIN-SERVICE로 설정

<MAIN-SERVICE>

imageeureka.instance.statue-pare-url을 ec2 내부 서버가 아닌 탄력적 ip로 지정.

<Eureka>

imagestatus가 정상적으로 올라오는것을 확인

 

 하지만 실제로 localhost:18000/main-service/swagger-ui를 해보면 작동이 안됩니다..

 

eureka.instance.status-page-url= http://35.79.145.16:9001/main-service
#eureka.instance.status-page-url-path= /main-service
#eureka.instance.home-page-url-path= /main-service

이런 값을 넣어봐도 잘 작동이 안되서 질문 해봅니다

S-J L님의 프로필

S-J L

질문자

2023.02.05

자문자답

#eureka.instance.hostname=AWS EC2 Elastic Ip 입력

하면 해결됩니다....ㅠㅠ