erea

spring cloud config server #3 본문

dev/Spring Boot Cloud MicroService

spring cloud config server #3

erea 2018. 7. 10. 20:57

Overview

Spring Cloud Bus는 분산 시스템의 노드를 간단한 메시지 브로커와 링크합니다. 그런 다음 상태 변경 (예 : 구성 변경) 또는 기타 관리 지침을 브로드 캐스트하는 데 사용할 수 있습니다. 핵심 아이디어는 버스가 확장 된 스프링 부트 애플리케이션을위한 분산 액츄에이터와 비슷하지만 앱 사이의 통신 채널로도 사용될 수 있다는 것입니다. 스타터는 AMQP 중개인을 위해 운송 수단 또는 카프카를 위해 제공되지만 동일한 기본 기능 세트 (그리고 일부는 운송 수단에 따라 다름)는 다른 운송 수단의 로드맵에 있습니다.


이번장에서는 Spring Cloud Bus를 통해 Config Server Client에 일일이 /refresh endpoint로 config를 갱신하지않고 Queue를 통해 일괄 갱신 하는법을 알아보겠다.





Config Server

application .yml

management:
spring
  rabbitmq:
    host: localhost
    port: 5672
    username: test
    password: test
  endpoints:
    web:
      exposure:
        include: refresh, bus-refresh, bus-env
rabbitmq 연결 및 endpoint에 bus-refresh를 열어준다.

Rabbitmq Dockerlizing
docker run -it -d -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=test -e RABBITMQ_DEFAULT_PASS=test rabbitmq:3.7.2-management-alpine
테스트에 사용할 rabbit mq
rabbitmq, kafka, redis 외에는 지원되지 않는다. 3개중에 적절히 선택

bundle.gradle

compile group: 'org.springframework.cloud', name: 'spring-cloud-config-monitor'
compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-bus-amqp'

config client

bundle.gradle
compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-bus-amqp'

application.yml

spring
  rabbitmq:
    host: localhost
    port: 5672
    username: test
    password: test
이렇게만 세팅해줘도 간단히 세팅된다.
그후 config-server에 POST /actuator/bus-refresh 로 호출하면 연결되있는 client 설정이 갱신된다 (물론 @RefreshScope가 있어야한다.)
그리고 Spring 문서에는 Eureka와 연동을 추천한다고 하는데 Eureka가 없다면 궂이 연동하지않고 config server만 구성해도된다.


Conclusion

Ci CD 환경에서 없어선 안될 중요한 역활이다
만약 cloud-bus로 구현하지않는 다면 gitlab runner 나 젠킨스에서 배포때마다 이역활을 해줘야하는데
cloud-bus로 허나로 해결되었다.
다만 queue없이 자체 JMS나 proxy로 선택가능하게 만들어줬으면 어땟을까 개인적인 의견이다.

Refrence

https://github.com/spring-cloud/spring-cloud-bus
http://www.baeldung.com/spring-cloud-bus



'dev > Spring Boot Cloud MicroService' 카테고리의 다른 글

Zuul Proxy  (0) 2018.07.03
Eureka Server  (0) 2018.07.02
spring boot with Netflix Oss  (0) 2018.07.02
spring cloud config server  (0) 2018.07.01
Comments