DRBD安装说明

安装说明:本方案针对中标麒麟7.2操作系统适配

Pacemaker+DRBD配置_配置文件

编译环境准备

  1. 编译前确认以下包是否安装,如果不存在则进行安装。
elfutils-libs-0.163-3.el7.x86_64
elfutils-0.163-3.el7.x86_64
rpm-build-4.11.3-17.el7.ns7.01.x86_64
cpp-4.8.5-4.el7.ns7.01.x86_64
kernel-headers-3.10.0-327.el7.x86_64
glibc-headers-2.17-106.el7_2.1.ns7.01.x86_64
glibc-devel-2.17-106.el7_2.1.ns7.01.x86_64
libgomp-4.8.5-4.el7.ns7.01.x86_64
gcc-4.8.5-4.el7.ns7.01.x86_64
kernel-devel-3.10.0-327.el7.x86_64
注意:安装kernel-devel 的版本要与你机器上的版本一致。
flex.x86_64
0:2.5.37-3.el7
gcc-c++-4.8.5-4.el7.ns7.01.x86_64
make-3.82-21.el7.x86_64
automake-1.13.4-3.el7.noarch
autoconf-2.69-11.el7.noarch
libxslt-1.1.28-5.el7.x86_64
libxslt-devel.x86_64
0:1.1.28-5.el7
docbook-style-xsl.noarch
0:1.78.1-3.el7
help2man-1.41.1-3.el7.noarch
安装完成后重启服务器 reboot​

DRBD安装

  1. 编译前先创建程序目录,在/root目录下创建
mkdir -p
rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
  1. drbd-9.0.15-1.tar.gz
[root@mail1 ~]# tar zxvf drbd-9.0.15-1.tar.gz
[root@mail1 ~]# cd drbd-9.0.15-1/
[root@mail1 drbd-9.0.15-1]# make kmp-rpm

Pacemaker+DRBD配置_配置文件_02

  1. drbdmanage-0.99.18.tar.gz
[root@mail1 ~]# tar zxvf drbdmanage-0.99.18.tar.gz
[root@mail2 drbdmanage-0.99.18]# make rpm

Pacemaker+DRBD配置_配置文件_03

  1. drbd-utils-9.5.0.tar.gz
[root@mail1 ~]# tar zxvf drbd-utils-9.5.0.tar.gz
修改配置文件
[root@mail1 drbd-utils-9.5.0]# vi drbd.spec.in
#Line 34 加入:
%undefine with_sbinsymlinks

Pacemaker+DRBD配置_配置文件_04

[root@mail2 drbd-utils-9.5.0]# ./configure

Pacemaker+DRBD配置_配置文件_05

[root@mail1 drbd-utils-9.5.0]# make rpm

Pacemaker+DRBD配置_配置文件_06

进入到编译完成的rpm包目录
[root@mail1 drbd-utils-9.5.0]# cd /root/rpmbuild/RPMS/x86_64/
安装编译完成的rpm包
[root@mail1 x86_64]# rpm -Uvh drbd-utils-9.5.0-1.el7.x86_64.rpm
drbd-udev-9.5.0-1.el7.x86_64.rpm drbd-bash-completion-9.5.0-1.el7.x86_64.rpm
kmod-drbd-9.0.15_3.10.0_327-1.x86_64.rpm

Pacemaker+DRBD配置_配置文件_07

[root@mail1 ~]# rpm -Uvh /root/drbdmanage-0.99.18/dist/drbdmanage-0.99.18-1.noarch.rpm

Pacemaker+DRBD配置_配置文件_08

  1. 安装完成测试是否可以使用drbdadm相关命令,如果可以则证明编译成功(编译过程中无报错)

DRBD配置和测试

环境配置

  1. 主机名修改
drbd是基于主机名解析的
hostnamectl set-hostname

Pacemaker+DRBD配置_配置文件_09


Pacemaker+DRBD配置_配置文件_10

  1. 服务器添加第二快网卡,两台服务器直连,进行drbd数据的传输,并添加到host文件中

Pacemaker+DRBD配置_配置文件_11

  1. 创建数据盘、但不要进行格式化操作,会在进行DRBD启动的时候进行格式化操作、
  2. drbd配置文件。注意:此配置是drbd8.4的,与drbd9版本的配置差别比较大

​drbd的主配置文件/etc/drbd.conf,为了管理的便捷性,在此文件中使用了include指令指定了包含的配置文件段,默认的是 在/etc/drbd.d/目录下。在此目录有全局配置文件global_common.conf和其他配置文件*.res文件。 其中在主配置文件中include全局配置文件的指令只能出现一个,且必须出现在最前面。两个节点的配置文件应尽量完全一致。

  1. global_common.conf 配置内容如下:
global {
usage-count no;
}
common {
handlers{ # 定义出现以下问题(如splitbrain或out-of-sync错误)时处理策略

pri-on-incon-degr "/usr/lib/drbd/;
/usr/lib/drbd/; echo b > /proc/sysrq-trigger ;
reboot -f";

pri-lost-after-sb "/usr/lib/drbd/;
/usr/lib/drbd/; echo b > /proc/sysrq-trigger ;
reboot -f";
local-io-error
"/usr/lib/drbd/;
/usr/lib/drbd/; echo o > /proc/sysrq-trigger ;
halt -f";
split-brain
"/usr/lib/drbd/ root";
out-of-sync
"/usr/lib/drbd/ root";
}
disk {
on-io-error
detach; # 当发生io错误时,直接拔除备节点设备
resync-rate 600M;
}
protocol C; # 定义使用C协议,即同步复制。可不定义,此为默认

}

Pacemaker+DRBD配置_配置文件_12

  1. 再新建一个配置文件data1.res,里面定义资源。
resource mydrbd {

on {

device /dev/drbd0;

disk /dev/sdb1;

address
192.168.1.1:7789;

meta-disk internal;

}

on {

device /dev/drbd0;

disk /dev/sdb1;

address
192.168.1.2:7789;

meta-disk internal;

}

}

注:在on hostname段中,hostname必须和uname -n一致,因为drbd默认是基于主机名进行解析的。

但是,drbd支持基于ip地址的解析,这时drbd根据ip地址进行漂移,ip地址在哪个主机上,就解析到哪个主机上

Pacemaker+DRBD配置_配置文件_13

  1. 对两节点都进行初始化
drbdadm create-md mydrbd  (mydrbd为创建的资源名称)

Pacemaker+DRBD配置_配置文件_14

  1. 初始化成功后,可以使用下面几个命令来获取drbd的metadata区信息
drbdadm show-gi mydrbd

Pacemaker+DRBD配置_配置文件_15

drbdadm dump-md mydrbd

Pacemaker+DRBD配置_配置文件_16

blockdev --getsz /dev/sdb1

Pacemaker+DRBD配置_配置文件_17

  1. 在节点上启动drbd
systemctl restart drbd
drbdadm up mydrbd

说明:以下出错的原因是因为drbdadm把错误的配置文件已缓存,我们可以通过 关闭/重启 drbdadm设备来解决。

Pacemaker+DRBD配置_配置文件_18

​验证:

Pacemaker+DRBD配置_配置文件_19

  1. 实现drbd主从同步
在需要设置为主机点的机器上执行:drbdadm primary --force data1        
其中"--force"表示强制升级为primary,这会导致本节点的数据强制同步到对端上。
查看状态
drbdadm status mydrbd

Pacemaker+DRBD配置_配置文件_20

drbdadm role mydrbd

Pacemaker+DRBD配置_配置文件_21

​Primary状态为主、secondary为从

可以看到本端已经设置为主节点

数据同步和主从角色切换

  1. 格式化drbd磁盘(只有drbd状态为主才可以进行格式化挂载操作)

Pacemaker+DRBD配置_配置文件_22

  1. 挂载到数据盘

Pacemaker+DRBD配置_配置文件_23

  1. 对磁盘进行操作

Pacemaker+DRBD配置_配置文件_24

数据同步和主从角色切换

现在已经有一端是主节点了。drbd的主从节点中,只有主节点是可以挂载并进行读写的。

 所以在主节点上挂载drbd设备.

 挂载drbd到mnt,然后向其中拷贝一个文件。​

  1. 在主机上卸载磁盘,并将drbd状态设为从
drbdadm secondary mydrbd

Pacemaker+DRBD配置_配置文件_25

  1. 在备节点将drbd设置为主、并且格式化挂载对应的磁盘
drbdadm primary mydrbd –force

Pacemaker+DRBD配置_配置文件_26

格式化drbd磁盘
mkfs -t ext4 /dev/drbd0

挂载磁盘到数据目录,查看之前创建的文件是否同步,如果未同步,重新执行一遍流程即可(因为在主机执行数据同步的时候,备机磁盘未格式化无法使用)

测试方法:在两台服务器drbd都格式化的情况下,将其中一台设为主,挂载磁盘并创建文件,然后再将其设置为从,将对应的drbd盘挂载到备机即可看到数据。

如果可以正常同步证明drbd编译配置完成​


corosync+Pacemeker高可用

安装配置

  1. 配置双机信任

mail1

Pacemaker+DRBD配置_配置文件_27

mail2

Pacemaker+DRBD配置_配置文件_28

  1. 安装集群组件(两台都安装)
yum install -y pacemaker pcs psmisc policycoreutils-python

验证

Pacemaker+DRBD配置_配置文件_29

​安装完毕后,会生成一个hacluster用户,供集群使用。

  1. 启动pcs并设为开机启动 (pcs是pacemaker的命令行管理工具,用来管理同步各个节点的corosync的配置文件)
systemctl start pcsd
systemctl enable pcsd

Pacemaker+DRBD配置_配置文件_30

  1. 为hacluster设置密码 安装组件生成的hacluster用户,用来本地启动pcs进程,因此我们需要设定密码,每个节点的密码相同。
passwd hacluster

Pacemaker+DRBD配置_配置文件_31

说明:(报错解决)

[root@node1 ~]# pcs cluster auth node1 node2
Username: hacluster
Password:
Error: Operation timed out
node1: Authorized
Error: Unable to communicate with node2
解决方法:
升级3个与ssl有关的组件:nss、curl、libcurl,3个节点都要升级
[root@node1]# yum update -y nss curllibcurl
  1. ​验证节点(在其中一个节点即可),先设置系统主机名

Pacemaker+DRBD配置_配置文件_32

pcs cluster auth node1 node2   (输完命令后需要进行账户密码验证,并且对应的node和node2需要配置到hosts文件里边)

Pacemaker+DRBD配置_配置文件_33

  1. 生成corosync配置文件(在其中一个节点即可)
pcs cluster setup --name mycluster node1 node2

Pacemaker+DRBD配置_配置文件_34

以上建立一个名为mycluster集群,生成并同步corosync配置文件,生成的文件为/etc/corosync/corosync.conf 

注意:若在另一个节点生成需要重新验证节点。

  1. 启动集群并设为自启动(在其中一个节点即可)

​ #all参数会使每个节点都启动,若没有all则只在本地生效

pcs cluster start –all

Pacemaker+DRBD配置_配置文件_35

  1. ​查看集群状态
pcs cluster status

Pacemaker+DRBD配置_配置文件_36

  1. ​查看corosync相关状态
corosync-cfgtool -s

Pacemaker+DRBD配置_配置文件_37

Pacemaker+DRBD配置_配置文件_38

corosync-cmapctl | grep members

Pacemaker+DRBD配置_配置文件_39

Pacemaker+DRBD配置_配置文件_40

pcs status corosync

Pacemaker+DRBD配置_配置文件_41

Pacemaker+DRBD配置_配置文件_42

  1. ​查看pacemaker进程
ps axf |grep pacemaker

Pacemaker+DRBD配置_配置文件_43

​11. 查看整个集群所有组件的状态

pcs status

Pacemaker+DRBD配置_配置文件_44

Pacemaker+DRBD配置_配置文件_45

  1. ​检查配置文件是否正确
crm_verify -L -V

Pacemaker+DRBD配置_配置文件_46

​为保证数据安全性,pacemaker默认启动stonith,但是我们没有配置stonith,因此报错。我们先暂时禁用stonith,等会再配置stonith

#禁用stonith,再次检查配置文件正常​

[root@pcmk-1 ~]# pcs property set stonith-enabled=false
[root@pcmk-1 ~]# crm_verify -L
  1. 添加虚拟ip资源–vip(漂移ip)
[root@node2 ~]# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.244.144 cidr_netmask=32 op monitor interval=30s

Pacemaker+DRBD配置_配置文件_47

​在这里我们以192.168.244.144作为浮动IP,名字为ClusterIP 并且告诉集群每30秒检查它一次。

其中ocf: heartbeat:IPaddr2。这告诉Pacemaker三件事情,第一个部分ocf,指明了这个资源采用的标准(类型)以及在哪能找到它。第二个部分标明这个资源脚本的在ocf中的名字空间,在这个例子中是heartbeat。最后一个部分指明了资源脚本的名称。​

  1. 运行下面的命令来获得可用的资源
pcs resource standards

Pacemaker+DRBD配置_配置文件_48

运行下面的命令来获得可用的ocf资源提供者

pcs resource providers

Pacemaker+DRBD配置_配置文件_49

如果你想看特定一个ocf资源提供者的所有可用资源代理

pcs resource agents ocf:heartbeat

Pacemaker+DRBD配置_配置文件_50

  1. 查看IP资源状态
pcs status

Pacemaker+DRBD配置_配置文件_51

故障迁移

  1. 停止node1节点
pcs cluster stop node1

Pacemaker+DRBD配置_配置文件_52

  1. 查看VIP是否漂移到node2

Pacemaker+DRBD配置_配置文件_53

注意:当node1重新启动后,会自动加入集群中,但是vip不会再次漂移到node1;但是pacemaker老版本中,vip会重新漂移到恢复后的节点。

  1. 防止资源在节点恢复后迁移

​资源在节点恢复后再迁移到原节点往往需要一点时间,此时会无法对外提供服务;当在数据库间迁移时,会需要更长的时间。但是我们可以通过stickiness来解决,pacemaker默认所有节点的stickiness都为0,我们最通常更改默认情况下的stickiness就足够了

pcs resource defaults resource-stickiness=100
pcs resource defaults

Pacemaker+DRBD配置_配置文件_54

DRBD存储资源配置

说明:该手册确保corosync+pacemaker+drbd浮动IP可正常切换的状态下进行一下配置。

注意:确保以下包均已安装在操作​

集群属性

  1. 投票属性
pcs property set no-quorum-policy=ignore
集群故障时候服务迁移

由于两个节点无stonith设备
pcs property set stonith-enabled=false
在node1恢复后,为防止node2资源迁回node01(迁来迁去对还是会对业务有一定影响)
# pcs resource defaults resource-stickiness=100
# pcs resource defaults

Pacemaker+DRBD配置_配置文件_55

设置资源超时时间
pcs resource op defaults timeout=90s
pcs resource op defaults

Pacemaker+DRBD配置_配置文件_56

验证,正常无回显
crm_verify –LV

创建资源

  1. 创建文件
pcs cluster cib drbd_cfg
创建DRBD资源
pcs -f drbd_cfg resource create DRBD ocf:linbit:drbd drbd_resource=mydrbd op monitor interval=60s –force
clone资源
pcs -f drbd_cfg resource master DRBDClone DRBD master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
查看配置
pcs -f drbd_cfg resource show

Pacemaker+DRBD配置_配置文件_57

提交配置
pcs cluster cib-push drbd_cfg

Pacemaker+DRBD配置_配置文件_58

查看状态
pcs status

Pacemaker+DRBD配置_配置文件_59

配置cluster使drbd_data跟随ClusterIP运行在同一个节点上
pcs constraint colocation add DRBDClone with ClusterIP INFINITY
更新配置(主备机同步配置文件,都更新)

Pacemaker+DRBD配置_配置文件_60

查看状态
pcs status

Pacemaker+DRBD配置_配置文件_61

​DRBDClone作为master运行在node1,而slave运行在node2

pacemaker集群配置filesystem

​drbd配置完成后,需要挂载到master节点的挂载目录上,当master节点stop后,新提升为master的机器需要重新挂载filesystem,因此在cluster配置filesystem资源。

从cib创建资源文件
pcs cluster cib fs_cfg

创建drbd资源并制定相关策略
pcs -f fs_cfg resource create drbd_fs Filesystem device="/dev/drbd0" directory="/data" fstype="ext4"
#文件系统要跟随DRBDClone
pcs -f fs_cfg constraint colocation add drbd_fs with DRBDClone INFINITY with-rsc-role=Master

Pacemaker+DRBD配置_配置文件_62

设置启动顺序
# pcs -f fs_cfg constraint order promote DRBDClone then start drbd_fs
查看资源状态
pcs -f fs_cfg resource show

Pacemaker+DRBD配置_配置文件_63

pcs -f fs_cfg constraint

Pacemaker+DRBD配置_配置文件_64

更新cluster并查看状态
pcs cluster cib-push fs_cfg
pcs status

Pacemaker+DRBD配置_配置文件_65

​drbd及drbd的文件系统都在cluster中建立完毕

故障迁移

模拟master故障,我们只需将master节点状态变成standby即可,在这种状态下corosync和pacemaker仍然会运行,但是不允许资源运行,因此在master上的资源会移动到slave,此时slave会提升为master,并接管源master上的所有资源。此种模式一般在管理状态下使用,例如用于升级cluster中的安装包等。

pacmker处于standby状态
pcs cluster standby node1
注意:此时node1的drbd状态是down的,因此资源没有运行。

查看集群状态

Pacemaker+DRBD配置_配置文件_66

​此时所有的资源已经转移到node2上了

恢复node1,资源并不会恢复到node1上。
pcs cluster unstandby node1
注意:此时drbd的状态都为UpToDate,因为node1的资源已经运行

Pacemaker+DRBD配置_配置文件_67

Pacemaker+DRBD配置_配置文件_68

多DRBD资源配置

Pacemaker+DRBD配置_配置文件_69

[root@mail1 drbd.d]# cat mydrbd.res
resource mydrbd {
volume 0 {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
}
volume 1 {
device /dev/drbd1;
disk /dev/sdc1;
meta-disk internal;
}
on {
address 192.168.1.1:7790;
}
on {
address 192.168.1.2:7790;
}
}




[root@mail1 drbd.d]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 49.5G 0 part
├─nlas-root 253:0 0 47.5G 0 lvm /
└─nlas-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk
└─sdb1 8:17 0 30G 0 part
└─drbd0 147:0 0 30G 1 disk
sdc 8:32 0 10G 0 disk
└─sdc1 8:33 0 10G 0 part
└─drbd1 147:1 0 10G 1 disk
sr0 11:0 1 1024M 0 rom


[root@mail1 drbd.d]# pcs config
Cluster Name: mycluster
Corosync Nodes:
node1 node2
Pacemaker Nodes:
node1 node2

Resources:
Master: DRBDClone
Meta Attrs: master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
Resource: DRBD (class=ocf provider=linbit type=drbd)
Attributes: drbd_resource=mydrbd
Operations: start interval=0s timeout=240 (DRBD-start-interval-0s)
promote interval=0s timeout=90 (DRBD-promote-interval-0s)
demote interval=0s timeout=90 (DRBD-demote-interval-0s)
stop interval=0s timeout=100 (DRBD-stop-interval-0s)
monitor interval=60s (DRBD-monitor-interval-60s)
Group: mail
Resource: drbd_fs (class=ocf provider=heartbeat type=Filesystem)
Attributes: device=/dev/drbd0 directory=/opt/anymacro fstype=ext4
Operations: start interval=0s timeout=60 (drbd_fs-start-interval-0s)
stop interval=0s timeout=60 (drbd_fs-stop-interval-0s)
monitor interval=20 timeout=40 (drbd_fs-monitor-interval-20)
Resource: drbd2_fs (class=ocf provider=heartbeat type=Filesystem)
Attributes: device=/dev/drbd1 directory=/opt/anymacro/mail1 fstype=ext4
Operations: start interval=0s timeout=60 (drbd2_fs-start-interval-0s)
stop interval=0s timeout=60 (drbd2_fs-stop-interval-0s)
monitor interval=20 timeout=40 (drbd2_fs-monitor-interval-20)
Resource: ClusterIP (class=ocf provider=heartbeat type=IPaddr2)
Attributes: ip=192.168.119.130 cidr_netmask=32
Operations: start interval=0 timeout=240s (ClusterIP-start-interval-0)
stop interval=0op timeout=240s (ClusterIP-stop-interval-0op)
monitor interval=60s timeout=60s (ClusterIP-monitor-interval-60s)
Resource: procfs1 (class=ocf provider=heartbeat type=Filesystem)
Attributes: device=/proc directory=/opt/anymacro/proc fstype= options=bind
Operations: start interval=0s timeout=60 (procfs1-start-interval-0s)
stop interval=0s timeout=60 (procfs1-stop-interval-0s)
monitor interval=20 timeout=40 (procfs1-monitor-interval-20)
Resource: anyclumail (class=lsb type=anyclumail)
Operations: monitor interval=60s timeout=60s (anyclumail-monitor-interval-60s)
start interval=0 timeout=240s (anyclumail-start-interval-0)
stop interval=0op timeout=240s (anyclumail-stop-interval-0op)

Stonith Devices:
Fencing Levels:

Location Constraints:
Resource: mail
Enabled on: node2 (score:INFINITY) (role: Started) (id:cli-prefer-mail)
Ordering Constraints:
start drbd_fs then start drbd2_fs (kind:Mandatory) (id:order-drbd_fs-drbd2_fs-mandatory)
start drbd2_fs then start ClusterIP (kind:Mandatory) (id:order-drbd2_fs-ClusterIP-mandatory)
start ClusterIP then start procfs1 (kind:Mandatory) (id:order-ClusterIP-procfs1-mandatory)
start procfs1 then start anyclumail (kind:Mandatory) (id:order-procfs1-anyclumail-mandatory)
stop anyclumail then start procfs1 (kind:Mandatory) (id:order-anyclumail-procfs1-mandatory)
stop procfs1 then start ClusterIP (kind:Mandatory) (id:order-procfs1-ClusterIP-mandatory)
stop ClusterIP then start drbd2_fs (kind:Mandatory) (id:order-ClusterIP-drbd2_fs-mandatory)
stop drbd2_fs then start drbd_fs (kind:Mandatory) (id:order-drbd2_fs-drbd_fs-mandatory)
Colocation Constraints:
drbd_fs with DRBDClone (score:INFINITY) (with-rsc-role:Master) (id:colocation-drbd_fs-DRBDClone-INFINITY)
drbd2_fs with drbd_fs (score:INFINITY) (id:colocation-drbd2_fs-drbd_fs-INFINITY)

Resources Defaults:
resource-stickiness: 100
migration-threshold: 1
Operations Defaults:
timeout: 90s

Cluster Properties:
cluster-infrastructure: corosync
cluster-name: mycluster
dc-version: 1.1.13-10.el7-44eb2dd
have-watchdog: false
last-lrm-refresh: 1597914451
no-quorum-policy: ignore
stonith-enabled: false

PCS添stonith

  1. 增加fence设备
pcs stonith create ipmi-fence-node1 fence_ipmilan parms lanplus=’true’ pcmk_host_list=’node1’ pcmk_host_check=’static-list’ action=’reboot’ ipaddr=’192.168.1.3’ login=’admin’ passwd=’Password@_’ op monitor interval=30s
pcs stonith create ipmi-fence-node2 fence_ipmilan parms lanplus=’true’ pcmk_host_list=’node2’ pcmk_host_check=’static-list’ action=’reboot’ ipaddr=’192.168.1.4’ login=’admin’ passwd=’Password@_’ op monitor interval=30s

Pacemaker+DRBD配置_配置文件_70

  1. 集群功能验证

​切换前检查

查看当前集群状态,集群内各资源已正常运行使用(尚缺少fence设备)​

Pacemaker+DRBD配置_配置文件_71

禁用节点验证
将node1设置为standby(不使用),资源组正常切换至node2上运行
pcs cluster standby node1 node1
standby状态下,资源组在node2上正常运行才能证明资源切换正常

Pacemaker+DRBD配置_配置文件_72

创建资源文件系统

根据实际文件系统情况创建

pcs  resource create procfs1 ocf:heartbeat:Filesystem device='/proc' directory='/data' fstype='' options='bind'
pcs resource create sysfs ocf:heartbeat:Filesystem device='sys' directory='/data' fstype='' options='sysfs'
pcs resource create sysfs ocf:heartbeat:Filesystem device='/dev' directory='/opt/spamgate/dev' fstype='' options='bind'

Pacemaker+DRBD配置_配置文件_73

创建服务脚本

根据实际业务调整服务脚本

pcs resource create anyclumail lsb:anyclumail

配置服务启动及停止顺序

​默认资源(该环境为虚拟环境,没有添加fence设备,如果有fence设备,应该先启动fence):

Pacemaker+DRBD配置_配置文件_74

Pacemaker+DRBD配置_配置文件_75

​1. 设置资源启动顺序:

​Drbd_fs -> ClusterIP -> procfs1 -> anyclumail

pcs constraint order drbd_fs then ClusterIP
pcs constraint order ClusterIP then procfs1
pcs constraint order procfs1 then anyclumail

查看设置的启动顺序

Pacemaker+DRBD配置_配置文件_76

  1. 设置资源停止顺序:

Anyclumail -> procfs1 -> ClusterIP -> drbd_fs

pcs constraint order stop anyclumail then procfs1
pcs constraint order stop procfs1 then ClusterIP
pcs constraint order stop ClusterIP then drbd_fs

Pacemaker+DRBD配置_配置文件_77

Pacemaker+DRBD配置_配置文件_78

Pacemaker+DRBD配置_配置文件_79

查看:
pcs constraint

Pacemaker+DRBD配置_配置文件_80