原文:http://blog.chinaunix.net/uid-26719405-id-3904528.html
html
DRBD(Distributed Replicated Block Device),分布式复制块设备,是一种经过TCP/IP网络实现块设备数据实时镜像的方案。利用这种方案,单一主节点模式(single primary mode)双机系统可以实时地将业务数据保存在主备节点的磁盘中,正常状况下两个节点的数据是如出一辙的。node
drbd的结构示意图及工做原理mysql
从上图咱们能够 清晰的看出drbd是以主从(Primary/Secondary)方式工做的,这点原理与mysql的主从复制的架构有些类似。主节点上的drbd提高为Primary并负责接收写入数据,当数据到达drbd模块时,一份继续往下走写入到本地磁盘实现数据的持久化,同时并将接收到的要写入的数据发送一分到本地的drbd设备上经过tcp传到另一台主机的drbd设备上(Secondary node),另外一台主机上的对应的drbd设备再将接收到的数据存入到本身的磁盘当中。这里与mysql的基于经过二进制日志完成数据的复制的确很类似,可是也有一些不一样之处。好比:mysql的从节点不能写可是能够读,可是drbd的从节点是不能读、不能挂载。sql
所以,drbd对同一设备块每次只容许对主节点进行读、写操做,从节点不能写也不能读。这样感受是否是对主机有资源浪费,的确HA架构中为了提供冗余能力是有资源浪费,可是你能够对上图的两台主机创建两个drbd资源并互为主从,这样两台机器都能利用起来,可是配置起来就复杂了。可是话又说回来,用drbd做为廉价的共享存储设备,要节约不少成本,由于价格要比专用的存储网络便宜不少,其性能与稳定性方面也还不错。vim
drbd的复制模式(协议)安全
A协议:服务器
异步复制协议。一旦本地磁盘写入已经完成,数据包已在发送队列中,则写被认为是完成的。在一个节点发生故障时,可能发生数据丢失,由于被写入到远程节点上的数据可能仍在发送队列。尽管,在故障转移节点上的数据是一致的,但没有及时更新。所以,这种模式效率最高,可是数据不安全,存在数据丢失。网络
B协议:架构
内存同步(半同步)复制协议。一旦本地磁盘写入已完成且复制数据包达到了对等节点则认为写在主节点上被认为是完成的。数据丢失可能发生在参加的两个节点同时故障的状况下,由于在传输中的数据可能不会被提交到磁盘异步
C协议:
同步复制协议。只有在本地和远程节点的磁盘已经确认了写操做完成,写才被认为完成。没有数据丢失,因此这是一个群集节点的流行模式,但I/O吞吐量依赖于网络带宽。所以,这种模式数据相对安全,可是效率比较低。
一.环境
系统:Centos6.1 x86
DRBD: 8.3.9编译安装 (http://www.drbd.org)
Hostname :www.cheng.com
Ip: 192.168.0.11
Hostname : www.bao.com
Ip : 192.168.0.22
二.编译安装drbd (两台机器作一样的操做)
安装依赖软件包 yum install kernel-devel -y
Wget http://oss.linbit.com/drbd/8.3/drbd-8.3.9.tar.gz
tar -zxvf drbd-8.3.9.tar.gz
cd drbd-8.3.9
./configure --prefix=/ --with-km
make && make install
chkconfig --add drbd
Chkconfig drbd on
检查是否安装成功: drbdadm
是否能够看到版本信息: cat /proc/drbd
重启后再次检查 : cat /proc/drbd
三.配置服务器中的hostname hosts
[root@www /]# vim /etc/hosts
添加 192.168.0.11 www.cheng.com
192.168.0.11 www.bao.com
三.在两个服务器上单独分区一个分区或者添加一个空的硬盘 (两台机器作一样的操做)
/dev/sdb5
四.配置drbd
注意,新版本的DRBD的配置文件已拆分红多个,所有放在/etc/drbd.d/目录,具体可参考/etc/drbd.conf中的配置.
若是开了iptables防火墙,须要打开对应的7789端口。
在主节点配置
[root@www /]# vim /etc/drbd.d/dbdata.res
resource dbdata {
on www.cheng.com{
device /dev/drbd1;
disk /dev/sdb5;
address 192.168.0.11:7789;
meta-disk internal;
}
on www.bao.com{
device /dev/drbd1;
disk /dev/sdb5;
address 192.168.0.22:7789;
meta-disk internal;
}
}
建立drbd设备
[root@www /]# drbdadm create-md all
[root@www /]# /etc/init.d/drbd restart
查看是否有相应的块设备:
[root@www /]# ls -l /dev/drbd1
[root@www /]# cat /proc/drbd
如今能够查看DRBD的状态,而后在www.cheng.com主机上执行:
[root@www /]# cat /proc/drbd
五.使用drdb
数据同步完成后在主机上
[root@www /]# drbdadm -- --overwrite-data-of-peer primary dbdata
[root@www /]# mkfs.ext3 /dev/drbd1 #格式化
[root@www /]# mount /dev/drbd1 /mnt/
如今能够把主机上的DRBD设备挂载到一个目录上进行使用.备机的DRBD设备没法被挂载,由于它是,用来接收主机数据的,由DRBD负责操做.
六.Drbd主备机切换
有时,你须要将DRBD的主备机互换一下.能够执行下面的操做:
在主机上,先要卸载掉DRBD设备.
对192.168.0.11 进行降级操做
[root@www /]# umount /mnt #必须先卸载
[root@www /]# drbdadm secondary dbdata #切换成备机
在备机器上进行升级操做
[root@www /]# drbdadm primary dbdata #切换成主机
成为了”主机”.你能够把它的/dev/drbd1进行挂载和使用了.一样,数据会被同步到192.168.0.22上进行使用了