基於雲落地SLB+Tengine實現高可用集群負載均衡 - 下

本次分享基於618慕課網直播,更多精彩可以關注:https://class.imooc.com/sale/javaarchitect

服務器配置

4臺阿里雲節點:

  • 2核2g * 1
  • 1核1g * 3

部署:

  • 2核2g:tomcat + tengine
  • 1核1g:tomcat

SLB負載均衡器介紹

官方詳細介紹:https://help.aliyun.com/document_detail/27539.html

本質上,使用任何一家雲廠商的都可以,每家廠商的名字取名不同,騰訊叫做CLB,阿里叫做SLB。都是負載均衡器,購買的時候需要注意,不同類型的SLB所支持的併發也不同。可以參考如下圖:https://help.aliyun.com/document_detail/85931.html

基於雲落地SLB+Tengine實現高可用集群負載均衡 - 下

務必注意:SLB所在地域需要和ECS所在地域相同,ECS所在地域不僅要相同,而且所在區也需要相同,比如如下,所有的ECS都所處上海,並且在華東2 可用區E,這樣才能讓所有服務器節點在一個私有網絡,也就是內網,內網的話帶寬才會打,吞吐量才會高,性能才會更好。

基於雲落地SLB+Tengine實現高可用集群負載均衡 - 下

如果多個服務器節點在不同的可用區,那麼他們走公網,帶寬小了併發就上不去了,這一點需要注意。

對了啊,這個SLB是可以購買多個的,比如異地多活,同城雙活,多區高可用都能實現,阿里雲或者騰訊雲這樣的廠商也都提供相應的解決方案。直接使用雲產品會大大降低成本,以及風險。(風險是任何項目管理中必須考慮的因素,項目越大,風險越大)

部署架構圖

nginx/tengine 雖然寫著主備,但是真正使用起來他們是同時運行的,下游還有SLB轉發給他們請求。

基於雲落地SLB+Tengine實現高可用集群負載均衡 - 下

  • 圖中兩臺甚至多臺Nginx可以構成集群,單個宕機那麼其他的還能繼續服務,SLB檢測到後會自動剔除,待恢復後會自動加入。
  • tomcat也為後端構成了高可用集群,並且分攤流量。
  • 那麼這種方式的話在我們架構師群裡有幾個同學的公司也是採用的這種方式進行的部署,tomcat部分可以用docker去部署微服務,原理本質都差不多。
  • 需要注意,如果nginx不需要處理請求,也不需要處理header等信息,僅僅只是用作轉發代理的話,那麼直接使用SLB也可以,架構圖可以參考如下:

構建SLB高可用集群負載均衡

基於雲落地SLB+Tengine實現高可用集群負載均衡 - 下

  1. 多區高可用,按照上海、北京、深圳等地域進行部署,流量通過dns分發到不同的地區,這也是按照地域的負載均衡,同時在某個地區全部宕機或者發生不可預料的自然災害的時候,可以把流量分發給就近的地域服務器實例,從而保證多區高可用。
  2. slb架構分為兩種,如下:
  3. SLB本質原理就是通過網卡進行IP漂移,產生虛擬ip,也就是vip,我們在架構師課程中手把手的帶著大家搭建了基於keepalived的雙主熱備和雙機主備,以及LVS+Keepalived+nginx的高可用集群對吧。這個其實就是雲負載均衡器的原理。如果在雲服務器中,直接使用SLB即可,沒有必要再去搭建,除非自己自建機房。那麼這塊內容也不難,跟著老師的步驟去實操一遍心裡有個底就行。畢竟不是運維。

擴展加餐:彈性伸縮

基於雲落地SLB+Tengine實現高可用集群負載均衡 - 下

創建負載均衡

首先需要購買,這裡已經需要買好了,和所有的服務器節點同處於一個地區,都是在上海E區,購買好以後就能配置SLB實例了。

  • 在實例管理中可以看到如下圖紅框,這個就是SLB的ip,也就是LVS的虛擬ip
  • 添加上游服務器
  • 選擇兩條七層代理服務器
  • 點擊下一步,隨後配置權重,這裡隨意,這裡的權重比例可以為1:2,或者1:1,根據自己的實際情況
  • 確定以後,在服務器組中就有了兩條上游服務器:
  • 接下來需要配置監聽
  • 需要注意,我們這裡是配置4層轉發,那麼選擇TCP即可,如果你沒有nginx的業務需求的話,直接使用http作為7層轉發即可,不過7層轉發需要有域名備案,這個要注意。
  • 在這裡可以配置選擇會話保持,一定時間內的固定ip請求都會轉發到特定的一臺節點,保證吞吐量,不需要每次都重新建立連接。
  • 選擇上游服務器組
  • 再下一步
  • 最後提交
  • 如此一來4層負載均衡就配置成功了
  • 那麼接下來只需要結合自身業務,通過slb的虛擬ip來進行訪問即可

也可以通過命令行CURL來進行測試:

基於雲落地SLB+Tengine實現高可用集群負載均衡 - 下

需要注意,在咱們課程中,lvs+keepalived下,我們發起訪問之後,那麼會得到指定的一個內部ip地址和它通信,後面我們再次發起請求,就會和這個內部地址直接交互,因此瀏覽器只會顯示只輪詢了一個RS真實地址。如果換一個客戶端發請求,返回的應該就會是另一個地址了。這也就是持久連接的出現情況。參考文獻:https://help.aliyun.com/document_detail/27656.html

一條tcp的連接經過lvs後,lvs會把這臺記錄保存15分鐘,就是因為這個時間過長,所以大部分人都會發現做好LVS DR之後輪詢現象並沒有發生

可以通過關閉瀏覽器進程,等待幾秒後,再重新打開後刷新,可以看到請求變化了

小節

簡單小節一下,我們之前在架構師課程中所操練的其實就是偏底層的配置,而云服務器裡我們是不需要這麼做的,我們只需要在雲供應商的應用層之上去建立相關的資源配置即可。所以原理以及實操都在架構師體系課程中,有興趣的同學可以跟琳琳關注一波。


分享到:


相關文章: