17 分布式锁管理器 (DLM) #
内核中的分布式锁管理器 (DLM) 是 OCFS2、GFS2、群集 MD 和群集 LVM (lvmlockd) 用于在每个相关层提供主动-主动储存的基础组件。
17.1 用于 DLM 通讯的协议 #
为了避免单一故障点,非常有必要对高可用性群集配置冗余通讯路径。对于 DLM 通讯也是如此。如果出于任何原因无法使用网络绑定(聚合控制协议,LACP),则我们强烈建议在 Corosync 中定义冗余通讯通道(另一个环)。有关详细信息,请参见过程 4.3 “定义冗余通讯通道”。
然后,DLM 将根据 /etc/corosync/corosync.conf
中的配置确定是要使用 TCP 还是 SCTP 协议来进行通讯:
如果
设置为none
(表示禁用冗余环配置),DLM 会自动使用 TCP。但是,如果未定义冗余通讯通道,在 TCP 链路断开的情况下,DLM 通讯将会失败。如果
设置为passive
(典型的设置),并且在/etc/corosync/corosync.conf
中正确配置了另一个通讯环,DLM 将自动使用 SCTP。在这种情况下,DLM 讯息交换会获得 SCTP 提供的冗余功能。
17.2 配置 DLM 群集资源 #
DLM 使用 Pacemaker 提供的并在用户空间中运行的群集成员资格服务。因此,DLM 需要配置为群集中每个节点上都存在的克隆资源。
由于 OCFS2、GFS2、群集 MD 和群集 LVM (lvmlockd) 全部使用 DLM,因此为 DLM 配置一个资源便已足够。由于 DLM 资源在群集中的所有节点上运行,因此它配置为克隆资源。
如果您的设置包含 OCFS2 和群集 LVM,则只需为 OCFS2 和群集 LVM 配置一个 DLM 资源就够了。
这种配置由包含多个原始资源的基础组和一个基础克隆构成。之后,基本组和基本克隆便可用于各种方案(例如,用于 OCFS2 和群集 LVM)。您只需视需要使用相应的基元资源扩展基本组。由于基本组具有内部共置和顺序约束,您无需单独指定多个组、克隆及其依赖项,方便了总体设置。
在群集中的一个节点上执行以下步骤:
启动壳层,并以
root
用户身份或同等身份登录。运行
crm
configure
。输入以下命令以创建 DLM 的基元资源:
crm(live)configure#
primitive
dlm ocf:pacemaker:controld \ op monitor interval="60" timeout="60"为 DLM 资源和其他储存相关的资源创建一个基础组:
crm(live)configure#
group
g-storage dlm克隆
g-storage
组,使它在所有节点上运行:crm(live)configure#
clone
cl-storage g-storage \ meta interleave=true target-role=Started使用
show
复查更改。如果全部都正确,请使用
commit
提交更改,并使用exit
退出 crm 当前配置。
未启用 STONITH 的群集不受支持。如果您出于测试或查错目的将全局群集选项 stonith-enabled
设置为 false
,则 DLM 资源以及依赖于它的所有服务(例如群集 LVM、GFS2 和 OCFS2)将无法启动。