NameNode双机热备之操作实践

本篇文章开始实际的集群搭建操作。

最开始,是集群规划,对集群的大概样子要心中有数

然后,配置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的读写速度(主要是写速度)以后才能定下来。

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

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