티스토리 뷰

지금까지 잘 따라오셨나요? 그렇다면 의지가 정말 대단하시네요.

저는 금요일이라 그런지 조금 힘이 빠지네요..

 

하지만 이제부터는 본격적으로 Load Balancer를 알아볼 것이기 때문에, 조금만 더 힘을 내볼게요..

지금까지는 Gateway,Filter와 관련한 내용을 다뤘다면 이제 본격적으로 서비스를 등록하고 해당 서비스를 이용하는 법을

알아보도록 할게요. 

# 개요

생각해보면 저희가 MicroService를 구축하기전에 Eureka를 활용해서, Server를 만들고 Client를 만들었던 것 기억나시나요? 기억이 안나셔도 괜찮습니다. 이번 기회에 다시 해볼 것 이니까요!. 이제 Gateway의 사용법을 알았으니  아래와 같은 순서로 요청과 응답이 전달되도록 할거에요 !

 

클라이언트( 웹,모바일 등 ) -> Eureka Server -> Gateway -> Suitable Service -> 클라이언트

 

기존에는 클라이언트 -> Gateway -> Suitable Service었는데 이제 Eureka Server가 들어가네요.간단하게 요약을 해서 말씀드리면 클라이언트의 요청이 들어오면 Eureka Server 해당 요청이 어떤 서비스를호출하는지 확인 한 뒤 Gateway에 해당 값을 전달합니다. 그럼 Gateway는 해당 Service를 찾아서 클라이언트에전송하게 될거에요!

자! 그럼 Load Balancer에 자세히 알기전에 먼저 First-Service와 Second-Service의 코드를 조금 수정해줍시다.

# Firts - Service

* 혹시라도 Dependencies에 eureka-client가 없다면 아래와 같이 입력해주세요.

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

 

그리고 다음과 같이 application.yml을 수정해주세요.

# application.yml

server:
   port: 8081

spring:
   application:
      name: my-first-service

eureka:
   client:
      fetch-registry: true
      register-with-eureka: true
      service-url:
         defaultZone: http://localhost:8761/eureka

기존에는 아마 fetch-registry: false ,register-with-eureka: false 로 되어있을텐데, 저희는 클라이언트로

등록할 예정이기 때문에 해당 항목을 true로 바꿔주세요! 그 뒤에 서비스 등록을 할 url을 등록해줘야 겠죠?

service-url.defaultZone 항목에 Eureka Server의 주소와 포트를 적어주면 끝! 

 

# Second - Service

마찬가지로 수정해주시면 됩니다!

# Gateway - Service

Gateway에서도 마찬가지로 yml파일을 수정할 건데요! 이 부분이 중요하니 어디가 바뀌었는지 짚고 넘어갈게요. :)

일단 위에서 first,second service에서 그랬듯 Gateway도 서비스에 등록을 해줘야 하니 eureka.client의 두개의 항목을

true해주는 것을 잊지 마세요!.

#application.yml

server:
   port: 8000

eureka:
   client:
      register-with-eureka: true
      fetch-registry: true
      service-url:
         defaultZone: http://localhost:8761/eureka

spring:
   application:
      name: apigateway-service
   cloud:
      gateway:
         default-filters:
            - name: GlobalFilter
              args:
                 baseMessage: Glabal Filter의 BaseMessage 에요!!
                 preLogger: true
                 postLogger : true
         routes:
            - id: fisrt-service
              uri: lb://MY-FIRST-SERVICE
              predicates:
                 - Path=/first-service/**
              filters:
#                 - AddRequestHeader=first-request, first-request-header2
#                 - AddResponseHeader=first-response, first-response-header2
                 - CustomFilter
            - id: second-service
              uri: lb://MY-SECOND-SERVICE
              predicates:
                 - Path=/second-service/**
              filters:
#                 - AddRequestHeader=second-request, second-request-header2
#                 - AddResponseHeader=second-response, second-response-header2
                 - CustomFilter

 

routes: 밑 부분에 uri가 수정 된 부분이 보이시나요?

lb://MY-FIRST-SERVICE  이 부분이 이번 시간에 가장 중요한 항목이에요.

lbLoad Balancer를 뜻해요! 맞아요 저희는 벌써 Load Balancer를 사용한 거에요! 

 

lb:// ( 서비스 Name) 형식으로 바꿔 준 셈이에요! 그럼 이 서비스 Name은 어디서 확인 할까요? 

일단 저희가 First-Service,Second-Service,Gateway의 yml을 수정하면서 아마 세개의 서비스는 Eureka-Server에 등록이 되어 있을거에요.

discoveryservice를 제작했던 거 기억하시나요? 해당 어플리케이션을 실행시켜볼게요!.만약 해당 서비스가 없다면, 아래의 링크를 참조해주세요 :)

https://ggparkitbank.tistory.com/118?category=1015014 

 

[MSA] Spring Cloud로 개발하는 MS 어플리케이션 ( Eureka )- 2-

자 이제 본격적으로 Discovery Service를 구축해보도록 하겠습니다. 1. Discovery Service 프로젝트 생성 마찬가지로 https://start.spring.io/ 사이트에서 다음과 같이 프로젝트를 생성했습니다. 중앙서버이기

ggparkitbank.tistory.com

 

그럼 이제 eureka-server에 접속해볼까요? 포트를 수정한게 아니라면 기본적으로 http://localhost:8761

해당루트로 접속이 가능해요. 그럼 다음과 같은 화면을 볼 수 있을텐데 서비스 3개가 등록 된 것이 보이시나요?

Service Name은 바로 Application 항목에 있는 Name이에요! 여기서 확인 하시거나 yml파일에도 등록이 되어 있으니 참조하셔서 url을 작성 하면 됩니다. 자 그럼 설정하는 법도 알았으니 실제로 실행 시켜볼까요?

#TEST 

마찬가지로 POST-MAN 에서

http://localhost:8000/first-service/welcome 통해서 저희가 처음으로 Mapping 했던 Service에 접속 할게요.

음... 그렇군요... 그래서 뭐가 달라진걸까요?

그건 바로 uri의 방식에 차이가 생겼어요! 기존에 port로 접근 되던게 이번에는 LoadBalancer를 통해서 Application-name으로 접근이 가능해진거에요.

꺄아아아아악!

어떤가요? 실제로 실습을 해보니 LoadBalancer가 어떤역할을 할지 살짝 감이 오지 않나요? 

그럼 어떻게 활용하는 걸까요? 그리고 하는 이유는 뭘까요? 다음시간에 조금 더 자세하게 알아보면서

LoadBalancer가 무엇인지 정리하도록 할게요. 

 

감사합니다. 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함