四、配置drbd服务为高可用
1、查看当前集群的配置信息,确保已经配置全局属性参数为两节点集群所适用:
crm configure show
确保有stonith-enabled和no-quorum-policy出现且其值与如上输出信息中相同。
否则,可以分别使用如下命令进行配置:
crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignore
2、将已经配置好的drbd设备/dev/drbd0定义为集群服务;
1)配置drbd为集群资源:
drbd需要同时运行在两个节点上,但只能有一个节点(primary/secondary模型)是Master,而另一个节点为Slave;因此,它是一种比较特殊的集群资源,其资源类型为多状态(Multi-state)clone类型,即主机节点有Master和Slave之分,且要求服务刚启动时两个节点都处于slave状态。
[root@node1 ~]# crm
crm(live)# configure
crm(live)configure# primitive httpd_drbd_web ocf:heartbeat:drbd params drbd_resource=web op monitor role=Master interval=60s timeout=40s op monitor role=Slave interval=70s timeout=40s
crm(live)configure# master MS_Webdrbd webdrbd meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
crm(live)configure# verify
crm(live)configure# commit
查看关于httpd_drbd_web的配置
crm(live)configure# show httpd_drbd_web
查看资源的运行状态
crm status 显示如下:
由上面的信息可以看出此时的drbd服务的Primary节点为node1.a.org,Secondary节点为node2.a.org,我们在node1上使用如下命令验正当前主机是否已经成为web资源的Primary节点:
drbdadm role web
2)为Primary节点上的web资源创建自动挂载的集群服务
MS_Webdrbd的Master节点即为drbd服务web资源的Primary节点,此节点的设备/dev/drbd0可以挂载使用,且在某集群服务的应用当中也需要能够实现自动挂载。假设我们这里的web资源是为Web服务器集群提供网页文件的共享文件系统,其需要挂载至/var/www/html目录。
因为此自动挂载的集群资源需要运行于drbd服务的Master节点上,并且只能在drbd服务将某节点设置为Primary以后方可启动,所以还需要为这两个资源建立排列约束和顺序约束。
# crm
crm(live)# configure
crm(live)configure# primitive drbd_webFS ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/var/www/html" fstype="ext3"
crm(live)configure# colocation drbd_webFS_on_MS_Webdrbd inf: drbd_webFS MS_Webdrbd:Master
crm(live)configure# order drbd_webFS_after_MS_Webdrbd inf: MS_Webdrbd:promote drbd_webFS:start
crm(live)configure# verify
crm(live)configure# commit
查看集群中资源的运行状态:
crm status
由上面的信息可以发现,此时drbd_webFS运行的节点和drbd服务的Primary节点均为node1.a.org
3)测试
在node1的/var/www/html目录创建一个网页文件,而后在故障故障转移后查看node2的/var/www/html目录下是否存在这些文件。
echo node1 > /var/www/html/index.html
我们模拟node1节点故障,看此些资源可否正确转移至node2。
node1:
crm node standby
node2:
crm status
由上面的信息可以推断出node1停止服务,所有资源已经正常转移至node2。
在node2可以看到在node1作为primary节点时创建保存至/var/www/html目录中的数据,在node2上是否存在一份拷贝。
文件存在
让node1上线,看我们drbd资源是否会分布在两个节点上
可见drbd高可用服务的资源全部在node2上,也就是我们创建的约束条件得到了证实
到此使用Corosync/openais+pacemaker+DRBD实现DRBD服务高可用集群已经实现