LVS負載均衡

一、LVS負載均衡linux

實現LVS負載均衡轉發方式有三種,分別爲NAT、DR、TUN模式,LVS均衡算法包括:RR(round-robin)、LC(least_connection)、W(weight)RR、WLC模式等(RR爲輪詢模式,LC爲最少鏈接模式)。算法

LVS NAT原理:用戶請求LVS VIP到達director,director將請求的報文的目標IP地址改爲後端的realserver IP地址,同時將報文的目標端口也改爲後端選定的realserver相應端口,最後將報文發送到realserver,realserver將數據返給director,director再把數據發送給用戶。(兩次請求都通過director,因此訪問大的話,director會成爲瓶頸)shell

LVS DR原理:用戶請求LVS VIP到達director,director將請求的報文的目標MAC地址改爲後端的realserver MAC地址,目標IP爲VIP(不變),源IP爲用戶IP地址(保持不變),而後Director將報文發送到realserver,realserver檢測到目標爲本身本地VIP,若是在同一個網段,而後將請求直接返給用戶。若是用戶跟realserver不在一個網段,則經過網關返回用戶後端

LVS TUN原理:用戶請求LVS到達director,director經過IP-TUN加密技術將請求的報文的目標MAC地址改爲後端的realserver MAC地址,目標IP爲VIP(不變),源IP爲用戶IP地址(保持不變),而後Director將報文發送到realserver,realserver基於IP-TUN解密,而後檢測到目標爲本身本地VIP,若是在同一個網段,而後將請求直接返給用戶。若是用戶跟realserver不在一個網段,則經過網關返回用戶bash

二、LVS負載均衡配置服務器

1)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
yum install -y libnl* popt*
tar xzvf ipvsadm
-1.24.tar.gz cd ipvsadm-1.24 make make install

2)Ipvsadm軟件安裝完畢後,須要進行配置,主要配置方法有三步:添加虛擬服務器IP,添加realserver後端服務及啓動LVS服務器VIP地址,配置代碼以下:tcp

ipvsadm  -A  -t  192.168.0.188:80  -s  rr

ipvsadm  -a  -t  192.168.0.188:80  -r  192.168.0.112  -g  -w 2

ipvsadm  -a  -t  192.168.0.188:80  -r  192.168.0.113  -g  -w 2

3)shell腳本部署LVS相關軟件加密

#!/bin/bash
SNS_VIP=$2
SNS_RIP1=$3
SNS_RIP2=$4
if [ "$1" == "stop" -a -z "$2" ];then
    echo "------------------------------------------"
    echo -e "\033[32mPlease Enter $0 stop LVS_VIP\n\nEXample:$0 stop 192.168.1.111\033[0m"
    echo
    exit
else
    if [ -z "$2" -a -z "$3" -a -z "$4" ];then
        echo "----------------------------------------"
        echo -e "\033[32mPlease Enter Input $0 start VIP REALSERVER1  REALSERVER2\n\nEXample:$0 start/stop 192.168.1.111 192.168.1.2 192.168.1.3\033[0m"
        echo
        exit 0
    fi
fi
. /etc/rc.d/init.d/functions
logger $0 called with $1
function IPVSADM(){
/sbin/ipvsadm --set  30 5 60
/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up
/sbin/route add -host $SNS_VIP dev eth0:0
/sbin/ipvsadm -A -t $SNS_VIP:80 -s wlc -p 120
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 1
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 1
}
case "$1" in
start)
IPVSADM
echo "-----------------------------------------------------"
/sbin/ipvsadm -Ln
touch /var/lock/subsys/ipvsadm > /dev/null 2>&1
;;
stop)
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
ifconfig eth0:0 down >>/dev/null 2>&1
route del $SNS_VIP >>/dev/null 2>&1
rm -rf /var/lock/subsys/ipvsadm > /dev/null 2>&1
echo "ipvsadm stopped!"
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ]
then
echo "ipvsadm stopped!"
exit 1
else
echo "ipvsadm started!"
fi
;;
*)
echo "Usage: $0 {start | stop | status}"
exit 1
esac
exit 0

4)LVS服務器綁定VIP地址,命令以下spa

VIP=192.168.0.190
ifconfig    eth0:0  $VIP netmask  255.255.255.255  broadcast  $VIP
/sbin/route  add  -host  $VIP  dev  eth0:0

5)LVS ipvsadm配置參數說明

-A                        增長一臺虛擬服務器VIP地址;
-t                        虛擬服務器提供的是tcp服務;
-s                        使用的調度算法;
-a                        在虛擬服務器中增長一臺後端真實服務器;
-r                        指定真實服務器地址;
-w                        後端真實服務器的權重;
-m                        設置當前轉發方式爲NAT模式;-g爲直接路由模式;-i  模式爲隧道模式。

6)查看LVS轉發列表命令爲:ipvsadm -Ln

7)Nginx客戶端realserver配置VIP腳本

#!/bin/sh
#LVS Client Server
VIP=192.168.0.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/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
    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 "0">/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0">/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
相關文章
相關標籤/搜索