五、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.properties
和 application.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.properties
和 application.properties
。
簡單總結一下上面的配置:配置一個 Eureka 公用配置,然後不同的Eureka 伺服器要通過eureka.client.service-url.defaultZone
屬性互相註冊!