강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

lena님의 프로필 이미지
lena

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Test

docker micro-service 배포 시 connection 오류

작성

·

805

0

안녕하세요 강사님 강의 잘 듣고 있습니다.

 

강의대로 user-service 이전에 필요한 서비스들을 다 기동시켜놓고, 유저 등록을 요청했을 때

스크린샷 2022-11-24 오전 1.07.18.png 다음과 같이 connection error가 뜹니다.

user-service 뿐만아니라 random-port로 기동한 order-service, catalog-serivce도 접속이 되지 않습니다.

유레카 상에는 인스턴스들이 잘 띄워졌는데 api-gateway를 통하지 않고 요청했을때에도 동일한 에러가 발생하고 있습니다.

random-port로 매핑된 포트번호를 netstat 으로 검색해보니 LISTEN 되고 있는 상태가 아니였습니다.

랜덤포트에 대해서 외부에서 접근할 수 있도록 따로 설정을 해주어야 하는 것일까요, 아니면 다른 해결방법 있을지 문의드립니다!

 

감사합니다.

 

답변 1

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

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

실습에 사용하시는 환경이 로컬 환경이라고 하면 별도의 포트 접근에 대한 설정은 하지 않아도 될거라 생각합니다. apigateway를 거치지 않고도 user-service와 같은 MS가 접속되지 않는다고 하는 건 정상적인 실행상태가 아닌 것 같습니다, Eureka에 등록되어 있는 상태라 하더라도 해당 서비스의 로그를 확인하시어 정상적으로 포트가 바인딩 되어 사용할 수 있는 상태인지 확인하시는게 필요하다고 생각됩니다. 더불어, 올려주신 에레 메시지만으로는 user-service에 어떤 오류가 발생한 것인지 확인하기가 어렵네요. 수강하시는 위치가 Docker 배포 부분인거 같은데, 로컬 환경에서는 사용에 문제가 없었는지 확인해 보시고, Docker 환경에서 사용할 때(배포할 때)에 발생하는 문제라고 하면, 컨테이너에 정상적으로 서비스가 실행되었는지 확인해 보셔야 할 것 같습니다. docker logs [해당 컨테이너 ID or 컨테이너명]로 user-service의 로그 메시지를 확인해 보시고, 다른 서비스들과 통신하는데에 있어서 오류가 발생하지 않는지도 확인해 보시면 좋을 것 같습니다. 예를 들어, 컨테이너 네트워크를 생성해서 Eureka, Apigateway, Config, user-service 등을 같은 네트워크에서 기동하고 컨테이너 명을 통해 통신을 하고 있는 부분도 있어서 컨테이너 간에 통신에 오류가 있는지도 확인해 보시면 좋을 것 같습니다.

추가 글 남겨주실때, 사용하시는 환경 및 오류 메시지를 조금 더 공유해 주시면 저희쪽에서도 원인을 다시 찾아 보도록 하겠습니다.

감사합니다.

lena님의 프로필 이미지
lena
질문자

안녕하세요. user-service 로그를 보면 정상작동 하는것으로 보입니다.

imageimageimage

user-service 요청시 아예 접속 자체가 되지 않아 유저등록 시 로그는 찍히지 않고 있습니다. 유레카에도 서비스는 다 정상등록되어 있습니다. rabbitmq에 channel 등록도 잘 되고 있습니다.

image

유레카에 등록된 링크로 접속시 다음과 같은 오류가 뜹니다.

image

 

제가 사용한 도커 컴포즈 파일과 서비스 코드 링크는 아래와 같습니다.

docker-compose.yml

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    networks:
      my-network:
        ipv4_address: 172.18.0.100
  kafka:
    # build: .
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 172.18.0.101
      KAFKA_CREATE_TOPICS: "test:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper
    networks:
      my-network:
        ipv4_address: 172.18.0.101

  rabbitmq:
    image: rabbitmq:management
    ports:
      - "15671:15671"
      - "15672:15672"
      - "5671:5671"
      - "5672:5672"
      - "4369:4369"
    environment:
      RABBITMQ_DEFAULT_USER: guest
      RABBITMQ_DEFAULT_PASS: guest
    networks:
      my-network:

  config-service:
    image: yurimming/config-service:1.0
    ports:
      - "8888:8888"
    environment:
      spring.rabbitmq.host: rabbitmq
      spring.profiles.active: default
    depends_on:
      - rabbitmq
    networks:
      my-network:

  discovery-service:
    image: yurimming/discovery-service:1.0
    ports:
      - "8761:8761"
    environment:
      spring.cloud.config.uri: http://config-service:8888
    depends_on:
      - config-service
    networks:
      my-network:

  apigateway-service:
    image: yurimming/apigateway-service:1.0
    ports:
      - "8000:8000"
    environment:
      spring.cloud.config.uri: http://config-service:8888
      spring.rabbitmq.host: rabbitmq
      eureka.client.serviceUrl.defaultZone: http://discovery-service:8761/eureka/
    depends_on:
      - discovery-service
    networks:
      my-network:

  mariadb:
    image: yurimming/my-mariadb:1.0
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: test1357
      MYSQL_DATABASE: mydb
    networks:
      my-network:

  zipkin:
    image: openzipkin/zipkin
    ports:
      - "9411:9411"
    networks:
      my-network:

  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - /Users/lena/work/prometheus.yml:/etc/prometheus/prometheus.yml
    networks:
      my-network:

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    networks:
      my-network:

  user-service:
    image: yurimming/user-service:1.0
    environment:
      spring.cloud.config.uri: http://config-service:8888
      spring.rabbitmq.host: rabbitmq
      spring.zipkin.base-url: http://zipkin:9411
      eureka.client.serviceUrl.defaultZone: http://discovery-service:8761/eureka/
      logging.file: /api-logs/users-ws.log
    depends_on:
      - apigateway-service
    networks:
      my-network:
        ipv4_address: 172.18.0.12

  order-service:
    image: yurimming/order-service:1.0
    environment:
      spring.cloud.config.uri: http://config-service:8888
      spring.rabbitmq.host: rabbitmq
      spring.zipkin.base-url: http://zipkin:9411
      eureka.client.serviceUrl.defaultZone: http://discovery-service:8761/eureka/
      spring.datasource.url: jdbc:mariadb://mariadb:3306/mydb
      logging.file: /api-logs/orders-ws.log
    depends_on:
      - apigateway-service
    networks:
      my-network:
        ipv4_address: 172.18.0.13

  catalog-service:
    image: yurimming/catalog-service:1.0
    environment:
      spring.cloud.config.uri: http://config-service:8888
      spring.rabbitmq.host: rabbitmq
      spring.zipkin.base-url: http://zipkin:9411
      eureka.client.serviceUrl.defaultZone: http://discovery-service:8761/eureka/
      logging.file: /api-logs/catalogs-ws.log
    depends_on:
      - apigateway-service
    networks:
      my-network:
        ipv4_address: 172.18.0.14

networks:
  my-network:
    external: true
    name: ecommerce-network

 

컴포즈 파일에서 혹시 제 이미지에 문제가 있나 해서 강사님 이미지 기반으로도 시도해봤는데 동일한 에러가 발생하는 것으로 보아 이미지 자체 이슈는 아닌 것으로 보입니다.

네트워크 생성은 다음 명령어로 진행하였습니다.

docker network create --gateway 172.18.0.1 --subnet 172.18.0.0/16 ecommerce-network

 

소스 주소

https://github.com/yurim022/e-commerce

 

더 상세한 오류 메세지를 확인하려 하였지만 서비스에 접속 자체가 안되어서 확인이 쉽지 않네요ㅠ

문제해결시 답글 달겠습니다.

감사합니다!

lena님의 프로필 이미지
lena

작성한 질문수

질문하기