LB簡介
LB=Load Blancing,即負載均衡;
就是将負載(工作任務)進行平衡、分攤到多個操作單元上進行執行,例如Web伺服器、FTP伺服器、企業關鍵應用伺服器等,進而共同完成工作任務的機制;
負載均衡裝置不是基礎網絡裝置,而是一種性能優化裝置;
對于網絡應用而言,并不是一開始就需要負載均衡,當網絡應用的通路量不斷增長,單個處理單元無法滿足負載需求時,網絡應用流量将要出現瓶頸時,負載均衡才會起到作用
LB分類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<code># 一般分類:</code>
<code>tcp層:LVS,Haproxy</code>
<code>應用層:Nginx,Haproxy,Ats</code>
<code>緩存:Varnish,Squid</code>
<code># 開源解決方案:</code>
<code>LVS:工作于tcp層,性能好,但控制力差</code>
<code>Haproxy:工作于tcp或http層</code>
<code>Nginx:較Haproxy性能欠佳,但緩存能力較好</code>
<code># 硬體解決方案:</code>
<code>BIG-IP(F5公司)</code>
<code>Netscaler(Citrix公司)</code>
<code>A10(A10公司)</code>
<code>Array</code>
<code>Redware</code>
LVS簡介
LVS=Linux Virtual Server,意即Linux虛拟伺服器,是一個虛拟的伺服器叢集系統;
本項目在1998年5月由章文嵩博士成立,是中國國内最早出現的自由軟體項目之一;
LVS組成
ipvs:架構,需要依賴于規則完成轉發;工作于核心的INPUT鍊上;相當于iptables/netfilter中的netfilter
在INPUT鍊上強行将發送至本機的連接配接轉發至POSTROUTING鍊;
與DNAT不同的是:在經過ipvs處理後,目标IP位址并不一定會修改;
ipvs提供叢集服務(如172.16.100.7:80),定義一個或多個後端伺服器RS
ipvsadm:使用者空間的規則生成器
注:LVS工作于tcp/udp層,故又稱為四層交換、四層路由
LVS基本結構圖
<a href="http://s3.51cto.com/wyfs02/M01/24/99/wKiom1NUUN2Sj0KmAASTCcn-uiM346.jpg" target="_blank"></a>
LVS 4大模型
NAT:多目标的DNAT
特性:
RS應該使用私有位址;
RS的網關必須指向DIP;
RIP和DIP必須在同一網段内;
請求和響應的封包都得經過Director;(在高負載應用場景中,Director很可能成為系統性能瓶頸)
支援端口映射;
RS可以使用任意支援叢集服務的OS(如Windows)
适用場景:
非高并發請求場景,10個RS以内;可隐藏内部的DIP和RIP位址;
結構圖
<a href="http://s3.51cto.com/wyfs02/M00/24/98/wKioL1NUUR6xJPdIAAPI6-VYNAQ124.jpg" target="_blank"></a>
DR:Direct Routing
需解決的關鍵問題:
讓前端路由将請求發往VIP時,隻能是Director上的VIP進行響應;實作方式是修改RS上的Linux核心參數,将RS上的VIP配置為lo接口的别名,并限制Linux僅對對應接口的ARP請求做響應
RS可以使用私有位址,但也可以使用公網位址,此時可以直接通過網際網路連入RS以實作配置,監控等;
RS的網關一定不能指向DIP;
RS和Director要在同一實體網絡(即不能由路由器分隔)
請求封包經過Director,但響應封包一定不進過Director;
不支援端口映射;
RS可以使用大多數的作業系統
因為響應封包不經過Director,極大的減輕了Director的負載壓力,故Director可以支援更大的并發通路,一般RS在100台以内;
結構圖:
LVS-DR配置架構根據其VIP與RIP是否在同一個網段内又分為兩種模型
<a href="http://s3.51cto.com/wyfs02/M02/24/99/wKiom1NUUYXgY-cuAAngzldUKCc340.jpg" target="_blank"></a>
TUN:IP隧道,即含有多個IP報頭
RIP、DIP、VIP都得是公網位址;
RS的網關不會指向也不可能指向DIP;
請求封包經過Director,但響應封包一定不經過Director;
RS的作業系統必須得支援隧道功能,即部署ipip子產品
跨網際網路的請求轉發
<a href="http://s3.51cto.com/wyfs02/M01/24/98/wKioL1NUUXyzlD3LAAWqhFn-JXs928.jpg" target="_blank"></a>
FULLNAT:NAT模型的改進版
實作RS間跨VLAN通信,是NAT模式的改進版;
預設核心不支援,需重新編譯核心,才能使用;
内網伺服器跨VLAN的負載分擔
<a href="http://s3.51cto.com/wyfs02/M00/24/99/wKiom1NUUcPzKwifAAQPUKtOtLQ188.jpg" target="_blank"></a>
LVS排程算法
靜态方法:僅根據算法本身進行排程
<code>rr:Round Robin </code><code># 即輪詢</code>
<code>wrr:Weighted RR </code><code># 即權重輪詢</code>
<code>sh:Source Hashing </code><code># 即來源IP位址hash</code>
<code>dh:Destination Hashing </code><code># 即目标位址hash(不常用,僅用于前端多防火牆的場景,保證防火牆的連接配接追蹤功能有效)</code>
動态方法:根據算法及RS目前的負載情況
<code>lc:Least Connection</code>
<code># 評判标準:Overhead=Active*256+Inactive</code>
<code># Overhead最小者勝出</code>
<code>wlc:Weighted LC</code>
<code># 評判标準:Overhead=(Active*256+Inactive)/weight</code>
<code>sed</code><code>:Shortest Expect Delay</code>
<code># 評判标準:Overhead=(Active+1)*256/weight</code>
<code>nq:Never Queue </code><code># 叢集開始時工作時,每台伺服器都至少配置設定一個連接配接請求,然後再根據sed算法排程;</code>
<code>lblc:Locality-based Least Connection </code><code># 類似于dh+lc</code>
<code>lblcr:Relicated and Locality-based Least Connection </code><code># 主要用于後端伺服器是緩存伺服器時</code>
LVS持久連接配接
簡介
無論LVS采用何種排程算法,都可以在一段時間内,将用戶端的請求發往同一個後端RS;
類型
PCC=Persistent client connections:
将來自于同一用戶端發往VIP的所有請求統統定向至同一RS;
PPC=Persistent port connections:
将來自于同一用戶端發往某VIP的某端口的所有請求統統定向至同一個RS;針對特定服務特定端口轉發的;
PFMC=Persistent Filewall Mark Connection
基于防火牆标記,将兩個或以上的端口綁定為同一個服務
防火牆标記是0-99間的整數
實作:編寫LVS規則時,加上-p選項即可
<code>PCC:ipvsadm -A -t 172.16.100.7:0 -s rr -p 120 </code><code># 端口為0表示全部端口</code>
<code>PPC:ipvsadm -A -t 172.16.100.7:80 -s rr -p 120</code>
<code>PFMC:</code><code># 首先需要利用iptables将相關的服務打上标簽:</code>
<code>iptables -t mangle -A PREROUTING -d 172.16.100.8 -p tcp --dport 80 -j MARK --</code><code>set</code><code>-mark 10</code>
<code>iptables -t mangle -A PREROUTING -d 172.16.100.8 -p tcp --dport 443 -j MARK --</code><code>set</code><code>-mark 10</code>
<code>ipvsadm -A -f 10 -s rr -p 1200</code>
注:若LVS叢集中存儲的持久連接配接模闆(即連接配接記錄)倒計時歸0了,則判斷目前是否還有連接配接,若還有連接配接,則此模闆就延時失效,每次延遲2min,直至連接配接斷開
本文轉自 xxrenzhe11 51CTO部落格,原文連結:http://blog.51cto.com/xxrenzhe/1399229,如需轉載請自行聯系原作者