前提
前言
實驗拓撲
安裝相關軟體
配置 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" >/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" > /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><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>></code>
<code> </code><code><configuration></code>
<code> </code><code><crm_config></code>
<code> </code><code><cluster_property_set </code><code>id</code><code>=</code><code>"cib-bootstrap-options"</code><code>></code>
<code> </code><code><attributes></code>
<code> </code><code><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>/></code>
<code> </code><code><</code><code>/attributes</code><code>></code>
<code> </code><code><</code><code>/cluster_property_set</code><code>></code>
<code> </code><code><</code><code>/crm_config</code><code>></code>
<code> </code><code><nodes></code>
<code> </code><code><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>/></code>
<code> </code><code><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>/></code>
<code> </code><code><</code><code>/nodes</code><code>></code>
<code> </code><code><resources/></code>
<code> </code><code><constraints/></code>
<code> </code><code><</code><code>/configuration</code><code>></code>
<code> </code><code><</code><code>/cib</code><code>></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 &</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" > /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><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>></code>
<code> </code><code><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>/></code>
<code> </code><code><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>></code>
<code> </code><code><instance_attributes </code><code>id</code><code>=</code><code>"nodes-7188d63f-6350-4ab4-8c3e-831110e2b642"</code><code>></code>
<code> </code><code><attributes></code>
<code> </code><code><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>/></code>
<code> </code><code><</code><code>/attributes</code><code>></code>
<code> </code><code><</code><code>/instance_attributes</code><code>></code>
<code> </code><code><</code><code>/node</code><code>></code>
<code> </code><code><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>></code>
<code> </code><code><instance_attributes </code><code>id</code><code>=</code><code>"nodes-0df746b3-fdab-4625-99d2-659e9a5ef1c6"</code><code>></code>
<code> </code><code><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>/></code>
<code> </code><code><resources></code>
<code> </code><code><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>></code>
<code> </code><code><meta_attributes </code><code>id</code><code>=</code><code>"webip_meta_attrs"</code><code>></code>
<code> </code><code><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>/></code>
<code> </code><code><</code><code>/meta_attributes</code><code>></code>
<code> </code><code><instance_attributes </code><code>id</code><code>=</code><code>"webip_instance_attrs"</code><code>></code>
<code> </code><code><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>/></code>
<code> </code><code><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>/></code>
<code> </code><code><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>/></code>
<code> </code><code><</code><code>/primitive</code><code>></code>
<code> </code><code><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>></code>
<code> </code><code><meta_attributes </code><code>id</code><code>=</code><code>"webnfs_meta_attrs"</code><code>></code>
<code> </code><code><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>/></code>
<code> </code><code><instance_attributes </code><code>id</code><code>=</code><code>"webnfs_instance_attrs"</code><code>></code>
<code> </code><code><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>/></code>
<code> </code><code><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>/></code>
<code> </code><code><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>/></code>
<code> </code><code><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>></code>
<code> </code><code><meta_attributes </code><code>id</code><code>=</code><code>"webserver_meta_attrs"</code><code>></code>
<code> </code><code><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>/></code>
<code> </code><code><instance_attributes </code><code>id</code><code>=</code><code>"webserver_instance_attrs"</code><code>></code>
<code> </code><code><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>/></code>
<code> </code><code><</code><code>/resources</code><code>></code>
<code> </code><code><constraints></code>
<code> </code><code><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>/></code>
<code> </code><code><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>/></code>
<code> </code><code><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>/></code>
<code> </code><code><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>/></code>
<code> </code><code><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>/></code>
<code> </code><code><rsc_location </code><code>id</code><code>=</code><code>"webip_on_node2"</code> <code>rsc=</code><code>"webip"</code><code>></code>
<code> </code><code><rule </code><code>id</code><code>=</code><code>"prefered_webip_on_node2"</code> <code>score=</code><code>"0"</code><code>/></code>
<code> </code><code><</code><code>/rsc_location</code><code>></code>
<code> </code><code><</code><code>/constraints</code><code>></code>
本文轉自 jinlinger 51CTO部落格,原文連結:http://blog.51cto.com/essun/1401110,如需轉載請自行聯系原作者