手机版
你好,游客 登录 注册
背景:
阅读新闻

DRBD简介 安装、编译报错解决 DRBD的配置、初始化及同步、主备模型

[日期:2016-10-13] 来源:Linux社区  作者:firelowrie [字体: ]

DRBD简介 安装、编译报错解决 DRBD的配置、初始化及同步、主备模型

主机环境 RedHat6.5 64位
实验环境 服务端1 ip 172.25.25.111 主机名:server1.example.com  drbd
    服务端2 ip172.25.25.112  主机名:server2.example.com    drbd

安装包 drbd-8.4.3.tar.gz
防火墙状态:关闭
 
1.Debd的简介
1.基本信息
Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。
DRBD的位置处于文件系统以下,比文件系统更加靠近操作系统内核及IO栈。
2.工具
drbdadm:高级管理工具,管理/etc/drbd.conf,向drbdsetup和drbdmeta发送指令,
drbdsetup:配置装载进kernel的DRBD模块,平时很少直接用
drbdmeta:管理META数据结构,平时很少直接用。
在DRBD中,资源是特指某复制的存储设备的所有方面。包括资源名称、DRBD设备(/dev/drbdm,这里m是设备最小号,最大号可到147)、磁盘配置(使本地数据可以为DRBD所用)、网络配置(与对方通信)
每个资源有个角色,是Primary或Secondary,下面简称"主"和"备"
主角色的DRBD设备可以不受限制的读和写,比如创建和映射文件系统、对于块设备的raw或直接IO访问。
备角色的DRBD设备接受来自对方的所有修改,但是不能被应用程序读写,甚至只读也不行。
角色可以改变。
3.DRBD工作原理图
DRBD是linux的内核的存储层中的一个分布式存储系统,可用使用DRBD在两台Linux服务器之间共享块设备,共享文件系统和数据。类似于一个网络RAID-1的功能,如图所示:


 
2. 编译、安装drbd内核模块计及测试
1.编译、安装drbd内核模块,报错解决及debd的配置(服务端1)
[root@server1 mnt]# ls
drbd-8.4.3.tar.gz   
[root@server1 mnt]# tar zxf drbd-8.4.3.tar.gz      #解压
[root@server1 mnt]# ls
drbd-8.4.3          drbd-8.4.3.tar.gz
[root@server1 mnt]# cd drbd-8.4.3
[root@server1 drbd-8.4.3]# ./configure --enable-spec --with-km     
若报错如下:

则安装:
[root@server1 drbd-8.4.3]# yum install flex -y
 
[root@server1 drbd-8.4.3]# ./configure --enable-spec --with-km
WARNING系统可以跳过,如下:

[root@server1 drbd-8.4.3]# yum install rpm-build -y
 
[root@server1 drbd-8.4.3]# ./configure --enable-spec --with-km
[root@server1 drbd-8.4.3]# rpmbuild -bb drbd.spec      #
error: File /root/rpmbuild/SOURCES/drbd-8.4.3.tar.gz: No suchfile or directory
[root@server1 drbd-8.4.3]# cp /mnt/drbd-8.4.3.tar.gz/root/rpmbuild/SOURCES/
[root@server1 drbd-8.4.3]# rpmbuild -bb drbd.spec
 

[root@server1 drbd-8.4.3]# rpmbuild -bb drbd-km.spec
error: Failed build dependencies:
    kernel-devel is neededby drbd-km-8.4.3-2.el6.x86_64      #报错,缺少包[root@server1drbd-8.4.3]# yum install kernel-devel -y
[root@server1 drbd-8.4.3]# rpmbuild -bb drbd-km.spec

[root@server1 drbd-8.4.3]# cd /root/rpmbuild/RPMS/x86_64/      #切换目录
[root@server1 x86_64]# ls      #生成10个安装包
drbd-8.4.3-2.el6.x86_64.rpm
drbd-bash-completion-8.4.3-2.el6.x86_64.rpm
drbd-debuginfo-8.4.3-2.el6.x86_64.rpm
drbd-heartbeat-8.4.3-2.el6.x86_64.rpm
drbd-km-2.6.32_431.el6.x86_64-8.4.3-2.el6.x86_64.rpm
drbd-km-debuginfo-8.4.3-2.el6.x86_64.rpm
drbd-pacemaker-8.4.3-2.el6.x86_64.rpm
drbd-udev-8.4.3-2.el6.x86_64.rpm
drbd-utils-8.4.3-2.el6.x86_64.rpm
drbd-xen-8.4.3-2.el6.x86_64.rpm
[root@server1 x86_64]# yum install * -y    #安装所有的包
[root@server1 x86_64]# scp * root@172.25.25.112:/mnt      #将包传给服务端2
[root@server2 mnt]# ls
drbd-8.4.3-2.el6.x86_64.rpm
drbd-bash-completion-8.4.3-2.el6.x86_64.rpm
drbd-debuginfo-8.4.3-2.el6.x86_64.rpm
drbd-heartbeat-8.4.3-2.el6.x86_64.rpm
drbd-km-2.6.32_431.el6.x86_64-8.4.3-2.el6.x86_64.rpm
drbd-km-debuginfo-8.4.3-2.el6.x86_64.rpm
drbd-pacemaker-8.4.3-2.el6.x86_64.rpm
drbd-udev-8.4.3-2.el6.x86_64.rpm
drbd-utils-8.4.3-2.el6.x86_64.rpm
drbd-xen-8.4.3-2.el6.x86_64.rpm
[root@server2 mnt]# rpm -vih *          #安装
Preparing...              ########################################### [100%]
  1:drbd-utils            ########################################### [ 10%]
  2:drbd-bash-completion  ########################################### [ 20%]
  3:drbd-heartbeat        ########################################### [ 30%]
  4:drbd-pacemaker        ########################################### [ 40%]
  5:drbd-udev            ########################################### [ 50%]
  6:drbd-xen              ########################################### [ 60%]
  7:drbd                  ###########################################[ 70%]
  8:drbd-km-2.6.32_431.el6.########################################### [80%]
  9:drbd-km-debuginfo    ########################################### [ 90%]
  10:drbd-debuginfo        ###########################################[100%]
 
在服务端1和服务端2虚拟机中各添加一块虚拟磁盘或划分一个新的分区,然后进行下面的步骤:
 
[root@server1 x86_64]# cd /etc/drbd.d/    #切换到drbd的主配置文件目录
[root@server1 drbd.d]# vim dbdata.res    #创建一个文件,后缀必须是.res
  1 resource dbdata{
  2 meta-disk internal;
  3 device /dev/drbd1;
  4 syncer {
  5 verify-alg sha1;        #设置主备机之间通信使用的信息算法
  6 }
#每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置
  7 on server1.example.com{    #主机名
  8 disk /dev/vdb;            #磁盘名称
  9 address172.25.29.1:7789;      #ip加端口,端口是指定的
 10 }
 11 onserver2.example.com{
 12 disk /dev/vdb;
 13 address172.25.29.2:7789;
 14 }
 15 }
 
[root@server1 drbd.d]# scp dbdata.resroot@172.25.29.2:/etc/drbd.d/
root@172.25.29.2's password:
#服务端1和服务端2同时初始化 ,同时开启drbd
[root@server1 drbd.d]# drbdadm create-md dbdata    #初始化
  --==  Thank you for participating in the globalusage survey  ==--
The server's response is:
 
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
 
[root@server2 drbd.d]# drbdadm create-md dbdata
  --==  Thank you for participating in the globalusage survey  ==--
The server's response is:
 
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
 
2.drbd的开启初始化、强制主备同步及格式化(主备模型)
[root@server1 drbd.d]# /etc/init.d/drbd start      #开启drbd
[root@server2 drbd.d]# /etc/init.d/drbd start
 
[root@server1 drbd.d]# cat /proc/drbd  #查看
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:Connectedro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
    ns:0 nr:0 dw:0 dr:0al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2097052 
 
[root@server2 drbd.d]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:Connectedro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
    ns:0 nr:0 dw:0 dr:0al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2097052
#从上面可以看出两个都是secondary
 
[root@server1 drbd.d]# drbdadm primary dbdata --force  #强制使服务端1变成primary
[root@server1 drbd.d]# cat /proc/drbd      #查看,服务端1和服务端2正在同步
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:SyncSource ro:Primary/Secondaryds:UpToDate/Inconsistent C r-----
    ns:496640 nr:0 dw:0dr:497304 al:0 bm:30 lo:0 pe:4 ua:0 ap:0 ep:1 wo:f oos:1604508
    [===>................]sync'ed: 23.7% (1604508/2097052)K
    finish: 0:00:16 speed:98,508 (98,508) K/sec
 
[root@server1 drbd.d]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:SyncSourcero:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
    ns:1566436 nr:0 dw:0dr:1569432 al:0 bm:94 lo:0 pe:16 ua:3 ap:0 ep:1 wo:f oos:546716
    [=============>......]sync'ed: 74.1% (546716/2097052)K
    finish: 0:00:08 speed:64,596 (64,596) K/sec
 
[root@server1 drbd.d]# cat /proc/drbd  #同步完成,服务端1为primary
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:Connectedro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:2097052 nr:0 dw:0dr:2097716 al:0 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
 
[root@server2 drbd.d]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:Connectedro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:0 nr:2097052dw:2097052 dr:0 al:0 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[root@server1 drbd.d]# mkfs.ext4 /dev/drbd1    #格式化
 
3.切换主备测试是否同步成功
[root@server1 drbd.d]# mount /dev/drbd1 /mnt/          #将格式化好的磁盘挂载到/mnt上
[root@server1 drbd.d]# cd /mnt/    #切换到/mnt
[root@server1 mnt]# ls
lost+found
[root@server1 mnt]# touch file{1..4}      #创建几个文件
[root@server1 mnt]# ls
file1  file2  file3 file4  lost+found
[root@server1 mnt]# cd
[root@server1 ~]# umount /mnt/          #卸载
[root@server1 ~]# drbdadm secondary dbdata    #将服务端1变成secondary
[root@server1 ~]# cat /proc/drbd          #查看
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:Connectedro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
    ns:2163404 nr:0dw:66352 dr:2098429 al:13 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[root@server2 drbd.d]# drbdadm primary dbdata  #将服务端2变成primary
[root@server2 drbd.d]# cat /proc/drbd  #查看
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build byroot@server1.example.com, 2016-10-08 15:10:25
 
 1: cs:Connectedro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:0 nr:2163404dw:2163404 dr:664 al:0 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
 
[root@server2 drbd.d]# mount /dev/drbd1 /mnt/    #挂载
[root@server2 drbd.d]# cd /mnt/
[root@server2 mnt]# ls              #查看,同步成功
file1  file2  file3 file4  lost+found

有关DRBD的相关知识,可以参考:
DRBD原理及特性概述 http://www.linuxidc.com/Linux/2015-11/124759.htm
快速安装及部署DRBD  http://www.linuxidc.com/Linux/2015-11/124760.htm

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 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-10/135985.htm

linux
相关资讯       DRBD 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款