Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38152
  • 博文数量: 15
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-27 21:56
文章分类
文章存档

2011年(1)

2010年(7)

2009年(7)

我的朋友

分类: LINUX

2009-11-18 16:20:25

一:概述:

DRBD 
是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络RAID Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。    

源码下载
核心参考文档:

二:主要实现

假设有两台机器node2192.168.0.158 需要镜像的硬盘:/dev/sdb1

zhouhw
192.168.0.159 需要镜像的硬盘:/dev/sdb1

主服务器为192.168.0.158 

备份服务器为192.168.0.159

平常对数据读写都在192.168.0.158上实现,当192.168.0.158 down掉后可以启动192.168.0.159,实现数据的热备份。

真正的热切换需要才用HA 来实现。

 

安装前需要提前安装的rpm包:

 

1、  gcc

2、  kernel

3、  bison

4、  flex

5、  gmp-4.1.4-6.i386.rpm

 

三:下载安装

 

安装环境:Red Hat Enterprise Linux AS release 5内核版本:2.6.18-8.el5

确认内核源码存在,可到去载.

下载源码注意:当前最新的drbd-0.7.25,配置文件无法正常配置,出现一大堆错误,所以下载以前的稳定版本。tar源码解包后

运行:

A
make KDIR=/usr/src/linux   /*内核所在的位置*/

/*
如果你没有更改内核可以直接运行make,软件会直接到/lib/module里边去寻找系统环境,如果是新的内核需要对内核进行编译安装,

 

这里由于没有更改内核,所以直接执行makemake install即即可,否则make时候会错误中断掉

B
make install


安装完主要生成命令:drbdsetup ,drbdadmin

和配置文件:/etc/drbd.conf ,启动文件,/etc/init.d/drbd

模块文件:drbd.ko(在编译好的安装包目录下的drbd下可以找到)

所有命令和配置文件都可以在源码包编译成功的目录下面找到。

./scripts/drbd.conf
是最原始的配置文件,当/etc/drbd.conf被破坏,可以直接拷贝覆盖掉。

C
、创建硬件设备drbd

 mknod /dev/drbd0 b 147 0

 mknod /dev/drbd1 b 147 1

 mknod /dev/drbd2 b 147 2

 
或者用shell来建立多个:

#for i in $(seq 0 15) ; do mknod /dev/drbd$i b 147 $i ; done

D
DRBD 协议说明

    A 
数据一旦写入磁盘并发送到网络中就认为完成了写入操作。

    B 
收到接收确认就认为完成了写入操作。

    C 
收到写入确认就认为完成了写入操作。

    
您还可以选择其它参数来将数据传输给磁盘和网络选项。更多详情,请参见drbdsetup 手册页

四:配置drbd

编辑文件vi /etc/drbd.conf 修改内容如下:

global {
    usage-count yes;                 
(是否参加使用者统计,yes为参加)
}
common {
  syncer { rate 100M; }   #
如果是1000M网络,就写成1000M 
}
resource r0 {
  protocol C;                           
(数据同步协议,C为收到数据并写入后返回,确认成功)
  disk {
    on-io-error   detach;
  }
  net {
  }
  syncer {
    rate 100M;                          
(设置网络同步速率)
    al-extents 257;
  }
  on node2 {
    device     /dev/drbd0;
    disk       /dev/sdb1;
    address    192.168.0.158:7788;
    meta-disk  internal;
  }
  on zhouhw {
    device    /dev/drbd0;
    disk      /dev/sdb1;
    address   192.168.0.159:7788;
    meta-disk internal;
  }
}

五:启动drbd

先确认两台要镜像的机器是否正常,之间的网络是否通畅,需要加载的硬盘是否处于umount状态。

A
 drbd采用的是模块控制的方式

所以先要加载drbd.ko 模块

192.168..0.158服务器执行:

#insmod drbd.ko 
或者modprobe drbd

drbd.ko
可以在编译好的源码包里找到。

判断是否加载成功可以使用lsmod来查看:(如图所示)




有的话表示加载模块成功

#drbdadm up all 

启动drbd服务,使他挂在后台状态下运行.

可以使用命令netstat -an查看

有启动端口7788,同时也监听对方的7788端口,来实现数据交换。 (如图所示)


B:192.168.0.159服务器执行

#modprobe drbd

#/etc/rc.d/init.d/drbd start

netstat -atn
的输出结果,说明两台虚拟机的drbd服务已经连接上了:(如图所示)

 

 

 

六:设置权限

drbd
的基本服务都起来了,现在需要对主的服务器也就使192.168.0.158这台服务器进行配置,让他能够对drbd0设备进行读写。

192.168.0.158机器上运行

#drbdadm -- --do-what-I-say  primary all   #
设置192.168.0.158服务器为同步主目录,也就是同步以192.168.0.158的这个分区为准.

注意命令格式需要一样,没有任何提示的话表示基本上成功了

#sfdisk -s

可以看见有一个硬件设备:/dev/drbd0

 
此时,两台设备之间就建立起一个镜像,您可以查看/proc/drbd 进行核实。

# cat /proc/drbd

如果原来硬盘没有文件系统的话,现在您可以在设备/dev/drbd0上创建一个文件系统,然后把它加载到192.168.0.158上。 

#mkfs.ext3  /dev/drbd0

 

# mount /dev/drbd  /turbomail

现在/dev/drbd0就等于你服务器上面的一个硬件设备,你可以对他进行任何的读写操作。

七:drbd测试:

1:
192.168.0.158主服务器上:

#drbdadm primary all

#touch /turbomail/aaa
完后,在执行

#umount /turbomail

#drbdadm secondary all

2:
接着到192.168.0.159备用服务器上执行

#drbdadm primary all

#mount /dev/drbd0 /turbomail

#ls -l /turbomail

aaa

Ok,
没问题,可以看到数据在192.168.0.158服务器写入,192.168.0.159马上可以看到.

 

几点注意的地方:

1. mount drbd
设备以前必须把设备切换到primary状态。

2. 
两个节点中,同一时刻只能有一台处于primary状态,另一台处于secondary状态。

3. 
处于secondary状态的服务器上不能加载drbd设备。

4. 
主备服务器同步的两个分区大小最好相同,这样不至于浪费磁盘空间,因为drbd磁盘镜像相当于raid 1.

文件:drbd数据的备份.rar
大小:31KB
下载:下载
阅读(1211) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~