理论上DRBD+OCFS2 可以提供高可用的集群文件系统供集群节点间访问相互镜像的数据。为了在生产环境上实施前对其有效性进行测试,遂在VirtualBox环境下搭建了一个DRBD+OCFS2 测试,本文就对这一过程进行了纪录。
相关实验环境介绍
VirtualBox 主机:RHEL5.1
VirtualBox 版本:4.0.6
VirtualBox vms(两台)
os:Debian6.0.1a ,采用debian-6.0.1a-i386-netinst.iso安装
hd: sda1 -----------7.5G ext3 /
sda5 -----------512M swap
sdb -----------100M (用作drbd块和ocfs2文件系统)
net: HostOnly,模拟的intel 1000M网卡。
主要过程:
1. vms的安装,只安装了1个vms,另外一个采用导出再导入的方式安装,只是单独配置了网络,在HostOnly模式下,这两台vms才能互相通信(这个是后续测试的必要条件),因为默认HostOnly的vms上网络没有启动,所以需要配置网络,默认HostOnly下主机是vboxnet0,其地址是192.168.56.1,所以两个vms分别配置为
192.168.56.101(debian1)和192.168.56.102(debian2),两个vms的主机名称分别为debian1和debian2(这个在drbd配置中要用到),此外按要求安装drbd和ocfs2相应工具,可以配置好apt后采用apt-get的方式安装,分别是drbd8-utils和ocfs2-tools程序包。安装好后分别在vms中ping一下另外一台vms,保证网络互通。
2. drbd配置
修改 /etc/drbd.d/global_common.conf 中
- syncer {
-
rate 10M;#默认为1M,注意这里是10MBytes的意思,要和网卡能力等匹配。
-
}
添加 /etc/drbd.d/r0.res文件,内容:
- resource r0 {
-
protocol C;
-
device /dev/drbd0;
-
disk /dev/sdb;
-
meta-disk internal;
-
startup {
-
become-primary-on both;
-
}
-
net {
-
allow-two-primaries;
-
after-sb-0pri discard-zero-changes;
-
after-sb-1pri discard-secondary;
-
after-sb-2pri disconnect;
-
}
-
on debian1 {
- address 192.168.56.101:7898;
-
}
-
on debian2 {
-
address 192.168.56.102:7898;
- }
-
}
注意,两台vms都需要有以上配置。
在两个vms中执行:
- #drbdadm create-md r0
-
#/etc/init.d/drbd start
-
#cat /proc/drbd
输出是(类似,主要是有
0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r----)
- version: 8.3.7 (api:88/proto:86-91)
-
srcversion: EE47D8BF18AC166BE219757
-
0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r----
-
ns:17122 nr:658 dw:1371 dr:18276 al:5 bm:5 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
表明drbd已经成功启动,两个vms中drbd对应的设备都以主设备挂载了。至此drbd配置完成。
3. ocfs2 配置和挂载。
依据
- #/etc/init.d/o2cb configure
配置好o2cb,另编辑产生/etc/ocfs2/cluster.conf,内容如下:
- node:
-
ip_port = 7777
-
ip_address = 192.168.56.101
-
number = 0
-
name = debian1
-
cluster = ocfs2
-
node:
-
ip_port = 7777
-
ip_address = 192.168.56.102
-
number = 1
-
name = debian2
-
cluster = ocfs2
-
cluster:
-
node_count = 2
-
name = ocfs2
启动o2cb和ocfs2服务。
另在其中一台vms中执行
- #mkfs.ocfs2 -N 2 -L ocfs2_drbd0 /dev/drbd0
来格式化好须挂载的设备(只需要在一台vms上执行,另外一台因为drbd会自动完成)。
至此实际上ocfs2也已经配置好了。
4.测试,在两台vms上分别执行
- #mount -t ocfs2 /dev/drbd0 /shared
把drbd+ocfs2分区分别挂载到/shared上,
a.(镜像测试)在一台vms上的/shared下产生的文件(目录),可以在另外一台vms对应位置访问到。可见自动镜像是成功的。
b.(单机故障)停在一台vms,在另外一台vms的/shared上进行相应操作,在停止的vms重新启动,并重新挂载了/dev/drbd0 到/shared上后,故障期间/shared上的操作反映出来了。可见这样的配置没有单点故障。
5.未做的测试(测试的不足):
a.未进行读写效率测试,因为在VirtualBox下模拟,和生产环境区别很大,读写效率测试又受限于系统性能/磁盘性能以及网络性能。
b.故障模拟不完整,比如没有模拟同时写相同文件(根据ocfs2,有读写锁,可能不能同时写)但存在突然断网下的写相同文件等问题。
6.参考文献
阅读(3821) | 评论(1) | 转发(0) |