DRBD配置及其注意事项

http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86:drbd%E7%9A%84%E4%BD%BF%E7%94%A8
http://czmmiao.iteye.com/blog/1773079
命令行配置:http://www.showerlee.com/archives/295


http://os.51cto.com/art/201412/461533_2.htm 很好的博文配置  http://os.51cto.com/art/201412/461533_2.htm     http://blog.csdn.net/deansrk/article/details/6780650
配置文件的详细介绍:http://czmmiao.iteye.com/blog/1773079     
http://www.linuxidc.com/Linux/2012-01/51661.htm


DRBD 通过网络实现块设备数据实时镜像 
细的你不要不要的了
http://blog.csdn.net/liuyunfengheda/article/details/6460814
创建的时候出现的问题:
首先在创建的时候要使用这个命令
drbdadm -c /usr/local/drbd/etc/drbd.d/drbd.res create-md drbd 需要用-c去指定合法的配置文件的路径,最后面的参数要跟配置文件的名称相同
 创建成功的提示信息。 
            
总之,这个-c好像很叼的样子啊,是不是,有木有,解决不了的,只要加上-c<指定文件的路径>就ok,屡试不爽啊<------~_~----->
 
M1端设置为主端口  Primary。
 
M2为辅助端口,用来同步M1处的内容。


所有的都完成时,再创建文件系统时会出现这个错误:
 
原因是:这个M2端是Secondary,读写类型时只读格式,所以呢,只有Primary的M1端才不出现这个状况,要么将他变化为Primary也是可以的


总体的框架:
M1,M2首先是不一样的磁盘,即是用的不是同一个磁盘进行数据的处理,再说了,你用一块盘的话他是不会成功的,所以用的是不同的盘,大小的话最好一致。
还有个问题就是再用的时候,那个M2的Secondary不许提前初始化,创建完成后再去初始化文件系统。
记住要领:
两台电脑用的是不同的块设备,而创建出来的drbd的名称是一样的
创建完成drbd以后,可以使用drbd-overview 或者是 cat /proc/drbd来查看创建出来的drbd的内容。
有时会出现 no resource错误,那么在创建的命令行的过程中需要使用 -c 来指定配置文件的所在路径,系统默认是从/usr/local/drbd/*.* 中去查找,如果存在这个设备,那么就不需要用 -c 来指定了
可以通过whereis 命令查看drbd的安装路径
whereis drbd




cat /usr/local/etc/drbd.d/drbd.res                        #这个配置文件的名称跟resource的名称是一致的。
 resource drbd {             # 定义一个drbd的资源名   
        on M1.mod_1 {                                 # 主机说明以on开头,后面跟主机名称   
                device /dev/drbd0;                        # drbd设备名称,注意其余的地方都是一样的,这个地方两台主机要用到两块大小相同但是不同的块设备,名称也要一致,而且命名规则是drbdN , 其中的 N 表示的就是 次设备号,主设备号永远是147,因为这是两个不一样的设备,所以的话,名称一致是没有任何问题的
                disk /dev/mapper/VolGroup-lv_drbd;    # drbd0 使用的是逻辑卷/dev/mapper/VolGroup-lv_drbd 来创建的  
                address 172.16.100.210:7789;      # 设置DRBD监听地址与端口   
                meta-disk internal;                       # 设置元数据盘为内部模式   
        }    
        on M2.mod_2 {    
                device /dev/drbd0;    
                disk /dev/mapper/VolGroup-lv_drbd;    #两个是不同的设备   
                address 172.16.100.211:7789;    
                meta-disk internal;    
        }    
}   
这个地方有个疑问,你说这个M1和M2两者的disk 写的是一个?-------->待解决   名称一致,没有影响,因为这个对于不同的设备对用的是不同的存储空间,如果两者的disk设备的名称不一致,会出现同步不正确的错误




----------------------------------------------------------------------------------------------命令行配置--http://blog.csdn.net/deansrk/article/details/6780650------------------------------------------------------------------------------------------------------------
首先drbd是两台服务器<我用的是X86的>之间的镜像块设备内容的存储复制解决方案
首先需要两台设备、可用的磁盘空间<可以是逻辑卷、磁盘、阵列>
用的是drbd8.4.3版本,机器是两台X86的机器
安装配置:
运行configure:   ./configure
make 
make install
ldconfig  //加载动态库
insmod lru_cache.ko
insmod drbd.ko
|******还需要配置本地的hosts文件:*******>>>>>>>>>不确定是否需要配置<<<<<<<<<<
|
|vi /etc/hosts
| 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
|::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
|[mon]
| 10.10.101.102   mon_0
| 10.10.101.103   mon_1 
| //主要是确定本地的IP和主机名称的对应关系
|[osd]
|10.10.66.150    node_0
|10.10.66.151    node_1
|10.10.66.152    node_2
  ——————————————————————————————————————————————————
需要两个模块lrc_cache.ko drbd.ko安装有顺序,先安装前一个
命令行主要用的是drbdadm


开始配置 配置文件:主要有两个:一个是global_comman.conf,一个是drbd.res
两个文档的路径是:/usr/local/etc/drbd.d/*.*
首先里面的配置文档内容:
cat /usr/local/etc/drbd.d/global_common.conf
global {   
        usage-count no;     #这个配置yes 或者是 no不会对性能造成影响,只是传递信息的作用
}    
common {    
        protocol C;     #协议C-->同步复制协议
        disk {    
                on-io-error detach;          # 配置I/O错误处理策略为分离   
                no-disk-flushes;    
                no-md-flushes;    
        }    
        net {    
  #allow-two-primaries yes;      #双主模式下需要将其选项加入其中,就是两个设备同时为主设备
                cram-hmac-alg "sha1";         # 设置加密算法    
                shared-secret "allendrbd";    # 设置加密密钥   
                sndbuf-size 512k;   
                max-buffers 8000;   
                unplug-watermark 1024;   
                max-epoch-size 8000;   
               
        }    
        syncer {    
                rate 24M;             # 设置主备节点同步时的网络速率  
                al-extents 517;   #
        }   



 cat /usr/local/drbd/etc/drbd.d/drbd.res #开始的时候这个配置文件是不存在的,所以直接进行vi创建,然后将内容直接添加进去就好。还有就是前面提及到的,将配置文件复制到/etc中,然后修改后缀为 .conf配置文件,可以省去
        #后面操作指定  -c 目录的烦恼    
/***
-c, --config-filefile
           Specifies the configuration file drbdadm will use. If this
                       parameter is not specified, drbdadm will look for
          /etc/drbd-83.conf, /etc/drbd-08.conf and /etc/drbd.conf.
***/
 cat /usr/local/etc/drbd.d/drbd.res                        #这个配置文件的名称跟resource的名称是一致的。
 resource drbd {             # 定义一个drbd的资源名   
        on M1.mod_1 {                                 # 主机说明以on开头,后面跟主机名称   
                device /dev/drbd0;                        # drbd设备名称,注意其余的地方都是一样的,这个地方两台主机要用到两块大小相同但是不同的块设备,名称也要一致,而且命名规则是drbdN , 其中的 N 表示的就是 次设备号,主设备号永远是147,因为这是两个不一样的设备,所以的话,名称一致是没有任何问题的
                disk /dev/mapper/VolGroup-lv_drbd;    # drbd0 使用的是逻辑卷/dev/mapper/VolGroup-lv_drbd 来创建的  
                address 172.16.100.210:7789;      # 设置DRBD监听地址与端口   
                meta-disk internal;                       # 设置元数据盘为内部模式   
        }    
        on M2.mod_2 {    
                device /dev/drbd0;    
                disk /dev/mapper/VolGroup-lv_drbd;    #两个是不同的设备,名称可以不一致,没毛病   
                address 172.16.100.211:7789;    
                meta-disk internal;    
        }    
}   
---------------------------------------------这个配置的文件是表示的是两个主机内的设备名称是相同的时候时可以进行这样的配置,一般的话都是通过上面的进行配置的文档的,对应的配置文件是r0.res--------------------------------------
resource r0 {
  device    /dev/drbd1;
  disk      /dev/sda7;
  meta-disk internal;
  on alice {
    address   10.1.1.31:7789;
  }
  on bob {
    address   10.1.1.32:7789;
  }
}


----------------------------------------------------------------------------------这个配置的文件是一次性配制出两个drbd的设备来----------------------------------------------------------------------------------------------------------------------------------------------------


resource drbd {              # 定义一个drbd的资源名,这个是同时配置两个设备的时候,配置的方法跟之前是一样的,只不过是配置文件drbd.res变化了一下而已,其余的都是一样的


        volume 0 {                                 # 主机说明以on开头,后面跟主机名称
                device /dev/drbd1;                              # drbd设备名称
                disk /dev/mapper/VolGroup00-lv_01;      # drbd0 使用的是逻辑卷/dev/mapper/VolGroup-lv_drbd
                meta-disk internal;                     # 设置元数据盘为内部模式
        }
        volume 1 {
                device /dev/drbd2;
                disk /dev/mapper/VolGroup00-lv_02;     
                meta-disk internal;
        }
         on mon_0 {                                      # 主机说明以on开头,后面跟主机名称
                address 10.10.101.102:7789;      # 设置DRBD监听地址与端口
        }
        on mon_1 {
                address 10.10.101.103:7789;
        }
}




注意:上面中的M1.mod_1和M2.mod_2是自己虚拟机的名称,因机而异:hostname查看
上面的一切操作包括下面的操作,都必须在两台虚拟机上完成相同的操作
好了,一切准备工作完成后,我们开始命令行的配置:
1>初始化meta分区
drbdadm create-md drbd
cat /proc/drbd   //查看同步的状态
2>启动drbd服务
/etc/init.d/drbd start  //两台主机都要启动3>初始化设备同步,并确立主节点,假设M1端设置是主节点
drbdadm -- --overwrite-data-of-peer primary drbd  
 
注:默认情况下设备中只有一个主和一个次,所以只进行一遍操作即可
cat /proc/drbd //再次去查看drbd的状态
此时如果进展顺利的话,会在/dev/目录下出现 drbd0的设备文件,正常使用就行
4>挂载使用drbd设备
mkfs.ext4 /dev/drbd0
sync   //同步的是一些元数据和数据块的一些数据
mount /dev/drbd0 /mnt
df -h
-------------------------查看数据同步过程-<只是检测同步>-------------------------------------------------------
从一侧复制一些数据进去,在从另一个去挂载查看。
umount /mnt
drbdadm secondary drbd <--首选  ----> 也可以是 drbdadm dowm drbd
此时M1端已经是 次 了,然后转换到M2另一台机器上,将M2进行主设置
命令跟前面一样
drbdadm -- --overwrite-data-of-peer primary drbd 
mount /dev/drbd0 /mnt
df -h
两者的内容应该是一致的


------------------------------删除操作--------------------------
drbdadm down drbd
drbdadm wipe-md drbd //删除了drbd


可以通过drbdadm connect all 来查看设备链接的状态,比如传输速率的信息。这个命令是当链接出现问题时的解决方案:PS:节点间连接命令 drbdadm connect|disconnect all
 
-----------------------------------------使用时出现的错误及其解决方案:http://blog.chinaunix.net/uid-24020646-id-2942207.html             http://bbs.linuxtone.org/thread-24207-1-1.html
1>当在创建的过程中出现drbdadm create-md drbd-name   报错时,原因是原先的设备可能是没有进行初始化,里面存在一些跟之前相关的元数据
解决方案:dd if=/dev/zero of=/dev/sda bs=1M count=1024  进行清盘操作
2>mount时出现错误,原因可能是没有  指定主设备,或者是没有对设备进行初始化操作
解决方案:drbdadm -- --overwrite-data-of-peer primary drbd  //创建两个设备的情况下,在这个位置会出现同步现象,要等待其同步完成后再去挂载使用
 


  在一个设备的一个去设置主设备,则所有的都会成为主设备
mkfs.ext4 /dev/drbd-name
3>drbdadm create-md all 重新创建时会出错,这时跟上面的情况差不多,我们应该进行清盘操作,然后再去创建,或者重新创建文件系统  mkfs.ext4 /dev/sda
4>当出现脑裂的情况,是因为两个设备的主次关系颠倒的原因,脑裂后,两个节点间数据不同步,主从关系失效,需要按下面的步骤修复
解决方案:1、在从节点执行:
[root@www ~]# drbdadm secondary drbd-name
[root@www ~]# drbdadm — –discard-my-data connect drbd-name
 2、在主节点上,通过cat /proc/drbd查看状态,如果不是WFConnection状态,需要再手动连接:
[root@www ~]# drbdadm connect drbd-name
5>当一侧出现了类似于连接失败,,这个时候我们可以使用  drbdadm connect r0 或者是 drbdadm disconnect | connect r0
----------------------------------------注意事项----------------------------------------------------------------------------------------------------------
1、主备服务器同步的两个分区大小最好相同(网上没有关于分区大小是否一定要相同的确切说法)


2、开始同步两个节点的磁盘,需要一定时间,在同步完成前,不要重启,否则会重新同步。


3、挂载之前一定要先切换当前节点为主节点


4、两个节点中,同一时刻只能有一台处于primary状态,另一台处于secondary状态。


5、处于从节点(secondary)状态的服务器不能加载drbd块设备


6、将主节点切换为从节点之前要先卸载


7、一台机切换为主节点之前,要确保另一台机已切换为从节点

---------------------------------------------链接状态------------------------------------------------------------------------------------
cat /proc/drbd
 
在上面的网址上是有提示的,注意:那些ns nr dw dr都是模块的号码分别是网络发送、网络接收、磁盘写入、磁盘读取的模块号码
具体有用的看 cs的状态就好:connected就表示的是一切正常的状态。
 


------------------------------------------注意事项及其额外的拓展--------------------------------------------------------------------------------------
global_common.conf   和  drbd.res的路径是 /usr/local/etc/init.d/下
先创建drbd,再去 用 /etc/init.d/drbd start 启动


1}disk配置的磁盘名称可以不同,并且以最小的设备的大小进行存储的,即如果一个是10G,另一个是2G,那么创建出来的设备的大小只有2G大小
2}双主模式的时候,在一侧复制时,在设备的另一侧并不出现同步现象(同时挂载的情况下),前提是后台实际上是同步进行中,当再次挂载时,会出现数据的同步


1>安装的方法
本次实现的drbd的安装是在drbd.8.4.3中进行的
在该路径下有一个configure的可执行文件,如果不可以执行的话,添加一个可执行的权限chmod +x configure
运行configure   ./configure
make 
make install
ldconfig  //加载动态库
insmod lru_cache.ko
insmod drbd.ko


10.10.66.72
10.10.67.74


    code 11表示的是设备正在被使用


   code17表示的是设置主设备的方式不正确



你可能感兴趣的:(DRBD配置及其注意事项)