共计 1750 个字符,预计需要花费 5 分钟才能阅读完成。
测试吞吐量:
测试系统吞吐量不是关键,最重要的是在使用 DRBD 性能前后的影响;该测试使用一个 512M 的块到 drbd 设备,进行对比测试
#!/bin/bash
resource=r0
test_device=`drbdadm sh-dev $resource`
test_ll_device=`drbdadm sh-ll-dev $resource`
drbdadm primary $resource
for i in $(seq 5)
do
dd if=/dev/zero of=$test_device bs=512M count=1 oflag=direct
done
drbdadm down $resource
for i in $(seq 5)
do
dd if=/dev/zero of=$test_ll_device bs=512M count=1 oflag=direct
done
drbdadm up $resource
注意:
1、dd 要使用关键字 oflag=direct 即写文件的时候忽略 cache 的影响;还有一个可选的关键字 iflag=directio, 用来控制源文件和目标文件的读写方式为 directio;
2、以上脚本是需要两个角色是 secondary 的时候进行测试;
3、测试完,在设定 primary node 并挂载 /dev/drbd0 的时候会提示“mount: you must specify the filesystem type”,需要重新格式化 /dev/drbd0
优化部分:
这个主要还是看硬件,磁盘的转速啊,网络的吞吐啊,
调整参数建议:
net {
max-buffers 8000;
max-epoch-size 8000;
sndbuf-size 0;
}
max-buffers: 是 drbd 数据写入到磁盘缓冲区的最大数,默认为 2048;
max-epoch-size 是两个写入瓶颈的最大允许写的数量;
sndbuf-size: TCP 发送缓冲区大小,设置为 0,可以自动调节大小;
syncer {
rate 90M;
al-extents 257;
}
al-extents: 活动日志的大小,多少个 x4M 的 block;增大这个值的好处是:
减少更新元数据到 drbd 设备上的频率;
降低同步数据时对 IO 流的中断数量;
提高 drbd 设备相应速度;
存在的风险是:当 primary node crash 后,所有的活动数据(al-extentsx 4M block)需要重新同步,这个时间 secondary node 是 outdate 状态,修复时间变长;
sync rate 参数设置,只有 backgroud re-synchronization 才会受限于该参数的设置;另一个同步进程只负责同步一些 block 的更改,不受限该参数;所以改值不要设置的太大,以防占用太多的带宽,导致 IO 出现同步异常;
disk {
on-io-error detach;
disk-flushes no;
}
磁盘考虑不少于 6 块 15K 的 sas 磁盘做 raid10,或者直接使用 ssd,如果 raid 卡有 bbu 电池保护的话,可以考虑进行禁止 drbd 的磁盘刷写;
可以参考官网推荐,更改 IO 调度算法:
echo deadline > /sys/block/<device>/queue/scheduler(sas 盘可以用 deadline;ssd 的话可以考虑使用 noop 调度算法)
相关阅读 :
Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm
DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm
CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm
基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm
CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm
DRBD 的详细介绍 :请点这里
DRBD 的下载地址 :请点这里