Eureka 集群高可用配置.

2021-02-20 14:14发布

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相同)。

 

 
标签: