在eureka进行集群实现高可用时,由于不恰当的配置,容易引起'available-replicas'可用副本为空的情况,如图示
这是由于下面3个原因导致的
1.'eureka.instance.appname'与'spring.application.name’不一致
2.‘eureka.instance.preferIpAddress’为true
3.没有开启注册到自身。
可参考配置如下
spring:
application:
name: eureka-server
profiles: peer2
cloud:
client:
ipAddress: 127.0.0.1
server:
port: 8762
eureka:
instance:
hostname: peer2
lease-expiration-duration-in-seconds: 30 #续约到期时间(默认90秒)
lease-renewal-interval-in-seconds: 10 #续约更新时间间隔(默认30秒),使得eureka及时剔除无效服务
prefer-ip-address: false
instance-id: ${spring.cloud.client.ipAddress}:${server.port}
appname: eureka-server #这里要跟‘spring.application.name’一致,还有‘prefer-ip-address’为false,同时开启自身注册,‘available-replicas’有效副本才不为空
client:
serviceUrl:
#以下测试高可用的配置--两个server相互注册
defaultZone: http://peer1:8761/eureka/ #这里使用‘defaultZone’监控页面DS Replicas显示的是‘peer1’,使用‘default-zone’显示‘localhost’
# register-with-eureka: true #是否注册到自身服务端,默认为true,高可用需要注册到本身
# fetch-registry: true #是否从服务器拉取注册信息,默认为true
#生产环境需要注释下面的配置,开启自我保护;
server:
enable-self-preservation: false #关闭自我保护模式(缺省为打开)
eviction-interval-timer-in-ms: 10000 #续期时间,清理无效服务的时间间隔,默认是60*1000
可分别注释掉这3个配置进行逐一测试。
修改成正确的配置后,再次打开peer1的eureka监控界面如下所示
高可用配置可参考作者另一博文。
https://blog.csdn.net/weishaoqi2/article/details/87811262