Corosync/openais+pacemaker+DRBD实现DRBD服务高可用集群(2)

1、node1和node2两个节点上各提供了一个大小相同的分区作为drbd设备;我们这里为在两个节点上均为/dev/sda5,大小为1G;

2、安装软件包

安装drbd使用的软件包:

drbd83-8.3.8-1.el5.CentOS.i386.rpm
kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

yum -y --nogpgcheck localinstall drbd83-8.3.8-1.el5.centos.i386.rpm kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

3、配置drbd

1)复制样例配置文件为即将使用的配置文件:
cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc

2)配置/etc/drbd.d/global_common.conf
global {
usage-count no;
# minor-count dialog-refresh disable-ip-verification
}

common {
protocol C;

handlers {
pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
#fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
#split-brain "/usr/lib/drbd/notify-split-brain.sh root";
#out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
#before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
#after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
}

startup {
wfc-timeout 120;
degr-wfc-timeout 120;
}

disk {
on-io-error detach;
fencing resource-only;
}

net {
cram-hmac-alg "sha1";
shared-secret "mydrbdlab";
}

syncer {
rate 100M;
}
}

4、定义我们要使用的web资源/etc/drbd.d/web.res,内容如下:
resource web {
on node1.a.org {
device /dev/drbd0; 定义drbd设备号
disk /dev/sda5; 定义drbd设备所使用的磁盘
address 192.168.0.202:7789; 此drbd设备监听的网络地址和端口
meta-disk internal;
}
on node2.a.org {
device /dev/drbd0;
disk /dev/sda5;
address 192.168.0.204:7789;
meta-disk internal;
}
}

将这两个配置文件拷贝到node2上,以保证配置文件相同
cd /etc/drbd.d
scp web.res global_common.conf node2:/etc/drbd.d

scp /etc/drbd.conf node2:/etc/

5、在两个节点上初始化已定义的资源并启动服务:

1)初始化资源,在node1和node2上分别执行:
drbdadm create-md web

2)启动服务,在node1和node2上分别执行:
/etc/init.d/drbd start

3)查看启动状态:
cat /proc/drbd

也可以使用drbd-overview命令来查看:
drbd-overview

从上面的信息中可以看出此时两个节点均处于Secondary状态。我们要将其设定为Primary/Secondary模型,接下来需要将node1设置为Primary,在node1上执行如下命令:

drbdadm -- --overwrite-data-of-peer primary web
注:这个设置primary节点的命令只在第一次使用,以后就可以直接使用drbdadm primary web

而后再次查看状态,可以发现数据同步过程已经开始:
drbd-overview

此时我们还可以使用如下命令动态的查看同步过程
watch -n 1 'drbd-overview'
当数据同步完成以后再次查看状态
drbd-overview

可以发现节点已经为实时状态,且两节点已经成为Primary/Secondary模型

6、将两个节点上的/dev/drbd0设备进行格式化(只有为主节点上的drbd设备能够格式化,所以要通过改变节点的角色来实现)

现在node1为主节点,所以可以直接进行格式化
mke2fs -j /dev/drbd0

然后让node1成为从节点,node2称为主节点进行drbd设备的格式化
node1:
drbdadm seconday web

node2:
drbdadm primary web
mke2fs -j /dev/drbd0

7、关闭drbd服务,并确保两节点上的drbd服务不会开机自动启动

/etc/init.d/drbd stop
ssh node2 -- '/etc/init.d/drbd stop'
chkconfig drbd off
ssh node2 -- 'chkconfig drbd off'

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/92dce069f8947ac241fe2333c5a51e1d.html