eureka 高可用配置 unavailable-replicas 问题.

本文解决Spring Cloud Eureka高可用配置中节点无法获取心跳的问题,深入分析源码,发现eureka使用过时配置导致心跳地址错误,通过添加server.context-path配置项解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用spring cloud 配置eureka 高可用配置时.发现配置的节点一直无法获取心跳.

eureka控制台界面上一直显示的挂载节点 是 unavailable-replicas

查看日志.就是获取心跳的地址不对.  默认的健康检查HealthCheckUrl  地址是 

http://peer1:8200/actuator/health

而一般的教程或者书上在配置注册中心时基本都用的 

defaultZone: http://peer2:8200/eureka

这就有问题了. 明显地址是加了 /eureka 的上下文的.但是心跳地址没有上下文.. 

 

网上搜了一下,很多人的解决方案就是重新配置HealthCheckUrl 地址成正确地址.

我觉得这种只是在补窟窿. down下路源码看了后.发现了一个eureka的bug..

查看类  org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration  的第122行          

       String serverContextPath = this.env.getProperty("server.context-path", "/");

 

而 在构造默认的health地址的时候  DefaultManagementMetadataProvider 类里第26 拼的上下文 就是这个context-path

 

eureka获取的上下文还是用的过时的配置 server.context-path

 

我配置文件里 ,最新spring boot的context配置项应该是 server.servlet.context-path. 不然idea会提示错误.

唉.eureka的源码里写死了. 没有办法...只好再加了一个 过时配置

server.context-path =/eureka

 

问题解决

转载于:https://my.oschina.net/tuoxiemzb/blog/2248614

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值