[Dining-together] Spring cloud config + spring bus + rabbitmq 이용해서 설정파일 분리

Jifrozen·2021년 8월 11일
1

Dining-together

목록 보기
19/25

Spring cloud config + spring bus + rabbitmq 이용해서 설정파일 분리

spring cloud config

  • 분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보( application.yml)를 외부 시스템에서 관리
  • 하나의 중앙화 된 저장소에서 구성요소 관리 가능
  • 각 서비스를 다시 빌드하지 않고, 바로 적응 가능
  • 애플리케이션 배포 파이프라인을 통해 DEV - UAT - PROD 환경에서 맞는 구성 정보 사용

application.yml 관리하는 방법은 위 3가지 이다.
그 중에서 나는 private git repository를 이용해서 작업할 예정이다.

private git repository

  1. 우선적으로 깃 레파지토리를 만들어줘 application.yml파일 정보를 옮긴다.

  2. config 서비스 만들어서 configserver 등록해준다.
    @SpringBootApplication
    @EnableConfigServer
    public class ConfigApplication {

    public static void main(String[] args) {
    	SpringApplication.run(ConfigApplication.class, args);
    }

}

  1. config server 에 application.yml 파일에 깃 레파지토리 등록

private repo이기 때문에 ssh 인증을 진행했다.
ssh 인증은

ssh-keygen -m PEM -t rsa -b 4096 -f ~/config_server_deploy_key.rsa

ssh 키 얻는 명령어
그럼 두개키가 생성된다.
1. id_rsa.pub
2. id_rsa

1번 키를 github SSH key에 등록한다.

2번 키를

application.yml 파일에 등록한다.


Previous - changed configuration values

바뀐 설정파일을 반영해주는 방법
1. 서버 재기동
-> 설정파일 분리한 이유(보안, 설정파일 바뀔때마다 계속 서버를 재기동 시키기 귀찮음) 에 부합하지 않음
2. Actuator refresh
- Spring boot actuator
3. Spring cloud bus 사용
- 분산 시스템의 노드를 경량 메시지 브로커와 연결
- 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달

- 분산시스템의 노드를 경량 메시지 브로커(rabbitmq)와 연결
- 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달 (broadcast)


다른 서비스에서 config 서비스 불러오기

bootstrap.yml 파일

spring:
  cloud:
    config:
      uri: http://127.0.0.1:8888
      name: token

application.yml


  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
management:
  security:
    enabled: false
  endpoints:
    health:
      show-details: always
    web:
      exposure:
        include: refresh,health,beans,httptrace,busrefresh

0개의 댓글