阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

145次阅读
没有评论

共计 8582 个字符,预计需要花费 22 分钟才能阅读完成。

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 的功能,如图所示:

DRBD 简介 安装、编译报错解决 DRBD 的配置、初始化及同步、主备模型
 
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     
若报错如下:

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

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

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

[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
 
DRBD 简介 安装、编译报错解决 DRBD 的配置、初始化及同步、主备模型

[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
DRBD 简介 安装、编译报错解决 DRBD 的配置、初始化及同步、主备模型
[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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8582字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中