1 检查内核是否支持ipvs
modprobe -l | grep ipvs
/lib/modules/2.6.18-308.el5/kernel/net/ipv4/ipvs/ip_vs.ko
……
出现上面类似输出,即证明内核默认支持ipvs

2 下载及安装【直接yum install ipvsadm安装即可】
根据内核版本下载对应的软件包
cd /usr/local/src
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make
make install
如果出现如下错误,解决方法:ln -s /usr/src/kernels/2.6.18-308.el5-x86_64/ /usr/src/linux
libipvs.h:14:23: error: net/ip_vs.h: No such file or directory

ipvsadm –help 安装成功,会有提示
find / -name ipvsadm 查看ipvsadm的安装位置

3 配置lvs实现负载均衡,配置启动脚本lvs.sh。视需求,将虚拟ip绑定到内网或者外网网卡
#!/bin/bash
# lvs.sh
GW=192.168.1.1
# website director vip.
WEB_VIP=192.168.1.50
WEB_RIP1=192.168.1.148
WEB_RIP2=192.168.1.42
. /etc/rc.d/init.d/functions
logger $0 called with $1
case “$1″ in
start)
# Clear all iptables rules.
#/sbin/iptables -F
# Reset iptables counters.
# /sbin/iptables -Z
# Clear all ipvsadm rules/services.
/sbin/ipvsadm -C
#set lvs vip for dr
/sbin/ipvsadm –set 30 5 60
/sbin/ifconfig eth1:0 $WEB_VIP broadcast $WEB_VIP netmask 255.255.255.255 up
/sbin/route add -host $WEB_VIP dev eth1:0
/sbin/ipvsadm -A -t $WEB_VIP:80 -s wrr -p 3
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP1:80 -g -w 1
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP2:80 -g -w 1
touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
# set Arp
/sbin/arping -I eth1 -c 5 -s $WEB_VIP $GW >/dev/null 2>&1
;;
stop)
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
ifconfig eth1:0 down
route del $WEB_VIP >/dev/null 2>&1
rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
/sbin/arping -I eth1 -c 5 -s $WEB_VIP $GW
echo “ipvsadm stoped”
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo “ipvsadm is stoped”
exit 1
else
ipvsadm -ln
echo “……….ipvsadm is OK.”
fi
;;
*)
echo “Usage: $0 {start|stop|status}”
exit 1
esac
exit 0

执行这个脚本,启动

4 Real Server的配置
#!/bin/bash
VIP=192.168.1.50 ####虚拟ip
ROUTE=192.168.1.1 ####回包走的路由IP 如果服务器上已经设置,可以注释掉
start() {
ifconfig lo:0 $VIP/32 broadcast $VIP up
route add -host $VIP dev lo:0
route add default gw $ROUTE ####如果服务器上已经设置,可以注释掉
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo start;
}

stop() {
route del default gw $ROUTE
route del -host $VIP dev lo:0
ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo stop;
}

case $1 in

start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo ‘start | stop’
esac

在后端真实服务器上,执行以上脚本。ip addr查看是否成功。
5 常用维护命令
lvs服务器启动脚本执行后,执行/etc/init.d/ipvsadm save保存启动配置,配置会保存在/etc/sysconfig/ipvsadm里面。
就像/etc/sysconfig/iptables的配置一样,可以自由修改,然后执行service ipvsadm start|stop|status|restart等命令。

ipvsadm -ln -c 显示当前连接
ipvsadm -ln -c | wc -l 显示当前连接数
ipvsadm -ln –stats 显示统计信息
ipvsadm -ln –rate 显示连接速率信息
ipvsadm -ln –timeout 显示tcp tcpfin udp 的timeout值,也就是启动脚本里/sbin/ipvsadm –set 30 5 60设置的值

6 常用调度算法
A 轮叫调度 rr 无状态调度
假设所有服务器处理性能均相同,不管服务器的当前连接数和相应速度.算法相对简单,不适用于服务器组中处理性能不一的情况
B 加权轮叫调度 wrr
当服务器的权值为零时,表示该服务器不可用而不被调度。这样做的目的是将服务器切除服务,同时与其他加权算法保持一致
C 最小连接调度 lc 动态调度算法
把新的连接请求分配到当前连接数最小的服务器。通过服务器当前所活跃的连接数来估计服务器的负载情况。调度器需要记录各个服务器已建立连接的数目。
D 加权最小连接调度 wlc
加权最小连接调度是最小连接调度的超集,各个服务器用相应的权值表示其处理性能。加权最小连接调度在调度新连接时,尽可能使服务器的已建立连接数和其权值成比例。