매번 서비스를 실행할 때 port를 지정해주고 실행한다면 개발자는 포트번호를 매번 확인해야하며 서비스를 갑자기 확장해야할 때 귀찮은 일이 많아진다. 그래서 Spring boot에서 자체적으로 제공하는 랜덤 포트 방법을 적용시켜서 실행시켜보자.
지난 포스트에서 작성한 user-service의 yml파일을 수정한다.
server:
port: 0 #0번 포트로 지정하면 랜덤 포트를 사용하겠다는 설정
spring:
application:
name: user-service
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://127.0.0.1:8761/eureka
다음과 같이 수정한 후
지난 시간에 2번째 실행한 옵션을 지워준다. 혹은 1번 서버로 켜서 테스트해도 된다.
실행시키면 다음과 같이 랜덤 포트로 실행된다. (52851 포트로 실행됨)
유레카에서도 확인이 가능하다.
터미널에서 실행하기 위해
mvn spring-boot:run
만으로 실행시켜주면
이전처럼 포트 옵션을 따로 주지 않아도 랜덤한 포트로 잘 실행된다.
하지만 유레카에서는 하나의 서비스만 인식하고 있는 문제가 발생한다.
그 이유는 현재 서비스의 ip:서비스 이름:포트의 노출값이 동일하기 때문에 유레카에서 하나로 밖에 인식하지 않는 현상인데
server:
port: 0
spring:
application:
name: user-service
eureka:
instance:
instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}} #Eureka에 등록되는 서비스 이름에 대한 설정값
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://127.0.0.1:8761/eureka
yml 파일에 instance에 대한 정보를 추가로 입력해주자.
다시 서비스를 실행한 뒤
유레카를 확인하면 두개의 다른 서비스의 이름으로 등록된 서비스들을 확인할 수 있다.