API gateway 가 앞에 따로 존재하고 그뒤에 여러 instance들을 관리해주는 netflix eureka 서버가 존재한다.
server:
port: 8761
spring:
application:
name: discoveryservice
eureka:
client:
register-with-eureka: false
fetch-registry: false
false로 해준것들은 현재 discoveryservice는 eureka server를 담당하는 것인데 굳이 자기 자신을 등록할 필요가 없기 때문이다.
server:
port: 9001
spring:
application:
name: user-service
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://127.0.0.1:8761/eureka
이제 간단한 user-service applcation 을 만들어서 등록을 해준다.
user-service가 등록이 되었다. 이제 2개를 등록해보자
edit configuration에서 복사를 한후 VM option 에서 -Dserver.port를 다른것으로 설정해주고 실행시켜보자.
정상적으로 2개가 등록 된것을 확인 할 수 있다.
.\gradlew bootRun --args="--server.port=9003"
명령어로 도 다른 port로 시작할 수 있다.
gralde 로 build 한후 java -jar -Dsever.port=9004 명령어를 통해 jar 를 실행시켜주면된다.
이떄 powershell 에서 하면 Dsever.port 가 먹히지를 않는다.
./gradlew bootRun --args='--server.port=9004' 이렇게 해줘야함
applcation yaml 에서 port 번호를 0 으로 주어지면 random port 를 사용하게 된다.
표현 방식 때문에 instance 몇개를 키더라도 0 으로 보이게된다. 실제로는 여러개가 잘 연결되어 돌아가고 있다.
server:
port: 8761
spring:
application:
name: discoveryservice
eureka:
client:
register-with-eureka: false
fetch-registry: false
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
이렇게 instance id 를 지정 해주면
잘 뜨는것을 확인할 수 있다.
좀비 프로세스처럼 남아서 로그가 남는 경우를 지우기 위해 # 주석 처럼 option 들을 추가해주었다.
'Cloud > SpringCloud로 개발하는 MSA' 카테고리의 다른 글
MS간의 data 동기화 (1. kafka 기본 이론) (0) | 2022.11.02 |
---|---|
MS간 통신 (0) | 2022.10.29 |
gateway 인증 + Cloud Config + Cloud Bus(rabbitMQ) + 암호화 (0) | 2022.10.28 |
API Gateway Service (0) | 2022.10.14 |
Microservice 소개 (0) | 2021.06.22 |