雲端中間層負載均衡工具 Eureka
亞馬遜提供了一個負載均衡工具 Elastic Load Balancer,但針對的是終端使用者 Web 流量伺服器,而 Eureka 針對的是中間層伺服器的負載均衡。AWS 固有的環境,對 IP 地址、主機名等傳統的負載均衡支援並不好,並且需要更加複雜的註冊/退出機制。Eureka 填補了這一空白。本文在前邊幾篇部落格的基礎上,較為系統地介紹一下 Eureka。
Eureka 是什麼
官方給出的具體定義是"Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.",翻譯過來就是:"Eureka 是一個基於 REST 的服務,它主要是用於定位服務,以實現 AWS 雲端的負載均衡和中間層伺服器的故障轉移"。
Eureka VS ELB
亞馬遜 ELB 針對的是終端使用者 Web 流量伺服器,Eureka 針對的是中間層伺服器。
Why Eureka?
AWS 對 IP 地址、主機名等傳統的負載均衡支援並不好,並且需要更加複雜的註冊/退出機制。AWS 並沒有提供一箇中間層負載均衡器,Eureka 填補了這一空白。
Eureka 的適用場景
- AWS 的環境下有一箇中間層服務,但不想將其註冊到 ELB,或者不想將其暴露給外部世界
- 不需要 session 繫結機制,沒有粘性會話和在外部快取(例如 memcached)載入會話資料的需要
- 自己實現 LB 演算法
Eureka 體系架構
Eureka 的架構圖如下所示
從圖中我們可以看出,Eureka 元件分為兩部分:Eureka 伺服器和 Eureka 客戶端。而客戶端又分為 Application Service 客戶端和 Application Client 客戶端兩種。
Eureka 的工作機制
每個 region 都有自己的 Eureka 伺服器叢集,每個 zone 至少要有一個 Eureka 伺服器以應對 zone 癱瘓。
Application Service 在啟動時註冊到 Eureka 伺服器,之後每 30 秒鐘傳送心跳以更新自身狀態。如果該客戶端沒能傳送心跳更新,它將在 90 秒之後被其註冊的 Eureka 伺服器剔除。來自任意 zone 的 Application Client 可以檢視這些註冊資訊(每隔 30 秒檢視一次)並依此定位自己的侍服 Application Service 例項,進而進行遠端呼叫。
Q:我的 Application Service 和 Application Client 之間通訊會不會受到 Eureka 限制
A:不會。Eureka 只是幫你找到該次侍服主機例項,並不對你的 Application Service 和 Client 之間的通訊協議和方法進行約束。
Q:看了這些感覺好抽象,有沒有可以開始的 demo
可以檢視 Eureka 的 github 以尋求 demo。有些 feature(比如 Eureka 和 Ribbon 的整合)並沒有提供 demo,但我們可以從 Eureka 的 github 提供的單元測試程式碼中獲得一些啟示。
另外,筆者也整理了很多 demo,都是自己動手驗證通過的,讀者可以放心參考:
- 《Linux 下 Eureka 伺服器的部署》
- 《Eureka 的 Application Service 客戶端的註冊以及執行示例》
- 《Eureka 的 Application Client 客戶端的執行示例》
- 《雲中間層服務 - 區域感知負載均衡器 Ribbon》
- 《Ribbon 和 wowza 的整合開發》
- 《Ribbon 和 Eureka 的整合》
這些 demo 都看完,相信你玩轉 Eureka 不在話下。如果還有啥不懂的,可以看 Eureka API。作者建議直接看 Eureka 原始碼,原始碼並不多,也就幾千行的樣子,而且裡邊註釋的很詳盡,相比之下,線上 API 有很多方法只提供了一個方法名,並沒有詳細說明。
Eureka 部署的測試
你可以自己寫指令碼,然後手工將叢集節點當機,以驗證 Eureka 部署的彈性效果 - Eureka 使用 servo 來跟蹤客戶端和伺服器端的效能,並進行監控和報警,這些資料可用於 JMX 註冊也可以輸出給亞馬遜的雲監控。當然你也可以使用 Netflix 的另一個開源工具 - SimianArmy,這隻調皮的小猴子會故意將你的服務節點搞下線以驗證你的 Eureka 部署對隨機的 Application Service 當機的處理的彈性。
Q:有沒有一個真實的應用案例
接下來以一個真實生產環境下的場景,來看一下 Eureka 在實際當中的應用。
以下是流媒體伺服器 Wowza 直播的部署架構圖:
Wowza 伺服器侍服外部網路直播流量,但它需要去 CAS 伺服器驗證使用者,還需要去 Relay 伺服器讀取直播流。CAS 和 Relay 就是兩個中間層服務,不需要直接暴露給外界。以下是它們之間的時序互動圖:
參考資料
感謝您的關注!可加QQ1群:135430763,QQ2群:454796847,QQ3群:187424846。QQ群進群密碼:xttblog,想加微信群的朋友,可以微信搜尋:xmtxtt,備註:“xttblog”,新增助理微信拉你進群。備註錯誤不會同意好友申請。再次感謝您的關注!後續有精彩內容會第一時間發給您!原創文章投稿請傳送至532009913@qq.com郵箱。商務合作可新增助理微信進行溝通!
相關文章
- 【知識分享】四層負載均衡和七層負載均衡負載
- HAProxy 7層 負載均衡負載
- 四層/七層負載均衡裝置(-)負載
- linux負載均衡總結性說明(四層負載/七層負載)Linux負載
- 四七層負載均衡的區別負載
- windows第七層負載均衡 基於IIS的ARR負載均衡詳解Windows負載
- 四層和七層負載均衡的區別負載
- 四層與七層負載均衡的區別負載
- windows伺服器第四層負載均衡_基於NLB負載均衡詳解Windows伺服器負載
- Nginx如何實現四層負載均衡?Nginx負載
- Azure上七層負載均衡APP Gateway負載APPGateway
- LB 負載均衡的層次結構負載
- 微服務(三) Eureka註冊中心和Ribbon負載均衡微服務負載
- Eureka詳解系列(一)--先談談負載均衡器負載
- 負載均衡7層nginx(提供軟體包)負載Nginx
- 負載均衡負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- 淺談RAC中的負載均衡負載
- NGINX 負載均衡Nginx負載
- WebSocket負載均衡Web負載
- IP負載均衡負載
- nginx負載均衡Nginx負載
- 【Nginx】負載均衡Nginx負載
- 負載均衡技術(一)———負載均衡技術介紹負載
- 解密負載均衡技術和負載均衡演算法解密負載演算法
- LVS#MySQL+Keepalived四層負載均衡MySql負載
- 負載均衡技術(二)———常用負載均衡服務介紹負載
- 基於滴滴雲部署 HAProxy 實現 7 層和 4 層負載均衡負載
- 淺談負載均衡負載
- 漫談負載均衡負載
- Nginx負載均衡模式Nginx負載模式
- 面試之負載均衡面試負載
- 負載均衡知多少?負載
- 負載均衡簡介負載
- 負載均衡詳解負載
- LoadBalancer負載均衡負載
- 負載均衡叢集負載