負載均衡LVS集羣詳解

集羣,所謂的集羣就是爲了提升服務器性能時,將多臺服務器組合在一塊兒,共同提供一個服務的羣體。而這些集羣又分爲:LB(Load Banlancing)--負載均衡、HA(Hight Availability)--高可用、HP(Hight Performance)--高性能。
1、LB--負載均衡
在負載均衡集羣中須要一個分發器,咱們將其稱之爲Directory,它位於多臺服務器的上面的中間層,根據內部鎖定義的規則或調度方式從下面的服務器羣中選擇一個以此來進行響應請求,而其分發的方式則是根據某個算法進行的。
2、HA--高可用
高可用顧名思義就是服務的可用性比較高,即當咱們不會由於某臺服務器的宕機,從而形成咱們的服務不可用,其工做模式則是將一
個具備故障的服務轉交給一個正常工做的服務器,從而達到服務不會中斷。
3、LVS:
LVS:Linux Virtual Server,能夠實現LINUX平臺下的簡單負載均衡。
通常來講,LVS採用三層結構:負載調度器、服務器池、共享存儲。工做在TCP/IP協議的四層,其轉發是依賴於四層協議的特徵進行轉發的,因爲其轉發要依賴於協議的特徵進行轉發,所以須要在內核的TCP/IP協議棧進行過濾篩選,可想而知,這就須要在內核的模塊來完成,而這樣的過濾轉發規則又是由管理員進行定義的,因此,LVS就是兩段式的架構設計,在內核空間中工做的是"ipvs",而在用戶空間中工做的,用來定義集羣服務規則的是"ipvsadm"。這就很容易想到iptables。
LVS的三種轉發模式:
LVS-NAT:網絡地址轉換 Network address translation
LVS-DR:直接路由 Direct routing
LVS-TUN:IP隧道 IP tunneling算法

VIP:Director用來向客戶端提供服務的IP地址
RIP:集羣節點(後臺真正提供服務的服務器)所使用的IP地址
DIP:Director用來和D/RIP 進行聯繫的地址
CIP:公網IP,客戶端使用的IP。緩存

LVS-NAT:------擴展的DNAT
1.全部的real server和Director要在同一網段
2.一般狀況下RIP是私有地址,僅用於集羣節點之間進行通訊
3.Director同時處理入站和出站請求
4.Real server的網關要指向DIP
5.能夠實現端口映射(請求端口和提供服務的端口能夠不一致)
6.Real server能夠是任意的操做系統
7.Director很容易成爲系統性能的瓶頸服務器

數據包地址轉換過程:
S:CIP D:VIP------->Director------>S:CIP D:RIP------>Real Server------>S:RIP  D:CIP----->Director----->S:VIP  D:CIP網絡

LVS-DR:用戶的請求通過Director,而後real server直接響應給客戶端任何real server網關不能執行Drector
1.集羣節點必須在同一個物理網絡中,基於MAC轉發
2.RIP可使用公網地址
3.Director僅處理入站請求,響應的數據包不在通過Director
4.Real server的網關不能指向Director
5.不支持端口映射
6.大多數的操做系統均可以用於real server(隔離ARP廣播,同一塊網卡上支持多個IP)
7.Director的性能表現遠遠優於NAT架構

數據包地址轉換過程:
S:CIP D:VIP----->Director--->S:CIP D:RIP -----> Real Server---> S:VIP D:CIP負載均衡

LVS-TUN:用戶的請求通過Director,而後real server直接響應給客戶端
1.Real server和Director不須要在一個物理網段中
2.RIP必定不能是私有地址
3.Director僅處理入站請求
4.Real server的網關不能指向Director
5.不支持端口映射
6.僅有支持IP隧道的操做系統才能用於real servertcp


與DR的網絡結構同樣,但Director和Real Server能夠在不一樣的網絡當中,DIP----->VIP 基於隧道來傳輸,在數據包外層額外封裝了S:DIP D :RIP 的地址。ide

4、LVS的調度算法:
1.靜態調度算法:
RR:Round-robin:輪循
WRR:Weighted round-robin:加權輪循-----按照性能分配,爲其計算出權重
DH:Destination hashing:目標地址hashing-----將某個固定IP的請求轉發給一個相同的real server,用於具備緩存服務器的
SH:Source hashing:源地址hashing
2.動態調度算法:根據分發算法和real server的負載狀態設置出調度決策,Director對每個鏈接進行追蹤監控是否處於活動狀態(ESTABLESHED)
LC:Least connection:最少鏈接-----監控每個real server當前處於活動狀態鏈接和非活動狀態鏈接數,而後計算出其當前負載:active*256+inactive=overhead
WLC:Weighted least connection:加權最少鏈接------overhead/weight,考慮到real serverd的性能,默認集羣算法
SED:Shortest Expected Delay:最短的指望的延遲----不考慮非活動狀態的鏈接,算法:(active+1)*256/weight=overhead
NQ:Never Queue:永不排隊-----沒有鏈接時,直接轉發
LBLC:Locality-Based Least-Connection:基於本地的最少鏈接,動態DH算法
LBLCR:Locality-Based Least-Connection with replication Scheduling:帶複製的基於本地最少鏈接,緩存是共享的
5、ipvsadm
ipvsadm:1.定義集羣服務,指定VIP,協議,端口、  2.向集羣服務添加RS
用法:
ipvsadm -A|E -t|u VIP:PORT [-s scheduler] [-p [timeout]] [-M netmask]]
-A:定義新的集羣服務
-E:修改已有的集羣服務
-D:刪除某集羣服務
-s:指定調度算法,可選項:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq ,默認的調度算法是: wlc.
-C:清空
-R:等同ipvsadm-restore 恢復虛擬服務器規則
-S:等同ipvsadm-save 保存虛擬服務器規則,輸出爲-R 選項可讀的格式
-L|l:列出當前已定義的集羣服務和real server
--stats:顯示統計信息 與-L同時使用
--rate:顯示入站響應速率 與-L同時使用
-c:顯示LVS 目前的鏈接 與-L同時使用
-n:不進行反向解析 與-L同時使用
-Z:清空計數器
-t --tcp-service service-address 說明虛擬服務器提供的是tcp 的服務
-u --udp-service service-address 說明虛擬服務器提供的是udp 的服務
-f --fwmark-service fwmark 說明是通過iptables 標記過的服務類型。
-p --persistent [timeout] 持久穩固的服務。這個選項的意思是來自同一個客戶的屢次請求,將被同一臺真實的服務器處理。timeout 的默認值爲300 秒。
ipvsadm -a|e -t|u VIP:PORY -r RIP [-g|i|m] [-w weight]
-a:添加real server
-e:修改real server
-g:指定LVS 的工做模式爲直接路由模式(也是LVS 默認的模式)
-i:指定LVS 的工做模式爲隧道模式
-m:指定LVS 的工做模式爲NAT 模式
-w:真實服務器的權值
ipvsadm -d -t|u service-address -r server-address  刪除一條虛擬服務器記錄中的某條真實服務器記錄性能

相關文章
相關標籤/搜索