1. 程式人生 > >高可用Eureka註冊中心配置說明(雙機部署)

高可用Eureka註冊中心配置說明(雙機部署)

目  錄

1. 高可用EureKa註冊中心示意圖

2. Eureka例項相互註冊配置

3. 微服務註冊到Eureka配置

4. 啟動步驟及配置成功檢查

5. 說明事項

1. 高可用EureKa註冊中心示意圖

Spring Cloud的Eureka Server的高可用實際上就是將自己作為服務向其他服註冊中心註冊自己,形成一組互相註冊的服務註冊中心,以實現服務清單的互相同步,達到高可用的效果。

如下圖,Eureka server 1, Eureka server 2相互感應,當有服務註冊時,多個Eureka-server是對等的,它們都存有相同的資訊,這就是通過伺服器的冗餘來增加可靠性,當有一臺伺服器宕機了,服務並不會終止,因為另一臺服務存有相同的資料。

2. Eureka例項相互註冊配置

Eureka通過執行多個例項,使其更具有高可用性,這是它預設的屬性,需要做的就是給對等的例項一個合法的關聯serviceUrl,分別配置Eureka多個例項的application.yml 使其相互註冊。

比如有兩個eureka服務,分別部署在兩臺伺服器上。

第1個Eureka 配置檔案application.yml如下:

 

第2個Eureka 配置檔案application.yml如下:

專案中Eureka配置非常簡單,分別部署在兩臺機器上,只須按如下配置每個Eureka並修改defaultZone中的server1-IP 和 server2-IP ,根據實際情況改為伺服器具體的IP即可。

配置完上述步驟,兩個Eureka服務相互註冊,即可啟用Eureka的HA屬性。

3. 微服務註冊到Eureka配置

比如,tpp-acc註冊到Eureka

配置檔案中,eureka.client.serviceUrl.defaultZone 增加以上多個Eureka對應的URL:

 

4. 啟動步驟及配置成功檢查

先啟動Eureka1Application,Eureka2Application,然後啟動其他的微服務

每個註冊中心的available-replicas都出現另外的註冊中心的服務,則說明搭建成功。

 

例如:

我本機分別啟動了三個Eureka例項,由於我本地是單機環境,分別通過機器IP、127.0.0.1和localhost作為三個Eureka的hostname,如下:

http://172.20.16.198:8761/

http://127.0.0.1:8762/

http://localhost:8763/

每個註冊中心的available-replicas都出現其他兩個註冊中心的服務,說明搭建成功。

如下圖,其中http://localhost:8763/ 可以看到其他8761  8762兩個服務。

另外,啟動example-service:8080進行註冊,在每個註冊中心都能看到相同的服務已註冊。

當關掉其中一臺Eureka服務時,則出現在unavailable-replicas中,如下圖。

5. 說明事項

Eureka互相註冊要求各個Eureka例項的eureka.instance.hostname不同,如果相同,則會被Eureka標記為unavailable-replicas。

把eureka.instance.hostname取了${spring.cloud.client.ipAddress}的值,這個值取的是當前啟動Eureka的機器的IP,這樣雖然配置一樣但卻自動區分了每臺機器的Eureka,這時我們再取prefer-ip-address: true,就可以確保機器優先使用IP而不是到hosts解析域名。