MakerHyeon

[springCloud] user Service 생성하기, load balancer 본문

SpringBoot/SpringCloud

[springCloud] user Service 생성하기, load balancer

유쾌한고등어 2023. 3. 28. 23:24

● 목표

- 다른 포트번호들로 여러 인스턴스를 실행해보자.

- 각각의 instance들을 eureka discovery service에 잘 등록되었는지 확인해보자. (routing,gateway service에 의해 필요한 작업을 호출 할 수 있는 상) 

- 포트번호를 수동할당하지말고, 자동할당 해보자.

 

1) intellij에서 실행

- edit configuration->main Application copy

- vm Option에 -Dserver.port=9002를 설정(코드변경X)

 

- 9001,9002 정상작동됨을 확인가능하다

- 외부에서 client 요청이 userService로 전달이 되면 discoveryService안에서 9001번으로 전달될지,9002번으로 전달될지 (어떠한 instance가 살아있는지) 정보 값을 gateway나 route service에 전달하면 두가지 microservice에 의해서 분산 서비스가 실행되게 할 수 있게 되었다!

 

 

2) 터미널에서 실행

mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9003'

- 요러케 터미널로도 구동해줄 수 있음!

- 위 명령어 실행시 userService가 세개가 됨.

 

3) cmd에서 실행

- 프로젝트 디렉토리로 이동

mvn clean
mvn compile package // target 새로 생성
java -jar -Dserver.port=9004 ./target/user-service-0.0.1-SNAPSHOT.jar

<실행결과>


server의 포트를 계속 변경해야하는 이 불편한 작업을 좀더 간단하게 처리할 수 없을까?

=> load balance를 이용하자!

 

- 랜덤 포트 사용

- 같은 서비스가 실행된다 하더라도 실행 될때마다 랜덤 포트 할당됨

server:
  port: 0

하지만 이렇게 입력하면 몇번이고 랜덤포트를 실행해도 실행인스턴스가 한개밖에 보이지않는다.

포트번호가 같기때문...!

 

- 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
Comments