1、簡介
Heartbeat是一個守護程序,為client的叢集基礎設施之間的成員及通信服務。它允許clients 掌握在其他server上的對等程序是否正在運作并可以和其他server進行通訊。
為友善使用,Heartbeat 守護程序被合并到叢集資料總管中(cluster resource manager CRM),CRM可以進行啟動停止相應服務來提供高高的可用性。這個CRM就是Pacemaker,一個高擴充性,具有豐富管理功能,并且支援Heartbeat和Corosync 叢集的通訊層。
2、元件
2.1通訊子產品
提供強認證,本地有序的廣播
支援以下類型的網絡鍊路:
1、在ipv4中的UDP單點傳播
2、ipv4中的中的udp廣播
3、ipv4中的UDP多點傳播
4、串行連結(相比網絡來說,直接的序列槽連結是最安全的)
Heartbeat 可以在半秒内檢測node的故障。
heartbeat layer的API可以提供以下級别的服務:
1、向叢集内的節點,發送和接受資料包
2、可配置的查詢
3、可以得知正在接受packet的Node的查詢和通知的連接配接資訊
4、基本組的成員服務
2.2Cluster Consensus Membership
CCM 維護叢集成員的一緻性
2.3 Cluster Plumbing Library
2.4 ipc 程序間通訊
2.5 logging 守護程序
将日志資訊記錄的系統日志中或者其他檔案,或者兩者都有。這個守護程序是不間斷的,它隻會摒棄那些落後太多的資訊。
安裝:
3.1從源碼安裝:
需要的軟體包:heartbeat ,cluster-glue(包含Heartbeat的本地資源.LRM和 <b>STONITH</b> 插件,這個屬于附屬軟體,必須先安裝
3.1.1從源碼安裝cluster-glue
先決條件:
C編譯器(GCC),C的開發包
flex scanner generator ,the bison parser compiler;
net-snmp development headers(啟用snmp相關功能)
OpenIPMI development headers(啟用IPMI相關功能)
Python(隻是一個語言接口,不需要頭檔案)
# wget http://hg.linux-ha.org/glue/archive/glue-1.0.1.tar.bz2
# tar -vxjf glue-1.0.1.tar.bz2
安裝:
./autogen.sh
./configure
make
make install
安裝 heartbeat,(前期都準備好的話,基本不需要其他依賴包)
# wget http://hg.linux-ha.org/dev/archive/STABLE-3.0.4.tar.bz2
# tar -vxjf STABLE-3.0.4.tar.bz2
安裝:
$ ./bootstrap
$ ./configure
$ make
$ sudo make install
初始化配置:
以下檔案必須存在:
/etc/ha.d/ha.cf — 全局配置檔案
/etc/ha.d/authkeys – 節點之間進行驗證
ha.cf 簡單的配置:
autojoin none
禁止cluster Node 自動發現其他Node,直接使用配置檔案中已經列出的node list。加快cluster啟動過程。
配置檔案詳解:
ha.cf
logfile /var/log/ha-log 日志存儲位置
crm yes (是否開啟crm 叢集資源管理功能)
bcast eth1 指明心跳檢測在eth1上以廣播的形式進行。
Keepalive 2 心跳檢測間隔時間S。
Warntime 10 心跳延遲的時間,超過後在日志中進行記錄。
Deadtime 30 超過此時間,則認為對方 node 已經dead,如果是master的話,則進行角色切換
initdead 120 系統重新開機過程中,等待時間(至少為deadtime的兩倍)
udpport 694 廣播通信使用的端口
baud 19200 設定串行通信的波特率
serial /dev/ttyS0 選擇串行通信裝置,
ucast eth0 ip 使用 eth0 udp 單點傳播的形式進行心跳檢測,
mcast eth0 ip 使用 eth0 多點傳播的形式進行心跳檢測
auto_failback on 當master恢複後,是否将服務自動切回。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 #主節點主機名,"uname -n"檢視。
node node2 #備用節點主機名。
ping ip ping節點僅僅用來測試網絡連接配接。ping節點選擇的越好,HA叢集就越強壯, 可以選擇固定的路由器作為ping節點,但最好不要選擇叢集中的成員作為ping節點
資源檔案: /etc/ha.d/haresources
檔案格式: node-name network <resource-group>
Haresources 檔案用于指定系統中的主節點、叢集ip、子網路遮罩、廣播位址以及啟動的服務等叢集資源。檔案每一行可以包含一個或多個資源腳本名,資源之間空格隔開。參數之間使用::隔開,在兩個ha節點上該檔案必須完全一緻。
Node-name 表示主節點的主機名,network 為 設定叢集的ip位址、netmask 、device resource-group 用來指定需要Heartbeat 托管的服務,這樣heartbeat會根據腳本的名稱自動去/etc/init.d 或者 /etc/ha.d/resource.d 目錄下找到相應的腳本。
舉例:
Node 1 IPaddr::192.168.60.200/24/eth0/ Filesystem::/dev/sdb5::/web/data:ext3 httpd tomcat
Node 1 是HA叢集的主節點,IPaddr 為heartbeat自帶的一個執行腳本,它首先執行/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start 操作,虛拟出一虛拟ip(叢集的ip位址)并指定使用的網絡接口是eth0,接着 heartbeat将共享磁盤分區的挂接操作,即:mount –t ext3 /dev/sdb5 /webdata 最後依次啟動httpd 和tomcat 服務。
注意點: master和slave中資源檔案haresources 完全一樣。
認證檔案 /etc/ha.d/authkeys
設定heartbeat的認證方式,三種認證,crc md5 sha1 不推薦 crc
Auth 1
1 md5
本文轉自 位鵬飛 51CTO部落格,原文連結:http://blog.51cto.com/weipengfei/1058341,如需轉載請自行聯系原作者