测试环境:
192.168.9.210 drbd-a
192.168.9.53 drbd-b
64位的CentOS 5.6操作系统
主NameNode:drbd-a,192.168.9.210
备用NameNode:drbd-b,192.168.9.53
由DRBD把两台NameNode虚拟成一台,主机名为DRBD,IP为192.168.9.200,由这台虚拟主机对外提供服务。平时虚拟主机指向的是drbd-a,一旦它出错,虚拟主机切换成指向drbd-b。服务器状态检测,以及切换过程,这两项功能由Pacemaker来实现。
Hadoop所需要做的事情,只是把NameNode和JobTracker的访问地址设定成那个虚拟IP,然后把hadoop.tmp.dir、dfs.name.dir参数设定的目录指向到DRBD分区,这两个参数存储着NameNode管理集群所需要的信息,所以需要镜像到从NameNode上。
一、hosts表及SSH无密码登陆配置:略
二、drbd安装配置:
工作要点(注意事项):
a)所有节点机器的底层分区使用了LVM,DRBD分区建在LV卷上,而DRBD分区使用xfs文件系统,结构如下:
XFS
|
DRBD分区
|
LV卷
|
LVM系统
|
正常磁盘
b)根据上面的结构示例,在主节点机器上(hdp0)准备一个空白LV分区,不要创建文件系统,而是要使用drbd的相关命令在它上面创建DRBD分区,最后才在DRBD分区上创建文件系统
c)在备用节点机器上(drbd-b)做相同动作,注意:lv卷的路径和大小要和主节点机器保持一致。据说,大小可以不一致,最好是备用的节点比主机点的容量大一些。
d)为DRBD创建文件系统时,只需要为主节点机器上的DRBD创建文件系统,所有备用节点上的DRBD的文件系统,都是通过同步来完成的
e)切换drbd节点时,必须首先卸载原节点上的drbd分区,并降级该节点的角色,然后才能在新节点上挂载分区并提升节点角色
f)主、备节点机器的用户名最好一致,这点一般不会成为问题,因为hadoop也是如此要求的
安装配置:
在主节点hdp0上:
drbd版本与rpm包的对应关系为:
8.0——drbd
8.2——drbd82
8.3——drbd83
我这里选择drbd 8.3的版本。另外,drbd的内核模块已经写入linux kernel 2.6.33及其以后的内核版本中,若Linux内核版本高于2.6.33,只需要安装用户管理程序即可,否则还要安装drbd内核模块,在安装drbd内核模块时要注意和用户管理程序的版本保持一致。
2、下载,安装drbd及其内核模块:
rpm -ivh drbd83-8.3.8-1.el5.centos.x86_64.rpm
rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.x86_64.rpm
安装过程就么简单!但要注意两台节点都要安装。(似乎yum安装更加简单一些?!)
确认drbd内核模块是否加载成功:
modprobe drbd
lsmod |grep drbd
3、配置drbd
cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc/drbd.conf
修改/etc/drbd.d/namenode.res文件,添加如下内容:
- resource namenode {
- meta-disk internal;
- device /dev/drbd0; #device指定的参数最后必须有一个数字,用于global的minor-count,否则会报错。device指定drbd应用层设备。
- disk /dev/VolGroup00/DRBD; #所有语句末尾必须有分号。disk指定存储数据的底层设备。
-
- on drbd-a { #注意:drbd配置文件中,机器名大小写敏感!
- address 192.168.9.210:9876;
- }
- on drbd-b {
- address 192.168.9.53:9876;
- }
- }
修改/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/; /usr/lib/drbd/; echo b > /proc/sysrq-trigger ; reboot -f";
pri-lost-after-sb "/usr/lib/drbd/; /usr/lib/drbd/; echo b > /proc/sysrq-trigger ; reboot -f";
local-io-error "/usr/lib/drbd/; /usr/lib/drbd/; echo o > /proc/sysrq-trigger ; halt -f";
# fence-peer "/usr/lib/drbd/";
# split-brain "/usr/lib/drbd/ root";
# out-of-sync "/usr/lib/drbd/ root";
# before-resync-target "/usr/lib/drbd/ -p 15 -- -c 16k";
# after-resync-target /usr/lib/drbd/un;
}
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、安装xfs所需软件:
yum install kmod-xfs xfsprogs xfsprogs-devel xfsdump
5、准备空白分区:创建空白lv卷,大小为10G,名称为DRBD(两个节点都要做!):
lvm lvcreate -L 10G -n DRBD VolGroup00
6、在LV空白分区上创建drbd分区(两个节点都要做!):
drbdadm create-md namenode #注:参数namenode为配置文件中的资源的名称
7、启动drbd,设置主节点,并查看drbd状态:
启动drbd(即启用drbd分区):/etc/rc.d/init.d/drbd start
设定主节点:首次设定primary时,并不是在某个节点上使用命令drbdadm primary resourename,而是drbdsetup /dev/drdb0 primary -o,或drbdadm --overwrite-data-of-peer primary resourcename
查看drbd运行状态:cat /proc/drbd,或service drbd status,应该可以看到节点的角色,也可以看到两个节点之间正在同步数据,如下图:
DRBD的各种状态参数的解释,参考:http://www.drbd.org/users-guide-emb/ch-admin.html#s-proc-drbd
注意:
1)启动drbd时,两个节点都要手动进行启动
2)刚开始可能有点转不过弯来,因为一般都是先创建文件系统,然后再启动服务。但这里,drbd是一个块设备,启动drbd服务实际上是在启用drbd块设备
3)只有在启用了drbd块设备,并设置了primary节点以后,才能创建并挂载文件系统!
8、为drbd分区创建文件系统:
不必等数据同步完成,就可以在DRBD分区(注:不是底层设备分区)上创建xfs文件系统:mkfs.xfs -L drbd /dev/drbd0 #创建xfs分区,并指定标签为drbd
9、使用DRBD分区
跟使用普通的硬盘分区一样,创建挂载点,挂载分区,最好写入/etc/fstab:
mkdir /data
mount /dev/drbd0 /data
注:/dev/drbd0分区只能在primary节点使用。
10、测试drbd系统是否工作正常:
在主节点drbd-a上:echo “$(date “+%F %T”) hello” >/data/test.txt
卸载drbd设备:umount /data
节点降级:drbdadm secondary namenode
然后,在备用节点drbd-b上:drbdadm primary namenode
挂载drbd设备:mount /dev/drbd0 /data
在drbd-b节点上看到了节点drbd-a上创建的test.txt文件!查看drbd状态,可以看到节点的角色已经发生了变化:
注:这个切换过程,在实际生产环境中,可以由heartbeat或pacemaker来自动完成。
在备用节点drbd-b上的工作:
1、安装drbd:略
2、配置drbd:从drbd-a节点scp过来,不需要配置
3、安装xfs所需软件:略
4、准备空白分区(lv卷):略
注:由于drbd-b的VG名称与drbd-a不同,需要改名:lvm vgrename lvm VolGroup00。但如果在resource配置文件中,分别为两个节点配置disk和device选项,就无需如此了。
5、创建DRBD分区:略
6、启动drbd系统:手动启动
7、为DRBD分区创建xfs文件系统:不需要手动操作!