玩轉SpringCloud專題(五)-SpringCloud註冊中心Eureka高可用搭建(HA)

1.Eureka基礎架構

Eureka架構中的三個核心角色:
在這裏插入圖片描述

  • 服務註冊中心
    Eureka的服務端應用,提供服務註冊和發現功能,就是剛剛我們建立的eureka-server-7001

  • 服務提供者
    提供服務的應用,可以是SpringBoot應用,也可以是其它任意技術實現,只要對外提供的是Rest風格服務即可。本例中就是我們實現的springcloud-demo

  • 服務消費者
    消費應用從註冊中心獲取服務列表,從而得知每個服務方的信息,知道去哪裏調用服務方。本例中就是我們實現的springcloud-demo-consumer

2.高可用的Eureka Server

Eureka Server即服務的註冊中心,在剛纔的案例中,我們只有一個EurekaServer,事實EurekaServer也可以是一個集羣,形成高可用的Eureka中心。

Eureka Server除了單點運行之外,還可以通過運行多個實例,並進行互相註冊的方式來實現高可用的部署。所以我們只需要將Eureke Server配置其他可用的 serviceUrl 就能實現高可用部署。

在這裏插入圖片描述

服務同步

多個Eureka Server之間也會互相註冊爲服務,當服務提供者註冊到Eureka Server集羣中的某個節點時,該節點會把服務的信息同步給集羣中的每個節點,從而實現數據同步。因此,無論客戶端訪問到Eureka Server集羣中的任意一個節點,都可以獲取到完整的服務列表信息。

動手搭建高可用的EurekaServer

我們假設要搭建兩條EurekaServer的集羣,端口分別爲:7001、7002、7003

1)我們修改原來的EurekaServer配置-7001:

server:
  port: 7001 # 端口
spring:
  application:
    name: eureka-server-7001 # 應用名稱,會在Eureka中顯示

eureka:
  instance:
    hostname: eureka7001.com
  client:
    register-with-eureka: false # 是否註冊自己的信息到EurekaServer,默認是true
    fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
    service-url: # EurekaServer的地址,現在是自己的地址,如果是集羣,需要加上其它Server的地址。
      defaultZone: http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

所謂的高可用註冊中心,其實就是把EurekaServer自己也作爲一個服務進行註冊,這樣多個EurekaServer之間就能互相發現對方,從而形成集羣。因此我們做了以下修改:

把service-url的值改成了另外一臺EurekaServer的地址,而不是自己

2)我們修改原來的EurekaServer配置-7002:

server:
  port: 7002 # 端口
spring:
  application:
    name: eureka-server-7002 # 應用名稱,會在Eureka中顯示
eureka:
  instance:
    hostname: eureka7002.com
  client:
    register-with-eureka: false # 是否註冊自己的信息到EurekaServer,默認是true
    fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
    service-url: # EurekaServer的地址,現在是自己的地址,如果是集羣,需要加上其它Server的地址。
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7003.com:7003/eureka

3)我們修改原來的EurekaServer配置-7003:

server:
  port: 7003 # 端口
spring:
  application:
    name: eureka-server-7003 # 應用名稱,會在Eureka中顯示
eureka:
  instance:
    hostname: eureka7003.com
  client:
    register-with-eureka: false # 是否註冊自己的信息到EurekaServer,默認是true
    fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
    service-url: # EurekaServer的地址,現在是自己的地址,如果是集羣,需要加上其它Server的地址。
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka

4)在自己的hosts中加入端口映射

127.0.0.1       eureka7001.com
127.0.0.1       eureka7002.com
127.0.0.1       eureka7003.com

c:\windows\system32\drivers\etc\hosts

5)啓動測試
注意:idea中一個應用不能啓動兩次,我們需要重新配置一個啓動器:
在這裏插入圖片描述
在這裏插入圖片描述
然後啓動即可。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
6)springcloud-demo集羣版,客戶端註冊服務到集羣
因爲EurekaServer不止一個,因此註冊服務的時候,service-url參數需要變化:

# EurekaServer地址
eureka.client.service-url.defaultZone= http:// eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

7)測試服務是否註冊
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章