天天看點

springcloud 之 EurekaServer 服務注冊叢集

在之前一篇文章(https://blog.csdn.net/zwx19921215/article/details/79800409)中我們已經搭建了一個EurekaServer,

至于它的功能我已經不再贅述,但是很明顯這是一個單點服務,而我們都知道,服務注冊中心是整個分布式系統的核心,我們所有的微服務執行個體都注冊在其中,一旦該服務注冊中心當機,則可能導緻整個服務叢集癱瘓,是以很明顯在真實的生産環境中,我們必須将注冊中心進行叢集化部署(至少2個節點),那麼接下來我們來搭建一個簡單的2個節點的叢集吧.

1.環境準備

我準備了2台機器,因為我打算在2台機器上部署2個執行個體;其實也可以一台機器上部署,但是我是為了更好的模拟真實環境

2.準備好工程,我沿用了之前的工程(discover-server)

3.配置更改

第一份配置如下:

#端口
server.port=8761
spring.application.name=x-discover-server
eureka.instance.hostname=10.0.2.23
#配置另一個服務注冊中心執行個體的host和port
eureka.server.host=10.0.2.24
eureka.server.port=8762
#通過eureka.client.registerWithEureka:false和fetchRegistry:false來表明自己是一個eureka server.
#register-with-eureka:表示是否将自己注冊到eureka server,因為要建構叢集環境,需要将自己注冊到叢集中,是以應該開啟。預設為true,可不顯式設定。
eureka.client.register-with-eureka=true
#fetch-registry:表示是否從eureka server擷取注冊資訊,如果是單一節點,不需要同步其他eureka server節點,則可以設定為false,但此處為叢集,應該設定為true,預設為true,可不設定。
eureka.client.fetch-registry=true
eureka.client.serviceUrl.defaultZone=http://${eureka.server.host}:${eureka.server.port}/eureka/

#-----------------------------------關閉eureka自我保護---------------------------------------
#注意:更改Eureka更新頻率将打破伺服器的自我保護功能,生産環境下不建議自定義這些配置。
#Eureka Server端:配置關閉自我保護,并按需配置Eureka Server清理無效節點的時間間隔
#設為false,關閉自我保護
eureka.server.enable-self-preservation=false
#清理間隔(機關毫秒,預設是60*1000)
eureka.server.eviction-interval-timer-in-ms=4000
      

第二份配置如下:

#端口
server.port=8762
spring.application.name=x-discover-server
#eureka 執行個體名
eureka.instance.hostname=10.0.2.24
#配置另一個服務注冊中心執行個體的host和port
eureka.server.host=10.0.2.23
eureka.server.port=8761
#通過eureka.client.registerWithEureka:false和fetchRegistry:false來表明自己是一個eureka server.
#register-with-eureka:表示是否将自己注冊到eureka server,因為要建構叢集環境,需要将自己注冊到及群衆,是以應該開啟。預設為true,可不顯式設定。
eureka.client.register-with-eureka=true
#fetch-registry:表示是否從eureka server擷取注冊資訊,如果是單一節點,不需要同步其他eureka server節點,則可以設定為false,但此處為叢集,應該設定為true,預設為true,可不設定。
eureka.client.fetch-registry=true
eureka.client.serviceUrl.defaultZone=http://${eureka.server.host}:${eureka.server.port}/eureka/

#-----------------------------------關閉eureka自我保護---------------------------------------
#注意:更改Eureka更新頻率将打破伺服器的自我保護功能,生産環境下不建議自定義這些配置。
#Eureka Server端:配置關閉自我保護,并按需配置Eureka Server清理無效節點的時間間隔
#設為false,關閉自我保護
eureka.server.enable-self-preservation=false
#清理間隔(機關毫秒,預設是60*1000)
eureka.server.eviction-interval-timer-in-ms=4000      

配置具體說明見内容

分别打包2份配置,并将2個jar部署到對應的機器,通路10.0.2.23:8761

springcloud 之 EurekaServer 服務注冊叢集

如圖,x-discover-server已經啟動了2個執行個體,10.0.23機器中的8761端口,10.0.2.24中的8762端口,

通路10.0.2.24:8762

springcloud 之 EurekaServer 服務注冊叢集

由上圖可以看出2個執行個體都已經互相注冊了,形成了一個2個服務的小叢集。

4.接下來我們注冊一個用戶端服務到其中,沿用之前的項目demo-springboot

5.更改demo-springboot中的相應配置

#端口
server.port=8889

#執行個體名
spring.application.name=demo-springboot
#注冊中心
eureka.server.host1=10.0.2.23
eureka.server.host2=10.0.2.24
eureka.server.port1=8761
eureka.server.port2=8762
eureka.client.service-url.defaultZone=http://${eureka.server.host1}:${eureka.server.port1}/eureka/,http://${eureka.server.host2}:${eureka.server.port2}/eureka/
#feign read timeout(10s)
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
#feign read timout disable
#hystrix.command.default.execution.timeout.enabled=false
#開啟eureka client健康檢查
eureka.client.healthcheck=true
# 續約到期時間(預設90秒)
eureka.instance.lease-expiration-duration-in-seconds=30
# 續約更新時間間隔(預設30秒)
eureka.instance.lease-renewal-interval-in-seconds=10      

将demo-springboot向2個執行個體同時注冊(隻向其中一個執行個體注冊也是可以的,會自動發現)

啟動demo-springboot檢視效果

springcloud 之 EurekaServer 服務注冊叢集
springcloud 之 EurekaServer 服務注冊叢集

ok,至此我們的服務注冊與發現叢集就已經搭建成功了!

繼續閱讀