1. 程式人生 > 實用技巧 >LVS負載均衡概念+三種模式

LVS負載均衡概念+三種模式

1、LVS負載均衡概念剖解: 1)LVS技術全稱:Linux virtual Server ,Linux虛擬機器伺服器叢集,1998由章文嵩博士設計、並且開源的,是中國最早的開源軟體專案之一。 2)LVS被稱為負載均衡軟體(軟體級別),使用者通過網際網路訪問LVS VIP地址,LVS根據轉發方式和演算法將使用者,對於使用者來講,是無法看到或者感知後端叢集的狀態的。
  • 轉發方式:
  • 演算法:
3)在目前網際網路IT企業中,主流的可伸縮網路架構,都有一個共同的特點:前端排程器,擁有前端排程器就可以實現網路架構的橫向、縱向伸縮功能,無限擴容叢集的量級。 4)在IP負載均衡技術中,主要是通過三種轉發方式來實現請求的轉發,三種方式:
  • NAT:
  • DR:
  • TUN:
2、LVS負載均衡NAT方式實戰: 1)LVS負載均衡NAT轉發方式原理: 使用者請求LVS VIP到達director(LVS伺服器:LB),director(LVS)將請求的報文的目標IP地址改成後端的realserverIP地址,同時將報文的目標埠也改成後端選定的realserver相應埠,最後將報文傳送到realserver,realserver將資料返給director,director再把資料傳送給使用者。(再次請求都經過director,所以訪問大的話,director會成為瓶頸)。

2)LVS NAT模式注意事項:
  • LVS伺服器至少2塊物理網絡卡,一塊連線公網(VIP),一塊連線內網;
  • 後端Realserver機器的預設閘道器設定為LVS的內網IP地址;
  • 保證LVS內網網絡卡通常跟Realserver在同一網段;
  • LVS NAT模式後端Realserver機器數量不超過30臺;
  • 使用者的請求進入和返回均會經過LVS,LVS會成為瓶頸。
3、LVS NAT模式架構部署: ipvsadm裝方式如下:(原始碼部署需要和核心整合)
wget -c
http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
ln -s /usr/src/kernels/2.6.* /usr/src/linux
tar xzvf ipvsadm
-1.24.tar.gz cd ipvsadm-1.24 make make install
yum方式安裝:(安裝完即可,無需啟服務)
yum install ipvsadm* -y
1)LVS NAT模式,要求至少兩臺伺服器,一臺作為LVS,另一臺為Real server後端伺服器,而且LVS至少2塊網絡卡(一塊為模擬公網,一塊為內網網絡卡。)

2)192.168.1.21Real server後端伺服器的閘道器設定為LVS伺服器的內網網絡卡IP地址:192.168.1.20,如下圖所示:

3) LVS外網網絡卡的IP地址為10.10.10.188,可以作為對外接收使用者的訪問請求,也可以自行新增其他的外網IP繫結在外網網絡卡上。

nodprode ip_vs
lsmod |grep -i ip_vs

#新增VIP 10.10.10.188虛擬叢集:

ipvsadm -A -t 10.10.10.188:80 -s rr
-A             新增虛擬伺服器VIP 
-t       TCP協議
-s             指定演算法為RR輪詢模式

#在虛擬叢集10.10.10.188中,加入後端Real server伺服器:

ipvsadm -a -t 10.10.10.188:80 -r 192.168.1.21:80 -m -w 100
-a             往虛擬伺服器叢集中新增真實後端伺服器
-t             TCP協議
-r       指定後端realserver伺服器的IP和埠
-m       指定NAT轉發模式
-w       weight權重設定

4)LVS NAT模式能夠實現資料轉發,還要依靠Linux核心開啟轉發功能,所以需要如下設定:

echo 1 > /proc/sys/net/ipv4/ip_forward

5)檢視LVS NAT模式叢集配置資訊。如圖所示:

ipvsadm -L -n

6)檢視LVS 引數使用幫助:

ipvsadm --help|more

7)訪問效果:(需要關閉防火牆)

4、LVS負載均衡DR方式實戰: 1)LVS DR原理:使用者請求LVS VIP到達director(LB均衡器),director將請求的報文的目標MAC地址改成後端的realserverMAC地址,目標IP為VIP(不變),源IP為使用者IP地址(保持不變),如果Director將報文傳送到realserver,realserver檢測到目標為自己本地VIP,如果在同一個網段,然後將請求直接返給使用者。如果使用者跟realserver不在一個網段,則通過閘道器返回使用者,如下圖所示:

2)LVS DR模式注意事項:
  • LVS伺服器和後端伺服器realserver必須在同網段(內網、公網);
  • LVS修改請親報文的目標MAC,目標(VIP)不修改的;
  • 目標IP(VIP)保持不變。在RS後端配置VIP,lo網絡卡上面配置(不衝突);
  • RS後端伺服器的閘道器指向路由器的下一跳,保證資料能夠出去(訪問外網);
  • 在所有RS後端伺服器,抑制ARP廣播,禁止VIP響應解析,而且要保證真實網絡卡不能抑制ARP廣播。
5、LVS DR模式架構部署: 1)Real server後端伺服器的閘道器設路由器出口IP地址(正常設定,保持能夠上網),另外配置拷貝lo網絡卡為lo:1,配置一個VIP地址(需要在同網段),掩碼設定為4個255,否則網絡卡起不來(所有流量都會走ens33真實網絡卡的)配置在lo網絡卡是為了VIP地址不衝突:
#拷貝網絡卡:
cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-srcipts/ifcfg-lo:1
#編輯 新增如下內容 vim /etc/sysconfig/network-srcipts/ifcfg-lo:1
DEVICE=lo
IPADDR=192.168.1.188
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback

#需要重啟網絡卡:
ifup lo:1
systemctl restart network

2)在客戶端驗證pingVIP地址能夠通訊,發現其MAC地址就是Real server後端伺服器的MAC:

3) LVS伺服器配置負載均衡,配置網絡卡IP 可以配置真實網絡卡的子介面上:(VIP地址需要同網段)新增realserver後端伺服器的IP:

#新增VIP 192.168.1.188虛擬叢集,加人後端伺服器IP:

ipvsadm -A -t 192.168.1.188:80 -s rr

ipvsadm -a -t 192.168.1.188:80 -r 192.168.1.20 -g -w 100
ipvsadm -a -t 192.168.1.188:80 -r 192.168.1.21 -g -w 100
#引數解釋:
-A        大A 新增虛擬叢集
-t        tcp協議
-s        指定演算法rr模式
-a        在虛擬叢集中新增後端真實IP
-g       指定DR模式
-w       權重

#檢視虛擬叢集狀態:
ipvsadm -L -n

#刪除叢集IP:
ipvsadm -d -t 192.168.1.188:80 -r 192.168.1.20
ipvsadm -D -t 192.168.1.188:80

4)為了實現均衡,需要在後端伺服器上配置抑制arp廣播,禁止arp響應解析,而且要保證真實網絡卡能接受arp廣播:

cat /proc/sys/net/ipv4/conf/lo/arp_ignore  預設是0需要執行如下命令:

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
#解釋:
arp ignore引數(1)含義:只響應目標IP配置在真實網絡卡;
arp announce引數(2)含義:忽略報文得源IP地址,使用主機上能夠跟使用者通訊的真實網絡卡傳送資料。

6、LVS負載均衡TUN方式實戰(基於DR,是DR的升級版): LVS TUN原理:使用者請求LVS到達director,director通過IP-TUN加密技術請求的報文的目標MAC地址改成後端的Real serverMAC地址,目標IP為VIP(不變),源IP為使用者IP地址(保持不變),然後director將報文傳送到realserver,realserver基於IP-TUN解密,然後檢測到目標為自己本地VIP,如果在同一個網段,然後將請求直接返回給使用者。如果使用者跟realserver不在一個網段,則通過閘道器返回使用者。如下圖所示:

realserver配置DR指令碼:

#!/bin/sh
#LVS Client Server
VIP=192.168.1.188
case $1 in
start)
 ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
 /sbin/route add -host $VIP dev lo:0
 echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
 echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
 sysctl -p >/dev/null 2>&1
 echo "RealServer Start OK"
 exit 0
;;
stop)
 ifconfig lo:0 down
 route del $VIP >/dev/null 2>&1
 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
 echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
 echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
 echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
 echo "RealServer Stoped OK"
 exit 1
;;
*)
 echo "Usage: $0 {start|stop}"
;;
esac