(13) java Spring Cloud+Spring boot+mybatis企業快速開發架構之使用Eureka叢集搭建實現高可用服務註冊中心
前面我們搭建的註冊中心只適合本地開發使用,在生產環境中必須搭建一個叢集來保證高可用。Eureka 的叢集搭建方法很簡單:每一臺 Eureka 只需要在配置中指定另外多個 Eureka 的地址就可以實現一個叢集的搭建了。
下面我們以 2 個節點為例來說明搭建方式。假設我們有 master 和 slaveone 兩臺機器,需要做的就是:
將 master 註冊到 slaveone 上面。
將 slaveone 註冊到 master 上面。
如果是 3 臺機器,以此類推:
將 master 註冊到 slaveone 和 slavetwo 上面。
將 slaveone 註冊到 master 和 slavetwo 上面。
將 slavetwo 註冊到 master 和 slaveone 上面。
搭建步驟
建立一個新的專案 eureka-server-cluster,配置跟 eureka-server 一樣。
首先,我們需要增加 2 個屬性檔案,在不同的環境下啟動不同的例項。增加 application-master.properties:
server.port=8761 # 指向你的從節點的Eureka eureka.client.serviceUrl.defaultZone=http://使用者名稱:密碼@localhost:8762/eureka/
增加 application-slaveone.properties:
server.port=8762 # 指向你的主節點的Eureka eureka.client.serviceUrl.defaultZone=http://使用者名稱:密碼 @localhost:8761/eureka/
在 application.properties 中新增下面的內容:
spring.application.name=eureka-server-cluster # 由於該應用為註冊中心, 所以設定為false, 代表不向註冊中心註冊自己 eureka.client.register-with-eureka=false # 由於註冊中心的職責就是維護服務例項, 並不需要檢索服務, 所以也設定為 false eureka.client.fetch-registry=false spring.security.user.name=zhangsan spring.security.user.password=123456 # 指定不同的環境 spring.profiles.active=master
在 A 機器上預設用 master 啟動,然後在 B 機器上加上 --spring.profiles.active=slaveone 啟動即可。
這樣就將 master 註冊到了 slaveone 中,將 slaveone 註冊到了 master 中,無論誰出現問題,應用都能繼續使用存活的註冊中心。
之前在客戶端中我們通過配置 eureka.client.serviceUrl.defaultZone 來指定對應的註冊中心,當我們的註冊中心有多個節點後,就需要修改 eureka.client.serviceUrl.defaultZone 的配置為多個節點的地址,多個地址用英文逗號隔開即可:
eureka.client.serviceUrl.defaultZone= http://zhangsan:123456@localhost:8761/eureka/,http://zhangsan:123456@localhost:8762/eureka/
需要框架原始碼請看我個人簡介