DRBD部署



目录(?)[+]

DRBD部署


以下是关于DRBD的部署,关于DRBD的介绍请参考http://blog.csdn.net/rzhzhz/article/details/7103772

部署环境


虚拟机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

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页