负载均衡高可用

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

快速删除部分配置文件

找出你希望删除的目标,例如:

sles-1:~ # cibadmin -Q | grep stonith
<nvpair id=”cib-bootstrap-options-stonith-action” name=”stonith-action” value=”reboot”/>
<nvpair id=”cib-bootstrap-options-stonith-enabled” name=”stonith-enabled” value=”1″/>
<primitive id=”child_DoFencing” class=”stonith” type=”external/vmware”>
<lrm_resource id=”child_DoFencing:0″ type=”external/vmware” class=”stonith”>
<lrm_resource id=”child_DoFencing:0″ type=”external/vmware” class=”stonith”>
<lrm_resource id=”child_DoFencing:1″ type=”external/vmware” class=”stonith”>
<lrm_resource id=”child_DoFencing:0″ type=”external/vmware” class=”stonith”>
<lrm_resource id=”child_DoFencing:2″ type=”external/vmware” class=”stonith”>
<lrm_resource id=”child_DoFencing:0″ type=”external/vmware” class=”stonith”>
<lrm_resource id=”child_DoFencing:3″ type=”external/vmware” class=”stonith”>

接下来找出资源标签和id(在这个例子中是primitve和child_DoFencing)。然后可以简单的执行

cibadmin –delete –crm_xml ‘<primitive id=”child_DoFencing”/>’

不使用XML文件更新配置文件

有些普通的任务可以通过使用高层次的工具来完成,从而避免了读取和编辑xml文件。

拿激活stonith来举例,可以执行

crm_attribute –attr-name stonith-enabled –attr-value true

或者想看看是否哪个节点可以允许运行资源,可以执行

crm_standby –get-value –node-uname somenode

又或者想找出my-test-rsc的当前位置,可以执行

crm_resource –locate –resource my-test-rsc

在沙箱中更改配置文件

经常是被描述为在自动更新配置文件之前预览一遍一系列改变带来的效果。为了这个目的我们创建了crm_shadow命令,这个命令可以创建配置文件的一份“影子”拷贝,同时为所有命令行工具使用做了准备。

在开始,简单引用crm_shadow命令并给一个要创建的配置文件名,接着跟随屏幕上的提示操作。如果不这样做,就会导致你必须更新当前在用的配置文件。

c001n01:~ # crm_shadow –create test
Setting up shadow instance
Type Ctrl-D to exit the crm_shadow shell
shadow[test]:

创建一个新的沙箱

shadow[test] # crm_shadow –which
test

查看哪个影子拷贝是激活的

从现在这点开始,所有集群上执行的命令都自动作用在影子拷贝上了,而不会再去修改真实使用的配置。

shadow[test] # crm_failcount -G -r rsc_c001n01
name=fail-count-rsc_c001n01 value=0
shadow[test] # crm_standby -v on -n c001n02
shadow[test] # crm_standby -G -n c001n02
name=c001n02 scope=nodes value=on
shadow[test] # cibadmin –erase –force
shadow[test] # cibadmin –query
<cib cib_feature_revision=”1″ validate-with=”pacemaker-1.0″ admin_epoch=”0″ crm_feature_set=”3.0″ have-
quorum=”1″ epoch=”112″ dc-uuid=”c001n01″ num_updates=”1″ cib-last-written=”Fri Jun 27 12:17:10 2008″>
<configuration>
<crm_config/>
<nodes/>
<resources/>
<constraints/>
</configuration>
<status/>
</cib>

对影子配置进行修改

一旦你完成了实验,你就可以提交你的更高,或者是在影子状态下废除变更。此外请仔细跟随屏幕指示进行操作。

shadow[test] # crm_shadow –delete test –force
Now type Ctrl-D to exit the crm_shadow shell
shadow[test] # exit
c001n01:~ # crm_shadow –which
No shadow instance provided
c001n01:~ # cibadmin -Q
<cib cib_feature_revision=”1″ validate-with=”pacemaker-1.0″ admin_epoch=”0″ crm_feature_set=”3.0″ have-
quorum=”1″ epoch=”110″ dc-uuid=”c001n01″ num_updates=”551″>
<configuration>
<crm_config>
<cluster_property_set id=”cib-bootstrap-options”>
<nvpair id=”cib-bootstrap-1″ name=”stonith-enabled” value=”1″/>
<nvpair id=”cib-bootstrap-2″ name=”pe-input-series-max” value=”30000″/>

废除改变同时确认真实配置文件未受损

想要获得crm_shadow的全部选项列表,请不加任何参数执行这个命令。

测试你配置文件的更改

我们前面也看到了如何对配置文件的影子拷贝进行一系列的更改。在把这些变动加载到集群之前(例如:crm_shadow –commit mytest –force),通常来讲使用ptest命令来模拟改变效果是明智的。

ptest –live-check -VVVVV –save-graph tmp.graph –save-dotfile tmp.dot

这个工具使用和真实集群一样的库文件,来显示当活动输入的时候都完成了什么。除了输出外还会有大量重要的日志记录,存储在tmp.graph和tmp.dot这两个文件中,两个都是同一件事情的响应—你的集群系统对于你变更操作的响应。在graph文件中存储着完整的流程,包含了所有功能的列表,还有他们的参数和首要事。正因为流程graph并不是非常容易阅读,所以这工具也生成了一个图形化的dot文件来描述相同的信息。

用图表形式描绘流程graph的一个例子

解释Graphviz输出

箭头指示出命令的依赖关系

虚线箭头表示没有在流程图中出现的依存关系

任意颜色的虚线框的行为没组成流程图的部分

绿色框的行为组成了流程图的部分

红色框的行为是集群中的其中一员可能会执行但还没有被执行的

蓝色框的行为是集群中的其中一员认为没必须要执行的

橘黄色字体的是假的或者假装的行为集群用来简化图表的

黑色字体的行为是发送给LRM的

资源行为由{rsc}_{action}_{interval} {node}文字组成

任何一个依赖于红框里的行为的行为都将不被执行

环形了就太糟糕了,这时请将这种情况报告给开发小组

在上面的例子中,出现了一个新的节点,node2,当node2变成在线状态时,集群检查并确认rsc1,rsc2和rsc3没有在他上执行(*_monitor_0条目表示)。一旦开始执行并假定资源并没有在上面激活,接下来可能会在node1上停止rsc1和rsc2并把它们移到node2上。然后这样会出现一些问题,而且集群可能或者不被允许执行stop操作这就意味着同样不能执行start操作。因为种种原因集群可能不会再任何地方启动rsc3.

想获得ptest能支持的更多参数,请使用ptest –help查看。

另外一个,稍微复杂点的流程图,并不期望着你能读懂

我用不用在所有的集群节点上更新配置文件

回答是否定的,任何的变更都会立刻同步到所有活跃的集群节点上。

为了减少带宽,集群仅仅广播你你更改后的结果的那部分增量更新,同时使用md5值来确保每一份拷贝都是一致的。

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

注:蚊子这部分看的有点晕,有些名词把握可能不到位,随着后面学习的深入,可能对理解上会有所帮助,之后review的时候再做调整了。

Related Post

Leave a Reply

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