一、什么是lvs? 它產生的背景,使用場景是什么?
LVS(Linux Virtual Server) 可以理解為一個虛擬服務器系統。
Internet的飛速發展,網絡帶寬的增長,Web服務中越來越多地使用CGI、動態主頁等CPU密集型應用,這對服務器的性能有較高要求,單臺服務器已經無法滿足需要,所以集群自然的成為一種解決方案,而LVS便是其中的一種集群方案。
集群(Cluster)是一組相互獨立的、通過高速網絡互聯的計算機,它們構成了一個組,并以單一系統的模式加以管理。一個客戶與集群相互作用時,集群像是一個獨立的服務器。集群配置是用于提高可用性和可縮放性。集群系統的主要優點:高可擴展性、高可用性、高性能、高性價比。
常見集群類型及實現方式簡介
LB:Load Balancing 高可拓展,伸縮集群
HA:High Availability 高可用集群
HP:High Performance 高性能集群
LB:Load Balancing
硬件級:F5 BIG-IP、Citrix Netscaler、 A10 A10、Array、Redware
軟件級:lvs (傳輸層)、haproxy, nginx (應用層)
HA:高可用,heartbeat 、corosync + pacemaker、 cman + rgmanager、cman + pacemaker、keepalived
HP:高性能
hadoop
LVS項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。通過LVS提供的負載均衡技術和Linux操作系統可實現一個高性能、高可用的服務器群集,從而以低成本實現最優的服務性能。
lvs能夠實現在大并發的情況下,將前端調度器收到的請求分發給后端服務器處理,實現了負載均衡集群的作用。
注:更多信息:LVS是國內貢獻給開源組織的一個最優秀的項目之一,該項目創始人和主要開發人是章文嵩博士,目前就職于阿里巴巴,改項目及具體介紹請參見網站:http://www.linuxvirtualserver.org/zh/lvs1.html
二、LVS的構成和內核
LVS是作為一個前端(Director)存在的,又稱為調度器,它本身不提供任何的服務,只是將通過互聯網進來的請求接受后再轉發給后臺真正的服務器(RealServer)進行處理,然后響應給客戶端。
LVS有兩個重要的組件:一個是IPVS,一個是IPVSADM。
ipvs是LVS的核心組件,它本身只是一個框架,類似于iptables,工作于內核空間中。
ipvsadm 是用來定義LVS的轉發規則的,工作于用戶空間中
內核客戶端的請求流向參見以下示意圖
三、LVS調度算法
靜態方法:僅根據調度算法本身進行調度
rr: round robin,輪流,輪詢,輪叫
wrr: weighted round robin, 加權輪詢
sh:source hashing,session綁定
dh: destination hashing, 目標地址hash
動態方法:根據算法及各RS當前的負載狀況進行調度
lc: least connection,最少連接
wlc: weighted lc,加權最少連接
sed: shortest expection delay,最少期望延遲
nq: never queue,永不排隊
lblc: Locality-Based Least Connection,基于局部性的最少連接
lblcr:Replicated lblc,基于局部性的帶復制功能的最少連接
四:LVS 的安裝、配置,使用命令詳解
LVS安裝(ipvsadm)
#yum -y install ipvsadm
安裝ipvsadm
#echo 1 > /proc/sys/net/ipv4/ip_forward
打開系統的轉發功能,也即路由功能
#ipvsadm -A -t 181.163.10.8 :80 -s rr
添加一個集群服務,指定 vip,端口80,調度算法:rr 輪詢
#ipvsadm -a -t 181.163.10.8:80 -r 181.163.10.9:80 -g
添加一個節點到集群服務,指定指定節點IP,端口,模式為-g:DR 模式
#ipvsadm -a -t 181.163.1.10:80 -r 181.163.10.10:80 -g
添加一個節點到集群服務,指定指定節點IP,端口,模式為-g:DR 模式
LVS ipvsad 命令格式
Ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm –set tcp tcpfin udp
ipvsadm –start-daemon state [–mcast-interface interface]
[–syncid syncid]
ipvsadm –stop-daemon state
ipvsadm -h
LVS ipvsad 命令詳解
定義集群服務:
-A 添加一個集群服務
-D 刪除一個集群服務
-E 修改一個集群服務
-t VIP:端口 定義集群服務的類型為TCP的某個端口
-u VIP:端口 定義集群服務的類型為UDP的某個端口
-f 防火墻標記 定義集群服務的類型為防火墻標記
-s 調度算法 指定集群服務的調度算法
定義集群節點:
-a 添加一個節點到集群服務
-d 從集群服務中刪除一個節點
-e 修改集群服務器中的節點
-r 節點IP:端口 定義節點的IP及類型
-m 定義為NAT模型
-g 定義為DR模型
-i 定義為TUN模型
-w 權重 定義服務器的權重
查看已經定義的集群服務及RS:
ipvsadm -L -n
-c: 查看各連接
–stats: 統計數據
–rate: 速率
–exact: 精確值
從集群服務中刪除RS:
ipvsadm -d -t|u|f service-address -r server-address
刪除集群服務:
ipvsadm -D -t|u|f service-address
清空所有的集群服務:
ipvsadm -C
保存集群服務定義:
ipvsadm -S > /path/to/some_rule_file
ipvsadm-save > /path/to/some_rule_file
讓規則文件中的規則生效:
ipvsadm -R < /path/from/some_rule_file
ipvsadm-restore < /path/from/some_rule_file
五、LVS四種工作模式與對比
1、LVS-DR
LVS-DR模式,直接路由模式, 調度器與實際服務器都有一塊網卡連在同一物理網段上
lvs-DR模型是lvs的默認模型,也是企業中用到的最多的模型
解讀:直接路由模型,每個Real Server上都有兩個IP:VIP和RIP,但是VIP是隱藏的,就是不能提高解析等功能,只是用來做請求回復的源IP的,Director上只需要一個網卡,然后利用別名來配置兩個IP:VIP和DIP ### Director在接受到外部主機的請求的時候轉發給Real Server的時候并不更改目標地址,只是通過arp解析的MAC地址進行封裝然后轉給Real Server,Real Server在接受到信息以后拆除MAC幀封裝,然后直接回復給CIP
2、 LVS-TUN
LVS-TUN模式,ip隧道模式,可以運用于異地機房的負載調度上
解讀:隧道模型,跟DR模型比較相似,都是由rs直接回復給cs .跟dr模型不同的是,vs和rs之間可以存在路由,原因是tun模型在報文源ip和目的ip后又加入了一層源ip和目的ip的信息。
3、 LVS-NAT
LVS_NAT模型,通常應用與rs較少,rs節點無要求,端口轉換的場景
解讀:地址轉換模型,vs通過修改目的ip將報文發送到rs.rs通過dip網關將報文發給vs,vs再將報文的源ip進行修改發送給客戶端。
4、LVS-FULLNAT
全地址轉換模型,主要應用與rs和vs不在同一網絡的情景
解讀:vs接收到client發送的報文后,修改報文中的源ip和目的ip為dip和rip.rs將報文返回vs后vs再將報文中的源ip和目的ip改為vip和cip.
注:本文參考:N22-深圳-曉志, 章文嵩項目信息
原創文章,作者:Acheng,如若轉載,請注明出處:http://www.www58058.com/54255
完成的非常好,給出了詳細操作步驟,能把排版在完善一下就更完美了,加油!