一、软件包安装

[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 ipvsadm+heartbeat+ldirecrtord(TUN)_第1张图片

二、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 #ipiptun模式gateDR模式 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