6.软件配置
1>.DRBD主配置文件(/etc/drbd.conf):
# vim /etc/drbd.conf
# You can find an example in /usr/share/doc/drbd.../drbd.conf.example
include "/etc/drbd.d/global_common.conf";
include "/etc/drbd.d/*.res";
## global_common.conf文件包含global和common的DRBD全局配置部分;
## *.res文件包含DRBD资源的配置信息。
## 编辑全局配置文件(global_common.conf):
# vim /etc/drbd.d/global_common.conf
# DRBD is the result of over a decade of development by LINBIT.
# In case you need professional services for DRBD or have
# feature requests visit http://www.linbit.com
global {
usage-count no; # 是否加入DRBD官方统计
}
common {
syncer {
verify-alg sha1; # 定义网络传输速率,一般传输速度的30%
rate 200M; }
}
resource r0 {
# 公用相同部分可以放到顶部,各节点会自动继承
protocol C; # 使用drbd的第三种同步协议,表示收到远程主机的写入确认后,则认为写入完成
handlers {
# 定义处理机制程序,/usr/lib/drbd/ 里有大量的程序脚本。
pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
fence-peer "/usr/lib64/heartbeat/drbd-peer-outdater -t 5";
pri-lost "echo pri-lost. Have a look at the log files. | mail -s 'DRBD Alert' denglei@ctfo.com";
split-brain "/usr/lib/drbd/notify-split-brain.sh denglei@ctfo.com";
out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh denglei@ctfo.com";
}
startup {
wfc-timeout 120;
degr-wfc-timeout 120;
}
options {
# cpu-mask on-no-data-accessible
}
disk { # 磁盘相关公共设置,比如I/O、数据状态
on-io-error detach; # 配置I/O错误处理策略为分离
fencing resource-only;
}
net {
# 设置DRBD同步时使用的验证方式和密码信息。
cram-hmac-alg sha1;
shared-secret "drbd";
}
device /dev/drbd0; # DRBD逻辑设备的路径
meta-disk internal; # drbd的元数据存放方式,DRBD磁盘内部。
# 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置.
on ser5.hyzc.com { # 此处是节点的主机名‘uname -n’
address 192.168.2.10:7788; # 设置DRBD的监听端口
disk /dev/sdb1; # 节点物理设备
meta-disk internal;
}
on ser6.hyzc.com {
address 192.168.2.11:7788;
disk /dev/sdb1;
meta-disk internal; #DRBD的元数据存储方式
}
}
3>.启用DRBD资源
a.在两个节点执行
## 创建设备元数据。这一步必须仅在创建初始化设备时完成。它初始化DRBD元数据。
# drbdadm create-md r0
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
从ser6的drbd输出可以看到,ser6成为了主机
然后把drbd挂载到mnt目录下,查看是否有ser5里建立的文件
[iyunv@ser6 mnt]# mount /dev/drbd0 /mnt/
[iyunv@ser6 mnt]# cd /mnt/
[iyunv@ser6 mnt]# ll
total 20
drwxr-xr-x 2 root root 4096 Aug 5 06:09 haha
drwx------ 2 root root 16384 Aug 5 05:58 lost+found
[iyunv@ser6 mnt]# cd haha/
[iyunv@ser6 haha]# ls
pjc.txt
可以看出,ser6成为主机时,收到了之前主机ser5建立的文件夹。
第二种方法:
停止备用节点ser6上面的DRBD服务 注:停用服务必须退出当前挂载的目录,不然报
r0: State change failed: (-12) Device is held open by someone
additional info from kernel:
failed to demote
ERROR: Module drbd is in use
[iyunv@ser6 /]# /etc/init.d/drbd stop
[iyunv@ser6 /]# mount /dev/sdb1 /mnt/
[iyunv@ser6 /]# df
[iyunv@ser6 /]# cd /mnt/
[iyunv@ser6 mnt]# ls
[iyunv@ser6 haha]# ls
haha pjc.txt tets
注:测试完后,要重新启动备用节点上面的DRBD服务,此时必须先卸载/dev/sdb1设备,然后才能成功启动DRBD服务。
这里挂载的是/dev/sdb1设备,而不是DRBD设备,因为DRBD服务只有到DRBD服务启动的时候才能加载到系统中。
解决办法:
# yum -y install docbook-style-xsl
configure: error: Cannot build utils without flex, either install flex or pass the --without-utils option.
解决方式:yum install flex
B、软件运行时,错误解决办法:
/etc/rc.d/init.d/drbd start
Starting DRBD resources: no resources defined!
解决办法:没有配置DRBD资源,或编译时没指定配置文件路径(/etc/drbd.conf)。
2、当执行命令”drbdadm create-md r0”时,出现以下错误信息。
Device size would be truncated, which would corrupt data and result in
'access beyond end of device' errors.
You need to either
* use external meta data (recommended)
* shrink that filesystem first
* zero out the device (destroy the filesystem)
Operation refused.
Command 'drbdmeta 0 v08 /dev/xvdb internal create-md' terminated with exit code 40
drbdadm create-md r0: exited with code 40
解决办法:初始化磁盘文件格式, dd if=/dev/zero of=/dev/sdXYZ bs=1M count=1