LVS概念
LVS:Linux Virtual Server,負載調度器,是一種基于Linux操作系統內核的高性能、高可用網絡服務負載均衡解決方案。
LVS工作原理基于網絡層(四層,傳輸層)的負載均衡技術,它通過內核級別的IP虛擬服務器(IPVS)模塊實現透明的流量分發。
LVS軟件作用:通過LVS提供的負載均衡技術和Linux操作系統實現一個高性能、高可用的服務器群集,它具有良好可靠性、可擴展性和可操作性。從而以低廉的成本實現最優的服務性能。
LVS 相關術語:
VS: Virtual Server,負責調度
RS:RealServer,負責真正提供服務
CIP:Client IP
VIP: Virtual serve IP VS外網的IP
DIP: Director IP VS內網的IP
RIP: Real server IP
lvs集群體系結構
VS根據請求報文的目標IP和目標協議及端口將其調度轉發至某RS,根據調度算法來挑選RS
lvs部署命令介紹
1.lvs軟件相關信息
程序包 | ipvsadm |
Unit File | ipvsadm.servic |
主程序 | /usr/sbin/ipvsadm |
規則保存工具 | /usr/sbin/ipvsadm-save |
規則重載工具 | /usr/sbin/ipvsadm-restore |
配置文件 | /etc/sysconfig/ipvsadm-config |
ipvs調度規則文件 | /etc/sysconfig/ipvsadm |
2.ipvsadm命令
1.基本命令
-A, --add-service: 添加一個新的虛擬服務器或者一個新的服務組。
-E, --edit-service: 編輯一個現有的虛擬服務器或者服務組。
-D, --delete-service: 刪除一個虛擬服務器或者服務組。
-L, --list: 列出所有的虛擬服務器和服務組。(-Ln)
-C, --clear: 清除所有 IPVS 配置。
2.虛擬服務器相關
-t, --virtual-server: 指定虛擬服務器的 IP 地址和端口。
-s, --scheduler: 指定調度算法(Scheduler),如 rr(Round Robin)、wrr(Weighted Round Robin)、lc(Least Connection)等。
-t ,tcp服務 -u ,udp服務?????
-p #設置持久連接超時,持久連接可以理解為在同一個時間段同一個來源的請求調度到同一Realserver
?LVS的四種工作模式
LVS/NAT:網絡地址轉換模式,進站/出站的數據流量經過分發器(IP負載均衡,他修改的是IP地址) ?--利用三層功能
LVS/DR ?:直接路由模式,只有進站的數據流量經過分發器(數據鏈路層負載均衡,因為他修改的是目的mac地址)--利用二層功能mac地址
LVS/TUN: 隧道模式,只有進站的數據流量經過分發器
LVS/full-nat:雙向轉換:通過請求報文的源地址為DIP,目標為RIP來實現轉發:對于響應報文而言,修改源地址為VIP,目標地址為CIP來實現轉發
lvs-nat與lvs-fullnat:請求和響應報文都經由
Director lvs-nat:RIP的網關要指向DIP
lvs-fullnat:RIP和DIP未必在同一IP網絡,但要能通信
lvs-dr與lvs-tun:請求報文要經由Director,但響應報文由RS直接發往
Client lvs-dr:通過封裝新的MAC首部實現,通過MAC網絡轉發
lvs-tun:通過在原IP報文外封裝新IP頭實現轉發,支持遠距離通信
lvs的調度算法
1.lvs靜態調度算法
僅根據算法本身進行調度,不考慮RS的負載情況
1、RR:roundrobin 輪詢 RS分別被調度,當RS配置有差別時不推薦
2、WRR:Weighted RR,加權輪詢根據RS的配置進行加權調度,性能差的RS被調度的次數少
3、SH:Source Hashing,實現session sticky,源IP地址hash;將來自于同一個IP地址的請求始終發往 第一次挑中的RS,從而實現會話綁定
4、DH:Destination Hashing;目標地址哈希,第一次輪詢調度至RS,后續將發往同一個目標地址的請 求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商
2.lvs動態調度算法
主要根據每RS當前的負載狀態及調度算法進行調度Overhead=value較小的RS將被調度
1、LC:least connections(最少鏈接發) 適用于長連接應用Overhead(負載值)=activeconns(活動鏈接數) x 256+inactiveconns(非活 動鏈接數)
2、WLC:Weighted LC(權重最少鏈接) 默認調度方法Overhead=(activeconns x 256+inactiveconns)/weight
3、SED:Shortest Expection Delay, 初始連接高權重優先Overhead=(activeconns+1+inactiveconns) x 256/weight 但是,當node1的權重為1,node2的權重為10,經過運算前幾次的調度都會被node2承接
4、NQ:Never Queue,第一輪均勻分配,后續SED
5、LBLC:Locality-Based LC,動態的DH算法,使用場景:根據負載狀態實現正向代理
6、LBLCR:LBLC with Replication,帶復制功能的LBLC,解決LBLC負載不均衡問題,從負載重的復制 到負載輕的RS
3.FO(Weighted Fai Over)調度算法:常用作灰度發布
在此FO算法中,遍歷虛擬服務所關聯的真實服務器鏈表,找到還未過載(未設置IP_VS_DEST_F OVERLOAD標志)的且權重最高的真實服務器,進行調度
當服務器承接大量鏈接,我們可以對此服務器進行過載標記(IP_VS_DEST_F OVERLOAD),那么vs調度 器就不會把鏈接調度到有過載標記的主機中。
4.OVF(Overflow-connection)調度算法
基于真實服務器的活動連接數量和權重值實現。將新連接調度到權重值最高的真實服務器,直到其活動 連接數量超過權重值,之后調度到下一個權重值最高的真實服務器,在此OVF算法中,遍歷虛擬服務相關 聯的真實服務器鏈表,找到權重值最高的可用真實服務器。一個可用的真實服務器需要同時滿足以下條 件:
未過載(未設置IP_VS_DEST_F OVERLOAD標志)
真實服務器當前的活動連接數量小于其權重值
其權重值不為零