1 분 소요

이전 글에서처럼 모든 작업을 할 때 마다 포트 번호를 등록하는 것은 상당히 불편한 작업이다.
이런 작업을 간단히 하기 위해서 spring boot에서 지원해주는 랜덤포트 방식을 사용해보자.

랜덤포트 사용

🌱 applicaion.yml

user-service의 applicaion.yml 파일에서 server.port를 기존 9001 -> 0 으로 수정한다.

server:
  port: 0

포트 번호에 0을 입력하면, 랜덤 포트를 사용하겠다는 의미이다.
따라서 같은 서비스라 할지라도, 매번 실행시마다 랜덤한 포트 번호가 할당된다.

🌱 인스턴스 실행

인스턴스를 실행하기 전에, 랜덤포트를 사용하게되면 이전 글에서 copy 한 인스턴스가 필요 없기 때문에 삭제한다.
상단 콤보박스에서 Edit Configurations에 들어간 뒤, UserServiceApplication - 2를 삭제한다.
그 후 실행하면 아래 사진과 같이 랜덤한 포트번호(56111번)가 할당되었음을 알 수 있다.
스크린샷 2022-09-26 오전 1 00 31

유레카 서버 확인

아래 사진처럼 0번 포트를 확인할 수 있고,
해당 주소에 마우스 커서를 올리게 되면 아래 사진에 보이는 것처럼 왼쪽 하단에 실제로 할당된 포트번호를 확인할 수 있다.
스크린샷 2022-09-26 오전 1 03 59

🌱 새로운 인스턴스 실행

위처럼 랜덤포트를 사용하게 되면, 여러 서비스를 동시에 실행할 수 있다.
위에서 실행한 user-service를 그대로 실행해 둔 채, 인텔리제이 터미널에 아래와 같이 입력해 하나의 서비스를 더 실행해보자.

mvn spring-boot:run

이전 글에서처럼 서버의 포트를 변경하기 위한 복잡한 옵션을 추가할 필요가 없다.
스크린샷 2022-09-26 오전 1 09 35
이번에는 56232번 포트가 할당되었다.

유레카 서버 확인

스크린샷 2022-09-26 오전 1 11 56
그런데 문제가 있다.
현재 두 개의 인스턴스가 실행중인데, 유레카 서버에는 한 개의 인스턴스만 표시된다.
랜덤포트를 사용하게 되면 몇 개의 인스턴스를 실행하던 한 개의 인스턴스만 표시된다.

🌱 application.yml

위 문제를 해결하기 위해 application.yml을 아래와 같이 변경한다.

server:
  port: 0 # 랜덤포트 사용

spring:
  application:
    name: user-service

eureka:
  instance:
    instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}} # 🌟 변경
  client:
    register-with-eureka: true 
    fetch-registry: true 
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka 

위와 같이 설정을 마친 뒤, 실행 중인 두 개의 인스턴스를 모두 종료한 뒤 다시 실행한다.

유레카 서버 확인

스크린샷 2022-09-26 오전 1 18 53
아까와 마찬가지로 각 주소에 마우스 커서를 올리면, 왼쪽 하단에서 각각에 할당된 포트 번호를 확인할 수 있다.

랜덤포트를 사용함으로써 쉽고 간편하게 로드밸런싱을 할 수 있다👍
다음 글에서는 유레카 서비스에 있는 각각의 정보들을 실제로 라우팅을 하고,
해당하는 서비스로 정확히 이동하기 위해 API Gateway를 어떻게 연동하면 좋을지에 대해 알아보자.



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기