什么是DRBD? DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络RAID。 drbd 的应用范围是什么?除此之外,创建高可用性集群还需要什么? Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。其他所需的组件有集群成员服 务,如TurboHA 或心跳连接,以及一些能在块设备上运行的应用程序。 例如:什么是DRBD? DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络RAID。 drbd 的应用范围是什么?除此之外,创建高可用性集群还需要什么? Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。其他所需的组件有集群成员服 务,如TurboHA 或心跳连接,以及一些能在块设备上运行的应用程序。 例如: o 裸I/O o 文件系统及fsck o 具有恢复能力的数据库。 它是如何工作的? 每个设备(drbd 提供了不止一个设备)都有一个状态,可能是‘主’状态或‘辅助’状态。在带有主要设备的节点上,应用程序应能运行和 访问设备(/dev/nbX)。每次写入都会发往本地低层设备和带有‘辅助’状态设备的节点中。次要设备只能简单地把数据写入它的低层块设 备上。读取数据通常在本地进行。如果主要节点发生故障,心跳将会把辅助设备转换到主状态,并启动其上的应用程序。(如果您将它和无 日志FS 一起使用,则需要运行fsck)。 如果发生故障的节点恢复工作,它就会成为新的辅助节点,而且必须使自己的内容与主节点的内容保持同步。当然,这些操作不会干扰到后 台的服务。 drbd 同现在的HA 集群有什么关系? 大部分现行高可用性集群(如:惠普、康柏等等)使用的是共享存储器,因此存储器连接多个节点(用共享的SCSI 总线或光纤通道就可以 做到)。Drbd 也可以作为一个共享的设备,但是它并不需要任何不常见的硬件。它在IP 网络中运行,而且在价格上IP 网络要比专用的存 储网络经济的多。目前,drbd 每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群来讲已经足够用了。以后的版本 将支持两个节点进行读写存取。这很有用,比如对GFS 来讲就是如此。兼容性Drbd 可以在ide、SCSI 分区和整个驱动器之上运行,但不能 在回路模块设备上运行。(如果您硬要这样做,它就会发生死锁)。Drbd 也不能在回送网络设备中运行。(因为它同样会发生死锁:所有 请求都会被发送设备占用,发送流程也会阻塞在sock_sendmsg()中。有时,接收线程正从网络中提取数据块,并试图把它放在高速缓存器 中;但系统却要把一些数据块从高速缓存器中取到磁盘中。这种情况往往会在接收器的环境下发生,因为所有的请求都已经被接收器块占用 了。 安装 下载软件 最新的稳定版本为0.6.11,您可从http://www.drbd.org/releases.html 下载它。 环镜:redhat9.0 drbd.0.7.10.tar.gz 配置:查看解压的INSTALL文件。 1.[wanwan@root]cd /usr/src/linux-2.4 2.[wanwan@root]make mrproper 3.[wanwan@root]cp configs/kernel-2.4.20-i586.config ./config 4.[wanwan@root]make -s oldconfig_nonint ; make -s oldconfig_nonint 5.[wanwan@root] vi Makefile 修改 -8customer 把 customer删除 6.[wanwan@root] make dep 7.[wanwan@root]make include/linux/version.h 解压drbd-0.7.10 8.[wanwan@root]cd /usr/src/drbd-0.7.10/drbd 9.[wanwan@root]make clean all 10.[wanwan@root]make; 11.[wanwan@root]make install; 测试加载drbd 模块 如果这些都已经创建和安装妥当,您就可以测试加载模块了。 $ /sbin/insmod drbd 如果一切正常,您不会看见任何ERROR(错误)信息,用Ismod 程序可以验证模块是否已被加载。 dev2-98:~/rpm/SPECS # lsmod 最后修改配置文件/etc/drbd.conf 参考如下: resource drbd0 { //设备名 protocol C; incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f"; startup { degr-wfc-timeout 120; } disk { on-io-error detach; } net { } syncer { rate 10M; group 1; al-extents 257; } on Web_1{ //主机名 device /dev/drbd0; //设备名 disk /dev/sda2; //硬盘符 address 192.168.3.195:7788; //主机IP地址:端口 meta-disk internal; } on web_2 { //辅计算机 device /dev/drbd0; //设备名 disk /dev/sda5; //硬盘符 address 192.168.2.250:7788; //IP地址:端口 meta-disk internal; } 另:增设为主镜像 drdbsetup /dev/drbd0 primary --do-what-I-say; 建立虚拟设备for i in `seq 0 15` ; do mknod -m 0660 /dev/drbd$i b 147 $i; done 镜像设备名:mount /dev/drbd0 /dev/sda2 启动drbd /etc/init.d/drbd start/stop/reload/restart/ 后续的应用等续. |