较全的lvs+ha文档(转CU) -> 双机lvs-ha

三)双机lvs-ha

主服务器+真实的web服务器 :192.168.2.28
备服务器+ 真实的web服务器:192.168.2.20
Lvs director 配置在主服务器上,根据源地址分配服务器。
集群的虚拟ip为60.*.165,初始分配在主服务器的eth0, 主服务器宕机后,ip由备份服务器接管,分配在备份服务器的eth0.

二、集群软件安装
主服务器安装:
yum -y install ipvsadm # ipvs管理器
yum -y install libnet    # 库文件
yum -y install e2fsprogs   # 库文件
yum -y install heartbeat # linux-ha
yum –y install heartbeat-ldirectord   # connector of linux-ha and lvs 【备份服务器不用安装】

2- 拷贝配置文件
cp /usr/share/doc/heartbeat-2.1.*/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.*/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.*/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-ldirectord-2.1.*/ldirectord.cf /etc/ha.d/【备份服务器不用】

三、集群配置
主服务器配置: 
1- 修改/etc/hosts文件
192.168.2.28           name1
192.168.2.20           name2

2- 修改haresources文件
liuyuxi IPaddr::60.*.165 lvsdr-basic ldirectord
3- 修改authkeys文件   修改权限 chmod 600 authkeys
auth 1
1 crc
4- 修改ha.cf
   debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
deadtime 20
initdead 20
ucast 192.168.2.20
auto_failback on
node name1
node name2
ping_group group1 192.168.2.28 192.168.2.20
respawn root /usr/lib/heartbeat/ipfail    
apiauth ipfail gid=root uid=root

5- ldirectord.cf
   checktimeout=3
checkinterval=1
autoreload=no
logfile="/var/log/ldirectord.log"
quiescent=no
virtual=60.*.165:80
       real=60.*.171:80 gate
       real=60.*.164:80 gate
       service=http
       request="test.html"
       receive="Test"       
       scheduler=sh
       protocol=tcp

6- lvsdr-basic
/etc/init.d/lvsdr-basic
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.

VIP=60.*.165
RIP1=60.*.171
RIP2=60.*.164
###########################
# ifconfig a
#
#/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
#
############################

/sbin/route add -host $VIP dev eth0:0
echo "1" > /proc/sys/net/ipv4/ip_forward

备份服务器配置:  
1- 修改/etc/hosts文件   同主服务器
2- 修改haresources文件
liuyuxi switchdr IPaddr::60.*.165
虚拟ip地址是 60.*.165
备份服务器在接管主服务器前,执行switchdr start
备份服务器在移交主服务器前,执行switchdr stop
switchdr 见备份服务器配置第5条.

3- 修改authkeys文件   同服务器
4- 修改ha.cf 同主服务器 注意ucast
5- switchdr 脚本
/etc/init.d/switchdr
#!/bin/sh
# description: close lo0 and arp_ignore
VIP=60.*.165

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

case "$1" in
start)
       echo "************* start director server and close tunl ***********"
       ifconfig lo:0 down
       echo 0>/proc/sys/net/ipv4/conf/all/arp_announce //允许arp解析虚ip
       ;;
stop)
       echo "start Real Server"
//       —————————————————禁止arp 解析虚ip
       ifconfig eth0:0 down
       ifconfig lo:0   $VIP netmask 255.255.255.255 broadcast $VIP up
       /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
       ;;
*)
       echo "Usage: switchdr {start|stop}"
       exit 1
esac

主服务器上:
/usr/local/apache/bin/apachectl start
/etc/init.d/heartbeat start
备服务器上:
/etc/init.d/httpd start
/etc/init.d/switchdr stop
/etc/init.d/heartbeat start

到此ok,如果有问题就是配置问题,好好检查你的log,所有的信息都在log上显示的。Ipvsadm可显示lvs连接,ipvsadm –l –c 命令查看当前响应。

最后感谢刘俊,ghbspecial 等同志 ,我是参照他们的文档作出的,
有问题请联系我   xu_pj#hotmail.com (#替代@)