负载均衡高可用

heartbeat2.x-pacemaker Configuration Explained翻译笔记01[原创]

苦于上次配置heartbeat2.x是遇到的两个问题还没有答案,又加上对于2.x的中文文章比较少,所以,蚊子决定自己来深入学习一下2.x的技术,因为heartbeat版本的更新,所以对于2.x中集群资源管理部分现在起名为pacemake了,我就按照自己的英文程度和理解,把pacemake configuration的英文文档翻译成中文,供大家参考。

强调一点,蚊子英文实在够烂,如有翻译不当的地方,还望高手指出,英文文档下载地址为:

http://clusterlabs.org/mediawiki/images/f/fb/Configuration_Explained.pdf

因为此文档前面部分都是一些简单的介绍,所以这里就先不做翻译了,蚊子先从Configuration Basics部分开始翻译起

基本配置

配置文件的布局

集群配置文件使用XML标记语言而且配置文件被分成了两部分:配置部分和状态监控部分。

状态部分包含了每一个资源在每个节点和建立在数据基础上的历史信息,集群配置可以构建当前完整的集群状态。状态监控部分最可靠的资源就是运行在每个节点上的本地资源管理(lrmd)进程,同时cluster偶尔会进入整个部分。就因为这个,所以这部分是不会写入磁盘的,同时也是坚决不允许管理员修改的。

配置部分包含的更多的是常规的信息,比如cluster选项,资源的列表,哪些资源运行在哪里。在当前文档中配置部分是主要关注的。

配置部分本身就被分成了4部分

Con?guration options (called crm_con?g)
Nodes
Resources
Resource relationships (called constraints)

<cib generated=”true” admin_epoch=”0″ epoch=”0″ num_updates=”0″ have-quorum=”false”>
<configuration>
<crm_config/>
<nodes/>
<resources/>
<constraints/>
</configuration>
<status/>
</cib>

一个空的配置

当前集群的状态

在开始配置一个集群之前呢,还是值得解释一下怎么来查看一个完成配置的。为了这个目的,我们创建了一个crm_mon的工具,这个工具可以显示当前激活集群的状态。这个命令可以显示集群的状态按照节点或者资源,同时既可以用在single-shot模式也可以用在dynamically-updating模式。还有另外一种模式用来显示操作执行(按节点和资源分组)后失败信息的列表。

使用这个工具,你可以检查集群状态是否有误同时还可以看到当你引起或者模拟故障的时候的响应信息。

要想获得这个工具提供的更详细的信息可以执行crm_mon –help命令查看。

============
Last updated: Fri Nov 23 15:26:13 2007
Current DC: sles-3 (2298606a-6a8c-499a-9d25-76242f7006ec)
3 Nodes configured.
5 Resources configured.
============
Node: sles-1 (1186dc9a-324d-425a-966e-d757e693dc86): online
Node: sles-2 (02fb99a8-e30e-482f-b3ad-0fb3ce27d088): standby
Node: sles-3 (2298606a-6a8c-499a-9d25-76242f7006ec): online
Resource Group: group-1
192.168.100.181  (heartbeat::ocf:IPaddr):  Started sles-1
192.168.100.182  (heartbeat:IPaddr):    Started sles-1
192.168.100.183  (heartbeat::ocf:IPaddr):  Started sles-1
rsc_sles-1 (heartbeat::ocf:IPaddr):   Started sles-1
rsc_sles-2 (heartbeat::ocf:IPaddr):   Started sles-3
rsc_sles-3 (heartbeat::ocf:IPaddr):   Started sles-3
Clone Set: DoFencing
child_DoFencing:0  (stonith:external/vmware):  Started sles-3
child_DoFencing:1  (stonith:external/vmware):  Stopped
child_DoFencing:2  (stonith:external/vmware):  Started sles-1

crm_mon的输出示例

============
Last updated: Fri Nov 23 15:26:14 2007
Current DC: sles-3 (2298606a-6a8c-499a-9d25-76242f7006ec)
3 Nodes configured.
5 Resources configured.
============
Node: sles-1 (1186dc9a-324d-425a-966e-d757e693dc86): online
192.168.100.181  (heartbeat::ocf:IPaddr):  Started sles-1
192.168.100.182  (heartbeat:IPaddr):    Started sles-1
192.168.100.183  (heartbeat::ocf:IPaddr):  Started sles-1
rsc_sles-1  (heartbeat::ocf:IPaddr):  Started sles-1
child_DoFencing:2  (stonith:external/vmware):  Started sles-1
Node: sles-2 (02fb99a8-e30e-482f-b3ad-0fb3ce27d088): standby
Node: sles-3 (2298606a-6a8c-499a-9d25-76242f7006ec): online
rsc_sles-2  (heartbeat::ocf:IPaddr):  Started sles-3
rsc_sles-3  (heartbeat::ocf:IPaddr):  Started sles-3
child_DoFencing:0  (stonith:external/vmware):  Started sles-3

crm_mon -n的输出示例

DC(指派控制器)节点负责做出决定,而且当当前的DC挂了的时候,一个新的DC就会从其他剩余节点中被推举出来。DC的选择对管理员来讲并不关心,相对于这个来说,更会在意一下生成的日志。

配置文件如何被更新

更新集群配置文件有三个基本的规则

规则1-坚决不要手动编辑cib.xml文件
规则2-再把第一条规则读一遍
规则3-如果你忽略第一和二条规则,集群会提醒你并且拒绝使用配置文件

现在清楚了怎么能不更新配置文件,我们来解释一下你应该怎么做。

最有用的用来调整配置文件的工具就是cibadmin,它可以直接和运行中的集群系统进行通信。使用cibadmin,用户可以对配置文件的任何部分进行查询,添加,删除,更新或者替换,同时所有改变将立刻生效,并不需要执行什么类似reload的操作。

对于我们来讲,最简单的方法就是使用cibadmin工具将当前的配置文件存到一个临时文件中,然后使用任意一个我们熟悉的xml编辑工具对其进行编辑然后上传成修订后的配置文件。

cibadmin –query > tmp.xml
vi tmp.xml
cibadmin –replace –xml-file tmp.xml

一些好的xml编辑器会利用Relax NG schema来帮助用户检查改动是否有效。通常情况下可以在大部分系统的/usr/lib/heartbeat/pacemaker.rng里找到配置文件的schema描述。

如果你需要修改resources部分,你可以这样做

cibadmin –query –obj_type resources > tmp.xml
vi tmp.xml
cibadmin –replace –obj_type resources –xml-file tmp.xml

这样可以避免修改配置文件的其他任何部分。

未完,下期继续………………

Related Post

4 Comments

  1. 蚊子,请问您那heartbeat2.x-pacemaker Configuration Explained翻译完了没

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.