一:集群環境搭建
第一步:我們新建兩個注冊中心工程一個叫eureka_register_service_master、另外一個叫eureka_register_service_backup
eureka_register_service_master的application.properties配置
server.port=7998
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
spring.application.name=eureka-server
eureka.instance.hostname=master
eureka.client.serviceUrl.defaultZone=http://backup:7999/eureka/
eureka_register_service_backup的application.properties配置如下
server.port=7999 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false spring.application.name=eureka-server eureka.instance.hostname=backup #這里配置的是master的地址 eureka.client.serviceUrl.defaultZone=http://master:7998/eureka/
上面的配置端口分別是
master端口是7998
backupr端口是7999
由於我用的是同一台機器所以需要綁定下host
127.0.0.1 master
127.0.0.1 backup
第二步:添加啟動文件分別是ApplicationMaster.java,ApplicationBackUp.java
里面代碼內容是一樣的
@EnableEurekaServer
@SpringBootApplication
public class ApplicationMaster {
public static void main(String[] args) {
SpringApplication.run(ApplicationMaster.class, args);
}
}
@EnableEurekaServer
@SpringBootApplication
public class ApplicationBackUp {
public static void main(String[] args) {
SpringApplication.run(ApplicationBackUp.class, args);
}
}
二:服務端注冊
設置了多個注冊中心后,我們的服務配置不需要太多改動只需將工程的application.properties的serviceUrl修改下
eureka.client.serviceUrl.defaultZone=http://master:7998/eureka/,http://backup:7999/eureka/,
當然也可以綁定一個地址,eureka.client.serviceUrl.defaultZone=http://master:7998/eureka/ 這兩種綁定都可以,綁定一個時,也會注冊到兩個eureka上。但是如果只寫一個時,假如http://master:7998/eureka/這個掛掉了,另一個eureka的結點信息會消失。
分別打開http://127.0.0.1:7998/ 和 http://127.0.0.1:7999/ 如下圖


通過上圖可以看
端口7998是matser它的registered-replicas指向了http://backup:7999/eureka/
端口7999是backup它的registered-replicas指向了http://master:7999/eureka/
如何配置serviceUrl來讓集群中的服務進行同步
Eureka Server的同步遵循着一個非常簡單的原則:只要有一條邊將節點連接,就可以進行信息傳播與同步
場景一
假設我們有3個注冊中心,我們將peer1、peer2、peer3各自都將serviceUrl指向另外兩個節點。換言之,peer1、peer2、peer3是兩兩互相注冊的。啟動三個服務注冊中心,並將compute-service的serviceUrl指向peer1並啟動,可以獲得如下圖所示的集群效果。

訪問http://localhost:1112/,可以看到3個注冊中心組成了集群,compute-service服務通過peer1同步給了與之互相注冊的peer2和peer3
總結:
- 兩兩注冊的方式可以實現集群中節點完全對等的效果,實現最高可用性集群,任何一台注冊中心故障都不會影響服務的注冊與發現
