DARE 的功能介绍
PowerHA 6.1 提供了 cluster 动态调整的功能,即在 cluster 处于活动的状态时,动态地对 cluster 拓扑和资源进行变更,这个功能就称作 Dynamic Automatic Reconfiguration Event,简称 DARE。
DARE 功能的实现是它通过对 HACMP ODM 信息三份副本的维护来实现的:
图 1.PowerHA 6.1 ODM 信息存放位置示意图
PowerHA 通过对三份 PowerHA 配置拷贝的维护,可以实现在一个节点进行配置变更,然后将配置动态地同步到其它节点,这是 DARE 功能实现的前提条件。
DARE 功能的实现包括以下 5 步:
第一步,我们在 cluster 中一个节点使用 SMIT 或者命令行对 cluster 进行变更操作,变更信息被同步到本地 DCD 中;
第二步,当我们对 cluster 同步(Extended Verification and Synchronization )的时候,变更信息将会从 DCD 同步到本地 SCD 和 cluster 其它节点的 SCD 中;
第三步,对当前 ACD 信息的 snapshot 是 PowerHA 自动完成的,这个快照(snapshot)用于回滚(roll back)时使用;
第四步,cluster 各个节点的 SCD 覆盖其 ACD 的信息,然后 cluster manger 重新读取 ACD 的信息并进行更新;
第五步,整个 cluster 变更信息更新完以后,各个节点上 SCD 临时信息将会被删除;
图 2.PowerHA 6.1 DARE 功能实现示意图
DARE 的功能要求 cluster 中节点的 PowerHA 版本相同,否则无法实现。
对于一个稳定运行、没有 DARE 操作的 cluster 节点中,SCD 是不存在的。SCD 存在有两种情况:DARE 在进行中或者 DARE 操作已经失败。
当同步(synchronization)的过程中,cluster 的一个节点出现错误,将会导致 DARE 操作失败。这时候 SCD 的信息将不会被删除。SCD 会生成锁,阻止新的 DARE 操作,这也是 cluster 为了避免错误进一步扩大化的一种保护机制。
图 3.PowerHA DARE fail 示意图
当 SCD 锁产生的时候,我们必须手动删除这个锁,也就是手动删除 SCD 的信息,再重启 cluster 服务,否者可能会造成节点 cluster 配置信息不一致,可能会导致 cluster 节点的崩溃(crash)。
代码语言:javascript复制#smit hacmp - Problem Determination Tools -
Release Locks Set By Dynamic Reconfiguration
图 4.SCD lock 解锁方法
关于 SCD 锁机制的作用,可以举例来进行说明:
例如有一个双节点的 cluster,名字为 super。节点分别为 ibm1 和 ibm2。在 cluster 运行正常的情况下,我们进行 DARE 操作,例如,在 ibm1 上给 cluster 添加一个新的资源组 rg1, 在 ibm1 上操作成功以后(变更信息保存到本地 DCD 中),进行 Extended Verification and Synchronization,同步的过程也是将变更信息从 ibm1 本地 DCD 向 ibm1 的 SCD 和 ibm2 的 SCD 拷贝的过程,如果此时 ibm2 发生错误,例如宕机,cluster 同步失败。此时 ibm1 和 ibm2 上的 SCD 信息都是不完整的。但此时 ibm1 节点的 cluster 服务不受影响,因为 cluster manger 依然可以从 ibm1 的 ACD 读取 cluster 配置信息,但是由于 SCD 的存在,会产生锁,这个锁阻止新 DARE 操作。这种情况下,当 ibm2 节点恢复正常以后,我们就需要按照上图所示,手动解锁,这样新的 DARE 操作才能进行。
同样,对于这个例子,如果在我们进行 Extended Verification and Synchronization 操作的时候,ibm1 节点出现宕机,这时 ibm1 和 ibm2 上的 SCD 信息都是不完整的,也不会被删除。这种情况下,ibm2 上 cluster 服务工作是正常的,因为 cluster manger 读取的是 ibm2 本地的 ACD 信息。在 ibm1 系统恢复正常以后,我们也需要手动解除 SCD lock,这样新的 DARE 操作才被允许。
还有一种情况,是我们在一个节点进行 cluster 变更以后,发现这个变更是不合理的,因此不想也不能做 cluster 同步操作,因此,我们就要在这个节点上进行回滚操作,回滚操作读取的快照是最近一次成功做的 DARE 操作步骤中的第三步自动生成的。
代码语言:javascript复制 #smit hacmp - Problem Determination Tools -
Restore HACMP Configuration Database from Active Configuration
图 5. 回滚操作的方法
PowerHA 6.1 DARE 支持的功能
PowerHA 6.1 支持的动态变更包括 ( 但不限于 ):
- 增加或删除节点;
- 增加或删除网络接口;
- 增加或删除一个 HACMP 网络;
- 热交换一块网卡;
- 修改网络模块参数;
- 给别名网络增加一个新的心跳;
- 将一个活动的网络设置成别名网络心跳;
- 更改一个别名网络中心跳的 IP 地址;
- 在别名网络中增加、更改或者删除一个网络接口或者节点配置;
对于以上列出的几种 cluster 变更,可以在 cluster 服务不停止的情况下动态完成。
PowerHA 6.1 DARE 不支持的常见 cluster 变更
常见的 PowerHA 6.1 不支持的 cluster 变更包括:修改 cluster 节点 IP 地址、修改 Service IP、修改 cluster 名、修改节点主机名。对于这四种类型的操作,对应的变更方式如下:
图 6.PowerHA 6.1 DARE 不支持的常见 cluster 变更实现方式
在文章接下来的部分,会采取实验的方式进行说明。
DARE 不支持的常见 cluster 变更实现方法
首先需要指出的两点:
- 由于实验环境的限制,试验中并未配置磁盘心跳,生产环境下,为了提高心跳的冗余性,建议配置磁盘心跳。
- 本章节中所涉及的四项操作,均在实验室完成。在生产环境下,则需要首先停止应用,再进行相关的操作,否则将会对生产环境产生很大的不良影响(如业务中断)。
PowerHA 6.1 相关项修改采取探讨性的方式,遵循两个原则:第一,使用对现有 cluster 改动少的方式修改相关的配置;第二,PowerHA 的校验(Extended Verification and Synchronization )和启动 (clstart) ,均采取非强制模式(Force synchronization if verification fails?=No;Ignore verification errors?=No ),确保 cluster 在非强制模式下可以同步和启动成功 , 这样才能保证 cluster 没有任何 Error 级别的错误。
由于文章涉及的 SMIT 菜单选项操作较多,因此,关联菜单的选择路径在文中第一次出现以后,后面涉及到的地方就不在进行详细描述。
本章中涉及到的常用命令如下:
启动 cluster:#smit clstart;
停止 cluster:#smit clstop;
查看 cluster 拓扑:/usr/es/sbin/cluster/clstat;
查看资源组状态:/usr/es/sbin/cluster/utilities/clfindres 或 clRGinfo;
变更以后需要刷新 cluster 进程:
代码语言:javascript复制# refresh -s clstrmgrES
# refresh -s clinfoES(clstat 无显示一般是此进程未启动)
修改双机节点 IP 地址
首先,查看已经 PowerHA 拓扑
#clstat
下面,我们将节点 ha61_g11c35 的两个 BootIP 分别改成 :172.16.14.138 和 172.16.15.138 首先,停止运行的 cluster:smit clstop, 停止成功以后: 修改 cluster 中两个节点的 /etc/hosts 配置文件中对应的 IP:
其次,我们需要将 en0 的 IP 修改为 172.16.14.138(smit tcpip),将 en1 的 IP 修改为 172.16.15.13, 修改完毕以后,进行查看:
将 cluster 删除,smit hacmp--Extended Configuration-- Extended Topology Configuration--Configure an HACMP Cluster--Remove an HACMP Cluster
删除成功以后,重新创建 cluster,rg 并添加相应的资源,具体配置 cluster 的步骤,本文不进行描述。 Cluster 重新配置完以后,先进行:Discover HACMP-related Information from Configured Nodes, 再进行同步 #smit hacmp-- Extended Configuration--Extended Verification and Synchronization ,确保这两步可以成功。 同步成功以后,重新启动 cluster:#smit clstart
然后查看 cluster 的拓扑,可以看出,节点 ha61_g11c35 的节点 IP 已经修改成功。
查看资源组的运行情况 , 资源组运行正常:
修改 Service IP
首先查看现有的 service IP:
现在两个 service IP 分别为 :172.16.50.170 和 171,我们分别将其修改为 : 172.16.50.172 和 172.16.50.173. 首先停掉双机 :#smit clstop 接下来,修改双机两个节点的 /etc/hosts 文件:
修改完毕以后,删除两个资源组 #smit hacmp-- Initialization and Standard Configuration--Configure HACMP Resource Groups--Remove a Resource Group
再添加资源组,并将 Service IP,VG 和 application 重新添加到资源组中 ( 具体配置本文不做描述 ),然后执行 Exended Verification and Synchronization 同步,可以成功;启动 cluster 的时候,可以看到 serviceIP 已经可以正常启动: 从命令输出来看,浮动 IP 地址修改已经成功。 #clstat
修改 cluster 名
查看现有 cluster 的名字为 cluster1,将其改为 ibm1.
首先停止 cluster: #smit clstop
接下来,修改 cluster name:#smit hacmp- Extended Configuration--Extended Topology Configuration--Configure an HACMP Cluster--Add/Change/Show an HACMP Cluster
修改成功以后, Extended Verification and Synchronization, 可以成功。 接下来,启动 cluster,可以成功 , 可以看出,cluster name 已经被成功修改:
修改节点主机名
首先查看 cluster 节点的名称,分别为 : ha61_g11c35 和 ha61_g11c36,我们接下来将其改成 ibm1 和 ibm2,并把 cluster 的名字改成 beijing
执行 #smit clstop 停止双机,将 cluster 彻底删除,#smit hacmp--Extended Configuration-- Extended Topology Configuration--Configure an HACMP Cluster--Remove an HACMP Cluster 然后重新配置,添加新的节点 ibm1 和 ibm2,然后按照配置 cluster 的步骤,添加资源组已经相应的资源,配置完毕以后,重新同步 cluster#smit hacmp-- Extended Configuration--Extended Verification and Synchronization ,可以成功(具体配置不进行描述)。 #smit clstart
Cluster 启动成功以后,查看状态,可以发现,cluster node name 已经成功修改。