題圖html
歡迎來到菜鳥SpringCloud入門實戰系列(SpringCloudForNoob),該系列經過層層遞進的實戰視角,來一步步學習和理解SpringCloud。git
本系列適合有必定Java以及SpringBoot基礎的同窗閱讀。程序員
每篇文章末尾都附有本文對應的Github源代碼,方便同窗調試。github
Github倉庫地址:面試
https://github.com/qqxx6661/springcloud_for_noob算法
你還能夠經過如下兩種途徑查看菜鳥SpringCloud入門實戰系列:spring
前文回顧:後端
將Eureka改造爲高可用集羣安全
單機Eureka Server的致命缺陷微信
簡單的服務註冊中心Eureka Server與服務提供者Eureka Client的網絡拓撲圖
在這裏插入圖片描述
這種配置方式有如下致命缺陷:
- 當成千上萬的服務提供者都向它單節點的服務註冊中心進行註冊時,它的負載是很是高的。
- 一旦這個單節點的服務註冊中心掛掉,則全部服務提供者的註冊信息都將變得不可用。
爲了方便學習集羣eureka,咱們建立單獨的子模塊eureka-ha
修改其application.yml
--- # 高可用節點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的網絡拓撲圖,能夠總結以下:
在這裏插入圖片描述
當前其中任意節點宕機以後,其餘節點上還保存着全部的服務註冊信息。
https://github.com/qqxx6661/springcloud_for_noob/tree/master/03-eureka-ha-eureka-hi-h
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
全複習手冊文章導航:經過如下兩種途徑查看
我是蠻三刀把刀,後端開發。
主要關注後端開發,數據安全,爬蟲等方向。
來微信和我聊聊:yangzd1102
Github我的主頁:
同步更新公衆號及如下博客
擁有專欄:
https://www.zhihu.com/people/yang-zhen-dong-1/
擁有專欄:
https://juejin.im/user/5b48015ce51d45191462ba55
https://www.jianshu.com/u/b5f225ca2376
我的公衆號:Rude3Knife
若是文章對你有幫助,不妨收藏起來並轉發給您的朋友們~