从头开始搭建集群(三)
Apache - 添加更多的服务
目录
6.1. 安装Apache ...................................................................... 39
6.2. 准备工作 ........................................................................ 41
6.3. 开启 Apache status URL ......................................................... 41
6.4. 更新配置文件 .................................................................... 41
6.5. 确保资源在同一个节点运行 ........................................................ 42
6.6. 控制资源的启动停止顺序 .......................................................... 43
6.7. 指定优先的 Location ............................................................. 43
6.8. 在集群中手工地移动资源 .......................................................... 44
6.8.1. 把控制权交还给集群 ....................................................... 45
注意
现在我们有了一个基本的但是功能齐全的双节点集群,我们已经可以往里面加些真的服务了。我们
准备启动一个Apache服务,因为它是许多集群的主角,并且相对来说比较容易配置。
6.1.?安装Apache
在继续之前,我们先确保两个节点都安装了Apache.
[root@ppcmk-1 ~]# yum install -y httpd
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.13-2.fc12 set to be updated
--> Processing Dependency: httpd-tools = 2.2.13-2.fc12 for package: httpd-2.2.13-2.fc12.x86_64
--> Processing Dependency: apr-util-ldap for package: httpd-2.2.13-2.fc12.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.2.13-2.fc12.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.13-2.fc12.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.13-2.fc12.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.3.9-2.fc12 set to be updated
---> Package apr-util.x86_64 0:1.3.9-2.fc12 set to be updated
---> Package apr-util-ldap.x86_64 0:1.3.9-2.fc12 set to be updated
---> Package httpd-tools.x86_64 0:2.2.13-2.fc12 set to be updated
---> Package mailcap.noarch 0:2.1.30-1.fc12 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================
?Package ? ? ? ? ? ? ? Arch ? ? ? ? ? ? Version ? ? ? ? ? ? ? ?Repository ? ? ? ? Size
=======================================================================================
Installing:
?httpd ? ? ? ? ? ? ? x86_64 ? ? ? ? ? 2.2.13-2.fc12 ? ? ? ? ? ?rawhide ? ? ? ? ? 735 k
Installing for dependencies:
?apr ? ? ? ? ? ? ? ? x86_64 ? ? ? ? ? 1.3.9-2.fc12 ? ? ? ? ? ? rawhide ? ? ? ? ? 117 k
?apr-util ? ? ? ? ? ?x86_64 ? ? ? ? ? 1.3.9-2.fc12 ? ? ? ? ? ? rawhide ? ? ? ? ? ?84 k
?apr-util-ldap ? ? ? x86_64 ? ? ? ? ? 1.3.9-2.fc12 ? ? ? ? ? ? rawhide ? ? ? ? ? ?15 k
?httpd-tools ? ? ? ? x86_64 ? ? ? ? ? 2.2.13-2.fc12 ? ? ? ? ? ?rawhide ? ? ? ? ? ?63 k
?mailcap ? ? ? ? ? ? noarch ? ? ? ? ? 2.1.30-1.fc12 ? ? ? ? ? ?rawhide ? ? ? ? ? ?25 k第?6?章?Apache - 添加更多的服务
40
Transaction Summary
=======================================================================================
Install ? ? ? 6 Package(s)
Upgrade ? ? ? 0 Package(s)
Total download size: 1.0 M
Downloading Packages:
(1/6): apr-1.3.9-2.fc12.x86_64.rpm ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ?| 117 kB ? ? 00:00 ? ?
(2/6): apr-util-1.3.9-2.fc12.x86_64.rpm ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ?84 kB ? ? 00:00 ? ?
(3/6): apr-util-ldap-1.3.9-2.fc12.x86_64.rpm ? ? ?? ? ? ? ? ? ? ? ? ?| ?15 kB ? ? 00:00 ? ?
(4/6): httpd-2.2.13-2.fc12.x86_64.rpm ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 735 kB ? ? 00:00 ? ?
(5/6): httpd-tools-2.2.13-2.fc12.x86_64.rpm ? ? ? ? ? ? ? ? ? ? ? ? | ?63 kB ? ? 00:00 ? ?
(6/6): mailcap-2.1.30-1.fc12.noarch.rpm ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ?25 kB ? ? 00:00 ? ?
----------------------------------------------------------------------------------------
Total ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ?875 kB/s | 1.0 MB ? ? 00:01 ? ?
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
? Installing ? ? : apr-1.3.9-2.fc12.x86_64 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1/6
? Installing ? ? : apr-util-1.3.9-2.fc12.x86_64 ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2/6
? Installing ? ? : apr-util-ldap-1.3.9-2.fc12.x86_64 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3/6
? Installing ? ? : httpd-tools-2.2.13-2.fc12.x86_64 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4/6
? Installing ? ? : mailcap-2.1.30-1.fc12.noarch ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5/6
? Installing ? ? : httpd-2.2.13-2.fc12.x86_64 ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6/6
Installed:
? httpd.x86_64 0:2.2.13-2.fc12 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Dependency Installed:
? apr.x86_64 0:1.3.9-2.fc12 ? ? ? ? ? ?apr-util.x86_64 0:1.3.9-2.fc12
? apr-util-ldap.x86_64 0:1.3.9-2.fc12? httpd-tools.x86_64 0:2.2.13-2.fc12
? mailcap.noarch 0:2.1.30-1.fc12 ?
Complete!
[root@pcmk-1 ~]#
同样的,为了检测Apache服务器,我们要安装wget这个工具。
[root@pcmk-1 ~]# yum install -y wget
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.11.4-5.fc12 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================================
?Package ? ? ? ?Arch ? ? ? ? ? ? Version ? ? ? ? ? ? ? ? ? ? ?Repository ? ? ? ? ? ? ? Size
===========================================================================================
Installing:
?wget ? ? ? ? x86_64? ? ? ? ? 1.11.4-5.fc12 ? ? ? ? ? ? ? ? ??rawhide? ? ? ? ? ? ? ? 393 k
Transaction Summary
===========================================================================================
Install ? ? ? 1 Package(s)
Upgrade ? ? ? 0 Package(s)
Total download size: 393 k
Downloading Packages:
wget-1.11.4-5.fc12.x86_64.rpm ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 393 kB ? ? 00:00 ? ?
Running rpm_check_debug
Running Transaction Test准备工作
41
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
? Installing ? ? : wget-1.11.4-5.fc12.x86_64 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1/1
Installed:
? wget.x86_64 0:1.11.4-5.fc12
Complete!
[root@pcmk-1 ~]#
6.2.?准备工作 首先我们为Apache创建一个主页。在Fedora上面默认的Apache docroot是/var/www/html,所以我们在
这个目录下面建立一个主页。
[root@pcmk-1 ~]# cat <<-END >/var/www/html/index.html
<html>
<body>My Test Site - pcmk-1</body>
</html>
END
[root@pcmk-1 ~]#
为了方便,我们简化所用的页面并人工地在两个节点直接同步数据。所以在pcmk-2上面运行这个命令。
[root@pcmk-2 ~]# cat <<-END >/var/www/html/index.html
<html>
<body>My Test Site - pcmk-2</body>
</html>
END
[root@pcmk-2 ~]#
6.3.?开启 Apache status URL
为了监控Apache实例的健康状态,并在它挂掉的时候恢复Apache服务,资源agent会假设 server-status
URL是可用的。查看/etc/httpd/conf/httpd.conf并确保下面的选项没有被禁用或注释掉。
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
6.4.?更新配置文件 现在 ,Apache已经可以添加到集群中了。我们管这个资源叫WebSite。我们需要用一个叫做apache的
OCF脚本,这个脚本在heartbeat这个名字空间里,唯一一个需要设定的参数就是Apache的主配置文件路
径,并且我们告诉集群每一分钟检测一次Apache是否运行。
[root@pcmk-1 ~]# crm configure primitive WebSite ocf:heartbeat:apache params configfile=/etc/httpd/conf/
httpd.conf op monitor interval=1min
[root@pcmk-1 ~]# crm configure show
node pcmk-1第?6?章?Apache - 添加更多的服务
42
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
params configfile="/etc/httpd/conf/httpd.conf" \
op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
? ? ? ? params ip="192.168.122.101" cidr_netmask="32" \
? ? ? ? op monitor interval="30s"
property $id="cib-bootstrap-options" \
? ? ? ? dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
? ? ? ? cluster-infrastructure="openais" \
? ? ? ? expected-quorum-votes="2" \
? ? ? ? stonith-enabled="false" \
? ? ? ? no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
? ? ? ? resource-stickiness="100"
过了一会,我们可以看到集群把apache启动起来了。
[root@pcmk-1 ~]# crm_mon
============
Last updated: Fri Aug 28 16:12:49 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]
ClusterIP? ? ? ? (ocf::heartbeat:IPaddr):? ? ? ? Started pcmk-2
WebSite? ? ? ? (ocf::heartbeat:apache):? ? ? ? Started pcmk-1
等等!WebSite这个资源跟IP没有跑在同一个节点上面!
6.5.?确保资源在同一个节点运行 为了减少每个机器的负载,Pacemaker会智能地尝试将资源分散到各个节点上面。 然而我们可以告诉集
群某两个资源是有联系并且要在同一个节点运行(或不同的节点运行)。这里我们告诉集群WebSite只能
在有ClusterIP的节点上运行。如果ClusterIP在哪个节点都不存在,那么WebSite也不能运行。
[root@pcmk-1 ~]# crm configure colocation website-with-ip INFINITY: WebSite ClusterIP
[root@pcmk-1 ~]# crm configure show
node pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
? ? ? ? params configfile="/etc/httpd/conf/httpd.conf" \
? ? ? ? op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
? ? ? ? params ip="192.168.122.101" cidr_netmask="32" \
? ? ? ? op monitor interval="30s"
colocation website-with-ip inf: WebSite ClusterIP
property $id="cib-bootstrap-options" \
? ? ? ? dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
? ? ? ? cluster-infrastructure="openais" \
? ? ? ? expected-quorum-votes="2" \
? ? ? ? stonith-enabled="false" \
? ? ? ? no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
? ? ? ? resource-stickiness="100"
[root@pcmk-1 ~]# crm_mon控制资源的启动停止顺序
43
============
Last updated: Fri Aug 28 16:14:34 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]
ClusterIP? ? ? ? (ocf::heartbeat:IPaddr):? ? ? ? Started pcmk-2
WebSite? ? ? ? (ocf::heartbeat:apache):? ? ? ? Started pcmk-2
6.6.?控制资源的启动停止顺序 当Apache启动了,它跟可用的IP绑在了一起。它不会知道我们后来添加的IP,所以我们不仅需要控制他
们在相同的节点运行,也要确保ClusterIP在WebSite之前就启动了。我们用添加ordering约束来达到这
个效果。我们需要给这个order取个名字(apache-after-ip之类 描述性的),并指出他是托管的(这样当
ClusterIP恢复了,同时会触发WebSite的恢复) 并且写明了这两个资源的启动顺序。
[root@pcmk-1 ~]# crm configure order apache-after-ip mandatory: ClusterIP WebSite
[root@pcmk-1 ~]# crm configure show
node pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
? ? ? ? params configfile="/etc/httpd/conf/httpd.conf" \
? ? ? ? op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
? ? ? ? params ip="192.168.122.101" cidr_netmask="32" \
? ? ? ? op monitor interval="30s"
colocation website-with-ip inf: WebSite ClusterIP
order apache-after-ip inf: ClusterIP WebSite
property $id="cib-bootstrap-options" \
? ? ? ? dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
? ? ? ? cluster-infrastructure="openais" \
? ? ? ? expected-quorum-votes="2" \
? ? ? ? stonith-enabled="false" \
? ? ? ? no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
? ? ? ? resource-stickiness="100"
6.7.?指定优先的 Location
Pacemaker 并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况
下我们会希望设置:当某个节点可用时,资源就要跑在上面之类的规则。为了达到这个效果我们创建
location约束。同样的,我们给他取一个描述性的名字(prefer-pcmk-1),指明我们想在上面跑WebSite
这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以
达到想要的效果),以及目标节点的名字:
[root@pcmk-1 ~]# crm configure location prefer-pcmk-1 WebSite 50: pcmk-1
[root@pcmk-1 ~]# crm configure show
node pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
? ? ? ? params configfile="/etc/httpd/conf/httpd.conf" \
? ? ? ? op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
? ? ? ? params ip="192.168.122.101" cidr_netmask="32" \第?6?章?Apache - 添加更多的服务
44
? ? ? ? op monitor interval="30s"
location prefer-pcmk-1 WebSite 50: pcmk-1
colocation website-with-ip inf: WebSite ClusterIP
property $id="cib-bootstrap-options" \
? ? ? ? dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
? ? ? ? cluster-infrastructure="openais" \
? ? ? ? expected-quorum-votes="2" \
? ? ? ? stonith-enabled="false" \
? ? ? ? no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
? ? ? ? resource-stickiness="100"
[root@pcmk-1 ~]# crm_mon
============
Last updated: Fri Aug 28 16:17:35 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]
ClusterIP? ? ? ? (ocf::heartbeat:IPaddr):? ? ? ? Started pcmk-2
WebSite? ? ? ? (ocf::heartbeat:apache):? ? ? ? Started pcmk-2
等等,资源还是在pcmk-2上面跑的!
即使我们更希望资源在pcmk-1上面运行,但是 这个优先值还是比资源黏性值要小。
如果要看现在的分值,可以用ptest这个命令
ptest -sL
注意
Include output
这里有个办法强制地移动资源
6.8.?在集群中手工地移动资源 经常性的会有管理员想要无视集群然后强制把资源移动到指定的地方。 底层的操作就像我们上面创建
的location约束一样。只要提供资源和目标地址,我们会补全剩余部分。
[root@pcmk-1 ~]# crm resource move WebSite pcmk-1
[root@pcmk-1 ~]# crm_mon
============
Last updated: Fri Aug 28 16:19:24 2009
Stack: openais
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]
ClusterIP? ? ? ? (ocf::heartbeat:IPaddr):? ? ? ? Started pcmk-1
WebSite? ? ? ? (ocf::heartbeat:apache):? ? ? ? Started pcmk-1把控制权交还给集群
45
Notice how the colocation rule we created has ensured that ClusterIP was also moved to pcmk-1.
For the curious, we can see the effect of this command by examining the configuration
crm configure show
[root@pcmk-1 ~]# crm configure show
node pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
? ? ? ? params configfile="/etc/httpd/conf/httpd.conf" \
? ? ? ? op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
? ? ? ? params ip="192.168.122.101" cidr_netmask="32" \
? ? ? ? op monitor interval="30s"
location cli-prefer-WebSite WebSite \
rule $id="cli-prefer-rule-WebSite" inf: #uname eq pcmk-1
location prefer-pcmk-1 WebSite 50: pcmk-1
colocation website-with-ip inf: WebSite ClusterIP
property $id="cib-bootstrap-options" \
? ? ? ? dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
? ? ? ? cluster-infrastructure="openais" \
? ? ? ? expected-quorum-votes="2" \
? ? ? ? stonith-enabled="false" \
? ? ? ? no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
? ? ? ? resource-stickiness="100"
斜体部分是用来移动资源到pcmk-1约束,它是自动生成的。
6.8.1.?把控制权交还给集群
当我们完成那些要求要资源移动到pcmk-1的操作--在我们的例子里面啥都没干 --我们可以用
unmove命令把集群恢复到强制移动前的状态。因为我们之前配置了默认的资源黏性值,恢复了以后资源
还是会在pcmk-1上面。
[root@pcmk-1 ~]# crm resource unmove WebSite
[root@pcmk-1 ~]# crm configure show
node pcmk-1
node pcmk-2
primitive WebSite ocf:heartbeat:apache \
? ? ? ? params configfile="/etc/httpd/conf/httpd.conf" \
? ? ? ? op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
? ? ? ? params ip="192.168.122.101" cidr_netmask="32" \
? ? ? ? op monitor interval="30s"
location prefer-pcmk-1 WebSite 50: pcmk-1
colocation website-with-ip inf: WebSite ClusterIP
property $id="cib-bootstrap-options" \
? ? ? ? dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
? ? ? ? cluster-infrastructure="openais" \
? ? ? ? expected-quorum-votes="2" \
? ? ? ? stonith-enabled="false" \
? ? ? ? no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
? ? ? ? resource-stickiness="100"
可以看到自动生成的约束已经没有了。如果我们查看集群的状态,我们也可以看到就如我们所预期的,
资源还是在pcmk-1上面跑
[root@pcmk-1 ~]# crm_mon
============
Last updated: Fri Aug 28 16:20:53 2009
Stack: openais第?6?章?Apache - 添加更多的服务
46
Current DC: pcmk-2 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
2 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]
ClusterIP? ? ? ? (ocf::heartbeat:IPaddr):? ? ? ? Started pcmk-1
WebSite? ? ? ? (ocf::heartbeat:apache):? ? ? ? Started pcmk-1第?7
47
用DRBD同步存储
目录
7.1. 安装DRBD软件包 .................................................................. 47
7.2. 配置DRBD ........................................................................ 48
7.2.1. 为DRBD创建一个分区 ....................................................... 48
7.2.2. 配置DRBD ................................................................. 48
7.2.3. 初始化并载入DRBD ......................................................... 49
7.2.4. 向DRBD中添加数据 ......................................................... 50
7.3. 在集群中配置DRBD ................................................................ 51
7.3.1. 迁移测试 ................................................................. 54
就算你用的是静态站点,手工在各个节点之间同步文件也不是个好主意。如果是动态站点,那根本不
会考虑这个。用NAS不是所有人都能负担得起,但是有些数据还是要同步。用用DRBD: 它被认为是网络
RAID-1。访问 See http://www.drbd.org1
/获得更详细介绍
7.1.?安装DRBD软件包 在2.6.33以上的内核中,所以DRBD要的东西都在 Fedora 13中存在了,你只要安装它就好了。
[root@pcmk-1 ~]# yum install -y drbd-pacemaker
Loaded plugins: presto, refresh-packagekit
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package drbd-pacemaker.x86_64 0:8.3.7-2.fc13 set to be updated
--> Processing Dependency: drbd-utils = 8.3.7-2.fc13 for package: drbd-pacemaker-8.3.7-2.fc13.x86_64
--> Running transaction check
---> Package drbd-utils.x86_64 0:8.3.7-2.fc13 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================================
Package Arch Version Repository Size
=================================================================================
Installing:
drbd-pacemaker x86_64 8.3.7-2.fc13 fedora 19 k
Installing for dependencies:
drbd-utils x86_64 8.3.7-2.fc13 fedora 165 k
Transaction Summary
=================================================================================
Install 2 Package(s)
Upgrade 0 Package(s)
Total download size: 184 k
Installed size: 427 k
Downloading Packages:
Setting up and reading Presto delta metadata
1
http://www.drbd.org/第?7?章?用DRBD同步存储
48
fedora/prestodelta | 1.7 kB 00:00
Processing delta metadata
Package(s) data still to download: 184 k
(1/2): drbd-pacemaker-8.3.7-2.fc13.x86_64.rpm | 19 kB 00:01
(2/2): drbd-utils-8.3.7-2.fc13.x86_64.rpm | 165 kB 00:02
---------------------------------------------------------------------------------
Total 45 kB/s | 184 kB 00:04
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : drbd-utils-8.3.7-2.fc13.x86_64 1/2
Installing : drbd-pacemaker-8.3.7-2.fc13.x86_64 2/2
Installed:
drbd-pacemaker.x86_64 0:8.3.7-2.fc13
Dependency Installed:
drbd-utils.x86_64 0:8.3.7-2.fc13
Complete!
[root@pcmk-1 ~]#
7.2.?配置DRBD
在我们设置之前,我们要创建一些空的磁盘分区给它。
7.2.1.?为DRBD创建一个分区
如果你有1Gb以上的空间,就用那么多吧, 在这个指南中根本用不到这么多空间。
[root@pcmk-1 ~]# lvcreate -n drbd-demo -L 1G VolGroup
? Logical volume "drbd-demo" created
[root@pcmk-1 ~]# lvs
? LV ? ? ? ?VG ? ? ? Attr ? LSize ? Origin Snap% ?Move Log Copy% ?Convert
? drbd-demo VolGroup -wi-a- 1.00G ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? lv_root ? VolGroup -wi-ao ? 7.30G ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? lv_swap ? VolGroup -wi-ao 500.00M
在另外一个节点上面执行相同的操作,请确保使用了相同大小的分区。
[root@pcmk-2 ~]# lvs
? LV ? ? ?VG ? ? ? Attr ? LSize ? Origin Snap% ?Move Log Copy% ?Convert
? lv_root VolGroup -wi-ao ? 7.30G ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? lv_swap VolGroup -wi-ao 500.00M ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
[root@pcmk-2 ~]# lvcreate -n drbd-demo -L 1G VolGroup
? Logical volume "drbd-demo" created
[root@pcmk-2 ~]# lvs
? LV ? ? ? ?VG ? ? ? Attr ? LSize ? Origin Snap% ?Move Log Copy% ?Convert
? drbd-demo VolGroup -wi-a- 1.00G ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? lv_root ? VolGroup -wi-ao ? 7.30G ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? lv_swap ? VolGroup -wi-ao 500.00M
7.2.2.?配置DRBD
没有命令来自动生成DRBD配置文件,所以我们要简单的拷贝下面的配置文件并粘贴到/etc/drbd.conf
想知道配置文件的详细信息,请访问 http://www.drbd.org/users-guide/ch-configure.html初始化并载入DRBD
49
警告
请注意要替换掉name和address选项以符合您的试验环境。
global {
? usage-count yes;
}
common {
? protocol C;
}
resource wwwdata {
? meta-disk internal;
? device ? ?/dev/drbd1;
? syncer {
? ? verify-alg sha1;
? }
? net {
? ? allow-two-primaries;
? }
? on pcmk-1 {
? ? disk ? ? ?/dev/mapper/VolGroup-drbd--demo;
? ? address ? 192.168.122.101:7789;
? }
? on
pcmk-2 {
? ? disk ? ? ?/dev/mapper/VolGroup-drbd--demo;
? ? address ? 192.168.122.102:7789;
? }
}
注意
TODO: Explain the reason for the allow-two-primaries option
7.2.3.?初始化并载入DRBD
配置完成以后,我们可以来执行初始化了
[root@pcmk-1 ~]# drbdadm create-md wwwdata
md_offset 12578816
al_offset 12546048
bm_offset 12541952
Found some data
?==> This might destroy existing data! <==
Do you want to proceed?
[need to type 'yes' to confirm] yes
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success
现在讲DRBD的模块载入内核并检测是不是都正常第?7?章?用DRBD同步存储
50
[root@pcmk-1 ~]# modprobe drbd
[root@pcmk-1 ~]# drbdadm up wwwdata
[root@pcmk-1 ~]# cat /proc/drbd
version: 8.3.6 (api:88/proto:86-90)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@pcmk-1, 2009-12-08 11:22:57
1: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown C r----
? ? ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:12248
[root@pcmk-1 ~]#
Repeat on the second node
drbdadm --force create-md wwwdata
modprobe drbd
drbdadm up wwwdata
cat /proc/drbd
[root@pcmk-2 ~]# drbdadm --force create-md wwwdata
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
success
[root@pcmk-2 ~]# modprobe drbd
WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.
[root@pcmk-2 ~]# drbdadm up wwwdata
[root@pcmk-2 ~]# cat /proc/drbd
version: 8.3.6 (api:88/proto:86-90)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@pcmk-1, 2009-12-08 11:22:57
1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
? ? ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:12248
现在我们要告诉DRBD要用那个数据(那个节点作为主)。因为两边都有一些废数据,我们要在pcmk-1上面
执行一下命令。
[root@pcmk-1 ~]# drbdadm -- --overwrite-data-of-peer primary wwwdata
[root@pcmk-1 ~]# cat /proc/drbd
version: 8.3.6 (api:88/proto:86-90)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@pcmk-1, 2009-12-08 11:22:57
?1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
? ? ns:2184 nr:0 dw:0 dr:2472 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:10064
? ? ? ? [=====>..............] sync'ed: 33.4% (10064/12248)K
? ? ? ? finish: 0:00:37 speed: 240 (240) K/sec
[root@pcmk-1 ~]# cat /proc/drbd
version: 8.3.6 (api:88/proto:86-90)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@pcmk-1, 2009-12-08 11:22:57
?1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
? ? ns:12248 nr:0 dw:0 dr:12536 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
pcmk-1现在是处于Primary(主)状态了,它允许写入了。这意味着可以在上面创建文件系统并把一些数
据放进去,并且用WebSite这个资源来展现。
7.2.4.?向DRBD中添加数据
[root@pcmk-1 ~]# mkfs.ext4 /dev/drbd1
mke2fs 1.41.4 (27-Jan-2009)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)在集群中配置DRBD
51
3072 inodes, 12248 blocks
612 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=12582912
2 block groups
8192 blocks per group, 8192 fragments per group
1536 inodes per group
Superblock backups stored on blocks:
? ? ? ? 8193
Writing inode tables: done ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. ?Use tune2fs -c or -i to override.
Now mount the newly created filesystem so we can create our index file
mount /dev/drbd1 /mnt/
cat <<-END >/mnt/index.html
<html>
<body>My Test Site - drbd</body>
</html>
END
umount /dev/drbd1
[root@pcmk-1 ~]# mount /dev/drbd1 /mnt/
[root@pcmk-1 ~]# cat <<-END >/mnt/index.html
> <html>
> <body>My Test Site - drbd</body>
> </html>
> END
[root@pcmk-1 ~]# umount /dev/drbd1
7.3.?在集群中配置DRBD
crm shell一个便捷的特性是可以工作在交互模式下并自动的变更配置中的相关部分。
首先我们打开shell。提示会指出你现在是在交互模式下。
[root@pcmk-1 ~]# crm
cib crm(live)#
然后我们创建一个当前配置文件的副本。我们在这个副本里更改配置。直到我们提交这个副本之前集群
不会应用这些更改。请注意提示符的变更,现在它指出我们看到的已经不是当前(live)集群的配置文件
。
cib crm(live)# cib new drbd
INFO: drbd shadow CIB created
crm(drbd)#
现在我们可以创建DRBD clone,然后看看修改过后的配置文件。
crm(drbd)# configure primitive WebData ocf:linbit:drbd params drbd_resource=wwwdata \
? ? ? ? op monitor interval=60s
crm(drbd)# configure ms WebDataClone WebData meta master-max=1 master-node-max=1 \
? ? ? ? clone-max=2 clone-node-max=1 notify=true
crm(drbd)# configure show
node pcmk-1第?7?章?用DRBD同步存储
52
node pcmk-2
primitive WebData ocf:linbit:drbd \
params drbd_resource="wwwdata" \
op monitor interval="60s"
primitive WebSite ocf:heartbeat:apache \
? ? ? ? params configfile="/etc/httpd/conf/httpd.conf" \
? ? ? ? op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
? ? ? ? params ip="192.168.122.101" cidr_netmask="32" \
? ? ? ? op monitor interval="30s"
ms WebDataClone WebData \
meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
location prefer-pcmk-1 WebSite 50: pcmk-1
colocation website-with-ip inf: WebSite ClusterIP
order apache-after-ip inf: ClusterIP WebSite
property $id="cib-bootstrap-options" \
? ? ? ? dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
? ? ? ? cluster-infrastructure="openais" \
? ? ? ? expected-quorum-votes=”2” \
? ? ? ? stonith-enabled="false" \
? ? ? ? no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
? ? ? ? resource-stickiness=”100”
一旦你确认这些修改没问题,我们就提交这个副本,然后用crm_mon来看看修改是否生效了。
crm(drbd)# cib commit drbd
INFO: commited 'drbd' shadow CIB to the cluster
crm(drbd)# quit
bye
[root@pcmk-1 ~]# crm_mon
============
Last updated: Tue Sep ?1 09:37:13 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
3 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]
ClusterIP? ? ? ? (ocf::heartbeat:IPaddr): ? ? ? ?Started pcmk-1
WebSite (ocf::heartbeat:apache): ? ? ? ?Started pcmk-1
Master/Slave Set: WebDataClone
Masters: [ pcmk-2 ]
Slaves: [ pcmk-1 ]
注意
Include details on adding a second DRBD resource
现在DRBD已经工作了,我们可以配置一个Filesystem资源来使用它。 此外,对于这个文件系统的定义
,同样的我们告诉集群这个文件系统能在哪运行(主DRBD运行的节点)以及什么时候可以启动(在主DRBD
启动以后)。
我们再一次的使用交互模式的crm shell
[root@pcmk-1 ~]# crm在集群中配置DRBD
53
crm(live)# cib new fs
INFO: fs shadow CIB created
crm(fs)# configure primitive WebFS ocf:heartbeat:Filesystem \
? ? ? ? params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype="ext4"
crm(fs)# configure colocation fs_on_drbd inf: WebFS WebDataClone:Master
crm(fs)# configure order WebFS-after-WebData inf: WebDataClone:promote WebFS:start
我们也要告诉集群Apache也要运行在同样的节点上,而且文件系统要在Apache之前启动。
crm(fs)# configure colocation WebSite-with-WebFS inf: WebSite WebFS
crm(fs)# configure order WebSite-after-WebFS inf: WebFS WebSite
审视一下你的配置:
[root@pcmk-1 ~]# crm configure show
node pcmk-1
node pcmk-2
primitive WebData ocf:linbit:drbd \
? ? ? ? params drbd_resource="wwwdata" \
? ? ? ? op monitor interval="60s"
primitive WebFS ocf:heartbeat:Filesystem \
? ? ? ? params device="/dev/drbd/by-res/wwwdata" directory="/var/www/html" fstype="ext4"
primitive WebSite ocf:heartbeat:apache \
? ? ? ? params configfile="/etc/httpd/conf/httpd.conf" \
? ? ? ? op monitor interval="1min"
primitive ClusterIP ocf:heartbeat:IPaddr2 \
? ? ? ? params ip="192.168.122.101" cidr_netmask="32" \
? ? ? ? op monitor interval="30s"
ms WebDataClone WebData \
? ? ? ? meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
location prefer-pcmk-1 WebSite 50: pcmk-1
colocation WebSite-with-WebFS inf: WebSite WebFS
colocation fs_on_drbd inf: WebFS WebDataClone:Master
colocation website-with-ip inf: WebSite ClusterIP
order WebFS-after-WebData inf: WebDataClone:promote WebFS:start
order WebSite-after-WebFS inf: WebFS WebSite
order apache-after-ip inf: ClusterIP WebSite
property $id="cib-bootstrap-options" \
? ? ? ? dc-version="1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f" \
? ? ? ? cluster-infrastructure="openais" \
? ? ? ? expected-quorum-votes=”2” \
? ? ? ? stonith-enabled="false" \
? ? ? ? no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
? ? ? ? resource-stickiness=”100”
看完以后,我们提交它并看看有没有生效。
crm(fs)# cib commit fs
INFO: commited 'fs' shadow CIB to the cluster
crm(fs)# quit
bye
[root@pcmk-1 ~]# crm_mon
============
Last updated: Tue Sep ?1 10:08:44 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
4 Resources configured.
============第?7?章?用DRBD同步存储
54
Online: [ pcmk-1 pcmk-2 ]
ClusterIP? ? ? ? (ocf::heartbeat:IPaddr): ? ? ? ?Started pcmk-1
WebSite (ocf::heartbeat:apache): Started pcmk-1
Master/Slave Set: WebDataClone
? ? ? ? Masters: [ pcmk-1 ]
? ? ? ? Slaves: [ pcmk-2 ]
WebFS (ocf::heartbeat:Filesystem): Started pcmk-1
7.3.1.?迁移测试
我们可以再次关掉在运行的那个节点,但是安全的方法是把节点设置为standby模式。节点在这个状态
下面等于告诉集群它不能运行任何资源,任何在这个节点上面运行的资源都会被移动到其他地方。这个
特性在更新资源安装包的时候特别的方便。(确实!)
把一个本地节点设置为standby模式并观察集群把所有资源移动到另外一个节点了。并且注意节点的状
态改变为不能运行任何的资源。
[root@pcmk-1 ~]# crm node standby
[root@pcmk-1 ~]# crm_mon
============
Last updated: Tue Sep ?1 10:09:57 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
4 Resources configured.
============
Node pcmk-1: standby
Online: [ pcmk-2 ]
ClusterIP? ? ? ? (ocf::heartbeat:IPaddr): ? ? ? ?Started pcmk-2
WebSite (ocf::heartbeat:apache): ? ? ? ?Started pcmk-2
Master/Slave Set: WebDataClone
? ? ? ? Masters: [ pcmk-2 ]
? ? ? ? Stopped: [ WebData:1 ]
WebFS ? (ocf::heartbeat:Filesystem): ? ?Started pcmk-2
当我在pcmk-1上面操作完了--本例中没有任何操作,我们只是想让资源移动移动--我们可以让节点
变回正常的集群成员。
[root@pcmk-1 ~]# crm node online
[root@pcmk-1 ~]# crm_mon
============
Last updated: Tue Sep ?1 10:13:25 2009
Stack: openais
Current DC: pcmk-1 - partition with quorum
Version: 1.1.5-bdd89e69ba545404d02445be1f3d72e6a203ba2f
2 Nodes configured, 2 expected votes
4 Resources configured.
============
Online: [ pcmk-1 pcmk-2 ]
ClusterIP? ? ? ? (ocf::heartbeat:IPaddr): ? ? ? ?Started pcmk-2
WebSite (ocf::heartbeat:apache): ? ? ? ?Started pcmk-2
Master/Slave Set: WebDataClone
? ? ? ? Masters: [ pcmk-2 ]
? ? ? ? Slaves: [ pcmk-1 ]迁移测试
55
WebFS ? (ocf::heartbeat:Filesystem): ? ?Started pcmk-2
注意我们设置的资源黏性值阻止了资源迁移回pcmk-156