Eureka服务集群DS Replicas为空

Eureka在相互注册(集群)形成高可用时DS Replicas为空

今儿在用eureka相互注册,想要形成集群时,通过网页浏览时DS Replicas显示为空,如下:

Eureka服务集群DS Replicas为空_第1张图片

查询别人的说法,最后实践验证,如下方法可行:

在properties或者是yml文件中添加以下配置:

prefer-ip-address: true

 我是yml文件格式;

server:
  port: 7003

# Eureka配置
eureka:
  instance:
    hostname: localhost   # eureka服务端的实例的名字
    prefer-ip-address: true
  client:
    register-with-eureka: false     #是否向eureka注册中心注册自己
    fetch-registry: false           # fetch-registry为false表示自己为注册中心
    service-url:                    # 和eureka服务交互的页面地址
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/   单机
# 集群
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/

我注册了3个注册中心,域名映射没改,都为localhost(自己偷懒了),现添加上面的配置以后,可以发现其他另外的注册中心,浏览页面如下:

Eureka服务集群DS Replicas为空_第2张图片

 我注册了3个注册中心,应该此处有2个,但是只有一个,说明

defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/

这里的注册地址只有第一个地址生效了,后面的地址没有生效,找到这样一个说法:

eureka内部逻辑调用查询第一个非回环地址方法,需要进入window/system32/drivers/etc/hosts文件配置主机名(域名)==>127.0.0.1空格localhost 回环地址因为你用他做集群注册所以要显性配置出来,我没有配置,所以三个都是localhost,所以此是一个问题点;

在系统文件(window/system32/drivers/etc/hosts末尾)下修改域名映射:

eureka:
  instance:
    hostname: localhost7001.com 
defaultZone: http://localhost7002.com:7002/eureka/,http://localhost7003.com:7003/eureka/

再次加载,如下:

Eureka服务集群DS Replicas为空_第3张图片

可以成功的查找到所有的注册中心了! 

注意:修改域名时要小心,不要操作错了,因为这是在系统文件下操作的,虽然起了三个名字,但是他们还是一样的,都是指本机127.0.0.1,只是为了区分不同的注册而已。

你可能感兴趣的:(java问题总结)