-
클라우드 마이크로 서비스 - Eureka Service DiscoveryInfra/클라우드 2023. 12. 12. 19:09
Eureka Service Discovery
User Service - 프로젝트 생성
eureka.client.fetch-registry=true
위 설정은 EUREKA 서버로부터 인스턴스들의 정보를 주기적으로 가져올 것인지를 설정하는 속성이다. true로 설정하면, 갱싱된 정보를 받겠다는 설정이다.
application.yml
두번째 User Service를 실행하는 방법(IDE 활용)
UserServiceApplication-2의 `VM options`에 -Dserver.port=9002 명령어를 넣어준다. 이렇게 설정정보를 바꾸는 방법은 서버 자체의 코드가 변경되는 방법이 아니기 때문에 매번 실행 할 때 마다 실행될 포트 값을 다르게 해서 적용할 수 있다. 따라서 한번 작성된 코드가 다시 빌드되고 배포되어야 하는 과정을 거치는 것이 아니라 서버를 실행 할 때 부가적인 파라미터를 전달 하므로써 동적으로 변경되는 서버 포트를 지정할 수 있다.
UserServiceApplication과 UserServiceApplication2가 정상적으로 작동 중 인 것을 확인할 수 있다. 더불어 유레카 서비스 디렉토리 안에 USER-SERVICE가 2개 등록된 것을 확인 할 수 있다. 만약 외부에서 클라이언트 요청이 USER-SERVICE로 전달이 된다고 하면 DiscoveryService안에서 클라이언트 요청이 9001포트로 전달되어야 하는지 9002번으로 전달되어야 하는지, 둘 중 어떤 인스턴스가 살아있어서 사용 가능한지 대한 정보 값을 Gateway라던가 Routing Service에게 전달해 준다. 그렇게 되면 USER-SERVICE는 두가지 분산된 서비스에 의해서 서비스가 실행되게 된다.
세번째 UserService를 실행하는 방법 (DLE-CLI)
샘플로 만든 UserService 어플리케이션을 패키징해서 build한 다음에 그 자체를 커맨드 라인에서 직접 실행한다.
localhost에서 실행하고 있는 유레카 서비스 대시보드를 확인하면 3개의 USER-SERVICE가 제대로 동작하고 있는 것을 확인 할 수 있다.
네번째 UserService를 실행하는 방법 (CLI)
1.터미널에서 프로젝트파일이 있는 경로로 들어감
user-service 스프링 부트 프로젝트가 있는 경로로 들어간다.
2. 빌드를 다시해서 target 파일을 새로 만들어 준다.
mvn clean //target 파일 사라짐 mvn compile package
3. 새로운 빌드된 target 파일의 내부 확인
jar 파일이 정상적으로 잘 만들어진 모습을 확인 할 수 있다.
4. 네번째 user-service를 실행할 명령어 입력
java -jar -Dserver.port=9004 ./target/user-service-0.0.1-SNAPSHOT.jar
jar 파일을 직접 실행하는 명령어이다.
Load Balance(랜덤 포트 번호 부여)
매번 User Service 인스턴스의 다른 인스턴스를 실행 할 때마다. port 번호를 지정하는 것은 번거로운 일 일 수 있다. 그런 작업을 간단하게 할 수 있도록 Spring boot에서 지원하는 랜덤포트 방법을 사용해 보도록 한다.
application.yml
랜덤 포트를 사용하겠다는 의미이다. 같은 서비스의 다른 인스턴스를 실행 할때 마다 랜덤하게 다른 포트의 번호가 할당된다. 즉 포트의 번호 충돌을 신경쓰지 않고 계속 서비스 인스턴스를 실행할 수 있다는 장점이 있다.
인스턴스에 ID 부여
application.yml
eureka: instance: instance-id:${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}
유레카 대시보드
각각 인스턴스가 인스턴스ID와 함께 실행 되고 있는 것을 확인할 수 있다.
WSL localhost 참고
WSL hostname찾기
https://velog.io/@pikamon/Linux-4
Eureka Server 설정
https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-eureka-server.html
[출처 - Spring Cloud로 개발하는 마이크로 서비스 애플리케이션, 저 Dowon Lee]
'Infra > 클라우드' 카테고리의 다른 글
클라우드 마이크로 서비스 - API Gateway Service(Netflix Zuul,Filter)2 (0) 2023.12.14 클라우드 마이크로 서비스 - API Gateway Service(Netflix Zuul)1 (0) 2023.12.13 클라우드 마이크로 서비스 - Spring Cloud Netflix Eureka (0) 2023.12.12 클라우드 마이크로 서비스 - Spring Cloud (0) 2023.12.12 클라우드 마이크로 서비스 - Microservice Architecture Structures (0) 2023.12.12