一、软件包安装
[root@localhost ~]# rpm -qa|grep heart
heartbeat-ldirectord-2.1.3-3.el5.centos
heartbeat-pils-2.1.3-3.el5.centos
heartbeat-stonith-2.1.3-3.el5.centos
heartbeat-2.1.3-3.el5.centos
[root@localhost ~]# rpm -qa|grep ipvs
ipvsadm-1.24-10
[root@localhost ~]# rpm -qa|grep arp
arptables-noarp-addr-0.99.2-1.rh.el.um.1
arptables_jf-0.0.8-8
[root@localhost ~]# rpm -qa|grep perl-Mail
perl-Mail-POP3Client-2.17-1.el5.centos
perl-MailTools-1.77-1.el5.centos
[root@localhost ~]# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
[root@localhost ~]# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
[root@localhost ~]# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/
[root@localhost ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/
二、LVS IPIP模式配置
1)加载ipip模块
[root@LVS-master ~]# modprobe ipip
[root@LVS-master ~]# lsmod |grep ipip
ipip 14501 0
tunnel4 7365 1 ipip
2)调度器配置
[root@LVS-master ~]# ifconfig tunl0 192.168.2.253 broadcast 192.168.2.253 netmask 255.255.255.255 up
添加路由
[root@LVS-master ~]# route add -host 192.168.2.253 dev tunl0
如上设置可编写成shell 如下( /etc/ha.d/resource.d/tunip )
设置调度方法
[root@LVS-master ~]# ipvsadm -A -t 192.168.2.253:8601 -s lc
设置RS
[root@LVS-master ~]# ipvsadm -a -t 192.168.2.253:8601 -r 192.168.2.123 -i
[root@LVS-master ~]# ipvsadm -a -t 192.168.2.253:8601 -r 192.168.2.124 -i
[root@LVS-master ~]# ipvsadm -a -t 192.168.2.253:8601 -r 192.168.2.122 -i
相当如下脚本:(可以和上面的脚本放一起的)
#!/bin/sh
VIP=192.168.15.253
RIP1=192.168.15.122
RIP2=192.168.15.123
RIP2=192.168.15.124
/sbin/ipvsadm -A -t $VIP:8601 -s lc
/sbin/ipvsadm -a -t $VIP:8601 -r $RIP1:8601 -i
/sbin/ipvsadm -a -t $VIP:8601 -r $RIP2:8601 -i
/sbin/ipvsadm -a -t $VIP:8601 -r $RIP3:8601 -i
查看配置
[root@LVS-master ~]# ipvsadm
[root@LVS-master ha.d]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.252:8601 wlc
-> 192.168.2.110:8601 Route 1 843 0
-> 192.168.2.109:8601 Route 1 843 0
-> 192.168.2.119:8601 Route 1 843 0
TCP 192.168.2.253:8601 wlc
-> 192.168.2.105:8601 Route 3 529 0
-> 192.168.2.104:8601 Route 3 528 0
-> 192.168.2.126:8601 Route 2 2606 0
-> 192.168.2.106:8601 Route 2 2480 0
-> 192.168.2.27:8601 Route 1 1166 0
-> 192.168.2.125:8601 Route 2 2672 0
3)真实服务器配置
[root@localhost ~]# ifconfig tunl0 192.168.2.253 netmask 255.255.255.255 broadcast 192.168.2.253 up
[root@localhost ~]# route add -host 192.168.2.253 dev tunl0
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
(真实机配置也可以写脚本)
三、配置ldirectord
[root@LVS-master ~]# vi /etc/ha.d/ldirectord.cf
checktimeout=3 #超时间隔为秒
checkinterval=1
autoreload=yes #是否自动重载
logfile="/var/log/ldirectord.log"
quiescent=yes #为yes时,设置真实机器权值为0即不可达,设置为no时,则删除不可达的真实机器
virtual=192.168.2.253:8601
real=192.168.2.122:8601 ipip 1 #ipip为tun模式gate为DR模式 1为权值不设置时权值为1
real=192.168.2.123:8601 ipip
real=192.168.2.124:8601 ipip
# fallback=127.0.0.1:80 gate #是否设置当真实机器全部不可达时,由其它机器接替
scheduler=wlc #调度方法加权最少链接
protocol=tcp
# checktype=negotiate
checktype=connect #检测端口是否可达
checkport=8601
注:此服务可代替上面的第三个步骤配置LVS的调度器
四、配置热备,heartbeat实现调度器冗余
[root@LVS-master ~]# vi /etc/ha.d/authkeys
auth 2
#1 crc
2 sha1 thssee10jqka
#3 md5 Hello!
配置认证为sha安全性最高的,1的认证是明码,2的是秘钥,3的是md5加密
[root@LVS-master ~]# chmod 600 /etc/ha.d/authkeys
警告:如果你不能使用chmod命令修改这个文件的安全属性,Heartbeat程序将不能启动,它会在/var/log/messages文件中产生记录,提示你没有正确设置这个文件的安全属性。
ha.cf配置
[root@LVS-master ~]# vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
#定义日志文件的位置,如果两个都没有定义,默认会写入/var/log/message
logfacility local0
keepalive 2
#指定心跳间隔时间即每隔2秒钟在eth0上发送一次广播
deadtime 30
#指定若备用节点在30内没有收到主节点的心跳信号,则立即接管主节点的服务资源
warntime 10
#指定心跳延迟的时间为10秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务
initdead 120
#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍
udpport 694
#开放防火墙694端口
baud 19200
#设置串行通信的波特率
bcast eth0 # Linux
#采用udp广播来通知心跳
mcast eth0 225.0.0.1 694 1 0
#采用udp多播来通知心跳,建议主副使用
ucast eth0 192.168.2.121
#单播eth0的IP,此处从为从的IP
auto_failback on
#主节点恢复后,是否自动切回,主可设置恢复后切回,从设置为off
watchdog /dev/watchdog
#看门狗,如果本节点在超过一分钟后还没有发出心跳,那么本节点自动重启
node LVS-master
node LVS-slave
#与uname -n保持一致,第一个为主节点,第二个为副节点
ping_group group1 192.168.2.121 192.168.2.127
respawn root /usr/lib/heartbeat/ipfail
#ping和respawn用来测试网络连接,ping后面接外网网关或者其他可靠的设备的IP,如果这个IP一旦ping不通了(意味该机的外网down了),则利用respawn调用/usr/lib/heartbeat/ipfail来主动进行切换。
apiauth ipfail gid=root uid=root
haresources配置
haresources脚本调用路径是/etc/ha.d/resource.d/
[root@localhost ~]# vi /etc/ha.d/haresources
LVS-master tunip
# LVS-master为节点名与uname -n相同tunip为脚本,这个文件是heartbeat启动后会调用tunip这个脚本,当start时则向该脚本传递一个start参数,当为stop时则向该脚本传递一个stop参数,如果该脚本没有接收stop参数时,而在使用heartbeat stop时,会导致系统重启完成heartbeat的关闭,如下日志
Oct 2 22:50:57 localhost ResourceManager[10966]: info: Retrying failed stop operation [IPaddr2::192.168.3.254/24/tunl0]
Oct 2 22:50:57 localhost ResourceManager[10966]: info: Running /etc/ha.d/resource.d/IPaddr2 192.168.3.254/24/tunl0 stop
Oct 2 22:50:58 localhost IPaddr2[12083]: INFO: ip -f inet addr delete 192.168.3.254/24 dev tunl0
Oct 2 22:50:58 localhost IPaddr2[12054]: ERROR: Generic error
Oct 2 22:50:58 localhost ResourceManager[10966]: ERROR: Return code 1 from /etc/ha.d/resource.d/IPaddr2
Oct 2 22:50:58 localhost IPaddr2[12142]: INFO: Running OK
Oct 2 22:50:58 localhost ResourceManager[10966]: CRIT: Resource STOP failure. Reboot required!
Oct 2 22:50:58 localhost ResourceManager[10966]: CRIT: Killing heartbeat ungracefully!
tunip脚本配置
[root@localhost ~]# vi /etc/ha.d/resource.d/tunip
#/bin/sh
#/sbin/ifconfig tunl0 192.168.2.253 broadcast 192.168.2.253 netmask 255.255.255.255 up
#
# description: Start DirectorServer of LVS
# chkconfig: - 08 92
#
# Start LVS TUNL in Directorserver
VIP=192.168.2.253
VIP8602=192.168.2.252
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " Start LVS of DirectorServer"
# set the Virtual IP Address
/sbin/modprobe ipip
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/ifconfig lo:1 $VIP8602 broadcast $VIP8602 netmask 255.255.255.255 up
;;
stop)
echo "Close LVS Directorserver"
#/sbin/modprobe -r ipip
#/sbin/ifconfig tunl0 down
/sbin/ifconfig lo:0 down
/sbin/ifconfig lo:1 down
;;
*)
echo "Usage: $0 {start|stop}"
slave机器配置
把主调度器121上的配置文件及脚本拷贝至从127机器上,并开放694端口
更改ha.cf配置文件
ucast eth0 192.168.2.127 #eth0的IP,此处从为从的IP
auto_failback off
五、ldirectord与VIP结合至heartbeat
[root@LVS-master ~]# vi /etc/ha.d/haresources
LVS-master \
ldirectord::ldirectord.cf \
tunip
开启关闭LVS用
[root@LVS-master ~]# service heartbeat start
[root@LVS-master ~]# service heartbeat stop