[Spring Cloud] Load Balancer

jsieon97·2023년 3월 9일
0

Eureka 연동

Discoveryservice를 server로 한다. (PORT:8761)

// FirstService의 application.yml

server:
  port: 8081

spring:
  application:
    name: my-first-service

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka
// SecondService의 application.yml

server:
  port: 8082

spring:
  application:
    name: my-second-service

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

API Gateway의 application.yml도 수정한다.


...

spring:
  application:
    name: apigateway-service
  cloud:
    gateway:
      default-filters:
        - name: GlobalFilter
          args:
            baseMessage: Spring Cloud Gateway Global Filter
            preLogger: true
            postLogger: true
      routes:
        - id: first-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
            - name: CustomFilter
            - name: LoggingFilter
              args:
                baseMessage: Hi. there.
                preLogger: true
                postLogger: true

uri 를 lb://{서비스 이름} 으로 한다.
lb(load balancer)

서비스가 모두 등록된 것을 확인할 수 있다.

Load Balancer란?

하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스

Load Balancer 처리 테스트

  • Load Balancer처리가 필요한 서비스의 포트 번호를 0(random)으로 설정한다.
// FirstService의 application.yml

server:
  port: 0

spring:
  application:
    name: my-first-service

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka
  instance:
    instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}}
  • Shift를 두번 눌러 Edit Configurations 검색 실행
  • 서비스를 하나 복사 후 실행.


연결된 Eureka 서버에서 한 가지의 서비스가 두 가지의 서버로 분산처리 되는 것을 볼 수 있다.

profile
개발자로써 성장하는 방법

0개의 댓글