eureka做为注册中心,单点存在风险,若是挂了,就会找不到服务了。spring
咱们以三个节点为例,application.yml配置以下app
--- spring: profiles: peer1 eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: http://peer1/eureka/,http://peer2/eureka/ --- spring: profiles: peer2 eureka: instance: hostname: peer2 client: serviceUrl: defaultZone: http://peer1/eureka/,http://peer3/eureka/ --- spring: profiles: peer3 eureka: instance: hostname: peer3 client: serviceUrl: defaultZone: http://peer1/eureka/,http://peer2/eureka/
此时访问peer1的注册中心:http://peer1/。registered-replicas中已经有peer二、peer3节点的eureka-server了。url
一样地,访问peer2的注册中心:http://peer2/,registered-replicas中已经有peer一、peer3节点,而且这些节点在可用分片(available-replicase)之中。spa
咱们也能够尝试关闭peer1,刷新http://peer2/,peer1的节点变为了避免可用分片(unavailable-replicas)。code
注意:server
两两注册的方式能够实现集群中节点彻底对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现。同步
server: port: 8080 spring: application: name: eureka-ha-demo eureka: client: service-url: defaultZone: http://peer1/eureka,http://peer2/eureka,http://peer3/eureka
或者io
server: port: 8080 spring: application: name: eureka-ha-demo eureka: client: service-url: defaultZone: http://peer1/eureka
client端只链接一个peer1,也会把注册信息同步到peer二、peer3中的。集群
由于Eureka Server的同步遵循着一个很是简单的原则:只要有一条边将节点链接,就能够进行信息传播与同步。cli