Eureka 开发随笔

Eureka 搭建集群,节点均出现在 unavailable-replicas 下

Eureka 搭建高可用集群,启动多个注册中心后,节点均出现在 unavailable-replicas,查阅各类资料和测试,提供的方案如下:

    1. eureka.client.serviceUrl.defaultZone 配置项的地址,不能使用 localhost 或者内网/外网 IP,要使用域名,DNS 解析请自行配置,也可以在本机的 /etc/hosts 里映射域名
    1. spring.application.name 要一致(默认不配置也可以)
    1. register-with-eureka 设置为 true(默认不配置也可以)
1
2
3
4
eureka:
client:
register-with-eureka: true
fetch-registry: false
    1. 配置 eureka.instance.hostname (好像看到过正常情况下 Eureka 会自动拉取设备 Host,但各节点在同一机器下时请务必添加,注意各节点配置自己节点的 Host)
1
2
3
eureka:
instance:
hostname: host1
    1. 千折腾万折腾还是不好使的时候,请去掉下面这个参数或者改为 false(神坑),未找到官方原因
1
2
3
eureka:
instance:
prefer-ip-address: false

个人大概理解了下,prefer-ip-address: true 为不使用主机名来定义注册中心的地址,而使用 IP 地址的形式,而 defaultZone 中是以域名的方式向注册中心注册的(测试了下使用 IP 注册到备份节点不可识别),最终导致分片节点不能识别匹配(IP 地址与域名),而认为分片均处于不可达状态。