虚拟机2台(1G内存,40G硬盘,ubuntu操作系统)
primary节点: hadoop2-virtual-machine1 10.10.11.252
secondary节点: hadoop3-virtual-machine5 10.10.11.160
首先我们来看看DRBD的运行环境,它基于文件系统和块设备之间,那我们从最底层磁盘开始依次往上安装部署。
1. 在主备上准备两块大小相同的磁盘或分区(物理分区或逻辑分区均可)如下:
hadoop2-virtual-machine /dev/sdb1
hadoop3-virtual-machine /dev/sdb1
关于磁盘分区及使用逻辑分区的问题请参考备注。
2. 在主备上分别安装DRBD管理工具,apt-get install drbd8-utils
DRBD已经合并到linux kernel 2.6.33及以后内核版本中,这里直接安装管理工具即可,若内核版本低于2.6.33时请额外安装DRBD内核模块,且与管理工具版本保持一致。
3. 在hadoop2-virtual-machine上配置配置文件(/etc/drbd.d目录下)global_common.conf,然后scp到hadoop3-virtual-machine相同目录下.
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 degr-wfc-timeout outdated-wfc-timeout wait-after-sb
wfc-timeout 15;
degr-wfc-timeout 15;
outdated-wfc-timeout 15;
}
disk {
on-io-error detach;
fencing resource-and-stonith;
}
net {
timeout 60;
connect-int 15;
ping-int 15;
ping-timeout 50;
max-buffers 8192;
ko-count 100;
cram-hmac-alg sha1;
shared-secret "123456";
}
syncer {
# rate after al-extents use-rle cpu-mask verify-alg csums-alg
rate 10M;
al-extents 512;
#verify-alg sha1;
csums-alg sha1;
}
}
4. 在hadoop2-virtual-machine上添加资源文件share.res(/etc/drbd.d目录下),然后scp到hadoop3-virtual-machine相同目录下,文件内容如下:
resource share {
meta-disk internal;
device /dev/drbd0; #device指定的参数最后必须有一个数字,用于global的minor-count,否则会报错。device指定drbd应用层设备。
disk /dev/VolGroup00/DRBD;
on hadoop2-virtual-machine{ #注意:drbd配置文件中,机器名大小写敏感!
address 10.10.11.252:9876;
}
on hadoop3-virtual-machine {
address 10.10.11.160:9876;
}
}
5. 在两台机器上分别创建DRBD分区,drbdadm create-md share,share为资源名,对应上面share.res,后面的share皆如此。这一步可能会出现错误,详情见备注。
6. 在两台机器上启动DRBD,service drbd start 或 /etc/init.d/drbd start
7. 查看DRBD启动状态,service drbd status 或 /etc/init.d/drbd status,cat /proc/drbd 或 drbd-overview 查看数据同步状态,第一次同步数据比较慢,只有等数据同步完才能正常使用DRBD。
8. 把hadoop2-virtual-machine设置为 primary节点, 首次设置primary时用命令drbdsetup /dev/drdb0 primary -o 或drbdadm --overwrite-data-of-peer primary share ,而不能直接用命令drbdadm primary share, 再次查看DRBD状态
9. 在hadoop2-virtual-machine上为DRBD分区(/dev/drbd0)创建xfs文件系统,并制定标签为drbd 。mkfs.xfs -L drbd /dev/drbd0,若提示未安装xfs,直接apt-get install xfsprogs安装
10. 挂载DRBD分区到本地(只能在primary节点上挂载),首先创建本地文件夹,mkdir /share。之后mount /dev/drbd0 /share,然后就可以使用drbd分区了。
11. 测试,首先在primary节点hadoop2-virtual-machine的/share文件夹中新建test文档touch /share/test,卸载DRBD分区/dev/drbd0, umount /dev/drbd0,把primary节点降为secondary节点drbdadm secondary share。
12. 在secondary节点hadoop3-virtual-machine上,把secondary升级为paimary节点 drbdadm primary share,创建/share文件夹 mkdir /share,挂载DRBD分区/dev/drbd0到本地 mount /dev/drbd0 /share,然后查看/share文件夹如果发现test文件则DRBD安装成功。
备注:
1. 磁盘分区操作流程
a) fdisk -l 查看磁盘信息
b) fdisk /dev/sdb 操作磁盘/dev/sdb
c) n 选择新建分区
d) p 选择主分区
e) 1 选择第几个扩展分区
f) 1 选择起始磁盘块数(根据实际情况选择)
g) 500 选择结束磁盘块数(根据实际情况选择)
h) w 保存分区
i) mkfs.ext3 /dev/sdb1 格式化分区(这个根据实际情况来定,DEBD安装中不需要分区有任何文件系统)
2. 以上的磁盘分区/dev/sdb1是从磁盘/dev/sdb上新建的分区,实际应用的时候我们可以直接使用整个磁盘。在使用整个磁盘或者分区的时候磁盘或分区上不能先有文件系统(逻辑分区不会出现此问题),不然创建资源的时候会出现如下错误:
root@hadoop2-virtual-machine:/home/hadoop# drbdadm create-md share
md_offset 4112601088
al_offset 4112568320
bm_offset 4112441344
Found ext3 filesystem
4016216 kB data area apparently used
4016056 kB left usable by current configuration
Device size would be truncated, which would corrupt data and result in 'access beyond end of device' errors.
You need to either
* use external meta data (recommended)
* shrink that filesystem first
* zero out the device (destroy the filesystem)
Operation refused.
Command 'drbdmeta 0 v08 /dev/sdb1 internal create-md' terminated with exit code 40
drbdadm create-md share: exited with code 40
解决办法:
root@hadoop2-virtual-machine:/home/hadoop# dd if=/dev/zero bs=1M count=1 of=/dev/sdb1
记录了1+0 的读入
记录了1+0 的写出
1048576字节(1.0 MB)已复制,0.00439296 秒,239 MB/秒
root@hadoop2-virtual-machine:/home/hadoop# drbdadm create-md share
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
3. 我们不但可以使用物理分区,也可以使用逻辑分区,使用逻辑分区的好处我在这就不再罗嗦了。以下简单介绍下操作流程
a) apt-get install lvm2 安装lvm工具
b) pvcreate /dev/sdb1 创建物理卷
c) vgcreate vgGroup /dev/sdb1 创建卷组(可以把多个物理卷归到一个卷组)
d) vgchange –ay vgGroup 激活卷组
e) lvcreate -L 10G -n DRBD vgGroup 创建逻辑卷,卷名为DRBD,大小为10G,所属卷组vgGroup
然后我们就可以使用该逻辑券/dev/vgGroup/DRBD了(在share.res中device项可设置为/dev/vgGroup/DRBD)。
4. 设置DRBD开机启动
chkconfig --level 2345 drbd on