前言:
LVS即是linux虛擬服務器,是一個虛擬的服務器集群系統,目的是使用集群技術和linux操作系統實現一個高性能、高可用的服務器。采用IP負載均衡技術和基于內容請求分發技術,將請求負載均衡地轉移到不同的服務器上執行,從而將一組服務器構成一個高性能、高可用的虛擬服務器。此篇的內容只包含兩種較為常用的LVS技術,分別是LVS-NAT和LVS-DR。
一、Linux Cluster類型:
Linux集群的三種類型分別是負載均衡集群,高可用集群和高性能集群,以下分別對這三種集群進行講解;
LB:Load Balancing,負載均衡集群;該集群用于實現將同一種應用的大量請求分散到多臺主機;
HA:High Availablity,高可用;當某一主機出現故障時,從服務器能夠取而代之,為服務提供冗余性;
HP:High Performance,高性能;組合多臺計算機,可以將一個很復雜、計算量很大的問題分散到多臺主機,通過多臺主機聯合計算,減少計算的時間;
二、負載均衡集群的調度方式:
LB集群的簡圖:
lvs是基于傳輸層(目標IP和目標端口)分發請求報文,下圖是IPVS的工作原理,IPVS是工作于內核空間的netfiliter的INPUT鉤子之上的框架;
下圖是DNAT的轉發機制圖:
三、LVS集群的類型詳解:
(一)LVS-NAT
lvs-nat是一個多目標的DNAT,通過將請求報文中的目標地址和目標端口修改為某挑出的RS的RIP和POST實現轉發:
客戶端的請求報文發送到DIRECTOR的vip接口,此時源IP是CIP,目標IP是VIP,由于IPVS是工作于INPUT鏈的,當發現請求報文是請求某一集群服務需要向后轉發時,IPVS強行改變發送流程,通過FORWARDING鏈將報文發送至POSTROUTING鏈,經由算法算出報文發往到那一臺后端服務器,報文進入到后端服務器時,此時源IP地址是CIP,目標IP地址是RIP,后端服務器返回報文時,必須將將網關指向DIRECTOR的DIP,返回報文的源地址是RIP,目標地址是CIP,經過DIRECTOR后,源IP是VIP,目標IP是CIP,這個過程就是LVS-NAT的工作原理。
LVS-NAT的特性:
多目標IP的DNAT,通過將請求報文中的目標地址和目標端口修改為某跳出的RS的RIP的DPORT實現轉發
(1)RIP和DIP必須在同一個IP網絡,且應該使用私網地址;RS的網關指向DIP;
(2)請求報文和響應報文必須經由Director轉發;Director易于成為系統瓶頸;
(3)支持端口映射,可修改請求報文的目標PORT;
(4)VS必須是linux系統,RS可以是任意系統;
(二)LVS-DR
LVS-DR是直接路由的方式,通過將請求報文重新封裝一個MAC首部進行轉發,源MAC是DIP所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目標IP/PORT均保持不變
下圖是LVS-DR的工作原理圖:
客戶端的請求報文通過路由器、交換機將請求報文發送到DIRECTOR上,DIRECTOR通過算法將請求報文發往某一臺REAL SERVER上,REAL SERVER的回應報文不再經由DIRECTOR,而是將報文直接返回到CLient上,此時回應報文的源地址為VIP,目標地址是CIP。DIRECTOR、兩臺REAL SERVER的IP地址都需要配置VIP地址,由于三臺主機使用同一個VIP地址會發生地址沖突,所以需要將VIP地址做隱藏,DIRECTOR的VIP地址需要配置在DIRECTOR的網卡別名上,由于地址不屬于網卡而是屬于內核,所以無論將VIP配置在REAL SERVER的哪個網卡上,內核都會知道IP地址,從而將IP地址通告給路由器。首先需要將REAL SERVER的VIP地址配置在LO網卡的別名上,為之后隱藏VIP地址做準備。同時需要調整內核參數arp_announce和arp_ignore,從而達到隱藏VIP地址的目的。客戶端此時只能將請求報文直接發往DIRECTOR,DIRECTOR對請求報文重新封裝MAC,通過MAC將報文發往其中一臺REAL SERVER,REAL SERVER的回應報文不經由DIRECTOR,而是直接發送到客戶端。
LVS-DR的特性:
Director和各RS都得配置使用VIP;
(1)確保前端路由器將目標IP為VIP的請求報文發往DIrector:
(a)在前端網關做靜態綁定;
(b)在RS上使用arptables;
(c)在RS上修改內核參數以限制ARP通告及應答級別;
arp_announce
arp_ignore
(2)RS的RIP可以使用私網地址,也可以是公網地址;RIP與DIP在同一網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director;
(3)RS跟Director要在同一個物理網絡;
(4)請求報文要經由Director,但響應不能經由Director,而是由RS直接發往Client;
(5)不支持端口映射;
四、IPVS的調度算法
根據其調度時是否考慮各RS當前的負載狀態,可分為靜態方法和動態方法兩種,靜態方法是僅根據算法本身進行調度,動態方法主要根據每RS當前的負載狀態及調度算法進行調度。
靜態方法:
(1)RR:roundrobin,輪詢;
(2)WRR:weighted RR,加權輪詢;
(3)SH:source hashing,源IP地址哈希,用于實現session sticy;
(4)DH:destination hashing,目標IP地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS;
動態方法:
(1)LC:least connections:最少連接
(2)WLC:weight LC 加權最少連接
(3)SED:shortest expection delay
(4)NQ:never queue
(5)LBLC:locality-based LC,動態DH算法
(6)LBLCR:LBLC with replication,帶復制功能的LBLC;
原創文章,作者:因為有你,如若轉載,請注明出處:http://www.www58058.com/54645
文章內容上比較完整地,但是整體排版是不是太亂了點?建議多看看別人寫的博客,來提升自己的寫作能力哦。