DRBD的简单配置

3071阅读 0评论2011-09-15 hanlenry
分类:LINUX

DRBD:Distribution Replicated Block Device(分布式的复制块设备)
在linux2.6.33之后的系统,DRBD则直接做进了内核。我的实验所用的内核是2.6.18的,所以自身没有drbd的模块。只要我们将drbd的内核模块的补丁装上就可以使用了,不过drbd也有两个程序,一个工作在内核中,一个工作在用户空间。因此我们还需要安装用户空间的程序。

(一)DRBD的工作原理:

所有存储到本地磁盘对应的磁盘设备上的文件,都经过了DRBD,于是DRBD就将数据复制一份,通过tcp/ip网络打包封装,然后通过本地网卡传送给另外一个节点。到达另一个节点网卡后,经过拆包解封以后,送给tcp/ip协议栈,并转交给此节点的DRBD,DRBD将数据存放到磁盘上。

注意:数据在右节点传递时,并没有进入用户空间。

(二)DRBD的基础概念:
1)资源:
       资源的名字:用于标识一个独立的DRBD架构,每一个DRBD要明确定义在一个资源上。靠资                            源名来标识,资源名只能用纯粹的ASCII码来表示。
               DRBD设备:每个DRBD设备应在各自的节点上。对应的设备文件是什么?主设备号:147 
                         次设备号从0开始。  设备名:/dev/drbdn.
       磁盘相关的配置信息:定义创建DRBD设备需要用到哪个节点的哪个分区,以及定义有关                                      DRBD的元数据信息的存放位置
       网络相关的配置信息:定义是否认证
2)资源角色:Primary or Secondary
             DRBD只使用双节点。primary,唯一标识读写操作,可以格式化,可以挂载                                                secondary,不允许本地用户读写操作。

        3)DRDB 模型

           单主节点(主从模型):任何资源,在任何时刻,只能被主节点读写,文件系统可以是:                                      ext3,ext4,xfs
           双主节点(主主模型):任何用户,在任何时刻,可以通过任意节点对DRBD的读写操作,但是                                  双主节点模型,必须依靠集群文件系统来实现   可以通过GFS或ocfs2
 来实现。

4)复制模型
          protocol A 异步复制,只要主节点传递完成,就认为完成。
          protocol B 半同步复制,只要主节点传递完成了,并且从节点传递到内存中了
          protocol C 完全同步复制,本地存储到磁盘上,并且远程也传递到磁盘上了。

-------------------------------------------------------------------------------------------


实验环境:有两个节点,分别为node1.hanlenry.com和node2.hanlenry.com。对应的ip分别为192.168.0.111和192.168.0.112。node1和node2两个节点上各提供了一个大小相同的分区作为drbd设备;
我们这里为在两个节点上均为/dev/sda5,大小为5G;

1.创建分区
node1和node2:
#fdisk /dev/sda

2.配置主机名,ip,添加地址解析条目
node1和node2:
修改ip我在这里就不在演示了。
修改主机名,修改为相应的主机名
#vim /etc/sysconfig/network
修改/etc/hosts文件
#vim /etc/hosts
192.168.0.111 node1.hanlenry.com
192.168.0.112 node2.hanlenry.com
3.安装drbd
所需软件包:drbd83-8.3.8-1.el5.centos.i386.rpm  kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

node1和node2上:
# yum -y --nogpgcheck localinstall drbd83-8.3.8-1.el5.centos.i386.rpm
                # yum -y --nogpgcheck localinstall kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

node1:
#cd /usr/share/doc/drbd83-8.3.8
#cp drbd.conf /etc/
#cd /etc/drbd.d
#cp global-common.conf global-common.conf.bak
1)修改配置文件:
  1. #vim global-common.conf
  2.      global {
  3.              usage-count no;
  4.              # minor-count dialog-refresh disable-ip-verification
  5.              }
  6.      common {
  7.              protocol C;
  8.      handlers {
  9.              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";
  10.              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";
  11.              local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
  12.             # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
  13.             # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
  14.             # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
  15.             # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
  16.             # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
  17.             }

  18.     startup {
  19.             wfc-timeout 120;
  20.             degr-wfc-timeout 120;
  21.              }
  22.     disk {
  23.             on-io-error detach;
  24.             fencing resource-only;
  25.           }
  26.       net {
  27.     cram-hmac-alg "sha1";
  28.      shared-secret "mydrbdlab";
  29.           }
  30.       syncer {
  31.              rate 100M;
  32.              }
  33.     }

 2)定义一个资源web.res
#vim web.res
  1. vim web.res
  2.     resource web {
  3.             on node1.hanlenry.com
  4.             device /dev/drbd0;
  5.             disk /dev/sda5;
  6.             address 192.16.0.111:7789
  7.             meta-disk internal;
  8.             }
  9.             on node2.hanlenry.com
  10.             device /dev/drbd0;
  11.             disk /dev/sda5;
  12.             address 192.16.0.112:7789
  13.             meta-disk internal;
  14.             }
把配置信息拷贝一份到node2节点上。
#scp -r /etc/drbd.conf /etc/drbd.d/ node2:/etc
4.创建drbd
   在node1和node2上:
1)初始化资源
      #drbdadm create-md web
2)启动服务
#service drbd start
3)查看启动状态
#cat /proc/drbd
也可以使用drbd-overview命令来查看:
#drbd-overview


5.从上面的信息中可以看出此时两个节点均处于Secondary状态。于是,我们接下来需要将其中一个节点设置为Primary。把某一个节点设置为主节点,只能在一个节点上操作。只有第一次时才执行下列操作。
#brdbadm -- --overwrite-data-of-peer primary web


使用命令drbd-overview 查看,等到复制完成后,就可以格式化,挂载了。

6.创建文件系统
#mkfs -t ext3 -L DRBDWEB /dev/drbd0
#mkdir /web 
  #mount /dev/drbd0 /web

创建一个目录:
#cd /web
#ls
#mkdir hanlenry
此时node2上也应该有hanlenry目录。

查看当前节点是什么角色
#drbdadm role web
7.更换主从
注意:更换主从时,要先把主的设置为从的,在把从的设置为主的。

在node1上
  先卸载:
#umount /web
  把主的设置为从的。
#drbdadm secondary web
  查看节点状态
  #drbd-overview

在node2上
#mkdir /web
#drbdadm primary web
#mount /dev/drbd0 /web
查看目录下是否有hanlenry目录
#cd /web
#ls

 
上一篇:3个节点基于corosync+pacemaker架构实现集群的高可用
下一篇:集群的一些总结