[root@nagios~]#ln-s/usr/src/kernels/2.6.18-308.13.1.el5-x86_64//usr/src/linux

[root@nagios~]#yuminstallipvsadm

[root@nagios~]#tar-zxvfkeepalived-1.2.7.tar.gz-C/usr/local

[root@nagios~]#cdkeepalived-1.2.7/

[root@nagios~]#./configure

[root@nagios~]#make&&makeinstall

[root@nagios~]#cp/usr/local/etc/rc.d/init.d/keepalived/etc/rc.d/init.d/

[root@nagios~]#cp/usr/local/etc/sysconfig/keepalived/etc/sysconfig/

[root@nagios~]#mkdir/etc/keepalived

[root@nagios~]#cp/usr/local/etc/keepalived/keepalived.conf/etc/keepalived/

[root@nagios~]#cp/usr/local/sbin/keepalived/usr/sbin/

[root@nagios~]#servicekeepalivedstart

[root@nagios~]#vim/etc/keepalived/keepalived.conf

修改配置文件内容如下

!ConfigurationFileforkeepalived

global_defs{

notification_email{

yhl5555@126.com

}

notification_email_fromyhl5555@126.com

smtp_server127.0.0.1

#smtp_connect_timeout30

router_idLVS_DEVEL

}

#VIP1

vrrp_instanceVI_1{

stateMASTER

interfaceeth0

virtual_router_id50

priority100

advert_int1

authentication{

auth_typePASS

auth_pass1111

}

virtual_ipaddress{

172.16.1.160

}

}

virtual_serverfwmark1{

delay_loop6

lb_algowrr

lb_kindDR

#persistence_timeout60

protocolTCP

real_server172.16.1.17180{

weight3

TCP_CHECK{

connect_timeout10

nb_get_retry3

delay_before_retry3

connect_port80

}

}

}

virtual_serverfwmark2{

delay_loop6

lb_algowrr

lb_kindDR

#persistence_timeout60

protocolTCP

real_server172.16.1.17280{

weight3

TCP_CHECK{

connect_timeout10

nb_get_retry3

delay_before_retry3

connect_port80

}

}

}

在lvs调度器上面操作

注意:mangle表的匹配顺序是从下到上

[root@nagios~]#iptables-tmangle-IPREROUTING-s172.16.0.68-ptcp-d172.16.1.160--dport80-jMARK--set-mark1

[root@nagios~]#iptables-tmangle-IPREROUTING-s172.16.1.173-ptcp-d172.16.1.160--dport80-jMARK--set-mark2

分别在两台web服务器上执行realserver.sh绑定虚拟ip,脚本内容如下

#!/bin/bash

SNS_VIP=172.16.1.160

./etc/rc.d/init.d/functions

case"$1"in

start)

ifconfiglo:0$SNS_VIPnetmask255.255.255.255broadcast$SNS_VIP

/sbin/routeadd-host$SNS_VIPdevlo: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/null2>&1

echo"RealServerStartOK"

;;

stop)

ifconfiglo:0down

routedel$SNS_VIP>/dev/null2>&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"RealServerStoped"

;;

*)

echo"Usage:$0{start|stop}"

exit1

esac

exit0

测试效果

1、当来源ip为172.16.0.68的主机访问目标地址172.16.1.160的80端口时,转向了keepalived定义的fwmark1规则

2、当来源ip为172.16.1.173的主机访问目标地址172.16.1.160的80端口时,转向了keepalived定义的fwmark1规则