歡迎來到菜鳥SpringCloud入門實戰系列(SpringCloudForNoob),該系列經過層層遞進的實戰視角,來一步步學習和理解SpringCloud。html
本系列適合有必定Java以及SpringBoot基礎的同窗閱讀。git
每篇文章末尾都附有本文對應的Github源代碼,方便同窗調試。程序員
Github倉庫地址:github
https://github.com/qqxx6661/springcloud_for_noob面試
你還能夠經過如下兩種途徑查看菜鳥SpringCloud入門實戰系列:算法
簡單的服務註冊中心Eureka Server與服務提供者Eureka Client的網絡拓撲圖spring
這種配置方式有如下致命缺陷:後端
- 當成千上萬的服務提供者都向它單節點的服務註冊中心進行註冊時,它的負載是很是高的。
- 一旦這個單節點的服務註冊中心掛掉,則全部服務提供者的註冊信息都將變得不可用。
爲了方便學習集羣eureka,咱們建立單獨的子模塊eureka-ha安全
修改其application.ymlbash
---
# 高可用節點1的配置
server:
port: 8771
spring:
# 節點1的標籤
profiles: peer1
# 服務名保持一致
application:
name: eureka-ha
eureka:
instance:
hostname: peer1
client:
# 進行註冊(高可用配置、默認配置)
# registerWithEureka: true
# 獲取註冊信息(高可用配置、默認配置)
# fetchRegistry: true
serviceUrl:
# 節點1向節點2/3進行服務註冊
defaultZone: http://localhost:8772/eureka/,http://localhost:8773/eureka/
---
# 高可用節點2的配置
server:
port: 8772
spring:
# 節點2的標籤
profiles: peer2
# 服務名保持一致
application:
name: eureka-ha
eureka:
instance:
hostname: peer2
client:
# 進行註冊(高可用配置、默認配置)
# registerWithEureka: true
# 獲取註冊信息(高可用配置、默認配置)
# fetchRegistry: true
serviceUrl:
# 節點2向節點1/3進行服務註冊
defaultZone: http://localhost:8771/eureka/,http://localhost:8773/eureka/
---
# 高可用節點3的配置
server:
port: 8773
spring:
# 節點3的標籤
profiles: peer3
# 服務名保持一致
application:
name: eureka-ha
eureka:
instance:
hostname: peer3
client:
# 進行註冊(高可用配置、默認配置)
# registerWithEureka: true
# 獲取註冊信息(高可用配置、默認配置)
# fetchRegistry: true
serviceUrl:
# 節點3向節點1/2進行服務註冊
defaultZone: http://localhost:8771/eureka/,http://localhost:8772/eureka/
複製代碼
代碼重點:
和eureka一養,添加@EnableEurekaServer
由於是集羣,因此要啓動三個端口不一樣的實例,端口已經在yml文件中進行了設置。
在Run configuration裏自行設置三個運行配置,分別對應三個配置文件,注意圖中箭頭的設置。
你也可使用複製配置按鈕:
若是你發現Run configuration裏沒有eureka-ha,請手動添加:
最後,分別運行三個eureka-ha:
打開網頁,輸入 http://localhost:8771/ , http://localhost:8772/ ,http://localhost:8773/
能夠看到,Instances裏有了三個註冊的實例
你覺得大功告成了,然而,你發現有一個問題,全部的服務顯示在了unavailable-replicas之下。
通過搜索,看見了以下解釋,
參考:Eureka高可用,節點均出如今unavailable-replicas下:
https://www.jianshu.com/p/59c54ccc6ba6
eureka.client.serviceUrl.defaultZone配置項的地址,不能使用localhost,要使用域名,DNS解析請自行配置。
因爲咱們在yml文件裏設置了相似defaultZone: http://localhost:8771/eureka/,http://localhost:8772/eureka/
, 符合上述問題, 因此這裏的註冊url不能設置爲localhost
看來,仍是須要本身搞定DNS,對應我Windows的環境,也就是要修改host設置。
修改HOST請自行谷歌,在host文件下添加三行:
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
複製代碼
從新啓動三個實例,大功告成:
咱們新建子模塊eureka-hi-ha,用來做爲高可用集羣下的服務提供者
修改application.yml,設置爲8783端口
# 服務地址
server:
port: 8783
# 服務名稱
spring:
application:
name: service-hi-ha
eureka:
client:
serviceUrl:
# 這裏只須要執行其中一個服務註冊中心節點便可
defaultZone: http://peer1:8771/eureka/
複製代碼
這裏只須要執行其中一個服務註冊中心節點便可,其餘兩個eureka會自動收到來自peer1的客戶端記錄信息,進行同步。
啓動eureka-hi-ha,同時剛纔的三個eureka server 不要關閉
查看網頁: http://localhost:8771/ , http://localhost:8772/ ,http://localhost:8773/
能夠看到,8773也成功顯示了服務。
咱們來實驗讓一個節點停機,咱們關閉peer1的進程
注意:
高可用的服務註冊中心Eureka Server與服務提供者Eureka Client的網絡拓撲圖,能夠總結以下:
當前其中任意節點宕機以後,其餘節點上還保存着全部的服務註冊信息。
springcloud(二):註冊中心Eureka:
http://www.ityouknow.com/springcloud/2017/05/10/springcloud-eureka.html
Spring-Cloud筆記03:服務註冊中心Eureka Server的簡單配置、訪問控制配置以及高可用配置
https://blog.csdn.net/hanchao5272/article/details/80561199
全複習手冊文章導航:經過如下兩種途徑查看
菜鳥SpringCloud實戰專欄
我是蠻三刀把刀,後端開發。
主要關注後端開發,數據安全,爬蟲等方向。
來微信和我聊聊:yangzd1102
Github我的主頁:
同步更新公衆號及如下博客
1. Csdn
擁有專欄:
2. 知乎
擁有專欄:
3. 掘金
4. 簡書
若是文章對你有幫助,不妨收藏起來並轉發給您的朋友們~