master 172.16.6.204
backup 172.16.6.205
real 172.16.6.206
real 172.16.6.207
libnet和mailtools是用来支持heartbeat和ldirecrtord的
tar zxf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24/
make
make install
tar zxf libnet-1.1.2.1.tar.gz
cd libnet
./configure
make
make install
tar zxf MailTools-2.04.tar.gz
cd MailTools-2.04
perl Makefile.PL
make
make test
make install
tar jxf Heartbeat-STABLE-2-1-STABLE-2.1.4.tar.bz2
cd Heartbeat-STABLE-2-1-STABLE-2.1.4
./ConfigureMe configure
make
make install
你可以cp authkeys,ha.cf,haresources,../ldirectord/ldirectord.cf文件到/etc/ha.d目录中
vi ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log 日志文件的路径
logfacility local0
keepalive 2 心跳检测的平率为2秒一次
deadtime 30 如果30秒内没有相应心跳就做切换
warntime 10 指明心跳的延时为10秒做警告记录一条日志,没有其他动作
initdead 120 这个值设置成deadtime的两倍就可以了
udpport 694 数据通信的端口
bcast eth1 eth1为心跳工作接口
ucast eth1 192.168.1.3 检测对端心跳接口的地址
auto_failback on 当主节点回复后,自动切换
node lvs_master 主控机计算机名 //主控机的在前面
node lvs_backup 备用机计算机名 //备用机的在后面
ping 172.16.6.254 检测网络是否正常,可以设置成网关地址
respawn root /usr/lib/heartbeat/ipfail ipfail文件的路径
apiauth ipfail gid=root uid=root 启用ipfail进程的用户是root
lvs_master只主节点的计算机名 172.16.6.250是VIP地址,ipvs和ldirecrtord是启动脚本,当主节点宕机或者备用节点宕机后都会通过这个脚本文件去启动服务,ldirecrtord脚本的位置可以再/etc/rc.d/init.d中找到,ipvs是手工创建的
vi ipvs
ipvs
#!/bin/sh
VIP=172.16.6.250
RIP1=172.16.6.206
RIP2=172.16.6.207
start)
echo " start LVS "
# # set the Virtual IP Address
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
# /sbin/route add -host $VIP dev eth0:1
/sbin/ipvsadm -C
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
;;
stop)
echo "close LVS Director"
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
vi authkeys
auth 1
1 crc
一共有三个级别,自己工具情况选择吧,我用的是第一种默认的
checktimeout=3 检测超时
checkinterval=1 检测间隔
autoreload=yes 从新载入客户机
logfile="/var/log/ldirectord.log" 日志路径
logfile="local0"
quiescent=no
real=172.16.6.206:80 gate 真机IP地址和端口 路由模式
real=172.16.6.207:80 gate
fallback=127.0.0.1:80 gate
service=http 服务是http
request="test.html" 这个文件一定要在real的web目录中存在,并且能够正常访问的,ipvs通过它来判断客户端是否存活
receive="test" 文件内容
scheduler=rr
protocol=tcp
checktype=negotiate
checkport=80
real不需要安装任何软件,我这里从网上找了一个脚本效果还不错
vi /etc/rc.d/init.d/real.sh
#!/bin/bash
#description : start realserver
VIP=172.16.6.250
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
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 "Usage: $0 {start|stop}"
exit 1
esac
修改它的执行权限,然后用./real.sh start来启动它
在master上运行/etc/rc.d/init.d/heartbeat start和/etc/rc.d/init.d/ldirectord start这两个服务
Backup上只运行/etc/rc.d/init.d/heartbeat start 就可以了ldirectord 服务器会在主节点宕机后自动通过读取haresources文件来启动
这样整个lvs结构就配置完成了,可以通过http://172.16.6.250来访问web了
在lvs上可以通过ipvsadm -lnc来查看具体的信息