LVS解析及NAT、DR模型配置詳解
一、lvs簡介
Lvs:linux virtual server(linux虛擬伺服器)是一個虛擬的伺服器負載均衡系統。
目前有四種IP負載均衡技術:
NAT、DR、TUN、FNAT:FullNAT
十種排程演算法:
靜態四種:rr、wrr、SH、DH
動態六種:lc、wlc、sed、nq、lblc、lblcr
二、四種模型&&十種排程演算法
1、四種模型拓撲及特點
<1>NAT模型
解析:客戶端向Director(排程器)發出請求,排程器接到客戶端請求,由排程器選擇後端real_server回覆客戶端請求,回覆報文經排程器返回給客戶端。
特點及配置要點:
1>real_server應該使用私有
2>real_server的閘道器應該指向DIP
3>RIP和DIP應該在同一個網段內
4>進出的報文都要經過Director,在高負載下Director會成為系統性能的瓶頸
5>支援埠對映
6>real_server可以是任意OS
<2>DR模型DirectorRouting:直接路由
解析:客戶端向Director(排程器)發出請求,排程器接到客戶端請求,由排程器選擇後端real_server回覆客戶端請求,回覆報文不經過經排程器直接返回給客戶端,由於回覆報文不經過排程器,因此大大降低了排程器的壓力,系統系能得到了大大的提升。
特點及配置要點:
1>real_server可以使用私有
2>real_server的閘道器一定不能指向DIP
3>RIP和DIP應該在同一個網段內
4>進站的報文經過Director,出站則有real_server直接回應client
5>不支援埠對映
6>real_server可以為大多數常見的OS
<3>TUN模型Tuneling:和DR模型相近,但必須支援IP隧道
解析:客戶端向Director(排程器)發出請求,排程器接到客戶端請求,由排程器選擇後端real_server回覆客戶端請求,回覆報文不經過經排程器直接返回給客戶端,由於回覆報文不經過排程器,因此大大降低了排程器的壓力,系統系能得到了大大的提升。
特點及配置要點:
1>real_server不能是私有IP地址
2>real_server的閘道器一定不能指向DIP
3>RIP和DIP應該在同一個網段內
4>進站的報文經過Director,出站則有real_server直接回應client
5>不支援埠對映
6>real_server必須支援IP隧道
2、十種排程演算法及應用場景
靜態四種:
rr:round-robin輪調;對待每一臺伺服器是均等的,而不管伺服器上實際的連線數和系統負載。
wrr:weight加權輪調;根據真實伺服器的不同處理能力來排程訪問請求,可以保證處理能力強的伺服器能處理更多的訪問流量。
sh:source hashing源地址雜湊演算法;根據請求的源IP地址,作為雜湊鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。
dh:目標地址雜湊演算法;根據請求的目標IP地址,作為雜湊鍵(Hash Key)從靜態分配的散列表找出對應的伺服器,若該伺服器是可用的且未超載,將請求傳送到該伺服器,否則返回空。(主要用於快取伺服器)
動態六種:
lc:最少連線;Active(活動)+Inactive(非活動)=overload(負載);排程器動態地將網路請求排程到已建立的連結數最少的伺服器上(用於系統性能相似的伺服器)。
wlc:加權最少連線;overload/weight;具有較高權值的伺服器將承受較大比例的活動連線負載。排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值(用於系統性能相差較大的伺服器)。
sed:最短期望延遲;(Active+1)*256/weight;
nq:永不排隊;
lblc:基於本地的最少連線;dh+lc
lblcr:帶複製的基於本地的最少連線;
三、LVS/NAT實戰
1.環境規劃
Director(前端排程器)
eth0:192.168.1.15(DIP)
eth1:172.16.15.15
eth1:0:172.16.15.119(VIP)
#sysctl-wnet.ipv4.ip_forward=1#開啟IP轉發
Server1:(後端服務1)
IP:192.168.1.5
GW:192.168.1.15(DIP)
Server2:(後端服務2)
IP:192.168.1.6
GW:192.168.1.15(DIP)
2.安裝ipvsadm新增規則
#yum-yinstallipvsadm #規則:排程演算法rr #ifconfigeth1:0172.16.15.119 [[email protected]_yxm15~]#ipvsadm-A-t172.16.15.119:80-srr [[email protected]_yxm15~]#ipvsadm-a-t172.16.15.119:80-r192.168.1.5-m [[email protected]_yxm15~]#ipvsadm-a-t172.16.15.119:80-r192.168.1.6-m
檢視狀態
[[email protected]_yxm15~]#ipvsadm-Ln--stats IPVirtualServerversion1.2.1(size=4096) ProtLocalAddress:PortConnsInPktsOutPktsInBytesOutBytes ->RemoteAddress:Port TCP172.16.15.119:80281291281334112547 ->192.168.1.5:8014575750534779 ->192.168.1.6:8014727182887768
排程演算法wrr
[[email protected]_yxm15~]#ipvsadm-A-t172.16.15.119:80-swrr [[email protected]_yxm15~]#ipvsadm-a-t172.16.15.119:80-r192.168.1.5-m-w2 [[email protected]_yxm15~]#ipvsadm-a-t172.16.15.119:80-r192.168.1.6-m-w3
檢視狀態
[[email protected]_yxm15~]#ipvsadm-Ln--stats IPVirtualServerversion1.2.1(size=4096) ProtLocalAddress:PortConnsInPktsOutPktsInBytesOutBytes ->RemoteAddress:Port TCP172.16.15.119:80209694108669800 ->192.168.1.5:8012585765686154 ->192.168.1.6:808383742983646
四、LVS/DR實戰
1.環境規劃
Director(前端排程器)
eth1:172.16.15.15(DIP)
eth1:0:172.16.15.108(VIP)
#sysctl-wnet.ipv4.ip_forward=1#開啟IP轉發
Server1:(後端服務1)
IP:172.16.15.5
lo:0:172.16.15.108(VIP)
Server2:(後端服務2)
IP:192.168.1.6
lo:0:172.16.15.108(VIP)
2.配置
<1>後端Real_server
修改核心引數禁止Real_servers上的VIP和前端路由直接通訊
#echo1>/proc/sys/net/ipv4/conf/lo/arp_ignore #echo2>/proc/sys/net/ipv4/conf/lo/arp_announce #echo1>/proc/sys/net/ipv4/conf/all/arp_ignore #echo2>/proc/sys/net/ipv4/conf/all/arp_announce ####配置VIP #ifconfiglo:0172.16.15.108broadcast172.16.15.108netmask255.255.255.255up ####新增路由 #routeadd-host172.16.15.108devlo:0
<2>Director(前端排程器)
#####配置VIP #ifconfigeth1:0172.16.15.108broadcast172.16.15.108netmask255.255.255.255up #####新增路由 routeadd-host172.16.15.108deveth1:0 ####開啟路由轉發 echo1>/proc/sys/net/ipv4/ip_forward #### 新增規則:(排程演算法wlc) [[email protected]_yxm15~]#ipvsadm-A-t172.16.15.108:80-swlc [[email protected]_yxm15~]#ipvsadm-a-t172.16.15.108:80-r172.16.15.5-g-w2 [[email protected]_yxm15~]#ipvsadm-a-t172.16.15.108:80-r172.16.15.6-g-w4
檢視狀態
[[email protected]_yxm15~]#ipvsadm-Ln--stats IPVirtualServerversion1.2.1(size=4096) ProtLocalAddress:PortConnsInPktsOutPktsInBytesOutBytes ->RemoteAddress:Port TCP172.16.15.108:80258127201438240 ->172.16.15.5:80904350449270 ->172.16.15.6:801688370988970
轉載於:https://blog.51cto.com/dreamwolf/1304163