上一篇文章【Spring Cloud搭建注冊中心】成功搭建了一個Eureka Server服務注冊中心,不過相信細心的朋友都會發現,這個服務注冊中心是一個單節點服務注冊中心,萬一發生故障或者服務器宕機,那所有的服務可就不能使用了,這個在生產環境了是不允許的。
Eureka Server其實設計早就考慮到了高可用性,Eureka Server可以將自己作為服務注冊到其他服務注冊中心,這樣可以互相注冊,以實現服務清單的同步,達到高可用的效果。
——————————————————————————————————————————————————————
添加配置文件
在我們上一篇文章中,搭建的eureka-server-test項目中添加兩個配置文件,aplication-peer1.properties和aplication-peer2.properties,詳細配置文件內容如下:
#端口號
server.port=8081
spring.profiles=peer1
eureka.instance.hostname=peer1
#向注冊中心注冊服務
eureka.client.registerWithEureka=false
# 檢索服務
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone=http://peer2:8082/eureka/
#在Eureka服務器獲取不到集群里對等服務器上的實例時,需要等待的時間
server.waitTimeInMsWhenSyncEmpty=0
#自我保護模式
server.enableSelfPreservation=false
#端口號
server.port=8082
spring.profiles=peer2
eureka.instance.hostname=peer2
#向注冊中心注冊服務
eureka.client.registerWithEureka=false
# 檢索服務
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone=http://peer1:8081/eureka/
#在Eureka服務器獲取不到集群里對等服務器上的實例時,需要等待的時間
server.waitTimeInMsWhenSyncEmpty=0
#自我保護模式
server.enableSelfPreservation=false
在peer1配置文件中,serviceUrl指向peer2,而peer2配置文件中,serviceUrl指向peer1,這樣就做到了相互注冊。這里還需要注意在本地測試的時候,我們需要修改host文件(C:\Windows\System32\drivers\etc),添加以下內容:
127.0.0.1 peer1
127.0.0.1 peer2
生成jar包
使用IDEA進行Maven Intall,【 IntelliJ IDEA 社區版 Maven Install 和Maven clean】
啟動兩個注冊服務中心
這里我們不使用IDEA進行項目啟動,而是直接通過命令來啟動。
java -jar eureka-server-test-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-test-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
啟動成功之后,在瀏覽器中進行訪問,這時候在8081的DS Replicas中可以看到peer2節點,在8082的DS Replicas中可以看到peer1節點,這樣我們雙節點的服務注冊中心就搭建好了。
啟動服務提供者
依然是上一篇文章中創建的eureka-client-test項目,修改提供者的配置文件:
server.port=9081
spring.application.name=client-demo
eureka.client.serviceUrl.defaultZone=http://peer1:8081/eureka/,http://peer2:8082/eureka/
此處兩個服務注冊中的地址都添加上,以","分隔。
然后分別訪問http://localhost:8081/ 和 http://localhost:8082/ 可以看到提供者已經注冊到兩個服務注冊中心了。
到這里,一個高可用的服務注冊中心集群就搭建完成了。