<b>配置drbd結合pacemaker提供服務</b>
摘自http://blogold.chinaunix.net/u/24866/article.html
前提:
1)本配置共有兩個測試節點,分别node1.a.org和node2.a.org,相的IP位址分别為192.168.0.5和192.168.0.6;
2)node1和node2兩個節點已經配置好了基于openais/corosync的叢集;且node1和node2也已經配置好了Primary/Secondary模型的drbd裝置/dev/drbd0,且對應的資源名稱為web;如果您此處的配置有所不同,請確定後面的指令中使用到時與您的配置修改此些資訊與您所需要的配置保持一緻;
3)系統為rhel5.4,x86平台;
1、檢視目前叢集的配置資訊,確定已經配置全局屬性參數為兩節點叢集所适用:
# crm configure show
node node1.a.org
node node2.a.org
property $id="cib-bootstrap-options" \
dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false" \
last-lrm-refresh="1308059765" \
no-quorum-policy="ignore"
在如上輸出的資訊中,請確定有stonith-enabled和no-quorum-policy出現且其值與如上輸出資訊中相同。否則,可以分别使用如下指令進行配置:
# crm configure property stonith-enabled=false
# crm configure property no-quorum-policy=ignore
2、将已經配置好的drbd裝置/dev/drbd0定義為叢集服務;
1)按照叢集服務的要求,首先確定兩個節點上的drbd服務已經停止,且不會随系統啟動而自動啟動:
# drbd-overview
0:web Unconfigured . . . .
# chkconfig drbd off
2)配置drbd為叢集資源:
提供drbd的RA目前由OCF歸類為linbit,其路徑為/usr/lib/ocf/resource.d/linbit/drbd。我們可以使用如下指令來檢視此RA及RA的meta資訊:
# crm ra classes
heartbeat
lsb
ocf / heartbeat linbit pacemaker
stonith
# crm ra list ocf linbit
drbd
# crm ra info ocf:linbit:drbd
This resource agent manages a DRBD resource
as a master/slave resource. DRBD is a shared-nothing replicated storage
device. (ocf:linbit:drbd)
Master/Slave OCF Resource Agent for DRBD
Parameters (* denotes required, [] the default):
drbd_resource* (string): drbd resource name
The name of the drbd resource from the drbd.conf file.
drbdconf (string, [/etc/drbd.conf]): Path to drbd.conf
Full path to the drbd.conf file.
Operations' defaults (advisory minimum):
start timeout=240
promote timeout=90
demote timeout=90
notify timeout=90
stop timeout=100
monitor_Slave interval=20 timeout=20 start-delay=1m
monitor_Master interval=10 timeout=20 start-delay=1m
drbd需要同時運作在兩個節點上,但隻能有一個節點(primary/secondary模型)是Master,而另一個節點為Slave;是以,它是一種比較特殊的叢集資源,其資源類型為多狀态(Multi-state)clone類型,即主機節點有Master和Slave之分,且要求服務剛啟動時兩個節點都處于slave狀态。
[root@node1 ~]# crm
crm(live)# configure
crm(live)configure# primitive webdrbd ocf:heartbeat:drbd params drbd_resource=web op monitor role=Master interval=50s timeout=30s op monitor role=Slave interval=60s timeout=30s
crm(live)configure# master MS_Webdrbd webdrbd meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
crm(live)configure# show webdrbd
primitive webdrbd ocf:linbit:drbd \
params drbd_resource="web" \
op monitor interval="15s"
crm(live)configure# show MS_Webdrbd
ms MS_Webdrbd webdrbd \
meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
crm(live)configure# verify
crm(live)configure# commit
檢視目前叢集運作狀态:
# crm status
============
Last updated: Fri Jun 17 06:24:03 2011
Stack: openais
Current DC: node2.a.org - partition with quorum
Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2 Nodes configured, 2 expected votes
1 Resources configured.
Online: [ node2.a.org node1.a.org ]
Master/Slave Set: MS_Webdrbd
Masters: [ node2.a.org ]
Slaves: [ node1.a.org ]
由上面的資訊可以看出此時的drbd服務的Primary節點為node2.a.org,Secondary節點為node1.a.org。當然,也可以在node2上使用如下指令驗正目前主機是否已經成為web資源的Primary節點:
# drbdadm role web
Primary/Secondary
3)為Primary節點上的web資源建立自動挂載的叢集服務
MS_Webdrbd的Master節點即為drbd服務web資源的Primary節點,此節點的裝置/dev/drbd0可以挂載使用,且在某叢集服務的應用當中也需要能夠實作自動挂載。假設我們這裡的web資源是為Web伺服器叢集提供網頁檔案的共享檔案系統,其需要挂載至/www(此目錄需要在兩個節點都已經建立完成)目錄。
此外,此自動挂載的叢集資源需要運作于drbd服務的Master節點上,并且隻能在drbd服務将某節點設定為Primary以後方可啟動。是以,還需要為這兩個資源建立排列限制和順序限制。
# crm
crm(live)configure# primitive WebFS ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/www" fstype="ext3"
crm(live)configure# colocation WebFS_on_MS_webdrbd inf: WebFS MS_Webdrbd:Master
crm(live)configure# order WebFS_after_MS_Webdrbd inf: MS_Webdrbd:promote WebFS:start
檢視叢集中資源的運作狀态:
crm status
Last updated: Fri Jun 17 06:26:03 2011
2 Resources configured.
WebFS (ocf::heartbeat:Filesystem): Started node2.a.org
由上面的資訊可以發現,此時WebFS運作的節點和drbd服務的Primary節點均為node2.a.org;我們在node2上複制一些檔案至/www目錄(挂載點),而後在故障故障轉移後檢視node1的/www目錄下是否存在這些檔案。
# cp /etc/rc./rc.sysinit /www
下面我們模拟node2節點故障,看此些資源可否正确轉移至node1。
以下指令在Node2上執行:
# crm node standby
Last updated: Fri Jun 17 06:27:03 2011
Node node2.a.org: standby
Online: [ node1.a.org ]
Masters: [ node1.a.org ]
Stopped: [ webdrbd:0 ]
WebFS (ocf::heartbeat:Filesystem): Started node1.a.org
由上面的資訊可以推斷出,node2已經轉入standby模式,其drbd服務已經停止,但故障轉移已經完成,所有資源已經正常轉移至node1。
在node1可以看到在node2作為primary節點時産生的儲存至/www目錄中的資料,在node1上均存在一份拷貝。
讓node2重新上線:
# crm node online
[root@node2 ~]# crm status
Last updated: Fri Jun 17 06:30:05 2011
Slaves: [ node2.a.org ]