Namenode的双机热备之drbd51CTO博客 - 凯发娱乐

Namenode的双机热备之drbd51CTO博客

2019年04月01日09时56分50秒 | 作者: 醉波 | 标签: 节点,分区,体系 | 浏览: 2991

介绍DRBD的不错的网文: http://blogold.chinaunix.net/u/24866/showart_2549042.html http://arch.huatai.me/?p=600   一、DRBD原理 二、DRBD的装置与装备      DRBD的装置      DRBD的装备      DRBD分区及其文件体系的创立 三、DRBD的测验   DRBD原理: 官方网站:http://www.drbd.org/home/what-is-drbd/ 网站主页介绍了什么是DRBD,那个图也很好,尽管细节有待于咱们去开掘,但大致上说了解了DRBD的作业流程。 结合网上材料,主要是IBM网站和DRBD官网上的文章,谈一下我对DRBD的了解: DRBD是一个体系,架构分为两个部分:一个是内核模块,用于虚拟一个块设备;另一个是用户空间办理程序,用于和DRBD内核模块通讯,以办理DRBD资源。咱们平常所说的DRBD,有时分指的是DRBD体系,但更多时分是指DRBD虚拟块,所以网上许多文章都这样说:“DRBD是个块设备”。若没有特别阐明,后文所说的DRBD一概是指DRBD虚拟块。 用户空间办理东西有: drbd:用来发动和中止drbd的脚本。 drbddisk:用来符号DRBD设备为primary,和挂载文件体系。它规划为用来被Heartbeat运用。 drbdadm:最高层的办理东西,drbd.conf文件便是被该东西所读取。常用东西。 drbdsetup:用于装备现已加载到内核中的drbd模块,底层东西,不常用。 drbdmeta:用于办理和修正drbd的meta数据结构,不常用。 DRBD体系是这样作业的:DRBD块被加载到正常的块设备之上,文件体系之下,在文件体系和磁盘之间构成一个中间层。这样,当用户往文件体系中写入数据时,数据被正式写入磁盘之前会被DRBD体系截获,DRBD体系在捕获到有磁盘写入时,会告诉用户空间办理程序把这些数据复制一份,写入长途DRBD镜像,然后存入DRBD镜像所映射的磁盘。 DRBD块尽管是虚拟的,但完全能够把它看作一个正常的块设备而进行运用,能够创立一个DRBD分区,能够为它创立文件体系,能够把DRBD分区挂载到文件体系中的某个目录...... 在咱们往DRBD分区写入数据之前,DRBD体系现已为整个DRBD块做了长途镜像。咱们把想要备份的数据写入DRBD分区,DRBD体系就会主动把这些数据写入到自己的长途镜像中。  DRBD体系向虚拟块的镜像中写入数据时,有三种protocol:   A--数据一旦写入磁盘并发送到网络中就以为完结了写入操作   B--收到接纳承认就以为完结了写入操作   C--收到写入承认就以为完结了写入操作  很明显,protocol C愈加安全一些。这个东西在DRBD的装备文件会用到。    测验环境: 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上: 1、drbd版别的挑选:drbd官方网站主张下载与内核版别相对应的drbd版别,网站也给出几大Linux分发的相应版别,参阅:http://www.drbd.org/download/mainline/,以及 http://www.drbd.org/download/packages/ 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及其内核模块: wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/drbd83-8.3.8-1.el5.centos.x86_64.rpm wget http://mirror.centos.org/centos/5/extras/x86_64/RPMS/kmod-drbd83-8.3.8-1.el5.centos.x86_64.rpm 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 装备文件语法及具体选项,参阅:http://www.drbd.org/users-guide-emb/re-drbdconf.html,也能够参阅我个人翻译的文档: cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc/drbd.conf 修正/etc/drbd.d/namenode.res文件,增加如下内容:
  1. resource namenode {   
  2. meta-disk internal;   
  3. device /dev/drbd0; #device指定的参数最终有必要有一个数字,用于global的minor-count,不然会报错。device指定drbd应用层设备。   
  4. disk /dev/VolGroup00/DRBD; #一切句子结尾有必要有分号。disk指定存储数据的底层设备。   
  5.  
  6. on drbd-a {    #留意:drbd装备文件中,机器名巨细写灵敏!
  7. address 192.168.9.210:9876;   
  8. }   
  9. on drbd-b {   
  10. address 192.168.9.53:9876;   
  11. }   
  12. }  
修正/etc/drbd.d/global_common.conf,修正如下:
  1. global {  
  2.         usage-count no;  
  3.         # minor-count dialog-refresh disable-ip-verification  
  4. }  
  5.  
  6. common {  
  7.         protocol C;  
  8.  
  9.         handlers {  
  10.                 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";  
  11.                 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";  
  12.                 local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";  
  13.                 # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";  
  14.                 # split-brain "/usr/lib/drbd/notify-split-brain.sh root";  
  15.                 # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";  
  16.                 # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15  -c 16k";  
  17.                 # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;  
  18.         }  
  19.  
  20.         startup {  
  21.                 # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb  
  22.                 wfc-timeout 15;  
  23.                 degr-wfc-timeout 15;  
  24.                 outdated-wfc-timeout 15;  
  25.         }  
  26.  
  27.         disk {  
  28.                 on-io-error detach;  
  29.                 fencing resource-and-stonith;  
  30.         }  
  31.  
  32.         net {  
  33.                 timeout 60;  
  34.                 connect-int 15;  
  35.                 ping-int 15;  
  36.                 ping-timeout 50;  
  37.                 max-buffers 8192;  
  38.                 ko-count 100;  
  39.                 cram-hmac-alg sha1;  
  40.                 shared-secret "123456";                  
  41.         }  
  42.  
  43.         syncer {  
  44.                 # rate after al-extents use-rle cpu-mask verify-alg csums-alg  
  45.                 rate 10M;  
  46.                 al-extents 512;  
  47.                #verify-alg sha1;  
  48.                 csums-alg sha1;  
  49.         }  
 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文件体系:不需求手动操作!
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章