一、DRBD简介

    分布式复制块设备(DRBD 技术)是一种基于软件的,无共享,复制的存储解决方案,在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像

   DRBD 镜像数据的特点:

 实时性:当应用对磁盘的数据进行修改时,复制立即发生。

 透明性:应用程序的数据存储在镜像设备上是独立和透明的,数据可存储在不同的服务器

上。

 同步镜像和异步镜像:同步镜像,当本地发申请进行写操作进行时,同步写到两台服务器

上。异步镜像,当本地写申请已经完成对本地的写操作时,开始对对应的服务器进行写操作

二、要求及拓扑

  本实验部署drbd+heartbeat+nfs环境,建立一个高可用(HA)的文件系统服务器集群,通过DRBD保证了服务器数据的完整性和一致性。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主服务器和备份服务器上。切换时,远程主机只要使用它上面的那份备份数据,就可以继续提供主服务器上相同的服务,并且client用户对主服务器的故障无感知。

三、实验环境

系统:VMware redhat-5.4

master  node1.abc.com    192.168.2.1    eth1 192.168.3.1

slave  node2.abc.com    192.168.2.2     eth1 192.168.3.2 

虚拟ip:192.168.2.100

两台服务器新加一块硬盘/dev/sdb,创建/dev/sdb1分区互为镜像

注意创建分区时,大小要一致,若不一致,以小的为准

//时间相同,读取主板时间作为当前时间

# hwclock  -s  

//两个服务器的hosts文件修改,可以正常解析ip与主机名

# echo "192.168.2.1  node1.abc.com" >> /etc/hosts

# echo "192.168.2.2  node1.abc.com" >> /etc/hosts

四、DRBD配置

node1node2做以下操作:(在node1在操作,然后可通过scp命令实现相关文件拷贝到node2上)

1、安装drbd

#rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm

# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

# modprobe  drbd      //加载drbd模块

# lsmod  |grep drbd    //查看模块加载情况

2、主要目录及命令

/etc/drbd.conf 配置文件

/etc/rc.d/init.d/drbd 配置脚本

/etc/drbd.d/  主目录

/sbin/drbdadm 高级别管理工具

/sbin/drbdmeta 低级别管理工具

/sbin/drbdsetup 低级别管理工具

/usr/sbin/drbd-overview 查看工具

注: rpm  -ql   drbd83 查看

3、修改配置文件

#vim /etc/drbd.conf

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

include "drbd.d/global_common.conf";

include "drbd.d/*.res";

~                                                                            

~                                                                                        

:r /usr/share/doc/drbd83-8.3.8/drbd.conf     //末行模式下执行读命令来加载

#cp /etc/drbd.d/global_common.conf   /etc/drbd.d/global_common.conf.bak

# vim /etc/drbd.d/global_common.conf    (替换掉原来的内容)

global {

        usage-count yes;

        # minor-count dialog-refresh disable-ip-verification

}

common {

        protocol C;  

        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;

         }

     }

# vim /etc/drbd.d/web.res    //定义资源 

resource  web {               //资源名称

        on node1.abc.com {

        device   /dev/drbd0;

        disk    /dev/sdb1;

        address  192.168.2.1:7789;

        meta-disk       internal;

        }  

        on node2.abc.com {

        device   /dev/drbd0;

        disk    /dev/sdb1;

        address  192.168.2.2:7789;

        meta-disk       internal;

        }   

}

4、初始化,启动服务 

#drbdadm   create-md web

# service drbd start   &&chkconfig drbd on   //并设为开机启动

5、指定主节点

#drbdadm   -- --overwrite-data-of-peer primary web   (在自定义主节点上执行)

   不加 “-- --overwrite-data-of-peer

   错误:

   0: State change failed: (-2) Need access to UpToDate data

   Command 'drbdsetup 0 primary' terminated with exit code 17

  日志信息:block drbd0: State change failed: Need access to UpToDate data

6、创建目录,实现挂载(在主节点上执行)

#mkdir /data

#mkfs -t ext3 /dev/drbd0 //格式化

#mount /dev/drbd0  /data

7、查看drbd状态

#drbd-overview   #service drbd status

主节点node1

备份节点nod2

五、nfs配置

两台服务器配置相同,可通过scp拷贝

1、修改nfs的共享菜单

# echo "/data  192.168.2.0/24(rw,sync,no_root_squash)" > /etc/exports

2、启动服务

# service nfs start && chkconfig nfs on

 

3、修改nfs启动脚本。

   /etc/init.d/nfs中的stop部分killproc 

   脚本nfsd  -2  修改为 -9

116   stop)

117         # Stop daemons.

118         echo -n $"Shutting down NFS mountd: "

119         killproc rpc.mountd

120         echo

121         echo -n $"Shutting down NFS daemon: "

122         killproc nfsd -9

六、heartbeat配置

node1node2做如下操作

1、安装

heartbeat-2.1.4-11.el5.i386.rpm

heartbeat-pils-2.1.4-10.el5.i386.rpm

heartbeat-stonith-2.1.4-11.el5.i386.rpm

依赖包:

libnet-1.1.4-3.el5.i386.rpm

perl-MailTools-1.77-1.el5.noarch.rpm

注:下载地址http://vault.centos.org/5.4/extras

2、拷贝配置文档 

# cd /usr/share/doc/heartbeat-2.1.4/

# cp authkeys  ha.cf  haresources  /etc/ha.d/

3、修改配置文档

1)、ha.cf配置(做如下添加)

bcast eth1

node node1.abc.com

node node2.abc.com

2)、haresources资源文件

#echo node1.abc.com  192.168.2.100/24/eth0 drbddisk::web  Filesystem::/dev/drbd0::/d

ata::ext3 killnfsd  >> /etc/ha.d/haresoures

3)、验证authkeys

#vim authkeys

auth 3

3 md5 hello

  #chmod 600  authkeys  设置权限值为600

4)、killnfsd服务控制脚本配置

 #echo killall -9 nfsd; /etc/init.d/nfs restart; exit 0  >>/etc/ha.d/resource.d/killnfsd

 #chmod 755 /etc/ha.d/resource.d/killnfsd  //添加可执行权限

4、开启Heartbeat服务

#service heartbeat start && chkconfig heartbeat on

七、测试

1、创建挂载

#mkdir  /mnt/data

#mount 192.168.2.100:/data  /mnt/data

2、编写shell,间隔1s创建一次空文件xxx

# vim /mnt/data/test.sh

while true

do echo  ----\> trying touch xxx:$(date)

        touch   xxx

   echo  \<---- done touch xxx: $(date)

   echo

   sleep 1

done

3、将主节点node1heartbeat服务停止,则备份节点node2接管服务

#service heartbeat stop    //node1接点

注:以上实现的drbd的单主模式, 任何资源在任何特定的时间,集群中只存在一个主节点。 正是因为这样在集群中只能有一个节点可以随时操作数据,这种模式可用在任何的文件系统上(EXT3EXT4XFS等等)。



本文转自 刘园  51CTO博客,原文链接:http://blog.51cto.com/colynn/1123418