隨著互聯網進入尋常百姓家,網絡流量愈來愈大,大規模的網路訪問如果都使用一個服務器提供服務,那么網絡通訊注定會擁堵不堪。為了解決這些問題,達到使網絡流量均衡地分散到各個服務器上的目的,一些技術大牛發明了LVS負載均衡技術。
LVS簡介
LVS(Linux Virtual Server)即為Linux虛擬服務器,使由章文嵩博士主導開發的,這也是我們中國人對開源界的一大貢獻,目前LVS已經被收錄在了內核中,小伙伴們在使用較新版Linux系統時默認會附加這個功能。
什么是負載均衡呢?簡單來說就是通過技術手段,將前端訪問數據流通過調度算法分派給后端服務器的過程。按照實現技術手段不同,可以分為NAT DR TUNE和FULLNAT四種類型。
基于NAT 的LVS
此種類型的負載均衡與iptables的源地址轉發較類似,主要區別在于:負載均衡在PREROUTING鏈上沒有規則,接收到的報文會發送給本機的INPUT鏈,然后通過內核調度直接把報文按照設定的規則通過POSTROUTING鏈發送給網絡服務器。
基于DR的LVS
此種類型的負載均衡在LVS服務器接收到客戶端的報文后會修改報文的目標MAC地址,然后將其重新發送給交換機,交換機接收到之后再按照新的目標MAC地址將報文發送給網絡服務器,網絡服務器的內部回環設置與LVS相同的IP地址,并通過技術手段禁止此地址在局域網廣播,在響應客戶端請求時會使用此IP地址,達到偽裝LVS 地址的作用。
由于此種類型的響應報文不經過LVS服務器的轉發,其效率最好,但配置方法最復雜。
基于TUNE的LVS
此種類型的負載均衡的LVS服務器在接收報文時會在收到IP段首部添加目標網絡服務器的IP首部,并發送發給遠程網絡服務器,當網絡服務器接收到這些報文時會拆分數據報,并使用與LVS相同的IP地址將響應報文發送給客戶端。
基于FULLNAT的LVS
此種類型的負載均衡的LVS服務器與NAT類似,只不過在接收報文時會將報文中的源和目的地址都進行修改,這樣即使局域網中有多個路由器,也可以把響應報文準確傳給LVS服務器。
LVS調度算法
上述四種模式都包含了以下幾種調度算法:
輪詢調度
加權輪詢調度
最小連接調度
加權最小連接調度
基于局部性最少連接調度
目標地址散列調度
源地址散列調度
下面以NAT模式為例,介紹下LVS安裝使用流程
yum安裝ipvsadm
yum install –y ipvsadm
ipvsadm 選項 服務器地址 –s 算法
ipvsadm 選項 服務器地址 –r 真實服務器地址[工作模式][權重]
ipvsadm常用參數:
-A 添加一個虛擬服務器
-E 編輯一個虛擬服務器
-D 刪除一個虛擬服務器
-C 清空虛擬服務器列表
-R 從標準輸入中還原規則
-S 保存規則
-a 向虛擬服務器中添加一個真實服務器
-e 修改一個真實服務器
-d 刪除一個真實服務器
-L 顯示虛擬服務器列表
-t 使用tcp
-u 使用udp
-s 指定LVS的調度算法
-r 設置真實服務器IP地址和端口信息
-g 設置LVS工作模式為DR
-I 設置LVS工作模式為TUN
-m設置LVS工作模式為NAT
-w 設置指定服務器權重
-c 連接狀態
-n 數字格式輸出
例:以NAT模式添加LVS
ipvsadm –A –t 172.18.55.62:80 –s rr ipvsadm –a –t 172.18.55.62:80 –r 192.168.0.1:80 –m ipvsadm –a –t 172.18.55.62:80 –r 192.168.0.2:80 –m
ipvsadm –Ln #查看LVS規則 ipvsadm –Lnc #查看調度狀態
例:備份和加載LVS配置
ipvsadm –S > /etc/lvs.bak ipvsadm –R < /etc/lvs.bak
原創文章,作者:realmaster,如若轉載,請注明出處:http://www.www58058.com/75149