解决Eureka高可用配置时,available-replicas节点不够或没有,或节点都在unavailable-replicas下的情况。

一般在实际集群中,Eureka的注册中心前面是域名和IP。而测试搭建环境的时候在同一台主机搭建集群就无法满足这个情况。而Eureka是默认用ip去解析defaultZone。

测试通过可用的集群   yml配置:

spring:
  application:
    name: EurekaServer
---
spring:
  profiles: EurekaServer_8699
server:
  port: 8699
# 指定当前eureka客户端的注册地址,
eureka:
  instance:
    hostname: peer8699
    preferIpAddress: false
  client:
    service-url:
      defaultZone: http://peer8699:8699/eureka,http://peer8698:8698/eureka,http://peer8697:8697/eureka
    register-with-eureka: true #自身 不在向eureka注册
    fetch-registry: true  #启动时禁用client的注册
---
spring:
  profiles: EurekaServer_8698
server:
  port: 8698
# 指定当前eureka客户端的注册地址,
eureka:
  instance:
    hostname: peer8698
    preferIpAddress: false
  client:
    service-url:
      defaultZone: http://peer8698:8698/eureka,http://peer8697:8697/eureka,http://peer8699:8699/eureka
    register-with-eureka: true #自身 不在向eureka注册
    fetch-registry: true  #启动时禁用client的注册
---
spring:
  profiles: EurekaServer_8697
server:
  port: 8697
# 指定当前eureka客户端的注册地址,
eureka:
  instance:
    hostname: peer8697
    preferIpAddress: false
  client:
    service-url:
      defaultZone: http://peer8697:8697/eureka,http://peer8699:8699/eureka,http://peer8698:8698/eureka
    register-with-eureka: true #自身 不在向eureka注册
    fetch-registry: true  #启动时禁用client的注册

我们可以看见为了在同一个主机下能测试集群的高可用,我们需要自己映射域名,需要在windows中的修改hosts文件

在win7中改变hosts的方法:https://mp.csdn.net/postedit/90563819

我的hosts文件:

改好后添加hostname,如上面yml中hostname的配置,这里给出配置片段:

eureka:
  instance:
    hostname: peer8699
    preferIpAddress: false

 第四行是关键:当我把preferIpAddress写成prefer-ip-address是无效的!需要驼峰原则!!并且在其他配置项也会出现 横杆无法配置的情况

能正常使用的是 preferIpAddress: false

这是配置Eureka在解析默认空间时不偏好IP地址来解析的方法,因为我们本地测试一台主机的情况没有多的IP地址来测试,只能通过在hosts中设置映射,使不同域名映射到一个本机ip(127.0.0.1 )来达到一个defaultZone中有多个配置中心挂载点的方式。这样配置后就能出现正常的配置了,所有挂载点都 有效了:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章