手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

Linux-HA開源軟件Heartbeat

配置篇

[日期:2016-11-23] 來源:Linux社區  作者:eurasiaxz [字體: ]

一、配置主節點的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      #是否開啟ClusterResource 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"加載該模塊。然后輸入"grepmisc /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/IPaddr192.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要完全一樣。

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-------)。

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

三、設置主節點和備份節點時間同步
在雙機高可用集群中,主節點和備份節點的系統時間也非常重要,因為節點之間的監控都是通過設定時間來實現的,主備節點之間的系統時間相差在十秒以內是正常的,如果節點之間時間相差太大,就有可能造成HA環境的故障。解決時間同步的辦法有兩個,一個是找一個時間服務器,兩個節點通過 ntpdate命令定時與時間服務器進行時間校準,另一個辦法是讓集群中的主節點作為ntp時間服務器,讓備份節點定時去主節點進行時間校驗。

四、 啟動Heartbeat
1.啟動主節點的Heartbeat
Heartbeat安裝完成后,自動在/etc/init.d目錄下生成了啟動腳步文件heartbeat,直接輸入/etc/init.d/heartbeat可以看到heartbeat腳本的用法,如下所示:
[[email protected] ~]# /etc/init.d/heartbeat 
Usage: /etc/init.d/heartbeat {start|stop|status|restart|reload|force-reload}
因而啟動heartbeat可以通過如下命令進行:
[[email protected] ~]#service heartbeat start
或者通過
[[email protected] ~]#/etc/init.d/heartbeat start
這樣就啟動了主節點的heartbeat服務,為了讓heartbeat能在開機自動運行以及關機自動關閉,可以手動創建以下軟連接:
[[email protected] ~]#ln -s  /etc/init.d/heartbeat /etc/rc.d/rc0.d/K05heartbeat
[[email protected] ~]#ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc3.d/S75heartbeat
[[email protected] ~]#ln -s  /etc/init.d/heartbeat /etc/rc.d/rc5.d/S75heartbeat
[[email protected] ~]#ln -s  /etc/init.d/heartbeat /etc/rc.d/rc6.d/K05heartbeat
Heartbeat啟動時,通過“tail –f /var/log/ messages”查看主節點系統日志信息,輸出如下:
[[email protected] ~]# 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: Addedsignal manual handler
Nov 26 07:52:21 node1 heartbeat: [3689]: info: G_main_add_TriggerHandler: Addedsignal manual handler
Nov 26 07:52:21 node1 heartbeat: [3689]: info: glib: UDP Broadcast heartbeatstarted on port 694 (694) interface eth1
Nov 26 07:52:21 node1 heartbeat: [3689]: info: glib: UDP Broadcast heartbeatclosed 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: Addedsignal 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.1up.
Nov 26 07:52:23 node1 heartbeat: [3689]: info: Status update for node192.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 statusto 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 fromnode2.
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 fornode 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 acquisitioncomplete (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 acquisitioncompleted.
Nov 26 07:54:24 node1 harc[3815]: info: Running /etc/ha.d/rc.d/ip-request-respip-request-resp
Nov 26 07:54:24 node1 ip-request-resp[3815]: received ip-request-resp192.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 for192.168.60.200: 255.255.255.0
Nov 26 07:54:25 node1 IPaddr[3932]: DEBUG: Using calculated broadcast for192.168.60.200: 192.168.60.255
Nov 26 07:54:25 node1 IPaddr[3932]: INFO: eval /sbin/ifconfig eth0:0192.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 for192.168.60.200 on eth0.
Nov 26 07:54:25 node1 IPaddr[3932]: DEBUG: Sending Gratuitous Arp for192.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 5seconds
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 datamode.
Nov 26 07:54:26 node1 Filesystem[4059]: INFO:  Success
Nov 26 07:54:33 node1 heartbeat: [3689]: info: Local Resource acquisitioncompleted. (none)
Nov 26 07:54:33 node1 heartbeat: [3689]: info: local resource transitioncompleted
上面這段日志是進行資源的監控和接管,主要完成haresources文件中的設置,在這里是啟用集群虛擬IP和掛載磁盤分區。
此時,通過ifconfig命令查看主節點的網絡配置,可以看到,主節點已經自動綁定了集群的IP地址,在HA集群之外的主機上通過ping命令檢測集群IP地址192.168.60.200,已經處于可通狀態,也就是該地址變的可用。
同時查看磁盤分區的掛載情況,共享磁盤分區/dev/sdb5已經被自動掛載。

2.啟動備份節點的Heartbeat
 啟動備份節點的Heartbeat,與主節點方法一樣,使用如下命令:
  [[email protected] ~]#/etc/init.d/heartbeat start
  或者執行
  [[email protected] ~]#service heartbeat start
  這樣就啟動了備用節點的heartbeat服務,為了讓heartbeat能在開機自動運行以及關機自動關閉, 創建以下軟連接:
[[email protected] ~]#ln -s  /etc/init.d/heartbeat /etc/rc.d/rc0.d/K05heartbeat
[[email protected] ~]#ln -s  /etc/init.d/heartbeat /etc/rc.d/rc3.d/S75heartbeat
[[email protected] ~]#ln -s  /etc/init.d/heartbeat /etc/rc.d/rc5.d/S75heartbeat
[[email protected] ~]#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 statusto 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: Dispatchfunction 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 (pid2134)   
備份節點檢測到node1處于活動狀態,沒有可以接管的資源,因此,僅僅啟動了網絡監聽插件ipfail,監控主節點的心跳。

linux
【內容導航】
第1頁:概念篇 第2頁:安裝篇
第3頁:配置篇 第4頁:測試篇
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
北京快乐8走势图彩客网