1. 程式人生 > >五、Spring cloud高可用服務治理(Eureka)

五、Spring cloud高可用服務治理(Eureka)

一、Eureka 客戶端

(一)啟用 Eureka 客戶端

@EnableEurekaClient

(二)配置多個 eureka 註冊中心 application.properties

#定義應用的名稱
spring.application.name=spring-cloud-eureka-client

#客戶端埠隨機可用
server.port=0

#配置連線 eureka 伺服器
##配置多個 eureka 註冊中心,以“,”分割
eureka.client.service-url.defaultZone=http://localhost:9090/eureka,http://localhost:9091/eureka

二、Eureka 伺服器

(一)啟用 Eureka 伺服器

@EnableEurekaServer

(二)配置 eureka 伺服器 application.properties

#定義應用的名稱
spring.application.name=spring-cloud-eureka-server
#配置 伺服器埠
##通過 啟動引數覆蓋預設的 9090,改為9091,即可在不同埠執行相同應用(--server.port=9091)
server.port=9090

management.endpoints.web.exposure.include=*
management.endpoints.web.base-path=/
management.endpoint.health.show-details=always

#取消向註冊中心註冊
eureka.client.register-with-eureka=false
#取消向註冊中心獲取註冊資訊(服務、例項資訊)
eureka.client.fetch-registry=false

三、Spring CLoud Eureka Client 客戶端高可用 客戶端高可用模型   若 Eureka 客戶端應用配置多個 Eureka 註冊伺服器,那麼預設情況只有第一臺可用的伺服器,存在註冊資訊。若 第一臺可用的 Eureka 伺服器 Down 掉了,那麼Eureka 客戶端應用將會選擇下一臺可用的 Eureka 伺服器。

  配置屬性如上:

#配置連線 eureka 伺服器
##配置多個 eureka 註冊中心,以“,”分割
eureka.client.service-url.defaultZone=http://localhost:9090/eureka,http://localhost:9091/eureka

(一)獲取應用元資訊

#在設定這兩個配置項的時候,要考慮效能
#調整獲取所有應用 元資訊 間隔時間
eureka.client.registry-fetch-interval-seconds=5
#調整應用 元資訊 間隔時間
eureka.client.instance-info-replication-interval-seconds=5

四、Spring CLoud Eureka Server 高可用註冊中心 服務端高可用模型   高可用註冊中心不但需要提供叢集環境,解決單點故障的問題。同時,也需要能優雅地處理註冊中心之間資訊同步的問題。相對於客戶端端高可用,區別主要在於:註冊中心之間要進行同步操作。

  為了實現 Eureka 伺服器(註冊中心)高可用,需要配置如下資訊:

(1)配置公用 Eureka 伺服器並啟動 application.properties

#定義應用的名稱
spring.application.name=spring-cloud-eureka-server

management.endpoints.web.exposure.include=*
management.endpoints.web.base-path=/
management.endpoint.health.show-details=always

#公用 Eureka 配置
##向註冊中心註冊(和 單伺服器 相反)
eureka.client.register-with-eureka=true
##獲取註冊資訊(服務、例項資訊)(和 單伺服器 相反)
eureka.client.fetch-registry=true

(2)配置 Peer 1 Eureka 伺服器 application-peer1.properties(單機情況相當於 profile=“peer1”)

# peer 1 完整配置

## peer 1 埠 9090
server.port=9090

## peer 2 主機:localhost,埠:9091
peer2.server.host=localhost
peer2.server.port=9091

#向 peer 2 註冊中心註冊
eureka.client.service-url.defaultZone=http://${peer2.server.host}:${peer2.server.port}/eureka

啟動 Peer 1 Eureka 伺服器

  通過啟動引數--spring.profiles.active=peer1,相當於讀取了 application-peer1.propertiesapplication.properties

(3)配置 Peer 2 Eureka 伺服器 application-peer2.properties(單機情況相當於 profile=“peer2”)

# peer 2 完整配置

## peer 2 埠 9090
server.port=9091

## peer 1 主機:localhost,埠:9090
peer1.server.host=localhost
peer1.server.port=9090

#向 peer 2 註冊中心註冊
eureka.client.service-url.defaultZone=http://${peer1.server.host}:${peer1.server.port}/eureka

啟動 Peer 2 Eureka 伺服器

  通過啟動引數--spring.profiles.active=peer2,相當於讀取了 application-peer2.propertiesapplication.properties

  簡單總結一下上面的配置:配置一個 Eureka 公用配置,然後不同的Eureka 伺服器要通過eureka.client.service-url.defaultZone屬性互相註冊!