Eureka高可用注冊中心
Eureka Server的設計一開始就考慮到了高可用的問題,在eureka服務治理設計中,所有的節點即是是服務提供方,也是服務消費方。
在部署高可用注冊中心前我們先需要準備一下,本地環境。因為我們實例是在單臺電腦上的,所以需要模擬墮胎服務器,我們需要修改一下本機的host文件。
windows的host文件在C:\Windows\System32\drivers\etc\hosts
在host文件后面加上
127.0.0.1 peer1
127.0.0.1 peer2
修改完成,我們就來嘗試搭建高可用的服務注冊中心集群。接著上一章的服務中心的基礎上面擴展,來構建一個雙節點服務注冊中心集群。
在resource目錄下面:
創建application-peer1.yml配置文件,作為peer1服務中心的配置,并將serviceId指向peer2.
server:port: 8762
spring:application:name: service-register
eureka:instance:prefer-ip-address: falsehostname: peer1client:fetch-registry: trueregister-with-eureka: trueserviceUrl:defaultZone: http://peer2:8763/eureka/server:wait-time-in-ms-when-sync-empty: 0
創建application-peer2.yml配置文件,作為peer2服務中心的配置,并將serviceId指向peer1.
server:port: 8763
spring:application:name: service-register
eureka:instance:prefer-ip-address: falsehostname: peer2client:fetch-registry: trueregister-with-eureka: trueserviceUrl:defaultZone: http://peer1:8762/eureka/server:wait-time-in-ms-when-sync-empty: 0
接下來通過spring.profiles.active屬性來分別啟動peer1和peer2.
我啟動的做法是不在idea里啟動,而是把服務注冊中心打包,通過cmd啟動。
maven打包

然后通過cmd命令分別啟動服務
[圖片上傳中...(15324253911.jpg-db47b5-1532490920148-0)]

java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active

java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
兩個服務啟動后,我們訪問一下http://localhost:8762/或者http://localhost:8763/

這里可以看到兩個注冊中心部署相互注冊成功了。
關閉其中一個服務我們可以看到對應的節點變成不可用了。

設置多個服務注冊中心后,服務提供者還需要做一些簡單的配置才能將服務注冊到Eureka server集群中。
在這里我們按照前面的做法,重新新建一個服務提供者module,命名為"eureka-bussniss-service-user"當作是我們平時項目中用戶服務模塊,專門處理用戶相關服務的。
因為目前服務注冊中心是多個的,所以我們在服務提供者的配置文件上還需要做一些配置。
添加下面的屬性,表示把服務注冊到指定的注冊中心,注冊中心地址用逗號隔開;
eureka.client.serviceUrl.defaultZone=http://peer1:8762/eureka/,http://peer2:8763/eureka/
完整的application.yml配置如下:
spring:application:name: service-user
server:port: 8802
eureka:client:serviceUrl:defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/
記得主類添加@EnableEurekaClient注解,然后在確保服務注冊中心正常的情況下,啟動該項目。如果項目沒有報錯那就說明我們的配置應該是正常的。打開http://localhost:8763/或者http://localhost:8762/我們可以看到service-user已經同時注冊到了服務注冊中心。

此時若斷開peer1服務,由于service-user服務也向peer2注冊,因此peer2上面的其他服務依然能夠訪問到service-user。從而實現了注冊中心的高可用。
項目的源碼
服務提供者已經完成了,下一篇我們將會實現服務消費者,以及使用ribbon實現負載均衡。