设为首页 收藏本站
查看: 1025|回复: 0

[经验分享] Linux DRBD 部署

[复制链接]

尚未签到

发表于 2018-5-24 10:40:24 | 显示全部楼层 |阅读模式
目 录
1概述.....................................................................
2镜像要求.................................................................
3准备工作.................................................................
3.1编译安装.................................................................
3.2drbd安装概...............................................................
3.3调整启动脚本.............................................................
4建立drbd.................................................................
4.1初始化Primary机(master)..................................................
4.2  验证磁盘镜像结果..........................................................
5drbd测试.................................................................
5.1写入文件测试.............................................................
5.2写入50000个20k的小文件测试...............................................
6几点注意的地方...........................................................

1概述
Distributed Replicated Block Device (DRBD) 分布式复制块设备
DRBD实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中。他是有内核模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能。也就是说当你将数据写入本地的DRBD设备上的文件系统时,数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文件系统中(实际上文件系统的创建也是由DRBD的同步来实现的)。本地节点(主机)与远程节点(主机)的数据可以保证实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的数据,可以继续使用,以达到高可用的目的。
在高可用(HA)解决方案中使用DRBD的功能,可以代替使用一个共享盘阵存储设备。因为数据同时存在于本地主机和远程主机上,在遇到需要切换的时候,远程主机只需要使用它上面的那份备份数据,就可以继续提供服务了   
源码下载http://oss.linbit.com/drbd/0.7/drbd-0.7.19.tar.gz
核心参考文档:http://www.drbd.org/drbd-howto.html
2镜像要求
实现vmware虚拟机192.168.197.134磁盘/dev/sdb1镜像到vmware虚拟机192.168.197.135磁盘/dev/sdb1。
主服务器为192.168.197.134 (data01)简称为134;
备份服务器为192.168.10.135(data02) 简称为135;
3准备工作
安装环境:Red Hat Enterprise Linux AS release 5,内核版本:2.6.18-164.el5
drbd内核源码存在,可到http://oss.linbit.com/drbd/去下载.
配置好yum仓库
[root@data01 ~]# yum  install   kernel*
[root@data01 ~]# yum  install   gcc*
[root@data01 ~]#yum   install   make*
3.1编译安装
[root@data01 ~]#cd /usr/local/src/drbd
[root@data01 ~]#./configure --prefix=/usr/local/drbd  --with-km
[root@data01 ~]#make
[root@data01 ~]#make install
[root@data01 ~]#ln -s /usr/local/drbd/etc/drbd.conf /etc/drbd.conf
[root@data01 ~]#ln -s /usr/local/drbd/etc/rc.d/init.d/drbd /etc/init.d/drbd
[root@data01 ~]#chkconfig --add drbd
[root@data01 ~]#chkconfig  drbd on
3.2DRBD安装概述
[root@data01 ~]#make install
安装完主要生成命令:drbdsetup ,drbdadmin,
执行之后: drbd.ko被安装到/lib/modules/$KernelVersion/kernel/drivers/block下.
如果不是在上面的路径下的话,就到程序目录下的drbd/目录里,有一个drbd.ko
drbd相关工具(drbdadm,drbdsetup)被安装到/sbin下.
并会在/etc/init.d/下建立drbd启动脚本.
3.3调整启动脚本
[root@data01 ~]# vim /etc/init.d/drbd
case "$1" in
    start) 在start服务后添加以下内容
insmod  /lib/modules/2.6.18-164.el5/kernel/drivers/block/drbd.ko
cat > /etc/drbd.conf <<EOF
global {  usage-count yes;  }
common {
    protocol C;
    syncer { rate 3M; }
    startup {
        wfc-timeout 10;
        degr-wfc-timeout 120;
        outdated-wfc-timeout 5;
        }
}
resource r0 {
    device minor 1;
    meta-disk internal;
    # 设置主备机之间通信使用的信息算法.
    net {
        cram-hmac-alg sha1;
        shared-secret "secret string";
    }
    # 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置
    on data01 {
        device /dev/drbd0;
        disk /dev/sdb1;
        address 192.168.197.134:7801;
    }
    on data02 {
        device /dev/drbd0;
        disk /dev/sdb1;
        address 192.168.197.135:7801;
    }
}
EOF
   
4.建立drbd
建立drbd设备,启动drbd服务(master,slave)
1.建立md设备
在启动DRBD之前,你需要分别在两台主机的sdc1分区上,创建供DRBD记录信息的数据块.
注意:如果你在这步之前已经给/dev/sdb1格式化的话,这里会报错,并且无法继续,抱错内容如下:
md_offset  ...........
            al_offset ...........
            bm_offset ...........
            Found ext3 filesystem which uses  
            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

           
根据报错和官方描述的大概意思就是:有了文件系统,会被认为该设备已经被使用,不能被drbd所使用,最好的解决办法就是低格硬盘破坏该文件系统
官方的方法如下: 破坏文件系统 :dd if=/dev/zero bs=1M count=1 of=/dev/sda3; sync
[root@data01 ~]#drbdadm create-md r0     // 配置文件中的resource名
  --==  Thank you for participating in the global usage survey  ==--
The server's response is:
you are the 1889th user to install this version
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
Success
2.启动drbd服务程序
[root@data01 ~]# /etc/init.d/drbd start
3. 确认drbd状态
[root@data01 ~]# cat /proc/drbd
version: 8.3.9 (api:88/proto:86-91)
GIT-hash: f3606c47cc6fcf6b3f086e425cb34af8b7a81bbf build by root@master , 2010-07-12 15:36:10
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:10723020
--------Secondary/Secondary 表示两个节点都处于辅助(从)状态
先确认两台要镜像的机器是否正常,之间的网络是否通畅,需要加载的硬盘是否处于umount状态,配置文件是否一致。
drbd采用的是模块控制的方式,所以先要加载drbd.ko 模块
4.1初始化Primary机(master):
  1. 设为主导状态(同步发起端)
[root@data01 ~]# drbdsetup /dev/drbd0 primary -o
[root@data01 ~]#cat /proc/drbd
version: 8.3.9 (api:88/proto:86-95)
GIT-hash: 1c3b2f71137171c1236b497969734da43b5bec90 build by root@data01, 2011-06-19 11:05:32
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:2554636 nr:0 dw:104868 dr:2449970 al:36 bm:150 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0-------如需降级为备机,可执行
umount /dev/drbd0
drbdadm secondary r0
[root@data01 ~]#netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:674                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      
tcp        0      0 192.168.197.134:35996       192.168.197.135:7801        ESTABLISHED
tcp        0      0 192.168.197.134:7801        192.168.197.135:47924       ESTABLISHED
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0   1056 ::ffff:192.168.197.134:22   ::ffff:192.168.197.1:50615  ESTABLISHED
4.2 验证磁盘镜像结果
1. master主节点
[root@data01 ~]#mkfs.ext3 /dev/drbd0  //此操作只要主的上进行即可
[root@data01 ~]#mkdir /data
[root@data01 ~]#mount -o rw /dev/drbd0 /data
2.slave备节点
[root@data02 ~]#mkdir /data
设置权限
drbd的基本服务都起来了,现在需要对主的服务器也就使192.168.197.134这台服务器进行配置,使之能够对drbd0设备进行读写。
在134机器上运行
[root@data01 data]#  drbdadm -- --do-what-I-say  primary r0
drbdsetup primary: unrecognized option '--do-what-I-say'
Command 'drbdsetup 0 primary --do-what-I-say' terminated with exit code 20
drbdadm primary r0: exited with code 20
#设置134服务器为同步主目录,也就是同步以134的这个分区为准.
注意命令格式需要一样,没有任何提示的话表示基本上成功了
#df –h
[root@data01 data]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda2              12G  5.0G  5.8G  47% /
/dev/sda1              99M   29M   65M  31% /boot
tmpfs                 125M     0  125M   0% /dev/shm
/dev/drbd0            2.3G   68M  2.2G   4% /data
现在/dev/drbd0就等于你服务器上面的一个硬件设备,你可以对他进行任何的读写操作。
5drbd测试
5.1写入文件测试
1:在134主服务器上
#drbdadm primary r0
#time dd if=/dev/zero of=/data/drbdtest count=100 bs=100000
#ls –lh /data/
[root@data01 data]# drbdadm   primary  r0
[root@data01 data]# time dd if=/dev/zero of=/data/drbdtest count=100 bs=100000
100+0 records in
100+0 records out
10000000 bytes (10 MB) copied, 0.0494228 seconds, 202 MB/s
real    0m0.099s
user    0m0.001s
sys     0m0.049s
[root@data01 data]# ls  -lh /data/
总计 9.6M
-rw-r--r-- 1 root root 9.6M 06-19 14:11 drbdtest
drwx------ 2 root root  16K 06-19 12:16 lost+found
[root@data01 data]# umount  /data/
[root@data01 ~]# drbdadm secondary r0
2:接着到135备用服务器上执行
[root@data02 ~]# drbdadm primary r0
[root@data02 ~]# mount /dev/drbd0   /data/
#ls –lh /data
[root@data02 ~]# ls -lh /data/
总计 9.6M
-rw-r--r-- 1 root root 9.6M 06-19 14:11 drbdtest
drwx------ 2 root root  16K 06-19 12:16 lost+found
可以看到数据在134服务器写入,在135马上可以看到。
5.2写入50000个20k的小文件测试
[root@data02 ~]#  cat test.sh
#!/bin/sh
for((i=0;i<$1;i++));
do
dd if=/dev/zero of=/data/$i count=20 bs=1000;
done
执行:time ./test.sh 50000
在/data目录下写入40000个20k的小文件,耗时10分20秒,速度稍慢。
6几点注意的地方
1. mount drbd设备以前必须把设备切换到primary状态。
2. 两个节点中,同一时刻只能有一台处于primary状态,另一台处于secondary状态。
3. 处于secondary状态的服务器上不能加载drbd设备。
4. 主备服务器同步的两个分区大小最好相同,这样不至于浪费磁盘空间,因为drbd磁盘镜像相当于网络raid 1.
5.在配置过程中,如果出现下面错误
Missing argument 'meta_data_dev'
USAGE:
disk lower_dev meta_data_dev meta_data_index [{--size|-d} 0 ... 8587575296]
     [{--on-io-error|-e} {pass_on|call-local-io-error|detach}]
     [{--fencing|-f} {dont-care|resource-only|resource-and-stonith}] [{--use-bmbv|-b}]
那么就还要初始化meta-data area
drbdadm create-md r0
5.测试中发现,一次性创建小文件过多的话,会导致/dingwy分区变成只读分区,不知道是在虚拟机的问题还是drbd不太稳定,还需要进一步测试。  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-480584-1-1.html 上篇帖子: Linux sed命令小结 下篇帖子: linux ab命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表