使用drbd搭建一个存储复制的集群

来源:岁月联盟 编辑:exp 时间:2011-09-16

 配置drbd前我们先了解一下drbd的基本知识
Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。 数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)
DBRD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT3文件系统的崩溃。
DBRD的位置处于文件系统以下,比文件系统更加靠近操作系统内核及IO栈。


 
drbd所使用的工具:
drbdadm:高级管理工具,管理/etc/drbd.conf,向drbdsetup和drbdmeta发送指令,
drbdsetup:配置装载进kernel的DRBD模块,平时很少直接用
drbdmeta:管理META数据结构,平时很少直接用。
在DRBD中,资源是特指某复制的存储设备的所有方面。包括资源名称、DRBD设备(/dev/drbdm,这里m是设备最小号,最大号可到147)、磁盘配置(使本地数据可以为DRBD所用)、网络配置(与对方通信)
每个资源有个角色,是Primary或Secondary,下面简称“主”和“备”
主角色的DRBD设备可以不受限制的读和写,比如创建和映射文件系统、对于块设备的raw或直接IO访问。
备角色的DRBD设备接受来自对方的所有修改,但是不能被应用程序读写,甚至只读也不行。 角色可以改变。
好了不多介绍drbd该我们drbd集群实验了
1)共有两个测试节点,分别node1.a.org和node2.a.org,相的IP地址分别为192.168.0.110和192.168.0.120

 
 node1 ip :192.168.0.110      node2: 192.168.0.120
1、准备工作
设置两个节点的主机名称和对应的IP地址解析服务
vim /etc/hosts
192.168.0.5 node1.a.org node1
192.168.0.6 node2.a.org node2
 为了使得重新启动系统后仍能保持如上的主机名称,还分别需要在各节点执行类似如下的命令:
Node1:
#hostname 查看一下
# hostname node1.a.org
Node2:
# hostname node2.a.org
2、安装软件包
下载软件包,下载地址为:http://mirrors.sohu.com/centos/5.6/extras/i386/RPMS/。
 
下载完成后直接安装即可:
# yum -y --nogpgcheck localinstall  *.rpm
 
3、配置drbd
1)复制样例配置文件为即将使用的配置文件:
# cp /usr/share/doc/drbd83-8.3.8/drbd.conf  /etc
2)配置/etc/drbd.d/global-common.conf 打开 编辑里面的内容
 
global {
        usage-count no;
}
common {
        protocol C;
 handlers {
                   }
 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;
         }
3、定义一个资源/etc/drbd.d/web.res,内容如下:
[root@node1 ~]#vim /etc/drbd/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;
    }
}
4、在两个节点上初始化已定义的资源并启动服务:
[root@node1 ~]# scp -r /etc/drbd.conf /etc/drbd.d node2:/etc/
1)初始化资源,在Node1和Node2上分别执行:
[root@node1 ~]# drbdadm create-md web
[root@node2 ~]# drbdadm create-md web
2)启动服务,在Node1和Node2上分别执行:
[root@node1 ~]#/etc/init.d/drbd start
[root@node2 ~]#/etc/init.d/drbd start
3)查看启动状态:
[root@node1 ~]# 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命令来查看:
[root@node1 ~]# drbd-overview
 0:web  Connected Secondary/Secondary Inconsistent/Inconsistent C r----
 
其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令:
 # drbdadm -- --overwrite-data-of-peer primary web
而后再次查看状态,可以发现数据同步过程已经开始:
[root@node1 ~]# drbd-overview
 
0:web  SyncSource Primary/Secondary UpToDate/Inconsistent C r----
          [============>.......] sync'ed: 66.2% (172140/505964)K delay_probe: 35

 
等数据同步完成以后再次查看状态,可以发现节点已经牌实时状态,且节点已经有了主次:
[root@node1 ~]# drbd-overview
 0:web  Connected Primary/Secondary UpToDate/UpToDate C r----
 
等数据同步完成以后再次查看状态,可以发现节点已经牌实时状态,且节点已经有了主次:
[root@node1 ~]# drbd-overview
 0:web  Connected Primary/Secondary UpToDate/UpToDate C r----
 
动态的查处双方是否在同步
#watch –nl ‘cat /proc/drbd’
5、创建文件系统
文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:
主节点格式化磁盘   次的不用格式化了
[root@node1 ~]# mkfs -t ext3 -L DRDBWEB /dev/drbd0     或  # mke2fs -j -L DRBD /dev/drbd0
# mkdir /web             创建一个目录放web网页
# mount /dev/drbd0 /web  把磁盘挂载到上面我们创建的目录里面
# echo “welcome” > index.html 
6、切换Primary和Secondary节点
 
 ...................
node1 查看指定哪个资源
                                                                       天涯飞鸟博客            我爱linux
                          
 
主从切换
要先卸载 必须先把主的设为从的 从的在设置为主的
#umount /web
# drbdadm secondary web 在当前节点 设置为从的
# drbdadm role web 查看 主从情况
切换到node2上面
创建一个挂载的目录
#mkdir /web
创建主节点
# drbdadm  primary web
查看你所创建节点的情况
# drbd-overview
挂载磁盘
# mount /dev/drbd0 /web
#ls
查看一个你会发现 里面有一个index.html文档
 

作者“天涯飞鸟”