SERVER:1
server:
port: 1111
eureka:
instance:
hostname: ${spring.cloud.client.ip-address}
instance-id: ${eureka.instance.hostname}:${server.port}
preferIpAddress: true #指定通过IP注册,一般服务集群时配置,需要ip-address参数一起设置(保证hostName和ip-address一样),以免eureka管理页面出现不可用分片提示信息(unavailable-replicas),服务的注册默认是通过hostName注册的,当判断注册的hostName和服务
ip-address: ${EUREKA_IP:${eureka.instance.hostname}} #强制指定eureka的ip地址
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:1112/eureka/
fetch-registry: true #集群时需要强制手动指定,fetch-registry、register-with-eureka都需要设置为true
register-with-eureka: true #集群时需要强制手动指定,fetch-registry、register-with-eureka都需要设置为true
SERVER:2
server:
port: 1112
eureka:
instance:
hostname: ${spring.cloud.client.ip-address}
instance-id: ${eureka.instance.hostname}:${server.port} #eureka server管理页面显示的服务状态
preferIpAddress: true #指定通过IP注册,服务集群高可用必须配置,需要ip-address参数一起设置,以免eureka管理页面出现不可用分片提示信息(unavailable-replicas)
ip-address: ${EUREKA_IP:${eureka.instance.hostname}} #强制指定eureka的ip地址
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:1111/eureka/
fetch-registry: true #集群时需要强制手动指定,fetch-registry、register-with-eureka都需要设置为true
register-with-eureka: true #集群时需要强制手动指定,fetch-registry、register-with-eureka都需要设置为true
需要注意的是
Eureka高可用部署,启动多个注册中心后,节点均出现在unavailable-replicas,查阅各类资料测试,提供方案:
1.eureka.client.serviceUrl.defaultZone配置项的地址,不能使用localhost,要使用ip或域名
2.spring.application.name要一致(这个个人测试默认不配也可以)
3. fetch-registry、register-with-eureka 都需要设置为true,要不然集群服务器数据不同步,目前Spring Cloud 版本为 Finchley.RELEASE
默认情况下,eureka client使用主机名(hostName)向注册中心注册。
当prefer-ip-address: true时 ,client使用的是ip向服务中心注册 ,但是默认获取的ip是 127.0.0.1。默认情况下 当 这个获取的ip 和 hostName 不同时 ,则产生不可用分片提示信息(unavailable-replicas),并且集群间的数据不会同步。
所以要么指定 两个ip相同 ,就不会有提示了(指定ip-address和hostname相同)。