Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114278
  • 博文数量: 42
  • 博客积分: 932
  • 博客等级: 准尉
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-18 22:33
文章分类
文章存档

2011年(42)

分类: LINUX

2011-09-15 18:12:50

Distributed Replicated Block Device(DRBD) 分布式的复制块设备,是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案, 2.6.33以后就被整合进了Linux内核 。单主模式为高可用集群提供了良好的共享数据存储的解决方案!关于DRBD的详细介绍会在对以前学习的集群服务里面做介绍下面我们通过一个简单的实验过程来看下DRBD的配置过程:
本实验为单主模式的配置:
配置DRBD 的要求 通过主机名访问 空间大小相同的块设备 各自安装软件即可
官方网站
到搜狐景象sohu.mirror.com 下载所需的软件包
软件包:drbd83-8.3.8-1.el5.centos.i386.rpm和kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
前提:内核版本高于2.6.33的可以只安装管理工具包,而低于此版本的就要安装以上所有的软件包!可以通过命令uname -r查看你的内核版本
具体的实验环境配置:
本配置共有两个测试节点,分别node1.a.org和node2.a.org,相的IP地址分别为192.168.0.60和192.168.0.127;
node1和node2两个节点上各提供了一个大小相同的分区作为drbd设备;我们这里为在两个节点上均为/dev/sda5,大小为512M;
系统为rhel5.4,x86平台;
环境配置:此过程相信大家都很熟悉了,直接开始不罗嗦了!
# vim /etc/hosts
192.168.0.60 node1.a.org node1
192.168.0.127 node2.a.org node2
# vim /etc/sysconfig/network-scripts/ifcfg_eth0  //更改为自己的IP地址
# vim /etc/sysconfig/network  //改为自己的主机名  比较简单就不写了
# hostname node1.a.org
接下来就是安装软件包配置了:
# yum -y --nogpgcheck localinstall drbd83-8.3.8-1.el5.centos.i386.rpm kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
配置DRBD:
 
复制样例配置文件为即将使用的配置文件:
# cp /usr/share/doc/drbd83-8.3.8/drbd.conf  /etc
配置/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/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 120;
                degr-wfc-timeout 120;
        }
        disk {
                on-io-error detach;
        fencing resource-only;
        }
        net {
        cram-hmac-alg "sha1";
         shared-secret "mydrbdlab";
        }
        syncer {
                rate 100M;
        }
}
定义一个资源/etc/drbd.d/web.res,内容如下:
resource web {
  on node1.a.org {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   192.168.0.5:7789;
    meta-disk internal;
  }
  on node2.a.org {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   192.168.0.6:7789;
    meta-disk internal;
  }
}
在两个节点上初始化已定义的资源并启动服务:
初始化资源,在Node1和Node2上分别执行:
# drbdadm create-md web
启动服务,在Node1和Node2上分别执行:
/etc/init.d/drbd start
查看启动状态:
# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 
2010-06-04 08:04:16 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:505964
也可以使用drbd-overview命令来查看:
# drbd-overview
  0:web  Connected Secondary/Secondary Inconsistent/Inconsistent C r----
从上面的信息中可以看出此时两个节点均处于Secondary状态。于是,我们接下来需要将其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令:
# drbdsetup /dev/drbd0 primary –o
  注: 也可以在要设置为Primary的节点上使用如下命令来设置主节点:
     # drbdadm -- --overwrite-data-of-peer primary web
而后再次查看状态,可以发现数据同步过程已经开始:
# drbd-overview
  0:web  SyncSource Primary/Secondary UpToDate/Inconsistent C r----
 [============>.......] sync'ed: 66.2% (172140/505964)K delay_probe: 35
 
等数据同步完成以后再次查看状态,可以发现节点已经牌实时状态,且节点已经有了主次:
# drbd-overview
  0:web  Connected Primary/Secondary UpToDate/UpToDate C r----
创建文件系统
文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:
# mke2fs -j -L DRBD /dev/drbd0
# mkdir /mnt/drbd
# mount /dev/drbd0 /mnt/drbd
切换Primary和Secondary节点
对主Primary/Secondary模型的drbd服务来讲,在某个时刻只能有一个节点为Primary,因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary:
Node1:
# cp -r /etc/drbd.* /mnt/drbd 
# umount /mnt/drbd
# drbdadm secondary web
查看状态:
# drbd-overview
  0:web  Connected Secondary/Secondary UpToDate/UpToDate C r----
Node2:
# drbdadm primary web
# drbd-overview
  0:web  Connected Primary/Secondary UpToDate/UpToDate C r----
# mkdir /mnt/drbd
# mount /dev/drbd0 /mnt/drbd
使用下面的命令查看在此前在主节点上复制至此设备的文件是否存在:
# ls /mnt/drbd
 
 
相关知识点:
drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源。
在配置文件中,global段仅能出现一次,且如果所有的配置信息都保存至同一个配置文件中而不分开为多个文件的话,global段必须位于配置文件的最开始处。目前global段中可以定义的参数仅有minor-count, dialog-refresh, disable-ip-verification和usage-count。
common段则用于定义被每一个资源默认继承的参数,可以在资源定义中使用的参数都可以在common段中定义。实际应用中,common段并非必须,但建议将多个资源共享的参数定义为common段中的参数以降低配置文件的复杂度。
resource段则用于定义drbd资源,每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中。资源在定义时必须为其命名,名字可以由非空白的ASCII字符组成。每一个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或drbd的默认中进行继承而无须定义。
 
 
阅读(2185) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~