实验环境:
虚拟机2台安装corosync+pacemaker,使用的操作系统为CentOS6.5。
虚拟机IP:172.16.103.2、172.16.103.3
实验步骤:
前提准备:两台虚拟机时间同步,能够使用/etc/hosts文件基于主机名进行通信。
一、安装corosync + pacemaker:
# yum install corosync # yum install pacemaker
二、安装drbd软件包:
drbd软件包有两部分组成:内核模块和用户空间的管理工具,在内核版本号2.6.33之前的Linux系统中这两部分都需要安装,而之后的版本只需要安装管理工具。实际安装时,要注意程序包和对应的内核模块的版本要对应,实验过程中使用的是8.4版本。
# rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm
三、配置drbd
首先在两台虚拟机上创建两个容量相同的磁盘分区,假设为1G,同为/dev/sda3
编辑配置文件,在其中使用protocol C协议等。然后定义资源,资源文件在/etc/drbd.d/目录下,资源的定义如下:
resource web { on node1.cluster.com { device /dev/drbd0; disk /dev/sda3; address 172.16.103.2:7789; meta-disk internal; } on node2.cluster.com { device /dev/drbd0; disk /dev/sda3; address 172.16.103.3:7789; meta-disk internal; } }
在定义好配置文件和资源文件以后将这两个文件复制到另外一个节点上,这些文件两个节点上要保持一致。
# scp /etc/drbd.d/* node2:/etc/drbd.d
初始化资源,在node1和node2上分别执行:
# drbdadm create-md web
启动服务,在两个节点上分别执行:
# /etc/init.d/drbd start
使用drbd-overview命令查看资源启动结果
# drbd-overview
初始化完成后的两个节点都处于Secondary状态,需要将一个节点提升为主节点,然后两个主机的drbd资源会进行同步。
# drbdadm primary --force web
同步完成后,创建文件系统并挂载:
# mke2fs -t ext4 /dev/drbd0 # mount /dev/drbd0 /mnt
挂载之后,为了测试drbd设备是否可以正常使用,先在该主节点复制文件到挂载目录中:
# cp /etc/fstab /mnt
卸载设备,之后将该主节点的drbd状态降级为Secondary,,由另外一个节点挂载,然后再测试:
# umount /mnt # drbdadm secondary web # drbd-overview #查看一下降级的效果,如果两个节点的状态都为secondary,另外一个节点才可以提升为master,
在另外一个节点操作:
# drbdadm primary web # drbd-overview # mkdir /mnt/drbd # mount /dev/drbd0 /mnt # ls /mnt #验证之前复制操作的文件是否存在 。
四、在上述的验证操作完成后,drbd的安装及准备工作完成。进而配置集群操作,这里用的配置工具是crmsh,具体的配置操作如下:
crm(live)# property stonith-enabled=false #由于是两个节点的高可用集群,而配置集群时会提供需要提供stonith设备,否则无法启动集群服务,所以需要设置stonith-enable这个参数为false crm(live)# property no-quorum-policy=ignore #设置集群在不具备法定票数的情况下的默认操作 crm(live)# primitive mydrbd ocf:linbit:drbd params drbd_resource=mydata op monitor role=Master interval=10s timeout=20s op monitor role=Slave interval=20s timeout=30s op start timeout=240s op stop timeout=100s #定义drbd设备的主资源 crm(live)# master ms_mydrbd mydrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=True #定义drbd主资源的克隆资源,该克隆资源有角色之分,只有主角色的克隆资源启动的高可用节点上,可以挂载drbd设备,同时定义克隆资源的数量以及在各节点上主、从克隆资源可以运行的个数 crm(live)# primitive myfs ocf:heartbeat:Filesystem params device=/dev/drbd1 directory=/mydata fstype=ext4 op monitor interval=20s timeout=60s op start timeout=60s op stop timeout=60s #定义要使用的drbd资源要挂载的具体文件系统信息 crm(live)# primitive myip ocf:heartbeat:IPaddr params ip=172.16.103.10 op monitor interval=30s timeout=20s #定义mysql高可用服务器使用的VIP信息,在两个节点间流转的IP地址 crm(live)# primitive myserver lsb:mysqld op monitor interval=30s timeout=20s #定义mysql服务资源以及其使用的资源代理的方式 crm(live)# group myservice myfs myip myserver #将mysql使用的ip,服务,文件系统这些资源定义为一个组,以便启动后这些资源会运行在一个节点上,而不是分散在不同节点。 crm(live)# colocation myfs_with_ms_mydrbd_master inf: myfs ms_mydrbd:Master #mysql使用的文件系统drbd0要与克隆资源的主资源运行在一起,这是因为drbd的特性导致,只能是状态为主的drbd才能挂载drbd设备并执行读写操作 crm(live)# order myfs_after_ms_mydrbd_master mandatory: ms_mydrbd:promote myfs:start #同时文件系统资源与克隆的drbd角色为主的资源的启动顺序有先后之分,只有某节点上的drbd角色为主之后,文件系统才能被挂载,所以定义了顺序约束 crm(live)# colocation myserver_with_myfs inf: myserver myfs #文件系统资源与mysql服务之间也有顺序约束,这两个资源要运行在一起。