一、軟件包安裝
[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