WEB負載均衡小記

對於Web 站點的水平擴展,負載均衡是一種常見的手段。負載均衡的實現方法有:


[b]1 HTTP重定向[/b]


通過RR策略,或隨機方法通過HTTP重定向通知客戶端訪問其他多臺實際服務器。
ps:性能前者不及後者


[b]2 DNS負載均衡(DNS-RR)[/b]


多條A記錄,DNS服務器會自動輪詢。當某臺實際服務器出現故障時,可以通過調用DNS提供的服務,刪除指向該服務器的A記錄。當然DNS由於有TTL,所以得過些時候才生效。


[b]3 反向代理負載均衡[/b]


通過反向代理服務器,將HTTP請求,分發給幾個後端服務器。


粘滯對話:同一臺客戶端可能會使用服務器Session,所以在反向代理時,要使用一定的策略,使其多次訪問都是同一臺後端服務器。常見策略有:hash算法通過IP計算獲得後端服務器編號;或使cookie中包含後端服務器編號等。或採用分佈式Session,或分佈式緩存。


但反向代理服務器進行轉發操作本身是需要一定開銷的,比如創建線程、與後端服務器建立TCP 連接、接收後端服務器返回的處理結果、分析HTTP 頭信息、用戶空間和內核空間的頻繁切換等,通常這部分時間並不長,但是當後端服務器處理請求的時間非常短時,轉發的開銷就顯得尤爲突出,以致成爲瓶頸。


[img]http://dl.iteye.com/upload/attachment/589201/42dddb79-a777-3dfe-9c7e-b6dc3e302341.jpg[/img]


[b]4 IP 負載均衡(LVS-NAT)[/b]


位於WLAN的調度器,通過DNAT數據傳輸層的IP地址轉換(網絡層/第三層),將客戶端的的請求,轉發到位於LAN上的實際服務器上。後者響應後數據發給調度器,由調度器發給WLAN。


[img]http://dl.iteye.com/upload/attachment/589204/8cb4367c-d478-3b62-883c-1d32cd1bd1fe.jpg[/img]


吞吐率較高。但由於來回數據都進過調度器,導致其網關瓶頸。


[img]http://dl.iteye.com/upload/attachment/589199/0c334184-f684-3c76-9442-bad5a57dcbc1.jpg[/img]


[b]5 直接路由(LVS-DR)[/b]


通過使用IP別名的方式,將多個具有公網IP的實際服務器與調度器一起使用相同的IP別名a。DNS解析地址設爲a,設置爲只有調度器響應該ARP。調度器收到數據包後,修改MAC地址,轉發給實際服務器。後者將響應結果直接發給WLAN。


[img]http://dl.iteye.com/upload/attachment/589210/264b3149-33bf-3892-9450-8d257cfea9a4.jpg[/img]


吞吐率雖與“IP 負載均衡法”相當。但由於調度器不負責轉發響應的數據包,網關瓶頸問題解決。

[img]http://dl.iteye.com/upload/attachment/589192/84c5a61d-4699-3f13-9785-ade4cff01225.jpg[/img]

[b]6 IP 隧道(LVS-TUN)[/b]


與LVS-DR 的原理非常類似,不同的是,實際服務器可以和調度器不在同一個WAN 網段,調度器通過IP 隧道技術來轉發請求到實際服務器,所以實際服務器也必須擁有合法的IP 地址。


總的來說,LVS-DR 和LVS-TUN 都適合響應和請求不對稱的Web 服務器,可以非常有效地提高集羣的擴展能力,但如何選擇它們,更多的不是因爲性能和擴展性,而是取決於你的網絡部署需要,比如剛纔提到的CDN 服務需要將實際服務器部署在不同的IDC,從而必須使用IP 隧道技術。


備註:
LVS: Linux Virtual Server,Linux 虛擬服務器

Heartbeat 對主調度器進行心跳檢測,一旦發現主調度器停止心跳,便立即啓動故障轉移,接管主調度器,這個接管過程包括
IP 別名變更、相關服務的啓動等。隨後,一旦主調度器恢復後,備用調度器便自動將相關資源轉交回主調度器。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章