1. 程式人生 > >Spring Cloud微學習(二)Eureka入門——叢集

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=peer1java -jar eureka.jar --spring.profiles.active=peer2

這裡寫圖片描述

  • 檢視執行狀態

開啟瀏覽器輸入http://localhost:11111http://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:11111http://localhost:22222,發現hello-service已經同時註冊到了兩個服務中心中,這時如果其中一個服務中心故障,其它客戶端可以從另一個服務中心獲取到hello-service提供的服務
這裡寫圖片描述

如我們不想使用主機名來定義註冊中心的地址,也可以使用IP地址的形式, 但是需要在配置檔案中增加配置引數eureka.instance.prefer江p-address= true, 該值預設為false ——《Spring Cloud微服務實戰》

  1. 《Spring Cloud微服務實戰》第3章 高可用註冊中心中描述的內容