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重定向功能。
基於路由協議: