所以我现在的环境是centos7,在一对相同的裸机服务器上。我已经安装了 drbd 并划分了 3 x 100G 块设备供 DRBD 进行镜像。然后我在其中一个块设备上安装了 Centos7 映像。
我希望 Pacemaker 能够管理 DRBD 以及 xen 虚拟映像,因此我遵循 clusterlabs.org 的“Clusters From Scratch”文档中指定的说明:
pcs cluster cib drbd_cfg
pcs -f drbd_cfg resource create XenHost01_Storage ocf:linbit:drbd drbd_resource=XenHost01 op monitor interval=60s
pcs -f drbd_cfg resource master XenHost01_StorageClone XenHost01_Storage master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
pcs cluster cib-push drbd_cfg
然后我还添加了 Xen vm 来进行管理。
pcs cluster cib vmstate_cfg
pcs -f vmstate_cfg resource create XenHosts --group vminit systemd:vmstate op monitor interval=10s
pcs cluster cib-push vmstate_cfg
所以我的集群资源将如下所示:
Full list of resources:
Master/Slave Set: XenHost01_StorageClone [XenHost01_Storage]
Masters: [ ha1 ]
Slaves: [ ha2 ]
Resource Group: vminit
XenHosts (systemd:vmstate): Started ha1
PCSD Status:
ha1: Online
ha2: Online
我想要弄清楚的,也是我发表这篇文章的原因,是如何将 DRBD 主/从对粘贴到 vminit 组下,以便 Xen 虚拟机仅在主 DRBD 主机上启动。如果没有它们在一个组中,如果其他主机在 DRBD 中显示为主主机,集群不会关心,仍然尝试启动虚拟映像,但会失败。
有人知道如何在组下获取主/从 drbd 资源吗?我一直在撕扯我的头发。
答案1
您需要使用排序共置约束来告诉集群它只能启动主节点vminit
所在的组XenHost01_StorageClone
。
以下应该为您做到这一点:
# pcs cluster cib cib_constraints.xml
# pcs -f cib_constraints.xml constraint order promote XenHost01_StorageClone then start vminit
# pcs -f cib_constraints.xml constraint colocation add vminit with master XenHost01_StorageClone
# pcs cluster verify cib_constraints.xml
# pcs cluster cib-push cib_constraints.xml