1.准备两台服务器及两块磁盘
2.分别配置两块硬盘(/dev/sdb)
2.1使用fdisk command分区格式化硬盘(/dev/sdb):
通过fdisk、mkfs.ext3、tune2fs命令处理一下分区
注:具体命令详见我单独文档《fdisk和mkfs命令详细实践总结》一文
注:1。meta data 分区必须存在,并且不能格式化建立文件系统
2.分好的分区一定不要挂载。
2.2检查meta data 分区正常可用的办法:
[root@drbd1~]#mount/dev/sdb7/ryan
mount:you must specify the filesystem type//出现这个结果meta data分区就是对的。
3.安装drbd
[root@drbd1~]#yum install kmod-drbd83 drbd83-y
注:(1)通过yum安装简单方便-y为不需要安装确认。
(2)关于yum的使用请看我的《YUM/RPM仓库创建和维护详细文档》一文
4.配置DRBD
4.1执行下面命令加载drbd模块到内核
[root@drbd1~]#modprobe drbd
注:1。要如果不执行可能会出错。见附录问题3
2.关于modprobe请阅读我的文档《modprobe&&lsmod作用于用法小结》一文
4.2检查drbd是否被正确加载到内核
[root@drbd1~]# ismod|grep drbd
4.3编辑配置drbd的配置文件drbd.conf
默认的配置路径/etc/drbd.conf,详细配置内容见后文附录三
5.enabling drbd 资源
注:下面的每一步在两台机器都要执行。
5.1初始化drbd的metadata(create device metadata。)
创建供drbd记录信息的metadata分区数据块
Drbdadm create-md all
[root@drbd1 etc]#drbdadm create-md all
md offset 0
al offset 4096
bm_offset 36846
省略若干行 全部内容见后文!附录四
Writing meta data。。。
Initializing activity log
Not initialized bitmap
New drbd meta data block successfully created。
技巧:1。可以单独创建resource资源名称,而不用直接用all。遇到错位见附录二。如:drbdadm create-md data “data”是我们在drbd.conf里定义的资源名称。
查看此时的drbd状态信息
注:drbd-overview 为一个perl脚本,drbd-overview.pl
5.2启动drbd
[root@drbd2 etc]#drbdadm up all
技巧:命令drbdadm up all 相当于如下命令的组合:
查看此时的drbd状态(和前一个状态对比下)
[root@drbd1 etc]#cat /proc/drbd
注:以上提示详细解释说明件附录五
6.同步DRBD数据到对端SERVER,使数据保持一致
6.1指定一个要同步的资源,同步数据到对端
注:(1)如果为空硬盘,可以随意执行操作不需要考虑数据。
(2)如果两边数据不一样(要特别注意同步数据的方向,否则可能会丢失数据)
6.2同步数据到对端的命令一个资源只能在一端执行
[root@drbd1 etc]# drbdadm-- --overwrite-data-of-peerprimary data
查看此时的drbd状态(请自行和前一个状态对比下)
6.3在另一台机器执行data1资源同步
[root@drbd2 etc]#drbdadm-- --overwrite-data-of-peer primary data1
注:因本文配置的是高级双主同步,所以另一台机器需要执行上面命令
6.4用cat/proc/drbd命令看drbd状态:
[root@drbd1 etc]#cat/proc/drbd
6.5禁止drbd开机自动启动(将来由heartbeat来控制)
[root@drbd1 etc]#chkconfig drbd off
注:如果开机启动了,此时在执行drbdadm up all会遇到错误,件附录二。
技巧:(1)禁止drbd开机自动启动的真实目的是将来要部署heartbeat+drbd的高可用配置
(2)详情请读《Mysql+drbd双主模式+heartbeat高可用自动切换部署详细文档》和《Mysql+heartbeat+drbd mysql双主多从集群及两端node同时提供服务的高可用互相监测并自动切换部署详细文档》。
7.检查drbd同步数据额情况
7.1 10.0.0.14(data primary)mount drbd0写数据测试
[root@drbd1 etc]#mount/dev/drbd0/data
注:(1)注意提供正式服务的drbd设备的名称为/dev/drbd0,而不是实际物理设备/dev/sdb5.
(2)做mysql双主多从集群及高可用时不能mount(交给heartbeat来控制)
(3)从的drbd默认情况不能mount提供读服务。
(4)本例实现的是双主drbd同时提供服务的高级模式,因此10.0.0.14/data可以提供正式服务,而再10.0.0.15上/data1作为drbd主提供正式服务。对端的资源再drbd启动的时候不可见。
7.2在data里写数据看对端(data secondry)有没有。
10.0.0.15(data secondry)上查看方法
[root@drbd2 etc]#drbdadm down data
[root@drbd2 etc]#mount/dev/sdb5/mnt
[root@drbd2 etc]1s /mnt
检查完毕恢复方法
[root@drbd2 etc]#umount/mnt
[root@drbd2 etc]#drbdadm up data
7.3 10.0.0.15(data1 primary)mount drbd1写数据测试
10.0.0.15(data1 primary)
[root@drbd2 etc]#mount/dev/drbd1/data1
注:(1)注意提供正式服务的drbd设备的名称为/dev/drbd1,而不是实际物理设备/dev/sdb6。
(2)做mysql双主多从集群及高可用时不能mount(交给heartbeat来控制)
(3)从的drbd默认情况不能mount提供读的服务。
(4)本例实现的是双主drbd同时提供服务的高级模式,因此10.0.0.14/data可以提供正式服务,而再10.0.0.15上/data1作为drbd主提供正式服务。对端的资源再drbd启动的时候不可见。
7.4在data1里写数据看对端(data1 secondry)有没有。
在data写数据看对端有没有(注意过程)
[root@drbd1 etc]#drbdadm down data1
[root@drbd1 etc]#mount/dev/sdb6/mnt
[root@drbd1 etc]#1s /mnt
检查完毕恢复方法
[root@drbd1 etc]#umount/mnt
[root@drbd1 etc]#drbdadm up data1
8.本文内容看考文献:
http//http://www.drbd.org/docs/install/
附录一:和本文相关的问道及应用有:
1.《fdisk和mkfs命令详细实践总结》
2.《YUM/RPM仓库创建和维护详细文档》
3.《modprobe&&ismod作用与用法小结》
4.《heartbeat在生产环境中的安装及配置》
5.《mysql+drbd双主模式+heartbeat高可用自动切换部署详细文档》
6.《mysql+heartbeat+drbd mysql双主多从集群及两端node同时提供服务的高可用互相监测并自动切换部署详细文档》
7.《a/a nfs+drbd+heartbeat数据存储高可用配置》
8.《drbd性能调优8项总结》
附录二:常见问题
问题1:drbd依赖于其内核模块,需手工加载:modprobe drbd
问题2:命令drbdadm up all相当于如下命令的组合:
问题3:处理大脑垂直分割问题
可选择一个机器作为secondary,在该机器上执行
drbdadm secondary all
drbdadm-- --discard-my-data connect all
在另一台机器执行
Drbdadm connect all
问题4:如果开机drbd自启动未关掉:启动drbd时会报如下错误
[root@drbd1 ~]#drbdadm up all
出现上面错误,就是drbd进程已经起了,可以先宕drbd服务在启动看看。
[root@drbd2 ~]#drbdadm down all
[root@drbd2 ~]#drbdadm up all
关掉方法:chkconfig drbd off
问题5:单机启动正常状态:
[root@drbd1~]#cat/proc/drbd
问题6:没有执行modprobe drbd引发的报错提示
[root@drbd2 ~]#drbdadm up all
问题7:针对根分区fdisk时,如果不重启系统?
[root@drbd2 ~]#drbdadm up all
问题8:主从drbd启动其状态的改变
当从drbd启动后
主的状态自动由
[root@drbd1 ~]#cat/proc/drbd
变为:
[root@drbd1 ~]#cat/proc/drbd
[root@drbd1 /]#drbdadm primary data指定data为主模式
[root@drbd1 /]#cat/proc/drbd
问题9:drbd主从数据不同步时,要设定主资源然后再进行同步数据到另一端
[root@drbd1 ~]#drbdadm primary data
原因:drbd主从不同步要设定主资源然后进行同步。
[root@drbd1 ~]#drbdadm -- --overwrite-data-of-peer primary data
问题10:关于mount分区
使用时一定要mount drbd的设备,否则搞不定。
这样子错误
问题11:如何检查drbd是否工作正常。(此问题正文里写过,本问题里为以前的文档保留)
下面通过实验来测试:
1.首先确定14(x)drbd状态正常:15(y)状态正常:
[root@drbd1 /]#cat/proc/drbd
15状态正常:
[root@drbd2 ~]#cat/proc/drbd
2、制造数据到主resource里。
14ryan主15pic主
再14上执行如下命令:
[root@drbd1 /]# mount/dev/drbd0/ryan
[root@drbd1 /]# cp-R/etc/ryan/
然后再15上检查数据:
[root@drbd2 ~]#drbdadm down ryan
[root@drbd2 ~]#mount/dev/sda4/ryan
[root@drbd2 ~]#11/ryan/
[root@drbd2 ~]#umount/ryan
[root@drbd2 ~]#drbdadm up ryan
[root@drbd2 ~]#cat/proc/drbd
注意:mount状态下启动drbd有问题。无论主从。
从库:
[root@drbd2 ~]#mount/dev/sda4/ryan
[root@drbd2 ~]#drbdadm up ryan//提示出错
[root@drbd2 ~]# umount/ryan/
[root@drbd2 ~]# drbddam up ryan
附录三:/etc/drbd.conf配置文件
注:有关此配置中参数的详细讲解,请阅读我的另外篇章《drbd.conf配置文件参数详解》
附录四:初始化drbd的metadata详细提示
[root@drbd1 etc]#drbdadm create-md all
附录五:drbd状态信息释疑:
[root@drbd1 /]#cat/proc/drbd
生产库实际状态:
[rhy@fdata-1-1 ~]$ cat/proc/drbd
连接状态
[root@fdata-1-1 ~]#drbdadm cstate all
Connected
Connected
第一行为:drbd的版本信息
第二行为:编译的信息
第三、五行为:开头“0”表示 设备/dev/drbd0。开头“1”表示 设备/dev/drbd1
状态有如下这些:
节点角色
[root@fdata-1-1 ~]#drbddadm role all
Secondary/primary
Primary/secondary
硬盘状态
[root@fdata-1-1 ~]#drbdadm dstate all
Up to date/up to date
Up to date/up to date
附录六:drbd的日常维护
1、修改drbd.conf配置文件
调整后使生效方法:drbdadm adjust all
2、切换角色
Drbdadm primary resource
Drbdadm secondary resource
3、enabling dual-primary mode(双主模式)
附录七:drbd介绍及同步原理
Drbd是一种块设备,可以被用于高可用(HA)之中。它类似于一个网络RAID-1功能。当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。
在高可用(HA)中使用drbd功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。
Drbd的工作原理如下图:
附录八:drbdadm命令介绍: