Spring Cloud微學習(二)Eureka入門——叢集
引言:上一節 Eureka初探中我們介紹了Eureka服務端以及客戶端的基本搭建方法,那麼考慮如果Eureka所在的伺服器掛掉了,就相當於所以客戶端的通訊連線斷了。這一節將介紹如何降低出現這種問題的概率。
“在微服務架構這樣的分散式環境中, 我們需要充分考慮發生故障的情況, 所以在生產環境中必須對各個元件進行高可用部署, 對於微服務如此, 對於服務註冊中心也一樣。 但是到本節為止,我們一直都在使用單節點的服務註冊中心,這在生產環境中顯然並不合適,我們需要構建高可用的服務註冊中心以增強系統的可用性。”——《Spring Cloud微服務實戰》1
看過上一節 Eureka初探的內容可以看到,在搭建Eureka服務端的時候加了配置registerWithEureka: false
fetchRegistry: false
意思是不讓服務中心註冊自己。現在要解決單點故障風險,我們需要做一個Eureka註冊中心叢集,需要讓服務中心叢集相互註冊。以兩個節點為例,配置如下:
- 新建application-peer1.yml
server:
port: 11111
spring:
application:
name: eureka-server
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:22222/eureka/
- 新建application-peer2.yml
server:
port: 22222
spring:
application:
name: eureka-server
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:11111/eureka/
- 配置IP與主機名對映模擬叢集環境
開啟編輯C:\windows\system32\drivers\etc\hosts
,加入如下內容儲存
127.0.0.1 peer1 127.0.0.1 peer2
- 打包執行
使用Maven Install生成eureka.jar檔案,命令列分別執行java -jar eureka.jar --spring.profiles.active=peer1
和java -jar eureka.jar --spring.profiles.active=peer2
- 檢視執行狀態
開啟瀏覽器輸入http://localhost:11111
和http://localhost:22222
- 客戶端配置
修改上一節 Eureka初探中提到的客戶端配置application.yml,目的是把hello-service註冊到兩個服務註冊中心中
server:
port: 80
eureka:
client:
serviceUrl:
defaultZone: http://peer1:11111/eureka/,http://peer2:22222/eureka/
spring:
application:
name: hello-service
打包執行客戶端,再開啟瀏覽器輸入http://localhost:11111
和http://localhost:22222
,發現hello-service已經同時註冊到了兩個服務中心中,這時如果其中一個服務中心故障,其它客戶端可以從另一個服務中心獲取到hello-service提供的服務
如我們不想使用主機名來定義註冊中心的地址,也可以使用IP地址的形式, 但是需要在配置檔案中增加配置引數eureka.instance.prefer江p-address= true, 該值預設為false ——《Spring Cloud微服務實戰》
- 《Spring Cloud微服務實戰》第3章 高可用註冊中心中描述的內容 ↩