天天看點

heartbeat v2-GUI配置web高可用

前提

前言

實驗拓撲

安裝相關軟體

配置 heartbeat(crm 資料總管)

crm圖形界面配置詳解

crm配置資源(group resource)

crm資源限制(constraints)

crm資源配置總結

此處要修改/etc/sysconfig/network中的hostname

還要在/etc/hosts檔案中為各節點做正向解析

2、節點間的時間必須一緻

ntpdate

3、節點間無密碼登入

1

2

<code>#ssh-keygen -t rsa -P ''</code>

<code>#ssh-copy-id -i .ssh/id_rsa.pub node_name</code>

三、實驗拓撲

<a href="http://s3.51cto.com/wyfs02/M00/24/F3/wKioL1NXRNWyMZ4WAAHphFV3p6Q774.jpg" target="_blank"></a>

heartbeat 核心元件  *    

heartbeat-devel 開發包    

heartbeat-gui 圖形管理接口 *(這次就是用GUI來配置叢集資源)

heartbeat-ldirectord 為lvs高可用提供規則自動生成及後端realserver健康狀态檢查的元件    

heartbeat-pils 裝載庫插件接口 *    

heartbeat-stonith 爆頭接口 *

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKiom1NXRTWzOPZ8AABxQWYQzNM040.jpg" target="_blank"></a>

五、配置 heartbeat(crm 資料總管)

第一步、安裝軟體包

<code>#yum install -y perl-TimeDate net-snmp-libs libnet PyXML</code>

注:libnet是在epel源中,是以要下載下傳EPEL源安裝包即可

<a href="http://download.fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html" target="_blank">http://download.fedoraproject.org/pub/epel/6/i386/repoview/epel-release.html</a>

下載下傳對應的版本就可以的。

<code>#rpm -ivh epel-release-6-8.noarch.rpm</code>

之後就可以使用yum安裝EPEL中的包了

<code>#yum install -y libnet</code>

<code>#rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm  heartbeat-devel-2.1.4-12.el6.x86_64.rpm  heartbeat-gui-2.1.4-12.el6.x86_64.rpm</code>

當安裝完成後,查找到配置檔案,拷貝到/etc/ha.d目錄下

<code>[root@essun download]</code><code># rpm -ql heartbeat-2.1.4 |grep ha.cf</code>

<code> </code><code>/usr/share/doc/heartbeat-2</code><code>.1.4</code><code>/ha</code><code>.cf</code>

<code>[root@essun heartbeat-2.1.4]</code><code># cp authkeys ha.cf /etc/ha.</code>

叢集節點的認證檔案,以防有非叢集内部節點進入此叢集

ha.cf

heartbeat 的主配置檔案

編輯authkeys

3

4

5

6

7

<code>vim authkeys</code>

<code>#auth 1</code>

<code>#1 crc</code>

<code>#2 sha1 essun.org</code>

<code># #3 md5 Hello!</code>

<code>auth 1</code>

<code>1 md5 $1$Oukjg1$aZS0Qb.PBg1Isv0cSJcxL/</code>

<code>#chmod 600 authkeys</code>

8

9

10

11

12

13

14

<code>[root@essun ha.d]</code><code># grep -v "#" ha.cf |grep -v "^$"</code>

<code>logfile    </code><code>/var/log/ha-log</code>

<code>keepalive 100ms</code>

<code>deadtime 10</code>

<code>warntime 4</code>

<code>udpport    694</code>

<code>mcast eth0 225.0.0.1 694 1 0</code>

<code>auto_failback on</code>

<code>node essun.node2.com</code>

<code>node essun.node4.com</code>

<code>crm on</code>

<code>ping</code> <code>172.16.0.1</code>

<code>compression    bz2</code>

<code>compression_threshold 10</code>

注:

crm on

編輯完成将這兩個配置檔案拷貝到node4的對應目錄下

<code>[root@essun ha.d]</code><code># scp authkeys ha.cf essun.node2.com:/etc/ha.d/</code>

<code>The authenticity of host </code><code>'essun.node2.com (192.168.1.110)'</code> <code>can't be established.</code>

<code>RSA key fingerprint is b8:9d:cb:7b:4d:ad:c2:fb:a4:00:23:b0:f2:6b:3f:ad.</code>

<code>Are you sure you want to </code><code>continue</code> <code>connecting (</code><code>yes</code><code>/no</code><code>)? </code><code>yes</code>

<code>Warning: Permanently added </code><code>'essun.node2.com,192.168.1.110'</code> <code>(RSA) to the list of known hosts.</code>

<code>[email protected]'s password:</code>

<code>authkeys                                     100%  699     0.7KB</code><code>/s</code>   <code>00:00</code>

<code>ha.cf                                        100%   10KB  10.3KB</code><code>/s</code>   <code>00:00</code>

第二步、在node2與node4上安裝http服務

<code>#yum install -y httpd</code>

測試服務可用性

node2

<code>[root@essun ha.d]</code><code>#echo "essun.node2.com" &gt;/var/www/html/index.html</code>

<code>[root@essun ha.d]</code><code># service httpd start</code>

<code>Starting httpd:                                            [  OK  ]</code>

<code>[root@essun ha.d]</code><code># curl http://172.16.32.20</code>

<code>essun.node2.com</code>

node4

<code>[root@essun download]</code><code># echo "essun.node4.com" &gt; /var/www/html/index.html</code>

<code>[root@essun download]</code><code># service httpd restart</code>

<code>Stopping httpd: [FAILED]</code>

<code>Starting httpd: [ OK ]</code>

<code>[root@essun download]</code><code># curl http://172.16.32.4</code>

<code>essun.node4.com</code>

測試node2,node4可用後關閉http服務,禁止開機自動啟動,使用crm來控制其啟動與停止

<code>[root@essun ha.d]</code><code># service httpd stop</code>

<code>Stopping httpd:                                            [  OK  ]</code>

<code>[root@essun ~]</code><code># chkconfig httpd off</code>

<code>[root@essun ha.d]</code><code># service heartbeat start</code>

<code>Starting High-Availability services:</code>

<code>Done.</code>

<code>[root@essun ha.d]</code><code># ss -tnlp |grep 5560</code>

<code>LISTEN     0      10                        *:5560                     *:*      </code><code>users</code><code>:((</code><code>"mgmtd"</code><code>,16231,10))</code>

<code>[root@essun ha.d]</code><code># ssh essun.node4.com "service heartbeat start"</code>

<code> </code><code>Starting High-Availability services:</code>

<code>[root@essun ~]</code><code># ss -tnlp |grep 5560</code>

<code>LISTEN     0      10                        *:5560                     *:*      </code><code>users</code><code>:((</code><code>"mgmtd"</code><code>,1776,10))</code>

<code>#crm_mon</code>

<code>============</code>

<code>Last updated: Tue Apr 22 08:41:26 2014</code>

<code>Current DC: essun.node2.com (7188d63f-6350-4ab4-8c3e-831110e2b642)</code>

<code>2 Nodes configured.</code>

<code>0 Resources configured.</code>

<code>Node: essun.node2.com (7188d63f-6350-4ab4-8c3e-831110e2b642): online</code>

<code>Node: essun.node4.com (0df746b3-fdab-4625-99d2-659e9a5ef1c6): online</code>

從上面的叢集狀态中我們可以看到,叢集中有兩個節點,分别為node2和node4狀态是online全部線上,我們還可以看到,DC是node2。兩個節點的資源是0,說明在我們這個叢集中還沒有資源。下面我們來詳細的說明一下!

第四步、crm配置的方式

指令行配置:

<code>[root@essun ~]</code><code># crm</code>

<code>crmadmin       crm_failcount  crm_resource   crm_uuid   </code>

<code>crm_attribute  crm_master     crm_sh         crm_verify </code>

<code>crm_diff       crm_mon        crm_standby</code>

<code>[root@essun ~]</code><code># hb_gui</code>

15

16

17

18

19

20

<code>[root@essun crm]</code><code># pwd</code>

<code>/var/lib/heartbeat/crm</code>

<code>[root@essun crm]</code><code># cat cib.xml</code>

<code> </code><code>&lt;cib generated=</code><code>"true"</code> <code>admin_epoch=</code><code>"0"</code> <code>epoch=</code><code>"6"</code> <code>have_quorum=</code><code>"true"</code> <code>ignore_dtd=</code><code>"false"</code> <code>num_peers=</code><code>"2"</code> <code>cib_feature_revision=</code><code>"2.0"</code> <code>crm_feature_set=</code><code>"2.0"</code> <code>ccm_transition=</code><code>"2"</code> <code>dc_uuid=</code><code>"7188d63f-6350-4ab4-8c3e-831110e2b642"</code> <code>num_updates=</code><code>"7"</code> <code>cib-last-written=</code><code>"Tue Apr 22 08:28:06 2014"</code><code>&gt;</code>

<code>   </code><code>&lt;configuration&gt;</code>

<code>     </code><code>&lt;crm_config&gt;</code>

<code>       </code><code>&lt;cluster_property_set </code><code>id</code><code>=</code><code>"cib-bootstrap-options"</code><code>&gt;</code>

<code>         </code><code>&lt;attributes&gt;</code>

<code>           </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"cib-bootstrap-options-dc-version"</code> <code>name=</code><code>"dc-version"</code> <code>value=</code><code>"2.1.4-node: aa909246edb386137b986c5773344b98c6969999"</code><code>/&gt;</code>

<code>         </code><code>&lt;</code><code>/attributes</code><code>&gt;</code>

<code>       </code><code>&lt;</code><code>/cluster_property_set</code><code>&gt;</code>

<code>     </code><code>&lt;</code><code>/crm_config</code><code>&gt;</code>

<code>     </code><code>&lt;nodes&gt;</code>

<code>       </code><code>&lt;node </code><code>id</code><code>=</code><code>"7188d63f-6350-4ab4-8c3e-831110e2b642"</code> <code>uname</code><code>=</code><code>"essun.node2.com"</code> <code>type</code><code>=</code><code>"normal"</code><code>/&gt;</code>

<code>       </code><code>&lt;node </code><code>id</code><code>=</code><code>"0df746b3-fdab-4625-99d2-659e9a5ef1c6"</code> <code>uname</code><code>=</code><code>"essun.node4.com"</code> <code>type</code><code>=</code><code>"normal"</code><code>/&gt;</code>

<code>     </code><code>&lt;</code><code>/nodes</code><code>&gt;</code>

<code>     </code><code>&lt;resources/&gt;</code>

<code>     </code><code>&lt;constraints/&gt;</code>

<code>   </code><code>&lt;</code><code>/configuration</code><code>&gt;</code>

<code> </code><code>&lt;</code><code>/cib</code><code>&gt;</code>

看到了吧,反正我是無法看得懂,還好有指令行與圖形化配置。

第五步、配置crm 資料總管

<code>[root@essun crm]</code><code># grep hacluster /etc/passwd</code>

<code>hacluster:x:496:493:heartbeat user:</code><code>/var/lib/heartbeat/cores/hacluster</code><code>:</code><code>/sbin/nologin</code>

<code>[root@essun crm]</code><code># echo hacluster | passwd --stdin hacluster</code>

<code>Changing password </code><code>for</code> <code>user hacluster.</code>

<code>passwd</code><code>: all authentication tokens updated successfully.</code>

你想在那一個節點上進行配置,就在那一個節點上建立密碼。

六、crm圖形界面配置詳解

<code>#hb_gui &amp;</code>

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKiom1NXR5DTXzq0AAOB044yy6w024.jpg" target="_blank"></a>

己經啟動圖形了,現在我連接配接上去看一下效果

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKioL1NXR5XBolwoAAE4KENkaEQ490.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKiom1NXR9myaxvjAAKihQQXjW8112.jpg" target="_blank"></a>

資源類型:

primitive, native: 主資源,隻能運作于一個節點上

group: 組資源;

clone: 克隆資源(首先其必須是主資源);

                    參數:

                       總克隆數;

                       每個節點最多可運作的克隆數

stonith(資源隔離),cluster filesystem(依賴于分布式鎖,其它程序能夠看到,将不會寫入操作)

master/slave: 主從資源 如DRBD(隻有兩份(主的可以讀寫,從的不能讀不能寫))

RA類型:( resource  class)

heartbeat legacy傳統類型

LSB:位于 /etc/rc.d/init.d/*的所有程式

OCF:

STONITH

七、添加資源(組資源)

在高可用Web叢集中有三個資源分别為:

VIP

httpd

nfs

添加資源

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKioL1NXSR-COJQeAAFu8tGjEug634.jpg" target="_blank"></a>

增加native資源

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKiom1NXSY6gghutAAGgahT-wGk625.jpg" target="_blank"></a>

Resources中,定義一個組,名字叫webservice,組中一條資源記錄(服務)及其目前的狀态

繼續添加httpd服務

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKiom1NXScHztvgqAAKZ2cgmr_s917.jpg" target="_blank"></a>

添加後的結果如下:

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKioL1NXSgjz3Y-IAAGp-0OPbBc202.jpg" target="_blank"></a>

看一下效果

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKioL1NXSi6hBPpyAAOB044yy6w079.jpg" target="_blank"></a>

資源直接切換到node4上去了,下面我在node3上做一個nfs共享存儲,做一個簡單的測試頁面看一下檔案系統資源是如何在高可用中使用。

essun.node3.com節點上安裝nfs

<code>#yum install -y nfs</code>

<code>#mkdir -p /www/share</code>

<code>#vim /etc/exports</code>

<code>/www/share</code> <code>*(rw)</code>

<code>#exportfs -r</code>

<code># service nfs start</code>

<code>Starting NFS services: [ OK ]</code>

<code>Starting NFS quotas: [ OK ]</code>

<code>Starting NFS mountd: [ OK ]</code>

<code>Starting NFS daemon: [ OK ]</code>

<code>Starting RPC idmapd: [ OK ]</code>

<code># echo "cluster server nfs" &gt; /www/share/index.html</code>

<code>[root@essun ~]</code><code># service nfs stop</code>

<code>Shutting down NFS daemon:                                  [  OK  ]</code>

<code>Shutting down NFS mountd:                                  [  OK  ]</code>

<code>Shutting down NFS quotas:                                  [  OK  ]</code>

<code>Shutting down NFS services:                                [  OK  ]</code>

<code>Shutting down RPC idmapd:                                  [  OK  ]</code>

開始添加資源

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKioL1NXSo-TwaHmAAHc1TygeoE338.jpg" target="_blank"></a>

啟動nfs資源看一下效果

<a href="http://s3.51cto.com/wyfs02/M01/24/F4/wKiom1NXStyAtJ0aAAJHNaALz4g865.jpg" target="_blank"></a>

現在模拟node4故障,将資源切換回node2上

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKioL1NXStDBEccYAAH2S-J4S1w618.jpg" target="_blank"></a>

看到效果了吧!!!

說明:

組資源是将多個資源組合在一起對外提供服務,如果這裡不定義組資源,每一種資源将平均到每一個節點上,顯然這不符合我們的業務邏輯,如是我們想将多個資源運作于同一個節點上對外提供服務,該如何做到呢,這個時候就用到了資源限制了,向下看吧~~~

八、crm資源限制(constraints)

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKioL1NXS0bR6r3NAAAxvO_KG4g103.jpg" target="_blank"></a>

資源限制(3種類型):

位置限制(locations):資源更傾向于哪個節點上 ,使用數值表示;    

inf: 無窮大

n: 表示數值,要對節點間的做比較來決定最後落在那個節點上(此處n為正值)

-n: 同上,如果節點間的位置限制均為負值,則最後運作于接近正值的節點上

-inf: 負無窮(隻要有其它選擇,就不會選擇此節點 )

排列限制(Colocations):資源運作在同一節點的傾向性;

inf: 無限傾向于在一起

-inf: 無限傾向于不在一起

順序限制(orders):資源啟動次序及關閉次序;

下面我将圖解這三種限制在高可用中的運用,現在所有的資源都被清空了。

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKioL1NXS-PzrL5pAAEvW1iJmAc572.jpg" target="_blank"></a>

如前面提到的步驟添加三個資源ip、httpd、nfs

七、添加資源(限制)

排列限制(那一個資源一那一個資源必須在一起的可能性),由于前面定義過的資源己經清空,所在要再建立一次

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKiom1NXTD7jDSzOAAFLBZh3GnE717.jpg" target="_blank"></a>

建立排列限制

<a href="http://s3.51cto.com/wyfs02/M01/24/F4/wKioL1NXTD2AIqfAAAF1S_s2Va8650.jpg" target="_blank"></a>

定義webip資源與webserver資源在一起的可能性

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKiom1NXTJKgbBG1AAGq-84pVgU278.jpg" target="_blank"></a>

ID:表示為限制記錄起一個名字

from to:表示那一個資源與那一個資源(此處寫上面定義資源名字即可)

score:在一起的可能性(也可以是數值)

INFINITY:ip必須要和webserver在一個節點上

定義webserver與webnfs在一起的可能性

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKioL1NXTImCTVjNAAKQzwjXArs184.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKioL1NXTLWx9pSeAAHK9jNc__4491.jpg" target="_blank"></a>

webip與webnfs順序限制

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKiom1NXTQCSjwfcAALTCXVV4Ss626.jpg" target="_blank"></a>

webnfs與webserver限制

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKiom1NXTUCyCEmtAALf-K6_-JA773.jpg" target="_blank"></a>

webip與webserver限制

<a href="http://s3.51cto.com/wyfs02/M02/24/F4/wKioL1NXTV-jNjz_AAL_zhKM2BA484.jpg" target="_blank"></a>

建立位置限制(更傾向于那一個節點)

<a href="http://s3.51cto.com/wyfs02/M01/24/F4/wKiom1NXTanibdrNAAHeOCcVhYE372.jpg" target="_blank"></a>

隻在将第一個啟動的資源服務定義在位置限制之中,那麼後面的所有的資源都将在此節點運作

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKioL1NXTazwY9mXAAIIt2dZoiU308.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKiom1NXTgGCK1nPAAH7qGzzt0c018.jpg" target="_blank"></a>

啟動資源,測試通路

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKioL1NXTf6CCgNoAALpGTRSDXc498.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/24/F4/wKioL1NXTlHxgDheAAKx8M8kWbI403.jpg" target="_blank"></a>

當node2重新上線後,所有的資源将再一次轉移到node2上

<a href="http://s3.51cto.com/wyfs02/M00/24/F4/wKiom1NXTpzhUufaAAJweQaJPgc902.jpg" target="_blank"></a>

<code>Last updated: Wed Apr 23 12:15:05 2014</code>

<code>3 Resources configured.</code>

<code>webip   (ocf::heartbeat:IPaddr):        Started essun.node2.com</code>

<code>webnfs  (ocf::heartbeat:Filesystem):    Started essun.node2.com</code>

<code>webserver    (lsb:httpd):    Started essun.node2.com</code>

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

<code> </code><code>&lt;cib generated=</code><code>"true"</code> <code>admin_epoch=</code><code>"0"</code> <code>have_quorum=</code><code>"true"</code> <code>ignore_dtd=</code><code>"false"</code> <code>num_peers=</code><code>"2"</code> <code>cib_feature_revision=</code><code>"2.0"</code> <code>crm_feature_set=</code><code>"2.0"</code> <code>ccm_transition=</code><code>"4"</code> <code>dc_uuid=</code><code>"7188d63f-6350-4ab4-8c3e-831110e2b642"</code> <code>epoch=</code><code>"116"</code> <code>num_updates=</code><code>"1"</code> <code>cib-last-written=</code><code>"Wed Apr 23 12:05:43 2014"</code><code>&gt;</code>

<code>           </code><code>&lt;nvpair name=</code><code>"last-lrm-refresh"</code> <code>id</code><code>=</code><code>"cib-bootstrap-options-last-lrm-refresh"</code> <code>value=</code><code>"1398221371"</code><code>/&gt;</code>

<code>       </code><code>&lt;node </code><code>uname</code><code>=</code><code>"essun.node2.com"</code> <code>type</code><code>=</code><code>"normal"</code> <code>id</code><code>=</code><code>"7188d63f-6350-4ab4-8c3e-831110e2b642"</code><code>&gt;</code>

<code>         </code><code>&lt;instance_attributes </code><code>id</code><code>=</code><code>"nodes-7188d63f-6350-4ab4-8c3e-831110e2b642"</code><code>&gt;</code>

<code>           </code><code>&lt;attributes&gt;</code>

<code>             </code><code>&lt;nvpair name=</code><code>"standby"</code> <code>id</code><code>=</code><code>"standby-7188d63f-6350-4ab4-8c3e-831110e2b642"</code> <code>value=</code><code>"off"</code><code>/&gt;</code>

<code>           </code><code>&lt;</code><code>/attributes</code><code>&gt;</code>

<code>         </code><code>&lt;</code><code>/instance_attributes</code><code>&gt;</code>

<code>       </code><code>&lt;</code><code>/node</code><code>&gt;</code>

<code>       </code><code>&lt;node </code><code>id</code><code>=</code><code>"0df746b3-fdab-4625-99d2-659e9a5ef1c6"</code> <code>uname</code><code>=</code><code>"essun.node4.com"</code> <code>type</code><code>=</code><code>"normal"</code><code>&gt;</code>

<code>         </code><code>&lt;instance_attributes </code><code>id</code><code>=</code><code>"nodes-0df746b3-fdab-4625-99d2-659e9a5ef1c6"</code><code>&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"standby-0df746b3-fdab-4625-99d2-659e9a5ef1c6"</code> <code>name=</code><code>"standby"</code> <code>value=</code><code>"off"</code><code>/&gt;</code>

<code>     </code><code>&lt;resources&gt;</code>

<code>       </code><code>&lt;primitive </code><code>id</code><code>=</code><code>"webip"</code> <code>class=</code><code>"ocf"</code> <code>type</code><code>=</code><code>"IPaddr"</code> <code>provider=</code><code>"heartbeat"</code><code>&gt;</code>

<code>         </code><code>&lt;meta_attributes </code><code>id</code><code>=</code><code>"webip_meta_attrs"</code><code>&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"webip_metaattr_target_role"</code> <code>name=</code><code>"target_role"</code> <code>value=</code><code>"started"</code><code>/&gt;</code>

<code>         </code><code>&lt;</code><code>/meta_attributes</code><code>&gt;</code>

<code>         </code><code>&lt;instance_attributes </code><code>id</code><code>=</code><code>"webip_instance_attrs"</code><code>&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"2e4cd4a7-222b-4db9-93a8-7277ca287e92"</code> <code>name=</code><code>"ip"</code> <code>value=</code><code>"192.168.1.100"</code><code>/&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"f72cf044-813a-4dee-b679-fdc20b12f09a"</code> <code>name=</code><code>"nic"</code> <code>value=</code><code>"eth0"</code><code>/&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"f79817da-3169-4a4a-b64c-30ce668e0c5d"</code> <code>name=</code><code>"cidr_netmask"</code> <code>value=</code><code>"24"</code><code>/&gt;</code>

<code>       </code><code>&lt;</code><code>/primitive</code><code>&gt;</code>

<code>       </code><code>&lt;primitive </code><code>id</code><code>=</code><code>"webnfs"</code> <code>class=</code><code>"ocf"</code> <code>type</code><code>=</code><code>"Filesystem"</code> <code>provider=</code><code>"heartbeat"</code><code>&gt;</code>

<code>         </code><code>&lt;meta_attributes </code><code>id</code><code>=</code><code>"webnfs_meta_attrs"</code><code>&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"webnfs_metaattr_target_role"</code> <code>name=</code><code>"target_role"</code> <code>value=</code><code>"started"</code><code>/&gt;</code>

<code>         </code><code>&lt;instance_attributes </code><code>id</code><code>=</code><code>"webnfs_instance_attrs"</code><code>&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"76c25557-53ac-47dc-bd5f-3712a990928e"</code> <code>name=</code><code>"device"</code> <code>value=</code><code>"192.168.1.107:/www/share"</code><code>/&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"57dbdea6-3541-45cd-b076-d52f4b078196"</code> <code>name=</code><code>"directory"</code> <code>value=</code><code>"/var/www/html"</code><code>/&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"6ebe586c-cdc8-4519-a592-d0f5d6cb59a5"</code> <code>name=</code><code>"fstype"</code> <code>value=</code><code>"nfs"</code><code>/&gt;</code>

<code>       </code><code>&lt;primitive </code><code>id</code><code>=</code><code>"webserver"</code> <code>class=</code><code>"lsb"</code> <code>type</code><code>=</code><code>"httpd"</code> <code>provider=</code><code>"heartbeat"</code><code>&gt;</code>

<code>         </code><code>&lt;meta_attributes </code><code>id</code><code>=</code><code>"webserver_meta_attrs"</code><code>&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"webserver_metaattr_target_role"</code> <code>name=</code><code>"target_role"</code> <code>value=</code><code>"started"</code><code>/&gt;</code>

<code>         </code><code>&lt;instance_attributes </code><code>id</code><code>=</code><code>"webserver_instance_attrs"</code><code>&gt;</code>

<code>             </code><code>&lt;nvpair </code><code>id</code><code>=</code><code>"097dd5e7-36ae-4aeb-ab9f-ad06485c5886"</code> <code>name=</code><code>"httpd"</code> <code>value=</code><code>"/etc/rc.d/init.d/httpd"</code><code>/&gt;</code>

<code>     </code><code>&lt;</code><code>/resources</code><code>&gt;</code>

<code>     </code><code>&lt;constraints&gt;</code>

<code>       </code><code>&lt;rsc_colocation </code><code>id</code><code>=</code><code>"webip_with_webserver"</code> <code>from=</code><code>"webip"</code> <code>to=</code><code>"webserver"</code> <code>score=</code><code>"INFINITY"</code><code>/&gt;</code>

<code>       </code><code>&lt;rsc_colocation </code><code>id</code><code>=</code><code>"webserver_with_webnfs"</code> <code>from=</code><code>"webserver"</code> <code>to=</code><code>"webnfs"</code> <code>score=</code><code>"INFINITY"</code><code>/&gt;</code>

<code>       </code><code>&lt;rsc_order </code><code>id</code><code>=</code><code>"webip_before_webnfs"</code> <code>to=</code><code>"webnfs"</code> <code>from=</code><code>"webip"</code><code>/&gt;</code>

<code>       </code><code>&lt;rsc_order </code><code>id</code><code>=</code><code>"webnfs_before_webserver"</code> <code>to=</code><code>"webserver"</code> <code>from=</code><code>"webnfs"</code><code>/&gt;</code>

<code>       </code><code>&lt;rsc_order </code><code>id</code><code>=</code><code>"webip_before_webserver"</code> <code>to=</code><code>"webserver"</code> <code>from=</code><code>"webip"</code><code>/&gt;</code>

<code>       </code><code>&lt;rsc_location </code><code>id</code><code>=</code><code>"webip_on_node2"</code> <code>rsc=</code><code>"webip"</code><code>&gt;</code>

<code>         </code><code>&lt;rule </code><code>id</code><code>=</code><code>"prefered_webip_on_node2"</code> <code>score=</code><code>"0"</code><code>/&gt;</code>

<code>       </code><code>&lt;</code><code>/rsc_location</code><code>&gt;</code>

<code>     </code><code>&lt;</code><code>/constraints</code><code>&gt;</code>

本文轉自 jinlinger 51CTO部落格,原文連結:http://blog.51cto.com/essun/1401110,如需轉載請自行聯系原作者