-
클라우드 마이크로 서비스 - 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 참고
wsl2 에서 windows localhost 접근하기
문제 windows intellij 에서 아래 처럼 서버를 port 9000 으로 실행해 두었다. wsl2 에서 localhost 로 접속을 시도했을 때 아래처럼 Connection refused 가 발생한다. 해결 wsl2 내에서는 localhost 가 아니라 {wsl2 hostn
wefree.tistory.com
WSL hostname찾기
https://velog.io/@pikamon/Linux-4
[Linux] WSL2에서 hostname 변경 방법
처음 WSL2 우분투를 받아서 실행하면 hostname이 윈도우의 컴퓨터 이름으로 지정되어 있다.윈도우의 컴퓨터 이름과 관계 없이 WSL2의 hostname만 변경하는 방법이 있어 정리하였다.(처음에는 윈도우의
velog.io
Eureka Server 설정
https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-eureka-server.html
2. Service Discovery: Eureka Server
This section describes how to set up a Eureka server. 2.1 How to Include Eureka Server To include Eureka Server in your project, use the starter with a group ID of org.springframework.cloud and an artifact ID of spring-cloud-starter-netflix-eureka-server.
cloud.spring.io
[출처 - Spring Cloud로 개발하는 마이크로 서비스 애플리케이션, 저 Dowon Lee]
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 인프런 | 강의
Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해
www.inflearn.com
'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