一、安裝heartbeat前的准備
1、Heartbeat集群必須的硬件
構建一個Heartbeat集群系統必須的硬件設備有:
節點服務器、網絡和網卡、共享磁盤
2、操作系統規劃
這裡統一采用Centos5.3操作系統,每個節點服務器都有兩塊網卡,一塊用作連接公用網絡,另一塊通過以太網交叉線連接兩個節點,作為心跳監控。共享磁盤由一個磁盤陣列設備提供,兩個節點共享一個磁盤分區。磁盤分區對應的硬件標識為/dev/sdf1,掛載點為/data1,文件系統類型為ext3。如圖1所示:
圖1
網絡拓撲如圖2所示:
圖2
配置每個節點的/etc/hosts文件,保證兩個節點內容一致,/etc/hosts文件內容如下:
[root@node1 ~]#more /etc/hosts
192.168.12.246 node1
192.168.12.237 node2
10.1.1.1 priv1
10.1.1.2 priv1
一切准備就緒,接下來開始安裝heartbeat。
二、安裝heartbeat
這裡的安裝以heartbeat3.x為講解對象,以下操作需要在兩個節點都進行安裝,基本安裝過程為:
首先建立相關用戶hacluster和組haclient,然後設定環境變量,最後就是安裝heartbeat,過程如下:
1、添加用戶和組
groupadd haclient
useradd -g haclient hacluster
2、設置環境變量
vi /root/.bash_profile,添加如下內容:
export PREFIX=/usr/local/ha
export LCRSODIR=$PREFIX/libexec/lcrso
export CLUSTER_USER=hacluster
export CLUSTER_GROUP=haclient
export CFLAGS="$CFLAGS -I$PREFIX/include -L$PREFIX/lib"
getent group ${CLUSTER_GROUP} >/dev/null || groupadd -r ${CLUSTER_GROUP}
getent passwd ${CLUSTER_USER} >/dev/null || useradd -r -g ${CLUSTER_GROUP} -d /var/lib/heartbeat/cores/hacluster -s /sbin/nologin -c "cluster user" ${CLUSTER_USER}
heartbeat3.x版本把安裝包分成了4個部分,分別是:Cluster Glue、Resource Agents、heartbeat和pacemaker,所以要分別安裝,可以從http://hg.linux-ha.org、http://hg.clusterlabs.org下載對應的軟件包,這裡使用的軟件版本分別為:
glue-1.0.7、agents-1.0.3、heartbeat-STABLE-3.0.4、Pacemaker-1.0.10
3、安裝各個模塊軟件包
(1)安裝Cluster Glue
tar –xjvf Reusable-Cluster-Components-glue--5e06b2ddd24b.tar.bz2
cd Reusable-Cluster-Components-glue--5e06b2ddd24b
./autogen.sh
./configure --prefix=$PREFIX --with-daemon-user=${CLUSTER_USER} --with-daemon-group=${CLUSTER_GROUP} --enable-fatal-warnings=no
make
make install
(2)安裝Resource Agents
tar jxvf Cluster-Resource-Agents-5ae70412eec8.tar.bz2
cd Cluster-Resource-Agents-5ae70412eec8
./autogen.sh
./configure --prefix=$PREFIX --enable-fatal-warnings=no
make
make install
(3)安裝heartbeat
tar jxvf Heartbeat-3-0-fcd56a9dd18c.tar.bz2
cd Heartbeat-3-0-fcd56a9dd18c
./bootstrap
./configure --prefix=$PREFIX --enable-fatal-warnings=no
make
make install
(4)安裝pacemaker
tar jxvf Pacemaker-1-0-c3869c00c759.tar.bz2
cd Pacemaker-1-0-c3869c00c759
./autogen.sh
./configure --prefix=$PREFIX --with-lcrso-dir=$LCRSODIR --enable-fatal-warnings=no
make
make install
4、安裝圖像管理工具Pacemaker-Python-GUI
[root@drbd1 Pacemaker-Python-GUI-18332eae086e]# tar jxvf Pacemaker-Python-GUI-18332eae086e.tar.bz2
[root@drbd1 Pacemaker-Python-GUI-18332eae086e]#cd Pacemaker-Python-GUI-18332eae086e
[root@drbd1 Pacemaker-Python-GUI-18332eae086e]#./bootstrap --prefix=$PREFIX CFLAGS="$CFLAGS -I$PREFIX/include -L$PREFIX/lib"
[root@drbd1 Pacemaker-Python-GUI-18332eae086e]#make
[root@drbd1 Pacemaker-Python-GUI-18332eae086e]#make install
可能出現如下報錯:
aclocal:configure.in:57: warning: macro `AM_PO_SUBDIRS' not found in library
./configure: line 2064: syntax error near unexpected token `0.35.2'
./configure: line 2064: `AC_PROG_INTLTOOL(0.35.2)‘
只需安裝gettext和intltool-0.35.0-2軟件包即可
三、配置heartbeat
對HA的配置分為兩個部分,配置heartbeat和pacemaker,與heartbeat版本相對應,配置文件也有兩個版本,即為heartbeat1.x的1.x style版本和heartbeat2.1.x版本之後的2.1.x style版本,我們可以借助1.x style的集群資源配置文件轉換為2.x style的格式,同時,在heartbeat2.1.x版本之後使用CRM來管理整個集群。集群開始時,通過在各節點間選舉產生一個節點成為DC(Designated Coordinator),所有配置操作都在該DC主機上進行,並由其分發到集群下的各個節點上。下面依次講述。
1、1.x和2.x配置文件對比
/usr/local/ha/etc/ha.d/authkeys 該文件在兩個版本作用是完全相同的,都必須設置,並且保證每個節點(node)內容一樣
/usr/local/ha/etc/ha.d/ha.cf 這個是主要配置文件,由其決定v1或v2 style格式
/usr/local/ha/etc/haresources 這是v1的資源配置文件
/usr/local/ha/var/lib/heartbeat/crm/cib.xml 這是v2的資源配置文件,兩者根據ha.cf的設定只能選其一.
v2版本使用CRM管理集群,而cib.xml文件有如下幾種方式來編寫:
人工編寫XML文件;
使用admintools工具,其已經包含在heartbeat包中;
使用GUI圖形工具配置,也包含在heartbeat-gui包裡面,這個一會介紹;
使用python腳本轉換1.x style的格式配置文件到2.x style格式。
這四種方法實質都是相同的,並且以python腳本轉換最為簡單容易。為此,可以先配置好1.x style的格式,然後通過python腳本進行轉換。
2、配置heartbeat
1)首先拷貝模板配置文件
cp /usr/local/ha/share/doc/authkeys /usr/local/ha/etc/ha.d
cp /usr/local/ha/share/doc/ha.cf /usr/local/ha/etc/ha.d
cp /usr/local/ha/share/doc/haresources /usr/local/ha/etc/ha.d
3、主配置文件(/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.12.1 #選擇ping的節點,ping 節點選擇的越好,HA集群就越強壯,可以選擇固定的路由器作為ping節點,但是最好不要選擇集群中的成員作為ping節點,ping節點僅僅用來測試網絡連接。
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
respawn hacluster /usr/local/ha/lib/heartbeat/pingd -m 100 -d 5s #該選項是可選配置,列出與heartbeat一起啟動和關閉的進程,該進程一般是和heartbeat集成的插件,這些進程遇到故障可以自動重新啟動。最常用的進程是pingd,此進程用於檢測和監控網卡狀態,需要配合ping語句指定的ping node來檢測網絡的連通性。其中hacluster表示啟動pingd進程的身份。
#下面的配置是關鍵,也就是激活crm管理,開始使用v2 style格式
crm respawn
#注意,還可以使用crm yes的寫法,但這樣寫的話,如果後面的cib.xml配置有問題
#會導致heartbeat直接重啟該服務器,所以,測試時建議使用respawn的寫法
#下面是對傳輸的數據進行壓縮,是可選項
compression bz2
compression_threshold 2
注意,v2 style不支持ipfail功能,須使用pingd代替
4、資源文件(/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/目錄下找到相應腳步進行啟動或關閉操作。
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格式的區別:
LSB格式的腳本必須支持status功能,必須能接收start,stop,status,三個參數;而如果是OCF格式,則必須支持start,stop,monitor三個參數.其中status和monitor參數是用來監控資源的,非常重要.
例如LSB風格的腳本,運行./Mysql status時候, 返回值包含OK或則running則表示資源正常,返回值包含stopped或者No則表示資源不正常。 假如是OCF風格的腳本,運行./Mysql monitor時候, 返回0表示資源是正常的, 返回7表示資源出現問題.
下面對配置方法進行具體說明:
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/sdf1::/data1::ext3”相當於在命令行下執行mount操作,即“mount –t ext3 /dev/sdf1 /data1”,最後依次啟動httpd和tomcat服務。
16
5、認證文件(/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-------)。
6、配置pacemaker
在使用CRM管理的時候,也就是heartbeat第二種配置格式,就需要配置pacemaker了。通過pacemaker可以對集群資源進行監控和配置。
在HA環境中,所有資源的信息,和對其的配置都是以xml格式進行存儲的,所以對其進行管理監控配置都是對xml文件進行讀寫。所以對pacemaker進行配置其實就是對cib.xml文件進行讀寫,這個文件在不同環境中存在於不同位置,在我們的環境中存在於/usr/local/ha/var/lib/heartbeat/crm/cib.xml,可以用vi對其進行查看。
但需要說明的是對其的改寫一定不能用vi或其他編輯器進行,而是要通過提供的工具,如cibadmin, crm等命令來進行。這是基於以下原因:
xml不易讀寫,而crm提供了具體的,對應的命令來進行資源信息的監控,配置管理。
這個文件的修改直接作用於HA環境的變更,如果在裡面執行了一個刪除服務的操作,那麼這個操作可能會破壞整個環境的運行,所以HA提供了一套機制來避免這種狀況的發生,這個機制名為shadow。即我們在通過命令工具修改這個文件時,會將修改後的配置嘗試運行,檢測一遍,看是否有錯誤,如果有錯則會不能進行修改的提交,這樣就保證了配置的正確性和環境的穩定性。因為手動直接修改這個文件無法應用這個機制,所以不能使用手動修改。
另外需要說明的是這個文件在所有節點上會自動保持同步,如果有一個節點上面的cib.xml有變更,則其他節點會自動進行該文件的增量拷貝。
采用pacemaker管理集群的方法有兩種,分別如下:
(1) 轉換v1.x為v2.x格式文件
如果要采用heartbeat的v2.x格式配置文件,最簡單的辦法就是通過heartbeat提供的一個使用python寫的轉換工具,可直接將資源配置文件從v1.x轉換為v2.x格式,
/usr/local/ha/lib/heartbeat/haresources2cib.py /usr/local/ha/etc/ha.d/haresources
這樣就自動生成/usr/local/ha/var/lib/heartbeat/crm/cib.xml文件了。
(2)通過Pacemaker-Python-GUI
也就是通過GUI圖形界面進行相關的配置
7、通過pacemaker配置和管理HA集群
通過以下幾個步驟即可完成:
安裝Pacemaker-Python-GUI
將集群配置為Pacemaker(CRM)集中管理方式,即修改ha.cf文件
給hacluster用戶創建密碼
啟動heartbeat服務
登陸xwindow,執行hb_gui程序即可,如圖3所示:
圖3
未完待續!
本文出自 “技術成就夢想” 博客,請務必保留此出處http://ixdba.blog.51cto.com/2895551/746271