heartbeat中怎么自動切換網(wǎng)絡參數(shù),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
heartbeat中怎么自動切換網(wǎng)絡參數(shù),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
尚志網(wǎng)站建設公司創(chuàng)新互聯(lián),尚志網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為尚志1000+提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設要多少錢,請找那個售后服務好的尚志做網(wǎng)站的公司定做!
一、環(huán)境
node0
eth0:192.168.32.30 service vip1:192.168.32.21 VMAC1:00:1E:68:1E:99:5E
eth2:10.160.100.30 heart RMAC:00:18:8B:8E:04:E2
node1
eth0:192.168.32.31 service vip1:192.168.32.21 VMAC1:00:1E:68:1E:99:5E
eth2:10.160.100.31 heart vip2:192.168.32.22 VMAC2:00:1E:68:1E:88:5E RMAC:00:1E:68:1E:19:5E
node2
eth0:192.168.32.32 service vip2:192.168.32.22 VMAC2:00:1E:68:1E:88:5E
eth2:10.160.100.32 heart RMAC:00:1E:68:1E:16:7E
實驗要求:
1、當node0的網(wǎng)絡出現(xiàn)故障時,node1自動切換將自己的ip、hostname、mac地址改成vip1、vman1、 nodevir1;故障恢復后node0自動切換回來,將自己的ip、hostname、mac改成vip1、vman1、nodevir,node1恢 復自身的網(wǎng)絡參數(shù)
2、當node2的網(wǎng)絡出現(xiàn)故障時,node1自動切換將自己的ip、hostname、mac地址改成vip2、vman2、 nodevir2;故障恢復后node0自動切換回來,將自己的ip、hostname、mac改成vip2、vman2、nodevir2,node1 恢復自身的網(wǎng)絡參數(shù)
二、heartbeat安裝(三臺node操作一樣)
1、安裝libnet
[root@node1 ~]# tar -zxvf libnet-1.1.4.tar.gz
[root@node1 ~]# cd libnet-1.1.4
[root@node1 libnet-1.1.4]# ./configure
[root@node1 libnet-1.1.4]# make;make install
#libnet是一個高層次API工具,使用heartbeat需要用到他
2、安裝heartbeat
[root@node1 ~]# tar -zxvf heartbeat-2.1.3.tar.gz
[root@node1 ~]# cd heartbeat-2.1.3
[root@node1 heartbeat-2.1.3]# ./ConfigureMe configure --disable-swig --disable-snmp-subagent
[root@node1 heartbeat-2.1.3]# make ; make install
[root@node1 heartbeat-2.1.3]# cp doc/ha.cf doc/haresource doc/anthkeys /etc/ha.d/
[root@node1 heartbeat-2.1.3]# cp ldirectord/ldiretord.cf /etc/ha.d/
[root@node1 heartbeat-2.1.3]# grouadd -g 694 haclient
[root@node1 heartbeat-2.1.3]# useradd -u 694 -g 694 hacluster
#heartbeat的安裝包中默認包含ldirectord插件,該插件主要用于管理,為保證ldirectord可用還行安裝perl-Mailtools
三、配置
1 node0配置
1.1 創(chuàng)建網(wǎng)絡參數(shù)修改腳本(/etc/ha.d/resource.d/Remac1)
[root@node0 resource.d]# vim /etc/ha.d/resource.d/Remac1 #Remac1也可存放在/etc/rc.d/init.d目錄
#!/bin/bash
#discription : Start Real Server
VMAC=00:1E:68:1E:99:5E
RMAC=00:1E:68:1E:19:5E
GATEWAY=192.168.32.254
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Replace eth0's Real Mac addr to Virtual Mac addr"
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether $VMAC
/sbin/ifconfig eth0 up
/sbin/ifconfig eth0 192.168.32.21 broadcast 192.168.32.255 netmask 255.255.255.0
/bin/hostname nodevir
/sbin/route add default gw $GATEWAY
;;
stop)
echo "Restore eth0's Real Mac addr"
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether $RMAC
/sbin/ifconfig eth0 up
/sbin/ifconfig eth0 192.168.32.31 broadcast 192.168.32.255 netmask 255.255.255.0
/bin/hostname node1
/sbin/route add default gw $GATEWAY
;;
*)
echo "Usage : $0 {start|stop}"
exit 1
esac
1.2 heartbeat主配置文件(/etc/ha.d/ha.cf)
[root@node1 ha.d]# vim /etc/ha.d/ha.cf
#debugfile /var/log/ha-debug
logfile /var/log/ha-log
#指名heartbeat的日志存放位置。
#crm yes
#是否開啟Cluster Resource Manager(集群資源管理)功能。
bcast eth2
#指明心跳使用以太網(wǎng)廣播方式,并且是在eth2接口上進行廣播。
keepalive 2
#指定心跳間隔時間為2秒(即每兩秒鐘在eth2上發(fā)送一次廣播)。
deadtime 60
#指定備用節(jié)點在30秒內(nèi)沒有收到主節(jié)點的心跳信號后,則立即接管主節(jié)點的服務資源。
warntime 20
#指定心跳延遲的時間為十秒。當10秒鐘內(nèi)備份節(jié)點不能接收到主節(jié)點的心跳信號時,就會往日志中寫入一個警告日志,但此時不會切換服務。
initdead 240
#在某些系統(tǒng)上,系統(tǒng)啟動或重啟之后需要經(jīng)過一段時間網(wǎng)絡才能正常工作,該選項用于解決這種情況產(chǎn)生的時間間隔。取值至少為deadtime的兩倍。
udpport 694 #設置廣播通信使用的端口,694為默認使用的端口號。
#baud 19200 #設置串行通信的波特率。
#serial /dev/ttyS0 #選擇串行通信設備,用于雙機使用串口線連接的情況。如果雙機使用以太網(wǎng)。
#ucast eth0 192.168.1.2 #采用網(wǎng)卡eth2的udp單播來組織心跳,后面跟的IP地址應為雙機對方的IP地址。
#mcast eth0 225.0.0.1 694 1 0 #采用網(wǎng)卡eth0的Udp多播來組織心跳,一般在備用節(jié)點不止一臺時使用。Bcast、ucast和mcast分別代表廣播、單播和多播,是組織心跳的三種方式,任選其一即可。
auto_failback on
#用來定義當主節(jié)點恢復后,是否將服務自動切回,heartbeat的兩臺主機分別為主節(jié)點和備份節(jié)點。主節(jié)點在正常情況下占用資源并運行所有 的服務,遇到故障時把資源交給備份節(jié)點并由備份節(jié)點運行服務。在該選項設為on的情況下,一旦主節(jié)點恢復運行,則自動獲取資源并取代備份節(jié)點,如果該選項 設置為off,那么當主節(jié)點恢復后,將變?yōu)閭浞莨?jié)點,而原來的備份節(jié)點成為主節(jié)點。
#stonith baytech /etc/ha.d/conf/stonith.baytech
# stonith的主要作用是使出現(xiàn)問題的節(jié)點從集群環(huán)境中脫離,進而釋放集群資源,避免兩個節(jié)點爭用一個資源的情形發(fā)生。保證共享數(shù)據(jù)的安全性和完整性。
#watchdog /dev/watchdog
#該選項是可選配置,是通過Heartbeat來監(jiān)控系統(tǒng)的運行狀態(tài)。使用該特性,需要在內(nèi)核中載入"softdog"內(nèi)核模塊,用來生成實際的設備文件,
如果系統(tǒng)中沒有這個內(nèi)核模塊,就需要指定此模塊,重新編譯內(nèi)核。編譯完成輸入"insmod softdog"加載該模塊。然后輸入"grep misc /proc/devices"(應為10),輸入"cat /proc/misc |grep watchdog"(應為130)。最后,生成設備文件:"mknod /dev/watchdog c 10 130" 。即可使用此功能。
node node0 #主節(jié)點主機名,可以通過命令“uanme –n”查看。
node node1 #備用節(jié)點主機名。
ping 192.168.32.254
#選擇ping的節(jié)點,ping 節(jié)點選擇的越好,HA集群就越強壯,可以選擇固定的路由器作為ping節(jié)點,但是最好不要選擇集群中的成員作為ping節(jié)點,ping節(jié)點僅僅用來測試網(wǎng)絡連接。
ping_group group1 192.168.12.251 192.168.12.239 #類似于ping。
#respawn hacluster /usr/local/ha/lib/heartbeat/ipfail
#apiauth pingd gid=haclient uid=hacluster
apiauth pingd gid=root uid=root
respawn hacluster /usr/local/ha/lib/heartbeat/pingd -m 100 -d 5s
#該選項是可選配置,列出與heartbeat一起啟動和關閉的進程,該進程一般是和heartbeat集成的插件,這些進程遇到故障可以自動 重新啟動。最常用的進程是pingd,此進程用于檢測和監(jiān)控網(wǎng)卡狀態(tài),需要配合ping語句指定的ping node來檢測網(wǎng)絡的連通性。其中hacluster表示啟動pingd進程的身份。
#下面的配置是關鍵,也就是激活crm管理,開始使用v2 style格式
crm respawn
#注意,還可以使用crm yes的寫法,但這樣寫的話,如果后面的cib.xml配置有問題
#會導致heartbeat直接重啟該,所以,測試時建議使用respawn的寫法
#下面是對傳輸?shù)臄?shù)據(jù)進行壓縮,是可選項
compression bz2
compression_threshold 2
#注意,v2 style不支持ipfail功能,須使用pingd代替
1.3 資源文件(/etc/ha.d/haresources)
[root@node0 ha.d]# vim /etc/ha.d/haresources
node0 Remac1
#haresources文件用于指定雙機系統(tǒng)的主節(jié)點、集群IP、子網(wǎng)掩碼、廣播地址以及啟動的服務等集群資源,文件每一行可以包含一個或多個資源腳本名,資源之間使用空格隔開,參數(shù)之間使用兩個冒號隔開,在兩個HA節(jié)點上該文件必須完全一致,此文件的一般格式為:
node-name network <resource-group>
#node-name表示主節(jié)點的主機名,必須和ha.cf文件中指定的節(jié)點名一致,network用于設定集群的IP地址、子網(wǎng)掩碼、網(wǎng)絡設 備標識等,需要注意的是,這里指定的IP地址就是集群對外服務的IP地址,resource-group用來指定需要heartbeat托管的服務,也就 是這些服務可以由heartbeat來啟動和關閉,如果要托管這些服務,必須將服務寫成可以通過start/stop來啟動和關閉的腳步,然后放到 /etc/init.d/或者/etc/ha.d/resource.d/目錄下,heartbeat會根據(jù)腳本的名稱自動去/etc/init.d或者 /etc/ha.d/resource.d/目錄下找到相應腳步進行啟動或關閉操作。
#LSB: Linux標準腳本文件(init script),通常放在/etc/init.d/目錄下,heartbeat1.x版本之前的管理腳本一半放在/etc/ha.d /resource.d,在這里是/usr/local/ha/etc/ha.d/resource.d
OCF:Open Cluster Framework,默認放在/usr/lib/resource.d/heartbeat/目錄下;在這里是/usr/local/ha/etc/ha.d/resource.d
#下面介紹一下ocf和lsb格式的區(qū)別:
LSB格式的腳本必須支持status功能,必須能接收start,stop,status,三個參數(shù);而如果是OCF格式,則必須支持start,stop,monitor三個參數(shù).其中status和monitor參數(shù)是用來監(jiān)控資源的,非常重要.
例如LSB風格的腳本,運行./ status時候, 返回值包含OK或則running則表示資源正常,返回值包含stopped或者No則表示資源不正常。 假如是OCF風格的腳本,運行./Mysql monitor時候, 返回0表示資源是正常的, 返回7表示資源出現(xiàn)問題.
#下面對配置方法進行具體說明:
node1 IPaddr::192.168.60.200/24/eth0/ Filesystem::/dev/sdb5::/webdata::ext3 httpd tomcat
#其中,node1是HA集群的主節(jié)點,IPaddr為heartbeat自帶的一個執(zhí)行腳步,heartbeat首先將執(zhí)行/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start的操作,也就是虛擬出一個子網(wǎng)掩碼為255.255.255.0,IP為192.168.60.200的地址,此IP為heartbeat對外提供服務的網(wǎng)絡地址,同時指定此IP使用的網(wǎng)絡接口為eth0,接著,heartbeat將執(zhí)行共享磁盤分區(qū)的掛載操作,“Filesystem::/dev/sdf1::/data1::ext3”相當于在命令行下執(zhí)行mount操作,即“mount –t ext3 /dev/sdf1 /data1”,最后依次啟動httpd和tomcat服務。
1.4 認證文件(/etc/ha.d/authkeys)
[root@node0 resource.d]# vim /etc/ha.d/authkeys
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
#authkeys文件用于設定heartbeat的認證方式,共有三種可用的認證方式:crc、md5和sha1,三種認證方式的安全性依次提高,但是占用的系統(tǒng)資源也依次增加。如果heartbeat集群運行在安全的網(wǎng)絡上,可以使用crc方式,如果HA每個節(jié)點的硬件配置很高,建議使用sha1,這種認證方式安全級別最高,如果是處于網(wǎng)絡安全和系統(tǒng)資源之間,可以使用md5認證方式。這里我們使用crc認證方式,設置如下:
auth 1
1 crc
#2 sha1 sha1_any_password
#3 md5 md5_any_password
#需要說明的一點是:無論auth后面指定的是什么數(shù)字,在下一行必須作為關鍵字再次出現(xiàn),例如指定了“auth 6”,下面一定要有一行“6 認證類型”。最后確保這個文件的權限是600(即-rw-------)。
2 node1配置
2.1 創(chuàng)建網(wǎng)絡參數(shù)修改腳本(/etc/ha.d/resource.d/Remac1&2)
[root@node1 ~]# vim /etc/ha.d/resource.d/Remac1 #備份node0的網(wǎng)絡參數(shù)修改腳本
#!/bin/bash
#discription : Start Real Server
VMAC=00:1E:68:1E:99:5E
RMAC=00:1E:68:1E:19:5E #注意:與node0中Remac1中RMAC不一樣
GATEWAY=192.168.32.254
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Replace eth0's Real Mac addr to Virtual Mac addr"
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether $VMAC
/sbin/ifconfig eth0 up
/sbin/ifconfig eth0 192.168.32.21 broadcast 192.168.32.255 netmask 255.255.255.0
/bin/hostname nodevir
/sbin/route add default gw $GATEWAY
;;
stop)
echo "Restore eth0's Real Mac addr"
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether $RMAC
/sbin/ifconfig eth0 up
/sbin/ifconfig eth0 192.168.32.31 broadcast 192.168.32.255 netmask 255.255.255.0
/bin/hostname node1
/sbin/route add default gw $GATEWAY
;;
*)
echo "Usage : $0 {start|stop}"
exit 1
esac
[root@node1 ~]# cat /etc/ha.d/resource.d/Remac2 #備份node2的網(wǎng)絡參數(shù)修改腳本
#!/bin/bash
#discription : Start Real Server
VMAC=00:1E:68:1E:88:5E
RMAC=00:1E:68:1E:19:5E #注意:與node中Remac1中RMAC不一樣
GATEWAY=192.168.32.254
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Replace eth0's Real Mac addr to Virtual Mac addr"
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether $VMAC
/sbin/ifconfig eth0 up
/sbin/ifconfig eth0 192.168.32.22 broadcast 192.168.32.255 netmask 255.255.255.0
/bin/hostname nodevir2
/sbin/route add default gw $GATEWAY
;;
stop)
echo "Restore eth0's Real Mac addr"
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether $RMAC
/sbin/ifconfig eth0 up
/sbin/ifconfig eth0 192.168.32.31 broadcast 192.168.32.255 netmask 255.255.255.0
/bin/hostname node1
/sbin/route add default gw $GATEWAY
;;
*)
echo "Usage : $0 {start|stop}"
exit 1
esac
2.2 主配置文件(/etc/ha.d/ha.cf)
[root@node1 ~]# vim /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 60
warntime 20
initdead 240
udpport 694
auto_failback on
node node0 #主node0,排列順序越靠前越優(yōu)先
node node2 #主node2
node node1 #備node1
ping 192.168.32.254
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
deadping 60
#注意:由于修改網(wǎng)絡參數(shù)需要重啟網(wǎng)卡,需要大量的時間,所以在此將所有時間參數(shù)設置比較長。
2.3 資源文件(/etc/ha.d/haresource)
[root@node1 ~]# cat /etc/ha.d/haresources
node0 Remac1
node2 Remac2
#備份nod0用Remac1腳本,備份node2用Remac2腳本
2.4 認證文件(/etc/ha.d/authkeys)
同node0
3 node2配置
3.1 創(chuàng)建網(wǎng)絡參數(shù)修改腳本(/etc/ha.d/resource.d/Remac2)
[root@node2 ~]# cat /etc/ha.d/resource.d/Remac2
#!/bin/bash
#discription : Start Real Server
VMAC=00:1E:68:1E:88:5E
RMAC=00:1E:68:1E:16:7E
GATEWAY=192.168.32.254
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Replace eth0's Real Mac addr to Virtual Mac addr"
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether $VMAC
/sbin/ifconfig eth0 up
/sbin/ifconfig eth0 192.168.32.22 broadcast 192.168.32.255 netmask 255.255.255.0
/bin/hostname nodevir2
/sbin/route add default gw $GATEWAY
;;
stop)
echo "Restore eth0's Real Mac addr"
/sbin/ifconfig eth0 down
/sbin/ifconfig eth0 hw ether $RMAC
/sbin/ifconfig eth0 up
/sbin/ifconfig eth0 192.168.32.32 broadcast 192.168.32.255 netmask 255.255.255.0
/bin/hostname node2
/sbin/route add default gw $GATEWAY
;;
*)
echo "Usage : $0 {start|stop}"
exit 1
esac
3.2 主配置文件(/etc/ha.d/ha.cf)
[root@node1 ~]# vim /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 60
warntime 20
initdead 240
udpport 694
auto_failback on
node node2 #主node2,排列順序越靠前越優(yōu)先
node node1 #備node1
ping 192.168.32.254
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
deadping 60
#注意:由于修改網(wǎng)絡參數(shù)需要重啟網(wǎng)卡,需要大量的時間,所以在此將所有時間參數(shù)設置比較長。
3.3 資源文件(/etc/ha.d/haresource)
[root@node1 ~]# cat /etc/ha.d/haresources
node2 Remac2
3.4 認證文件(/etc/ha.d/authkeys)
同node0
四、測試heartbeat的高可用功能
如何才能得知HA集群是否正常工作,模擬環(huán)境測試是個不錯的方法,在把Heartbeat高可用性集群放到生產(chǎn)環(huán)境中之前,需要做如下幾個步驟的測試,從而確定HA是否正常工作:
1 正常關閉和重啟主節(jié)點的heartbeat
首先在主節(jié)點node1上執(zhí)行“service heartbeat stop”正常關閉主節(jié)點的Heartbeat進程,此時通過ifconfig命令查看主節(jié)點網(wǎng)卡信息,正常情況下,應該可以看到主節(jié)點已經(jīng)釋放了集群的 服務IP地址,同時也釋放了掛載的共享磁盤分區(qū),然后查看備份節(jié)點,現(xiàn)在備份節(jié)點已經(jīng)接管了集群的服務IP,同時也自動掛載上了共享的磁盤分區(qū)。
在這個過程中,使用ping命令對集群服務IP進行測試,可以看到,集群IP一致處于可通狀態(tài),并沒有任何延時和阻塞現(xiàn)象,也就是說在正常關閉主節(jié)點的情況下,主備節(jié)點的切換是無縫的,HA對外提供的服務也可以不間斷運行。
接著,將主節(jié)點heartbeat正常啟動,heartbeat啟動后,備份節(jié)點將自動釋放集群服務IP,同時卸載共享磁盤分區(qū),而主節(jié)點將再次接管集 群服務IP和掛載共享磁盤分區(qū),其實備份節(jié)點釋放資源與主節(jié)點綁定資源是同步進行的。因而,這個過程也是一個無縫切換。
2 在主節(jié)點上拔去網(wǎng)線
拔去主節(jié)點連接公共網(wǎng)絡的網(wǎng)線后,heartbeat插件ipfail通過ping測試可以立刻檢測到網(wǎng)絡連接失敗,接著自動釋放資源,而就在此時,備用節(jié)點的ipfail插件也會檢測到主節(jié)點出現(xiàn)網(wǎng)絡故障,在等待主節(jié)點釋放資源完畢后,備用節(jié)點馬上接管了集群資源,從而保證了網(wǎng)絡服務不間斷持續(xù)運行。
同理,當主節(jié)點網(wǎng)絡恢復正常時,由于設置了“auto_failback on”選項,集群資源將自動從備用節(jié)點切會主節(jié)點。
3 關閉主節(jié)點的系統(tǒng)
在主節(jié)點拔去電源后,備用節(jié)點的heartbeat進程會立刻收到主節(jié)點已經(jīng)shutdown的消息,備用節(jié)點就開始進行資源的接管,這種情況其實和主節(jié)點網(wǎng)絡故障的現(xiàn)象類似。
4 讓主節(jié)點系統(tǒng)內(nèi)核崩潰
當主節(jié)點系統(tǒng)崩潰后,網(wǎng)絡也就失去了響應,那么備用節(jié)點的heartbeat進程就會立刻檢測到主節(jié)點網(wǎng)絡故障,然后進行資源切換,但是由于主節(jié)點系統(tǒng)內(nèi) 核崩潰,導致自身不能卸載所占有的資源,例如共享磁盤分區(qū)、集群服務IP等,那么此時如果沒有類似Stonith設備的話,就會出現(xiàn)資源爭用的情況,但是 如果有Stonith備,Stonith設備會首先將故障的主節(jié)點電源關閉或者重啟此節(jié)點等操作,這樣就讓主節(jié)點釋放了集群資源,當Stonith設備 完成所有操作時,備份節(jié)點才拿到接管主節(jié)點資源的所有權,從而接管主節(jié)點的資源。
文章名稱:heartbeat中怎么自動切換網(wǎng)絡參數(shù)
本文網(wǎng)址:http://jinyejixie.com/article10/dcjgo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設計公司、電子商務、Google、ChatGPT、虛擬主機、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)