Spring Cloud多Turbine集群按特定服务配置失效求助
搞定Spring Cloud Turbine多集群配置失效问题
我看了你当前的配置,问题主要出在几个细节上,咱们一步步来修正:
你的配置错误点
- 配置项
ConfigPropertyBasedDiscovery首字母大写了,Spring Boot的yaml配置对大小写敏感,正确的应该是小写开头的configPropertyBasedDiscovery - 没有开启基于配置的集群发现开关
enabled: true,这是让Turbine识别你定义的集群映射的关键 clusterNameExpression设置为metadata.cluster,但你的服务实例并没有在metadata里配置cluster属性,导致集群映射无法生效
正确的多集群配置
把你的配置改成下面这样:
turbine: aggregator: clusterConfig: CLUSTER1,CLUSTER2 # 指定要聚合的集群名称,注意和clusterMap的键大小写一致 appConfig: service1,service2 # 列出所有需要监控的服务实例 configPropertyBasedDiscovery: enabled: true # 启用基于配置的集群发现 clusterMap: CLUSTER1: service1,service2 # CLUSTER1包含service1和service2 CLUSTER2: service1 # CLUSTER2只包含service1 clusterNameExpression: "'default'" # 固定为default,让Turbine通过clusterMap来分配集群
配置解释
turbine.aggregator.clusterConfig:告诉Turbine需要处理哪些集群,这里的名称要和clusterMap里的键完全匹配(大小写敏感)turbine.configPropertyBasedDiscovery.enabled:必须设为true,否则Turbine不会读取你定义的clusterMap规则turbine.configPropertyBasedDiscovery.clusterMap:定义集群和服务的映射关系,键是集群名,值是该集群包含的服务名(多个用逗号分隔)turbine.clusterNameExpression:这里设置为固定的'default',因为我们不需要依赖服务实例的metadata来指定集群,而是通过clusterMap做静态分组
验证方式
配置完成后,启动Turbine和你的服务,分别访问以下URL查看对应集群的监控流:
- 访问
http://<turbine-host>:<port>/turbine.stream?cluster=CLUSTER1:可以看到service1和service2的Hystrix metrics - 访问
http://<turbine-host>:<port>/turbine.stream?cluster=CLUSTER2:只会看到service1的Hystrix metrics
这样就能满足你要的两个集群监控需求啦~
内容的提问来源于stack exchange,提问作者niba
相关产品推荐
相关产品推荐

