drbd--实现主从双节点的共享存储

一、 DRBD的概念:

DRBD : Distributed Replicated Block Device ,分布式的复制块设备。将两个不同主机的块设备之间建立镜像,以实现数据的同步,没有任何东西是共享的,复制的存储解决方案,是个软件。块设备可以是分区也可以是逻辑卷或磁盘。

二、DRBD数据镜像的特点:

1、实时性:即主服务器的数据发生改变从服务器会立即更新。

2、透明:对于上层应用程序并不知道有它的工作

3、数据传输的模式可以是同步,半同步,异步。

DRBD的工作原理:

 

 (1) DRDB是一个内核模块,工作在内核空间的,在文件系统的缓冲池(裸设备)和磁盘调度器之间,由linbit公司所研发出来的,完全遵循GPL协定,是一个开源软件。

(2)在两个主机上实现磁盘镜像:

通过文件系统调用(File System),经过缓存(Buffer Cache),来到DRBD上,会复制一份,经过TCP/IP封装打包,经过本节点网卡,到达另一节点的NIC,NIC Diver,TCP/IP,最后到达另一节点的DRBD,再经过磁盘调度器(Disk Scheduler),磁盘驱(Disk Driver),最后保存到其对应的磁盘上(Disk Storage)。

(3)DRBD 必须在内核中,在linux内核为2.6.33以后直接做到内核中不需要到补丁,在之前有直接的rpm包。

(4)同步,异步,半同步的理解

 异步:对于drbd当此数据写在自己的磁盘上,复制的一份以发送到对方的tcp的发送缓冲并等待发送。

半同步:数据写到本地的磁盘上,复制的一份以发送到对方的tcp的发送缓冲中接收并宣布发送完成。

同步:主节点磁盘写入完,从节点磁盘也写入完成。

三、drdbadm用户空间的管理工具

四、DRBD中相关的概念:

(1)DRBD的资源::双方建立的关联关系及各关联的属性定义

资源的属性:
1、资源名字 非空白字符的ASCII
2、关联的两个设备 主设备号是147,次设备号从0开始排例/dev/brbd0
3、磁盘配置信息 两个磁盘在数据复制时的速度及是否加密签名等
4、网络传输 基于tcp最重要的是源数据放在什么地方,带宽等

(2)Resource roles 资源角色

对于DRDB,每一个资源都有一个角色,对于主从架构有primary/secondary.

在某时刻,被标记为Primary的设备,能够不受限制的进行读写操作,可以挂载文件系统、创建文件系统、可以使用裸设备,可以直接使用I/O

对于secondary资源不能挂载,不能格式化,不能读写

(3)DRBD的工作模型:

主从模型:即单主,为高可用集群解决资源流转的问题的。可以使用任意文件系统

双主模型:提供类似集群负载均衡的功能。只能使用集群文件系统。

复制模型:即传输模式,用protocol来表示,protocol A表异步,B表半同步(内存),C表同步,默认是同步。

五、出现脑裂的情况即解决的方法:

主从联系不上,从服务器也变成主的都开始写出现脑裂。

脑裂之后的恢复策略:

(1)Discarding modifications made on the “younger” primary谁是后来变成主节点的舍弃谁

(2)Discarding modifications made on the “older” primary直接把老的丢弃,以新的为准

(3)Discarding modifications on the primary with fewer changes谁的数据改变最少把谁的丢弃

(4)Graceful recovery from split brain if one host has had no intermediate changes手动恢复

 

drbd的配置安装:

前提:
两台服务器:即两个节点
172.16.6.1 node1.magedu.com node1
172.16.6.7 node2.magedu.com node2
在两个节点上配置一个相同大小的分区作为drbd设备,我的均为/dev/sdb5,大小为2G;

1、保证两个节点的主机名称和对应的ip地址解析服务可以正常工作任何主机都是通过主机名来通信,主机名要与uname -n保持一致,依赖hosts文件。
node1:
hostname node1.magedu.com
vim /etc/sysconfig/network
 HOSTNAME=node1.magedu.com
vim /etc/hosts 
 172.16.6.1 node1.magedu.com node1
 172.16.6.7 node2.magedu.com node2
 
node2:
hostname node2.magedu.com
vim /etc/sysconfig/network
 HOSTNAME=node2.magedu.com
vim /etc/hosts 
 172.16.6.1 node1.magedu.com node1
 172.16.6.7 node2.magedu.com node2

2、设置两个节点可以基于ssh通信,保证两台主机可以ping通
node1:
ssh-ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2

node2:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1
分别在两个节点验证下例在node1上验证:ssh node2

3、两个节点都需要安装软件包
所需的软件包:
kmod-drbd83-8.3.8-1.el5.centos.i686.rpm内核模块
drbd83-8.3.8-1.el5.centos.i386.rpm管理工具
安装:yum --nogpgcheck localinstall

4、配置drbd
把样例文件复制到/etc下成为配置文件 
cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc

vim /etc/drbd.d/global_common.conf
global {
        usage-count no;
        # minor-count dialog-refresh disable-ip-verification
}

common {
        protocol C;

        handlers {
                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";
                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";
                local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
                # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
                # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
                # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
                # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
                # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
        }
       startup {
                wfc-timeout 120;
                degr-wfc-timeout 120;
       }
       disk {
             on-io-error detach;
       }
       net {
            cram-hmac-alg "sha1";
            shared-secret "mydrbdlab";
        }

5、分别为两个节点创建分区/dev/sdb5,大小一定要一样,一定不能格式化。

6、定义一个web资源,即为web高可用服务提供空间
vim /etc/drbd.d/web.res
resource web {
 on node2.magedu.com {
   device /dev/drbd0;
   disk   /dev/sdb5;
   address 172.16.6.7:7789;
   meta-disk internal;
 }
 on node1.magedu.com {
   device /dev/drbd0;
   disk /dev/sdb5;
   address 172.16.6.1:7789;
   meta-disk internal;
 }
}

7、两个节点的配置文件要一样即:
/etc/drbd.conf
/etc/drbd.d/global_common.conf
/etc/drbd.d/web.res

8、初始化资源,两个节点都要执行
drbdadm create-md web

9、在两个节点上都要启动服务
/etc/init.d/drbd start或service drbd start

10、查看状态,并建立同步
drbd-overview
 0:web  Connected Secondary/Secondary Inconsistent/Inconsistent C r----

在没有指定主节点的情况下两个节点都是从节点,因此要指定主节点,只能在一台主机上指定主节点,node1为主节点
[root@node1 ~]# drbdadm -- --overwrite-data-of-peer primary web

等待数据同步完后在查看状态,即节点有了主次
[root@node1 ~]# drbd-overview
 0:web  SyncSource Primary/Secondary UpToDate/Inconsistent C r----

11、在主节点创建文件系统,并挂载及格式化
[root@node1 ~]# mke2fs -j /dev/drbd0
[root@node1 ~]# mkdir /web
[root@node1 ~]# mount /dev/drbd0 /web
ls /dev 在这下面有drbd设备

随便复制点内容到/web下,在改变主从节点是在查看是否有这些内容
[root@node1 ~]# cp kmod-drbd83-8.3.8-1.el5.centos.i686.rpm /web

12、改变主从节点,注意:先卸载把主节点降为Secondary,再把从节点升为Primary
[root@node1 ~]# umount /web
[root@node1 ~]# drbdadm secondary web
[root@node2 ~]# drbdadm primary web
[root@node2 ~]# mkdir /web
[root@node2 ~]# mount /dev/drbd0 /web
[root@node2 ~]# drbd-overview查看状态,这是node2为主节点
cd /web查看是否有上次复制的文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


     

你可能感兴趣的:(配置,职场,drbd,休闲)