Linux LB--負載均衡和高可靠


1、負載均衡典型應用場景,外網、內網、私網公共服務。

     典型場景:

     (1)用戶通過公網訪問數據中心的ftp、web、https服務器。

     (2) 在數據中心內部東西向訪問其他服務時,例如,訪問其他虛擬機、DNS等公共服務。

     (3) 通過專線或者ipsec vpn訪問數據中心內部服務時。

 

2、常見的負載均衡的技術

     硬件實現(2/3層):鏈路聚合、等價路由。

     軟件實現(4/7層):LVS、nginx/haproxy、

  DNS負載均衡:公網智能分配目的ip GSLB、內網DNS解析公共服務。

 

3、LVS的3種模式:NAT、DR、TUNNEL。

      NAT: 特點,流量來回路徑一致,都要經過負載均衡器,通過DNAT轉換,將目的ip修改為后端VM的ip,目的MAC修改為后端VM的MAC地址。

                 缺點:當回程流量很大時,負載均衡器本身容易成為瓶頸。改進方案,使用DR模式。

      DR:特點,回程路徑直接回到客戶端。不需要NAT,后端服務器都需要配置環口ip為VIP,並且配置不響應VIP的arp請求。同時要求LVS分發器和后端VM在相同網段內,這個模式是主流。

     缺點:要求后端VM和LVS分發頭在相同網段。改進方案:LVS + haproxy.

      隧道模式:特點,負載均衡器和后端虛擬機不是直接相連,通過隧道打通,要求雙方都要支持IPinIP協議。

      LVS + haproxy: 怎么解決跨網問題? 

      http://blog.csdn.net/big1980/article/details/21932103

 

4、nginx和haproxy對比。

      一般情況下,在日訪問量PV在3000萬以下時,使用簡單的DNS輪詢配合監控,基本可以滿足業務需求。

     超過3000萬時,使用nginx作為反向代理。如果可靠性要求不高,使用單台nginx。否則,可以配置多台nginx進行負載分擔。

     在3000萬到1億時,可以使用HAProxy+ keepalived --> nginx --> web 服務器集群。Haproxy負責TCP負載均衡,Nginx負責7層調度,nginx可以配置多台進行負載分擔。

     超過1億時,采用LVS+DR + Keepalived --> nginx --> web服務器集群。LVS-DR負責TCP負載均衡,nginx負責7層調度。此時可以考慮使用商業的netscaler替換LVS-DR。

5、單點故障問題。

     后端服務器可以有多個,消除了單點故障問題。可是負載均衡器本身是單節點,如何消除單點故障?

     解決方案有兩種,雙活和主備。

     雙活:兩個不同服務器上的LVS之間配置會話同步,互相同步,達到雙活效果。上游通過交換機或者防火牆的ECMP進行等價分發。

     主備:結合keepalive協議,實現主備備份效果。通過結合不同層次,LVS + keepalive,  nginx + keepalive, haproxy + keepalive

6、對后端服務器的健康檢查和轉發權重設置。

     LVS、nginx、haproxy都支持健康檢查。

7、會話保持

     通過源ip達到會話保持的效果,即將客戶端分發給某個后端服務器后,后續該客戶端的流量都指向相同的后端服務器,避免會話不存在而導致的生效問題。

      也就是說,通過源ip實現會話保持。

      會話保持的方法,還有http_cookie和app_cookie

7、證書卸載。

      客戶端通過ssh或者https訪問ssh服務器端,或者https訪問web服務器時,證書如何識別和卸載?在nginx的配置項中可以指定證書文件,從而進行卸載。

8、負載分擔的后端服務器的選擇。

     三種算法:輪詢算法、最少連接算法、源ip算法。

9、健康檢查的模式

      ping、https、tcp、http

10、獲取訪問者的源ip

       負載均衡器將流量轉發給后端服務器時,會修改報文的源ip(為何?),那么后端服務器處理時,如何分析出報文原始的源ip.

       對於4層負載均衡,可以選擇DR模式,使源ip地址直接在后端的服務器可見。

       對於7層負載均衡,使用http頭中的 http header: X-forward for來獲得原始ip.

11. 網站的總入口的反向代理,一般使用nginx,因為nginx可以同時作為web服務器和負載均衡器。

12. 4層負載均衡時,當客戶端和LVS之間建立TCP連接時,LVS會同步和某個后端服務器建立TCP連接。

      7層負載均衡時,當客戶端和LVS之間建立TCP連接時,LVS會先和客戶端建立TCP連接,等到客戶端有流量發送時,負載均衡器再和后端服務器建立TCP連接。

13. 轉發性能角度:

      4層負載均衡不關心報文內容,所以負載均衡性能高。

     7層負載均衡需要查看Http頭中的動作、URL、請求的源主機信息等信息,所以,需要深入查看報文內容,所以,轉發性能低。但是,可以做深度的精細化控制。

14. GSLB有哪些實現方法:

      有3種,基於DNS解析、基於重定向、基於路由協議。

      基於DNS解析:DNS在多個ip間輪詢(相同域名),達到負載均衡的效果。

      基於重定向: 負載均衡器根據請求的內容(ip地址、端口號、或者URL等)給客戶端返回一個實際處理業務的服務器地址。利用的是Http的302重定向功能。

      基於路由協議:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM