(轉)Linux-HA開源軟件Heartbeat(配置篇)

原文:http://ixdba.blog.51cto.com/2895551/548625node

http://gzsamlee.blog.51cto.com/9976612/1828870web

Linux-HA開源軟件Heartbeat(配置篇)tomcat

Linux-HA開源軟件Heartbeat(安裝篇)安全

 Linux-HA開源軟件Heartbeat(概念篇)服務器

Linux-HA開源軟件Heartbeat(測試篇)
Heartbeat3.x應用全攻略之: 測試Heartbeat的HA功能
網絡

1、配置主節點的heartbeat 
 Heartbeat的主要配置文件有ha.cf、haresources、authkeys,在Heartbeat安裝後,默認並無這三個文件,能夠從官方網站下載獲得,也能夠直接從解壓的源碼目錄中找到,在上面的安裝過程當中,咱們已經將這三個文件放到了/etc/ha.d目錄下,下面分別詳細介紹。運維


1.主配置文件(/etc/ha.d/ha.cf)
下面對ha.cf文件的每一個選項進行詳細介紹,其中「#」號後面的內容是對選項的註釋說明。
#debugfile /var/log/ha-debug
logfile /var/log/ha-log    #指名heartbeat的日誌存放位置。
#crm yes      #是否開啓Cluster Resource Manager(集羣資源管理)功能。
bcast eth1    #指明心跳使用以太網廣播方式,而且是在eth1接口上進行廣播。
keepalive 2    #指定心跳間隔時間爲2秒(即每兩秒鐘在eth1上發送一次廣播)。
deadtime 30 #指定備用節點在30秒內沒有收到主節點的心跳信號後,則當即接管主節點的服務資源。
warntime 10 #指定心跳延遲的時間爲十秒。當10秒鐘內備份節點不能接收到主節點的心跳信號時,就會往日誌中寫入一個警告日誌,但此時不會切換服務。
initdead 120 #在某些系統上,系統啓動或重啓以後須要通過一段時間網絡才能正常工做,該選項用於解決這種狀況產生的時間間隔。取值至少爲deadtime的兩倍。 
udpport 694    #設置廣播通訊使用的端口,694爲默認使用的端口號。
baud 19200    #設置串行通訊的波特率。
#serial /dev/ttyS0   #選擇串行通訊設備,用於雙機使用串口線鏈接的狀況。若是雙機使用以太網鏈接,則應該關閉該選項。
#ucast eth0 192.168.1.2 #採用網卡eth0的udp單播來組織心跳,後面跟的IP地址應爲雙機對方的IP地址。
#mcast eth0 225.0.0.1 694 1 0 #採用網卡eth0的Udp多播來組織心跳,通常在備用節點不止一臺時使用。Bcast、ucast和mcast分別表明廣播、單播和多播,是組織心跳的三種方式,任選其一便可。
auto_failback on #用來定義當主節點恢復後,是否將服務自動切回,heartbeat的兩臺主機分別爲主節點和備份節點。主節點在正常狀況下佔用資源並運行全部的服務,遇到故障時把資源交給備份節點並由備份節點運行服務。在該選項設爲on的狀況下,一旦主節點恢復運行,則自動獲取資源並取代備份節點,若是該選項設置爲off,那麼當主節點恢復後,將變爲備份節點,而原來的備份節點成爲主節點。
#stonith baytech /etc/ha.d/conf/stonith.baytech   # stonith的主要做用是使出現問題的節點從集羣環境中脫離,進而釋放集羣資源,避免兩個節點爭用一個資源的情形發生。保證共享數據的安全性和完整性。
#watchdog /dev/watchdog #該選項是可選配置,是經過Heartbeat來監控系統的運行狀態。使用該特性,須要在內核中載入"softdog"內核模塊,用來生成實際的設備文件,若是系統中沒有這個內核模塊,就須要指定此模塊,從新編譯內核。編譯完成輸入"insmod softdog"加載該模塊。而後輸入"grep misc /proc/devices"(應爲10),輸入"cat /proc/misc |grep watchdog"(應爲130)。最後,生成設備文件:"mknod /dev/watchdog c 10 130" 。便可使用此功能。
node node1    #主節點主機名,能夠經過命令「uanme –n」查看。
node node2    #備用節點主機名。
ping 192.168.60.1 #選擇ping的節點,ping 節點選擇的越好,HA集羣就越強壯,能夠選擇固定的路由器做爲ping節點,可是最好不要選擇集羣中的成員做爲ping節點,ping節點僅僅用來測試網絡鏈接。測試

respawn hacluster /usr/lib/heartbeat/ipfail #該選項是可選配置,列出與heartbeat一塊兒啓動和關閉的進程,該進程通常是和heartbeat集成的插件,這些進程遇到故障能夠自動從新啓動。最經常使用的進程是ipfail,此進程用於檢測和處理網絡故障,須要配合ping語句指定的ping node來檢測網絡的連通性。其中hacluster表示啓動ipfail進程的身份。網站

2.資源文件(/etc/ha.d/haresources)
Haresources文件用於指定雙機系統的主節點、集羣IP、子網掩碼、廣播地址以及啓動的服務等集羣資源,文件每一行能夠包含一個或多個資源腳本名,資源之間使用空格隔開,參數之間使用兩個冒號隔開,在兩個HA節點上該文件必須徹底一致,此文件的通常格式爲:
node-name network  <resource-group>
node-name表示主節點的主機名,必須和ha.cf文件中指定的節點名一致,network用於設定集羣的IP地址、子網掩碼、網絡設備標識等,須要注意的是,這裏指定的IP地址就是集羣對外服務的IP地址,resource-group用來指定須要heartbeat託管的服務,也就是這些服務能夠由heartbeat來啓動和關閉,若是要託管這些服務,必須將服務寫成能夠經過start/stop來啓動和關閉的腳步,而後放到/etc/init.d/或者/etc/ha.d/resource.d/目錄下,heartbeat會根據腳本的名稱自動去/etc/init.d或者/etc/ha.d/resource.d/目錄下找到相應腳步進行啓動或關閉操做。
下面對配置方法進行具體說明:
node1 IPaddr::192.168.60.200/24/eth0/  Filesystem::/dev/sdb5::/webdata::ext3  httpd tomcat
其中,node1是HA集羣的主節點,IPaddr爲heartbeat自帶的一個執行腳步,heartbeat首先將執行/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start的操做,也就是虛擬出一個子網掩碼爲255.255.255.0,IP爲192.168.60.200的地址,此IP爲heartbeat對外提供服務的網絡地址,同時指定此IP使用的網絡接口爲eth0,接着,heartbeat將執行共享磁盤分區的掛載操做,「Filesystem::/dev/sdb5::/webdata::ext3」至關於在命令行下執行mount操做,即「mount –t ext3 /dev/sdb5 /webdata」,最後依次啓動httpd和tomcat服務。
注意:主節點和備份節點中資源文件haresources要徹底同樣。ui

3.認證文件(/etc/ha.d/authkeys)
authkeys文件用於設定heartbeat的認證方式,共有三種可用的認證方式:crc、md5和sha1,三種認證方式的安全性依次提升,可是佔用的系統資源也依次增長。若是heartbeat集羣運行在安全的網絡上,可使用crc方式,若是HA每一個節點的硬件配置很高,建議使用sha1,這種認證方式安全級別最高,若是是處於網絡安全和系統資源之間,可使用md5認證方式。這裏咱們使用crc認證方式,設置以下:
auth 1
1 crc
#2 sha1 sha1_any_password
#3 md5 md5_any_password
須要說明的一點是:不管auth後面指定的是什麼數字,在下一行必須做爲關鍵字再次出現,例如指定了「auth 6」,下面必定要有一行「6 認證類型」。
最後確保這個文件的權限是600(即-rw-------)。

2、 配置備份節點的heartbeat
  在備份節點上也須要安裝heartbeat,安裝方式與在主節點安裝過程同樣,這裏再也不重述,依次安裝libnet和heartbeat源碼包,安裝完畢,在備份節點上使用scp命令把主節點配置文件傳輸到備份節點。 
    [root@node2 ~]#scp –r node1:/etc/ha.d/*  /etc/ha.d/
其中,node1是主節點的主機名。

3、設置主節點和備份節點時間同步
在雙機高可用集羣中,主節點和備份節點的系統時間也很是重要,由於節點之間的監控都是經過設定時間來實現的,主備節點之間的系統時間相差在十秒之內是正常的,若是節點之間時間相差太大,就有可能形成HA環境的故障。解決時間同步的辦法有兩個,一個是找一個時間服務器,兩個節點經過ntpdate命令定時與時間服務器進行時間校準,另外一個辦法是讓集羣中的主節點做爲ntp時間服務器,讓備份節點定時去主節點進行時間校驗。

4、 啓動Heartbeat
1.啓動主節點的Heartbeat
Heartbeat安裝完成後,自動在/etc/init.d目錄下生成了啓動腳步文件heartbeat,直接輸入/etc/init.d/heartbeat能夠看到heartbeat腳本的用法,以下所示:
[root@node1 ~]# /etc/init.d/heartbeat  
Usage: /etc/init.d/heartbeat {start|stop|status|restart|reload|force-reload}
於是啓動heartbeat能夠經過以下命令進行:
[root@node1 ~]#service heartbeat start
或者經過
[root@node1 ~]#/etc/init.d/heartbeat start
這樣就啓動了主節點的heartbeat服務,爲了讓heartbeat能在開機自動運行以及關機自動關閉,能夠手動建立如下軟鏈接:
[root@node1 ~]#ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc0.d/K05heartbeat
[root@node1 ~]#ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc3.d/S75heartbeat
[root@node1 ~]#ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc5.d/S75heartbeat
[root@node1 ~]#ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc6.d/K05heartbeat
Heartbeat啓動時,經過「tail –f /var/log/ messages」查看主節點系統日誌信息,輸出以下:
[root@node1 ~]# tail -f /var/log/messages
Nov 26 07:52:21 node1 heartbeat: [3688]: info: Configuration validated. Starting heartbeat 2.0.8
Nov 26 07:52:21 node1 heartbeat: [3689]: info: heartbeat: version 2.0.8
Nov 26 07:52:21 node1 heartbeat: [3689]: info: Heartbeat generation: 3
Nov 26 07:52:21 node1 heartbeat: [3689]: info: G_main_add_TriggerHandler: Added signal manual handler
Nov 26 07:52:21 node1 heartbeat: [3689]: info: G_main_add_TriggerHandler: Added signal manual handler
Nov 26 07:52:21 node1 heartbeat: [3689]: info: glib: UDP Broadcast heartbeat started on port 694 (694) interface eth1
Nov 26 07:52:21 node1 heartbeat: [3689]: info: glib: UDP Broadcast heartbeat closed on port 694 interface eth1 - Status: 1
Nov 26 07:52:21 node1 heartbeat: [3689]: info: glib: ping heartbeat started.
Nov 26 07:52:21 node1 heartbeat: [3689]: info: G_main_add_SignalHandler: Added signal handler for signal 17
Nov 26 07:52:21 node1 heartbeat: [3689]: info: Local status now set to: 'up'
Nov 26 07:52:22 node1 heartbeat: [3689]: info: Link node1:eth1 up.
Nov 26 07:52:23 node1 heartbeat: [3689]: info: Link 192.168.60.1:192.168.60.1 up.
Nov 26 07:52:23 node1 heartbeat: [3689]: info: Status update for node 192.168.60.1: status ping
此段日誌是Heartbeat在進行初始化配置,例如,heartbeat的心跳時間間隔、UDP廣播端口、ping節點的運行狀態等,日誌信息到這裏會暫停,等待120秒以後,heartbeat會繼續輸出日誌,而這個120秒恰好是ha.cf中「initdead」選項的設定時間。此時heartbeat的輸出信息以下:
Nov 26 07:54:22 node1 heartbeat: [3689]: WARN: node node2: is dead
Nov 26 07:54:22 node1 heartbeat: [3689]: info: Comm_now_up(): updating status to active
Nov 26 07:54:22 node1 heartbeat: [3689]: info: Local status now set to: 'active'
Nov 26 07:54:22 node1 heartbeat: [3689]: info: Starting child client "/usr/lib/heartbeat/ipfail" (694,694)
Nov 26 07:54:22 node1 heartbeat: [3689]: WARN: No STONITH device configured.
Nov 26 07:54:22 node1 heartbeat: [3689]: WARN: Shared disks are not protected.
Nov 26 07:54:22 node1 heartbeat: [3689]: info: Resources being acquired from node2.
Nov 26 07:54:22 node1 heartbeat: [3712]: info: Starting "/usr/lib/heartbeat/ipfail" as uid 694  gid 694 (pid 3712)
在上面這段日誌中,因爲node2尚未啓動,因此會給出「node2: is dead」的警告信息,接下來啓動了heartbeat插件ipfail,因爲咱們在ha.cf文件中沒有配置STONITH,因此日誌裏也給出了「No STONITH device configured」的警告提示。
繼續看下面的日誌:
Nov 26 07:54:23 node1 harc[3713]: info: Running /etc/ha.d/rc.d/status status
Nov 26 07:54:23 node1 mach_down[3735]: info: /usr/lib/heartbeat/mach_down: nice_failback: foreign resources acquired
Nov 26 07:54:23 node1 mach_down[3735]: info: mach_down takeover complete for node node2.
Nov 26 07:54:23 node1 heartbeat: [3689]: info: mach_down takeover complete.
Nov 26 07:54:23 node1 heartbeat: [3689]: info: Initial resource acquisition complete (mach_down)
Nov 26 07:54:24 node1 IPaddr[3768]: INFO:  Resource is stopped
Nov 26 07:54:24 node1 heartbeat: [3714]: info: Local Resource acquisition completed.
Nov 26 07:54:24 node1 harc[3815]: info: Running /etc/ha.d/rc.d/ip-request-resp ip-request-resp
Nov 26 07:54:24 node1 ip-request-resp[3815]: received ip-request-resp 192.168.60.200/24/eth0 OK yes
Nov 26 07:54:24 node1 ResourceManager[3830]: info: Acquiring resource group: node1 192.168.60.200/24/eth0 Filesystem::/dev/sdb5::/webdata::ext3
Nov 26 07:54:24 node1 IPaddr[3854]: INFO:  Resource is stopped
Nov 26 07:54:25 node1 ResourceManager[3830]: info: Running /etc/ha.d/resource.d/IPaddr 192.168.60.200/24/eth0 start
Nov 26 07:54:25 node1 IPaddr[3932]: INFO: Using calculated netmask for 192.168.60.200: 255.255.255.0
Nov 26 07:54:25 node1 IPaddr[3932]: DEBUG: Using calculated broadcast for 192.168.60.200: 192.168.60.255
Nov 26 07:54:25 node1 IPaddr[3932]: INFO: eval /sbin/ifconfig eth0:0 192.168.60.200 netmask 255.255.255.0 broadcast 192.168.60.255
Nov 26 07:54:25 node1 avahi-daemon[1854]: Registering new address record for 192.168.60.200 on eth0.
Nov 26 07:54:25 node1 IPaddr[3932]: DEBUG: Sending Gratuitous Arp for 192.168.60.200 on eth0:0 [eth0]
Nov 26 07:54:26 node1 IPaddr[3911]: INFO:  Success
Nov 26 07:54:26 node1 Filesystem[4021]: INFO:  Resource is stopped
Nov 26 07:54:26 node1 ResourceManager[3830]: info: Running /etc/ha.d/resource.d/Filesystem /dev/sdb5 /webdata ext3 start
Nov 26 07:54:26 node1 Filesystem[4062]: INFO: Running start for /dev/sdb5 on /webdata
Nov 26 07:54:26 node1 kernel: kjournald starting.  Commit interval 5 seconds
Nov 26 07:54:26 node1 kernel: EXT3 FS on sdb5, internal journal
Nov 26 07:54:26 node1 kernel: EXT3-fs: mounted filesystem with ordered data mode.
Nov 26 07:54:26 node1 Filesystem[4059]: INFO:  Success
Nov 26 07:54:33 node1 heartbeat: [3689]: info: Local Resource acquisition completed. (none)
Nov 26 07:54:33 node1 heartbeat: [3689]: info: local resource transition completed
上面這段日誌是進行資源的監控和接管,主要完成haresources文件中的設置,在這裏是啓用集羣虛擬IP和掛載磁盤分區。
此時,經過ifconfig命令查看主節點的網絡配置,能夠看到,主節點已經自動綁定了集羣的IP地址,在HA集羣以外的主機上經過ping命令檢測集羣IP地址192.168.60.200,已經處於可通狀態,也就是該地址變的可用。
同時查看磁盤分區的掛載狀況,共享磁盤分區/dev/sdb5已經被自動掛載。

2.啓動備份節點的Heartbeat 
 啓動備份節點的Heartbeat,與主節點方法同樣,使用以下命令: 
  [root@node2 ~]#/etc/init.d/heartbeat start 
   或者執行
  [root@node2 ~]#service heartbeat start 
   這樣就啓動了備用節點的heartbeat服務,爲了讓heartbeat能在開機自動運行以及關機自動關閉, 建立如下軟鏈接:
[root@node2 ~]#ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc0.d/K05heartbeat
[root@node2 ~]#ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc3.d/S75heartbeat
[root@node2 ~]#ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc5.d/S75heartbeat
[root@node2 ~]#ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc6.d/K05heartbeat
備用節點的heartbeat日誌輸出信息與主節點相對應,經過「tail -f /var/log/messages」能夠看到以下輸出:
Nov 26 07:57:15 node2 heartbeat: [2110]: info: Link node1:eth1 up.
Nov 26 07:57:15 node2 heartbeat: [2110]: info: Status update for node node1: status active
Nov 26 07:57:15 node2 heartbeat: [2110]: info: Link node1:eth0 up.
Nov 26 07:57:15 node2 harc[2123]: info: Running /etc/ha.d/rc.d/status status
Nov 26 07:57:15 node2 heartbeat: [2110]: info: Comm_now_up(): updating status to active
Nov 26 07:57:15 node2 heartbeat: [2110]: info: Local status now set to: 'active'
Nov 26 07:57:15 node2 heartbeat: [2110]: info: Starting child client "/usr/lib/heartbeat/ipfail" (694,694)
Nov 26 07:57:15 node2 heartbeat: [2110]: WARN: G_CH_dispatch_int: Dispatch function for read child took too long to execute: 70 ms (> 50 ms) (GSource: 0x8f62080)
Nov 26 07:57:15 node2 heartbeat: [2134]: info: Starting "/usr/lib/heartbeat/ipfail" as uid 694  gid 694 (pid 2134)    
備份節點檢測到node1處於活動狀態,沒有能夠接管的資源,所以,僅僅啓動了網絡監聽插件ipfail,監控主節點的心跳。

本文出自 「愛維Linux運維培訓」 博客,請務必保留此出處http://ixdba.blog.51cto.com/2895551/548625

相關文章
相關標籤/搜索