(13) SpringCloud-使用Eureka叢集搭建實現高可用

JIAN2發表於2022-10-19

前面我們搭建的註冊中心只適合本地開發使用,在生產環境中必須搭建一個叢集來保證高可用。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=

需要框架原始碼請看我個人簡介



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70006413/viewspace-2919107/,如需轉載,請註明出處,否則將追究法律責任。

相關文章