本篇文章开始实际的集群搭建操作。
最开始,是集群规划,对集群的大概样子要心中有数
然后,配置drbd和pacemaker
其次,Hadoop的配置,主要是指跟集群有关的配置
最后才是集群资源的配置
一、规划:
我们的Namenode双机热备,需要哪些资源?
首先,一般双节点主备方案所通用的资源:
一个虚拟IP:
一个drbd:
一个文件系统:drbd主备节点切换时,卸载或加载相应的分区
一个主从集群资源:这个资源是从drbd延伸过来的,因为drbd是两个节点上同时运行,所以要区分主从,这个资源用ms命令创建,而不是primitive
然后是特定集群中的资源,对于hadoop的namenode集群而言,资源如下:
一个hdfs服务:启动namenode的hdfs的服务
一个jobtracker服务:启动namenode的jobtracker服务
这两个资源最好编组,比如,把这两个资源编组为hadoop,否则在写约束时比较繁杂。
关于组资源:在很多案例中,人们使用group命令把虚拟IP和其它运行于DRBD主节点之上的服务(如文件系统、apache或mysql等)进行编组,这样可以简化约束条件配置。
资源编组有一些特点:
1、一般是两个以上的资源进行编组(两个也可以),编组的资源有一个额外的属性,即允许组中资源并行地启用;
2、组中的所有资源默认在同一个物理节点上运行;
3、组中的资源以显示顺序启动,以相反顺序停止;
4、如果组中的某资源在某节点上无法运行,则该资源其后的其它资源也不允许运行
5、在配置约束时,组中的资源通常使用组ID进行统一配置
需要哪些约束?
1、组资源hadoop要和虚拟IP绑定在一起,colocation约束
2、文件系统要和drbd的主节点绑定在一起,同样是colocation约束
3、组资源hadoop要和文件系统绑定在一起,也是colocation约束
4、虚拟IP先于组资源hadoop启动,是order约束
5、drbd提升主节点以后,再启动文件系统,又一个order约束
6、文件系统挂载以后,再启动hadoop,还是order约束
7、最后,两个额外的属性:property no-quorum-policy=ignore和stonith-enabled=false,这两个属性在双节点主备集群中的必要性,官方文档有说明。
总结资源配置顺序如下:
VIP--hadoop--两个资源的约束
--drbd--文件系统--两个资源的约束 (cib模式)
--hadoop--文件系统--这两个资源的约束
注意:drbd及文件系统配置时,要使用cib模式,否则会报错,我也是折腾了很久也明白过来的!
二、pacemaker的配置:
pacemaker的安装与配置,参考本博客pacemaker相关的文章。
配置文件:略。
三、drbd的配置:
drbd的安装与配置,已经有相关的文章。这里直接贴配置文件:
resource配置文件:略。
global-common配置文件:
......略
......
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";
after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
}
startup {
# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
}
disk {
on-io-error detach;
fencing resource-only;
}
......略
......
syncer {
rate 10M;
al-extents 512;
csums-alg sha1;
}
上述配置文件只贴出了handler、disk等部分配置段,有几点要说一下:
1、配置文件删除了startup部分的配置。在配置HA时遇到了错误,在解决错误的过程中删掉了该配置,后来问题解决,也没有补上;个人觉得,HA中drbd由pacemaker来控制,pacemaker中也有相关的启动参数,似乎不必配置drbd本身的启动参数了。纯属个人意见。
2、有两个地方还需要调优:一是handler部分的split-brain,目前把邮件发送到root@localhost,以后要搭建postfix,发邮件到我的工作邮箱;还有一个是syncer部分的rate,目前是10M,以后还要调优,这个需要测试xfs的读写速度(主要是写速度)以后才能定下来。