天天看點

淺析 Heartbeat

 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 &lt;resource-group&gt;

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,如需轉載請自行聯系原作者