[스프링으로하는 마이크로서비스 구축] 스프링 클라우드 게이트웨이를 에지 서버로 사용

뿌이·2022년 2월 23일
0

스프링 클라우드

목록 보기
21/32

스프링 클라우드 게이트웨이에서 라우팅규칙을작성하고자사용하는요소는 무엇인가?

에지서버

이런 요소의 사용 목적은 무엇인가?

라우팅 규칙 설정을 위해

스프링 클라우드 게이트웨이가 넷플릭스 유레카와같은 검색 서비스를 통해 마이크로서비스 인스턴스를 찾게 하려면 어떻게 해야하는가?

  • 에지서버를 통해 유레카 API를 호출해 검색 서버에 등록된 인스턴스 목록을 확인
curl -H "accept:application/json" localhost:8080/eureka/api/apps -s | \ jq -r.applications.application[].instance[].instanceId
  • 실행결과
  • 유레카 웹페이지 확인

    api 호출을통해 확인한 인스턴스 목록과 동일한 결과가 유레카 웹 페이지에도 나타나 있다.

http://$HOST:$PORT/api/product-composite 에 대한 호출을 처리하는 product-composite 서비스가 http://$HOST:$PORT/api/product URL에 대한 호출을 처리하게 하려면 에지 서버의 라우팅 규칙을 어떻게 변경해야 하는가?

보통은 구성파일 src/main/resources/application.yml에서 라우팅 경로를 선언하는 방식이 편리하다.

라우팅경로는 다음과 같은 규칙에 따라 정의된다.

  • 조건자 (predicate) : 수신되는 HTTP 요청 정보를 바탕으로 경로를 선택
  • 필터 (filter) : 요청이나 응답을 수정
  • 대상 URI (destination URI) : 요청을 보낼 대상
  • ID : 라우트 경로 이름

라우팅 규칙 정의

spring.cloud.gateway.routes:
- id: product-composite
  uri: lb://product-composite
  predicates:
  - Path=/product-composite/**

이렇게 되어있는 것을

spring.cloud.gateway.routes:
- id: product
  uri: lb://product
  predicates:
  - Path=/product/**

product-composite를 전부 product로 변경

  • id: product-composite : 경로 이름은 product-composite다
  • uri: lb://product-composite : 조건자에 의해 경로가 선택되면 검색 서비스인 넷플릭스 유레카를 통해 product-composite라는 서비스로 요청이 라우팅 된다.
    lb://는 스프링 클라우드 게이트웨이가 클라이언트 측 로드 밸런서를 사용해 검색 서비스에서 대상을 찾도록 지시
  • predicates:
    -Path=/product-composite/**
    : 이 라우팅 규칙이 처리할 요청을 지정. '별별'은 0개 이상의 문자와 일치

출처

책 - 스프링으로하는 마이크로서비스 구축(매그너스 라슨,에이콘)

profile
기록이 쌓이면 지식이 된다.

0개의 댓글