DRBD_职场

有 一台 nfs ,单点故障    所以就要用到DRBD.
DRBD:Distributed Replicated Block Device 分布式复制 块设备。开源软件, 内核2.6.33 版本后是直接做进内核
DRBD 工作原理 如下图:
 

DRBD_DRBD_02

DRBD最新版本 8.3.9
数据传到DRBD时,DRBD复制一份到tcp/ip封装压缩再通过网卡 传递给另外一个节点,通过网卡传递给tcp/ip协议栈,在传到DRBD。
默认一主一从,但可以互换 类似于mysql
 
数据 传递到 DRBD 是分两路:一段工作内核,一段工作在用户
配置工具: drbdadm 一段工作在内核空间中,一段工作在用户空间,可以定义把那些设备式作为drbd分布式复制块设备,还可以定义drbdadm 还可以监控工作状态。主配置文件 /etc/drbd.conf
 Drbdsetup 和drbdmeta 用的非常少
DRBD 特征:复制的解决   把两个节点复制
 
DRBD 特征:
 1.分布式块设备
 2.基于软件,没有任何东西是共享的,复制的存储解决方案,把两个节点上磁盘或者分区做成了镜像
 DRBD在实现数据镜像的时候特点:
   1.IN real time实时
   2. Transparently 透明的
   3.synchonously or asynchronously 同步或异步
DRBD 相关概念:
1.resource name 资源名字   在两个节点上可以做多个DRBD ,不能包含空白任意字符
2. DRBD device DRBD设备  软设备 ,主设备块设备 147编号,次设备号0到任意字符
3.Disk configuration指定 创建DRBD ,需要用到那个节点,那个分区,DRBD 元数据放在什么位置
 
4. network configuration 关于DRBD磁盘相关配置信息
 
每一个资源都有决策:
资源决策:
 Primary:标记为primary的既能读也能写操作 ,挂载 ..都可以,提供裸设备
 Secondary :标记为 secondary 不能挂载和 读写,只允许另外一个发来的数据,不允许用户或工作在本节点上应用程序读写操作
单主节点:   对文件系统并没有要求
双主节点:可以通过任意节点,进行操作,但是drbd要结合集群   需要加锁, 只有8.0版本才支持
对于DRBD 多个节点复制可以是:
Protocol A :表示异步 只要本地存储完成了,就认为完成了
          缺点:不可靠 
Protocol B:半同步 只要主节点存储内存中完成了 ,就认为 完成了
          只要俩节点不断电,数据就不会丢失
Protocol C:完全同步 任何存储都要存储在硬盘上就宣告结束
        默认就是 C    效率低
所以要借助 raid,大型企业可以借助 硬raid ,因为硬盘raid 有电池,可以存储缓存
   大约 99.95% down机时间
 
也会出现脑裂:双节点都无法探测到彼此了,都认为自己可以读写了。如果两节点都写数据,会产生覆盖。
解决方法:
谁改的少,丢弃谁的
把修改的 合并到没有修改的,这是drbd内置的脑裂出现的解决方法
 
实验:
需要两个软件包:一个是 内核模块,一个是工作在用户空间的工具
 配置
 两个节点 要通过主机名互相访问
 都各自准备一个空间大小空间一样分区
各自安装软件
 
 搭建环境 需要两个测试节点,分别node1.a.org和node2.a.org,相的IP地址分别为192.168.0.10和192.168.0.11;
1.node1和node2两个节点上各提供了一个大小相同的分区作为drbd设备;这里为在两个节点上均为/dev/sda5,大小为512M;
 
 
两个节点的主机名称和对应的IP地址解析服务可以正常工作,且每个节点的主机名称需要跟"uname -n“命令的结果保持一致;因此,需要保证两个节点上的/etc/hosts文件均为下面的内容:
#/etc/hosts 最后添加
192.168.0.10 node1.a.org node1
192.168.0.11 node2.a.org node2
在节点一上:
该主机名字
 HOSTANME=node1.a.org
#hostname node1.a.org
在节点二上:
# vim /etc/sysconfig/network
 HOSTANME=node2.a.org
#hostname node2.a.org
 
在节点一和二上创建分区
#fdisk /dev/sda
   …
#partprobe /dev/sda
 
下载软件包:
  在节点一上都操作,在节点二上只用 yum 安装就行了
 

DRBD_DRBD_03

#cd /usr/share/doc/brbd83-8.3.8/
#cp drbd.conf /etc
#cd
#vim /etc/drbd.conf
 

DRBD_职场_04

usage-count no;
把原来的删除,在把这些从新添加上
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 web.res 定义资源,只要以res结尾就行
resource web {
    on node1.a.org {
    device    /dev/drbd0;
    disk      /dev/sda5;  
    address   192.168.0.10:7789;
    meta-disk internal;
 }
 on node2.a.org {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   192.168.0.11:7789;
    meta-disk internal;
 }
}
把这两个文件cp到 从节点上:
 

DRBD_职场_05

接下来初始化:
 
初始化资源,在Node1和Node2上分别执行:
# drbdadm create-md web   web是资源名
 
启动服务,在Node1和Node2上分别执行:
#Service drbd start
#cat /proc/drbd   查看启动状态
最后一行 可以看出 还没有同步
 

DRBD_职场_06

 
node1 设置为主节点,可以看到正在同步效果
 

 

DRBD_休闲_07

 

都是在主节点上 配置:
#watch -nl ‘cat /proc/drba'   可以看到正在同步
 
格式化
#mkfs -t ext3 -L DRBDWED /dev/drbd0
#mkdir /web
#mount /dev/drbd0 /web 挂载到web 目录下
为了看到效果在这里创建个网页:
#cd /web
#vim index.html
<h>ceshi 1. </h>
 
#drbdadm role web
 
在从节点上
#drbdadm role web
 
如果需要换一下主从节点配置: 注 必须要先把主的设成从的,在把从的设置成主的
在主节点上:
#umount /web
#drbdadm secondary web
会看到 secondary/secondary
在第二节点上:
#drbdadm primary web
#
 DRBD_DRBD_08 
挂载:
# mount /dev/drbd0 /web
#cd /web
#ls
会显示 index.html
 
 
如果在把从的换回成主的:
node2 配置:
先创建个网页
# vim test.html
<h1> ceshi 2</h>
#umount /web 卸载
#drbdadm secondary web
node1上配置:
 
 DRBD_DRBD_09