天天看点

eureka集群高可用时,'available-replicas'有效副本为空的问题

在eureka进行集群实现高可用时,由于不恰当的配置,容易引起'available-replicas'可用副本为空的情况,如图示      
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监控界面如下所示

eureka集群高可用时,'available-replicas'有效副本为空的问题

高可用配置可参考作者另一博文。

https://blog.csdn.net/weishaoqi2/article/details/87811262

继续阅读