티스토리 뷰
지금까지 잘 따라오셨나요? 그렇다면 의지가 정말 대단하시네요.
저는 금요일이라 그런지 조금 힘이 빠지네요..
하지만 이제부터는 본격적으로 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 이 부분이 이번 시간에 가장 중요한 항목이에요.
lb는 Load Balancer를 뜻해요! 맞아요 저희는 벌써 Load Balancer를 사용한 거에요!
lb:// ( 서비스 Name) 형식으로 바꿔 준 셈이에요! 그럼 이 서비스 Name은 어디서 확인 할까요?
일단 저희가 First-Service,Second-Service,Gateway의 yml을 수정하면서 아마 세개의 서비스는 Eureka-Server에 등록이 되어 있을거에요.
discoveryservice를 제작했던 거 기억하시나요? 해당 어플리케이션을 실행시켜볼게요!.만약 해당 서비스가 없다면, 아래의 링크를 참조해주세요 :)
https://ggparkitbank.tistory.com/118?category=1015014
그럼 이제 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가 무엇인지 정리하도록 할게요.
감사합니다.
'웹 프로그래밍 > MSA 학개론' 카테고리의 다른 글
[MSA] Spring Cloud로 개발하는 E-commerce 마이크로 서비스 어플리케이션 - 0 - (0) | 2022.04.08 |
---|---|
[MSA] Spring Cloud로 개발하는 MS 어플리케이션 (Load Balancer) - 9 - (0) | 2022.04.08 |
[MSA] Spring Cloud로 개발하는 MS 어플리케이션 ( Gateway Global Filter) - 7 - (0) | 2022.04.08 |
[MSA] Spring Cloud로 개발하는 MS 어플리케이션 ( Gateway Custom Filter) - 6 - (0) | 2022.04.08 |
[MSA] Spring Cloud로 개발하는 MS 어플리케이션 ( Gateway Filter) - 5 - (0) | 2022.04.07 |
- Total
- Today
- Yesterday
- 운동
- MSA
- prometheus
- 미래의나에게동기부여
- producer
- LoadBalancer
- rabbitmq
- 오늘저녁 삼겹살
- elasticSearch
- Feign
- Gateway
- consumer
- config
- JWT
- git
- Spring + ELK
- Kafka Connect
- MariaDB
- Logstash to ElasticSearch
- UserService
- Logstash 활용
- docker
- 루틴기록
- github
- 빅-오
- kafka
- ACTUATOR
- 운동일기
- zipkin
- springcloud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |