配置部署
前期环境准备
各节点(即主机)的主机名与“uname -n”的结果保持一致:
# pcmk-1+ pcmk-2:
vi /etc/hosts
192.168.10.253 pcmk-1.clusterlabs.org pcmk-1
192.168.10.254 pcmk-2.clusterlabs.org pcmk-2
#pcmk-1:
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=pcmk-1
#pcmk-2:
NETWORKING=yes
HOSTNAME=pcmk-2
需要准备两个rpm包:drbd83-utils-8.3.16-1.el6.elrepo.x86_64.rpm、kmod-drbd83-8.3.16-2.el6.elrepo.x86_64.rpm
在VolGroup 上创建一个1G的drbd-demo分区:(可以看到错误信息:VolGroup自由空间不足:Volume group "VolGroup" has insufficient free space (0 extents): 256 required.)
注意:如果空间足够可以忽略创建以下分配分区空间。
lvcreate -n drbd-demo -L 1G VolGroup
用vgdisplay查看VolGroup的信息:(Free PE / Size:空间是0)
vgdisplay
用lvs查看分区信息大小
#查看分区
lvs
调整lv_swap VolGroup的分区大小:
#调整lv_swap分区大小
lvresize -L 1G /dev/VolGroup/lv_swap
#用lvs查看分区(原来2G变成了1G)
lvs
#在用vgdisplay来查看分区信息可以看到(Free PE / Size)有1G的空间了
vgdisplay
重新在VolGroup上创建drbd-demo分区大小:
#创建drbd-demo空间大小为1GB
lvcreate -n drbd-demo -L 1G VolGroup
#查看分区(这个时候多了一个drbd-demo分区)
lvs
安装drbd 和 kmod:
#安装 drbd 和 kmod 软件包
rpm -ivh drbd83-utils-8.3.16-1.el6.elrepo.x86_64.rpm kmod-drbd83-8.3.16-2.el6.elrepo.x86_64.rpm
配置drbd
#进入到drbd 目录
cd /etc/drbd.d
#备份下 global_common.conf
cp global_common.conf global_common.conf.bak
#修改 global_common.conf配置文件
vi global_common.conf
#删除所有内容
:.,$d
global {
usage-count yes;
}
common {
protocol C;
}
resource wwwdata {
meta-disk internal;
device /dev/drbd1;
syncer {
verify-alg sha1;
}
net {
allow-two-primaries;
}
on pcmk-1 {
disk /dev/mapper/VolGroup-drbd--demo;
address 10.157.32.222:7789;
}
on pcmk-2 {
disk /dev/mapper/VolGroup-drbd--demo;
address 10.157.32.223:7789;
}
}
初始化加载drbd:
#初始化、加载drbd(注意:wwwdata是配置文件中的resource wwwdata)
drbdadm create-md wwwdata
加载drbd到内核模块:
#查看drbd(此时没有进程)
lsmod |grep drbd
#加载DRBD模块到内核 modprobe drbd
modprobe drbd
#查看drbd(有drbd进程号了)
lsmod |grep drbd
启动drbd
#启用drbd 的wwwdata资源
drbdadm up wwwdata
#查看drbd信息(现在可以看到当前两台服务的节点是Secondary)
cat /proc/drbd
注意:以上所有操作在另一台服务器上同样执行
设置主节点:
#设置主节点
drbdadm -- --overwrite-data-of-peer primary wwwdata
#查看drbd信息(这时候主节点在pcmk-1这台服务器上(primary))
cat /proc/drbd
快速格式化 /dev/drbd1:
#格式化 /dev/drbd1
mkfs.ext4 /dev/drbd1
挂载/dev/drbd1 做nfs数据同步:
#挂载 /dev/drbd1
mount /dev/drbd1 /mnt/
#在mnt下添加一个index.html文件 路径:/mnt/index.html
vi /mnt/index.html
#内容:
<html>
<body>My Test Site - drbd</body>
</html>
查看数据同步的时候drbd信息:
#用cat /proc/drbd 会显示数据同步的进度(同步完成会显示节点信息)
cat /proc/drbd
手动测试nfc数据是否同步:
#取消挂载 /dev/drbd1
umount /dev/drbd1
#查看drbd信息(现在pcmk-1还是主节点(primary))
cat /proc/drbd
#取消pcmk-1的主节点
drbdadm secondary wwwdata
#查看drbd信息(现在pcmk-1还是从节点(Secondary))
cat /proc/drbd
手动切换pcmk-2为主节点(primary)
#查看pcmk-2的drbd状态(现在都是从节点(Secondary))
cat /proc/drbd
#切换pcmk-2为主节点
drbdadm primary wwwdata
#查看pcmk-2的drbd状态(现在pcmk-2是主节点(primary))
cat /proc/drbd
#挂载 /dev/drbd1 /mnt下
mount /dev/drbd1 /mnt/
#查看 /mnt 下得nfs数据同步的index.html是否存在
ls /mnt/
注意:有index.html nfs数据同步成功
用pacemaker管理DRBD做HA切换:
用cib来管理drbd(创建一个drbd)
#用cib 来管理drbd
crm cib new drbd
创建DRBD资源
#创建DRBD资源,及其状态克隆资源 (使用ocf:linbit:drbd配置DRBD )
crm configure primitive wwwdrbd ocf:linbit:drbd params drbd_resource=wwwdata op monitor interval=60s
#ms表示配置主从资源
#WebData #资源名
#wwwdrbd #clone资源名
#mete #表示配置主从资源
#master-max #最大主节点(默认:1)
#master-node-max #最大主节点数:(默认:1)
#clone-max #在集群中最多能运行多少份克隆资源,默认和集群中的节点数相同;
#clone-node-max #每个节点上最多能运行多少份克隆资源,默认是1;
#notify #当成功启动或关闭一份克隆资源,要不要通知给其它的克隆资源,默认是true
crm configure ms WebData wwwdrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
查看DRBD的状态(如果显示失败,重启下Corosync):
可以看到DRBD启动状态:一个masters和slave