LVS ipvsadm+heartbeat+ldirecrtord(TUN)

一、軟件包安裝

[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) - herb - herb

二、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 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章