IT/Spring Cloud

Spring Cloud Bus

김 정 환 2022. 1. 5. 08:58
반응형

앞으로 구현할  Spring Cloud Bus 서비스의 개요입니다.

 

분산 시스템입니다. 마이크로서비스는 데이터(메시지)를 미들웨어(분산 시스템)에 보내면, 해당 데이터(메시지)가 필요하다고 설정해 놓은 어떤 마이크로서비스가 가져가는 방식입니다.

 

설정 정보를 변경하는 방법은 이전 시간에 배운 Actuator의 refresh가 있습니다. 혼자 많은 서버를 관리하다 보면 서버 하나 하나를 refresh를 해야하는 번거로움이 있을 수 있습니다. 여기서는 Spring Cloud Bus를 이용해서 설정 정보를 알아서 서비스들이 가져가서 적용하도록 해보겠습니다. AMQP를 이용해서 통신하고 RabbitMQ를 이용합니다.

 

 

AMQP (Advanced Message Queuing Protocol)

  • 의미 : 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜
  • 특징 : 메시지 지향, 큐잉, 라우팅(P2P, Publisher-Subscriber), 신뢰성, 보안

Kafka, RabbitMQ

  • 의미 : 분산형 스트리밍 플랫폼
  • 특징 : 대용량의 데이터를 처리 가능한 메시징 시스템

 

 

요약

erlang과 RabbitMQ 설치
설정 정보를 받을 서비스들에 Cloud Bus 설정 추가 (Dependecy, application.yml)
설정 정보 변경될 때마다 /actuator/busrefresh 수행

 

 

 

설치

erlang 다운로드 여기. 저는 24.1 버전을 사용했습니다.

설치 후, 아래와 같이 시스템 환경 변수에 경로를 추가합니다.

 

RabbitMQ 다운로드 여기. 저는 3.9.11 버전을 사용했습니다.

설치 후, 아래와 같이 시스템 환경 변수에 경로를 추가합니다.

 

윈도우 찾기를 눌러, RabbitMQ Command Prompt를 실행합니다. 그리고 아래 명령어를 입력하여 RabittMQ를 실행합니다.

rabbitmq-plugins enable rabbitmq_management

 

http://127.0.0.1:15672를 브라우저에 입력합니다. ID와 PW는 'guest'입니다.

들어가면 아래와 같은 대시보드를 보실 수 있습니다.

 

 

소스코드

설정 정보를 추가합니다.

 

Config, Api GW, User Service 프로젝트에 아래 Dependemcy를 추가합니다.

        <!-- Spring Cloud Bus -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

 

ConfigApi GWUser Service 프로젝트의 application.yml에 RabbitMQ 정보를 추가합니다.

spring:
  application:
    name: apigateway-service
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
 
 
 (중략)
 
 
 management:
  endpoints:
    web:
      exposure:
        include: busrefresh, refresh, health, beans, httptrace

 

 

프로젝트를 아래 순서대로 실행합니다.

1. RabbitMQ

2. Config Service

3. Discovery Service

4. Gateway Service

5. Microservice

 

 

Postman으로 확인합니다.

1. 회원가입

2. 로그인

3. health_check : 127.0.0.1:8000/user-service/health_check

이렇게 하면 token secret=user_token_native_application 을 확인할 수 있습니다.

 

이제 application.yml의 token secret을 아래와 같이 수정하고 저장합니다.

secret=user_token_native_application_#2

로컬이기 때문에 commit이 필요없습니다.

이제 user-service 에서 /actuator/busrefresh 를 수행합니다. 그러면 cloud bus와 연결되어 있는 Config, Gateway, User 서비스들은 모두 refresh 됩니다. 그리고 아래와 같은 메시지가 뜹니다.

 

다시 health_check를 하려고 하니 인증 오류가 뜹니다. 토큰 정보가 바뀌었기 때문입니다. 로그인부터 다시 하고 health_check 를 하면 토큰 정보가 바뀐 것을 볼 수 있습니다. 

 

 

끝.

반응형

'IT > Spring Cloud' 카테고리의 다른 글

비대칭키 암호화  (0) 2022.01.05
대칭키 암호화  (0) 2022.01.05
Configuration Service  (0) 2021.12.30
User Microservice - 회원 로그인  (0) 2021.12.17
Order Service  (0) 2021.12.15