일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- gradle
- 젠킨스
- 머신러닝
- 레디스
- redash
- Docker
- SpringBoot
- 클러스터
- EMR
- 자동
- fastcampus
- spring
- 간단
- 설정
- Jenkins
- config
- hive
- Cluster
- ec2
- aws
- java
- Mac
- 예제
- login
- vue
- 자바
- Kafka
- Redis
- 로그인
- Zeppelin
- Today
- Total
코알못
5분 안에 구축하는 hystrix - Turbine 본문
일단 클러스터로 모니터링하기위해서는 2개의 애플리케이션이 필요한데 인스턴스들을 집계할 Eureka 애플리케이션과 그 Eureka 클라이언트들의 Hystrix 모니터링을 집계할 Turbine 애플리케이션이다. 유레카 애플리케이션부터 설정을 시작해보자.
eureka 클라이언트(hystrix 서버) > eureka 서버 > turbine 서버 (통합 UI)
1. eureka 서버 셋팅
# build.gradle
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server:3.0.4' // eureka
# application.yml
server:
port: 9091
eureka:
client:
service-url:
defaultZone: "http://localhost:9091/eureka"
fetch-registry: false # eureka 서버도 client 역할을 할 수 있기에 false 로 하여 비활성화 한다.
register-with-eureka: false # eureka 서버도 client 역할을 할 수 있기에 false 로 하여 비활성화 한다.
# application
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
# 기동 (eureka 화면이 나온다!)
2. eureka client 설정 (hystrix 서버)
- springboot 버전에 맞는 라이브러리 버전 설치 해야 오류 나지 않습니다.
dependencies {
...
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:2.2.9.RELEASE'
}
@EnableDiscoveryClient
...
public class HystrixApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixApplication.class, args);
}
}
eureka:
client:
service-url:
defaultZone: http://localhost:9091/eureka # eureka 서버 주소
- eureka server URL 접속(http://localhost:9091/) > 해당 app가 정상적으로 연동된것을 볼 수 있다. (app name 설정한대로 표기)
3. turbine 서버 설정
dependencies {
...
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-turbine:2.2.9.RELEASE' //turbine
}
eureka:
client:
service-url:
defaultZone: http://localhost:9091/eureka
turbine:
cluster-name-expression: new String('default')
app-config: hystrix
server:
port: 9092
spring:
application:
name: TURBINE
@EnableDiscoveryClient
@EnableTurbine
@SpringBootApplication
public class TurbineApplication {
public static void main(String[] args) {
SpringApplication.run(TurbineApplication.class, args);
}
}
- eureka server URL 접속(http://localhost:9091/) > turbine 도 정상적으로 연동 되었다.
4. hystrix dashboard(http://localhost:9000/hystrix) 접속하여 turbine 주소(http://localhost:9092/turbine.stream) 입력후 통합 모니터링을 한다
한개의 어플리케이션에만 적용한 상태로 하나의 어플리케이션(HYSTRIX02)을 더 추가하여 본다.
- eureka 서버 화면 (정상적으로 추가 되었다.)
추가시에는 아래와 같이 turbine 서버의 모니터링할 어플리케이션명 설정에 추가 해야 한다. (예제는 hystrix02를 추가 하였다.)
turbine:
app-config: hystrix,hystrix02
- hystrix dashboard 확인하면 추가한 서버에서 적재된 정보도 한 화면에서 볼 수 있다.
끝 !!
:: https://github.com/works-code/hystrix
:: https://github.com/works-code/hystrix-dashboard
:: https://github.com/works-code/eureka
:: https://github.com/works-code/turbine
# 참고 사항
2021-12-18 18:57:00.676 ERROR 8233 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configDataContextRefresher' defined in class path resource [org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.refresh.ConfigDataContextRefresher] from ClassLoader [sun.misc.Launcher$AppClassLoader@18b4aac2]
원인 : springboot 버전과 사용하는 springcloud 라이브러리 버전이 맞지않아 생긴 이슈
해결 방안 : 맞는 버전 사용 (https://spring.io/projects/spring-cloud)
'JAVA' 카테고리의 다른 글
5분 안에 구축하는 Swagger (API 규격서) (2) | 2022.02.05 |
---|---|
5분 안에 구축하는 Nexus (2) | 2022.02.03 |
5분 안에 구축하는 hystrix - Dashboard 연동 (0) | 2022.01.30 |
5분 안에 구축하는 hystrix (0) | 2022.01.30 |
하나의 브라우저에 멀티 세션(유저) 로그인 기능 구현 (0) | 2022.01.16 |