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