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

[经验分享] DRBD编译安装配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-10 09:59:17 | 显示全部楼层 |阅读模式
一、简介   
spacer.jpg wKiom1Yy2engqFyZAABNdBRd5XE057.jpg
    DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。与心跳连接结合使用,也可以把它看作是一种网络RAID。
    DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。 DRBD Logo数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)。DBRD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT文件系统的崩溃。DBRD的位置处于文件系统以下,比文件系统更加靠近操作系统内核及IO栈。

二、工作模式及协议
①工作模式
单主模式:典型的高可靠性集群方案。DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机,另一个主机再将数据存到自己的磁盘中。
复主模式:需要采用共享cluster文件系统,如GFS和OCFS2。用于需要从2个节点并发访问数据的场合,需要特别配置。

②复制协议
协议A:异步复制协议。本地写成功后立即返回,数据放在发送buffer中,可能丢失。
协议B:内存同步(半同步)复制协议。本地写成功并将数据发送到对方后立即返回,如果双机掉电,数据可能丢失。
协议C:同步复制协议。本地和对方写成功确认后返回。如果双机掉电或磁盘同时损坏,则数据可能丢失。
一般用协议C。选择协议将影响流量,从而影响网络时延。


三、安装依赖并编译drbd
①安装相关程序
1
2
3
4
5
6
# yum -y install gcc make automake autoconf kernel-devel kernel-headers flex libxslt
libxslt-devel asciidoc
# wget http://oss.linbit.com/drbd/9.0/drbd-9.0.0.tar.gz
# wget http://oss.linbit.com/drbd/drbd-utils-8.9.4.tar.gz
# getenforce 0
# systemctl stop firewalld



注:安装kernel-devel一定要和uname -r看到的内核版本一致.

②编译drbd-utils
1
2
3
4
5
6
7
# tar -zxvf drbd-utils-8.9.4.tar.gz
# cd drbd-utils-8.9.4
# ./autogen.sh
# ./configure --prefix=/usr/ --localstatedir=/var --sysconfdir=/etc
# make KDIR=/usr/src/kernels/3.10.0-229.14.1.el7.x86_64
# make install
# cp drbd-utils-8.9.4/scripts/drbd /etc/init.d/     ##复制启动脚本




③编译drbd
1
2
3
4
5
# tar -zxvf drbd-9.0.0.tar.gz
# cd drbd-9.0.0
# make KDIR=/usr/src/kernels/3.10.0-229.14.1.el7.x86_64
# make install
# make -C drbd install




④安装drbd模块

1
2
3
4
5
6
7
8
9
10
11
12
# cd drbd-9.0.0/drbd
# cp drbd.ko /lib/modules/3.10.0-229.el7.x86_64/kernel/lib/
# cp drbd_transport_tcp.ko /lib/modules/3.10.0-229.el7.x86_64/kernel/lib/
# depmod                      ##更新内核包关联文件
# modprobe drbd                ##安装内核模块
# modprobe drbd_transport_tcp
# lsmod |grep drbd           ##查看模块是否加载成功
drbd                  463948  0
libcrc32c              12644  2 xfs,drbd
# lsmod|grep drbd_transport_tcp
drbd_transport_tcp     17731  0
drbd                  463948  2 drbd_transport_tcp




⑤查看drbd版本及路径
1
2
3
4
5
6
# cat /proc/drbd                                         ##查看版本信息
version: 9.0.0 (api:2/proto:86-110)
GIT-hash: e0e3bc833053a0ed6b4b593b32e40223a9373fb7 build by root@node1, 2015-10-29 19:16:18
Transports (api:8): tcp (1.0.0)
# whereis drbd                         ##查看drbd安装路径
drbd: /usr/lib/drbd /etc/drbd.conf /etc/drbd.d /usr/share/man/man8/drbd.8




四、添加新磁盘并分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# fdisk -l
# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xd9a29d5a 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-2097151,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):+300M
分区 1 已设置为 Linux 类型,大小设为 300 MiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
# fdisk -l




五、配置drbd
①主配置文件drbd.conf

1
2
3
4
# cat /etc/drbd.conf             ##查看drbd的主配置文件
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example
include "drbd.d/global_common.conf";
include "drbd.d/*.res";




②配置global_common.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# cat /etc/drbd.d/global_common.conf|grep -v "#"
global {
    usage-count no;       ##是否参加drbd的使用者统计,默认此选项为YES
}
common {
    handlers {
    }
    startup {
    }
    options {
    }
    disk {
    }
    net {
    }
}




③新建资源配置文件:
a.定义资源文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# vi /etc/drbd.d/drbd.res                      ##新建资源配置文件为drbd.res
resource r1 {                                ##定义资源组名称为r1
         net {
               cram-hmac-alg sha1;             ##使用sha1加密
               shared-secret "123456";           ##生成加密密钥
         }
         volume 1 {                          ##定义卷组
               device    /dev/drbd1;        ##逻辑设备路径(建立块设备)
               disk      /dev/sdb1;        ##物理设备路径(用于复制的分区)
               meta-disk internal;        ##meta data信息存放的方式,该处为内部存储,即和真实数据放在一起存储
         }
         on node1 {                    ##on开头,后面是主机名称(需与uname -n相同)
               node-id    0;
               address    192.168.10.132:7000;      ##设置drbd监听地址和端口
          }
          on node2 {
               node-id    1;
               address    192.168.10.133:7000;
          }
          connection {
               host node1  port 7000;
               host node2  port 7000;
               net {
                       protocol C;              ##使用drbd的第三种同步协议,表示收到对方主机写入确认后,则认为写入完成
               }
          }
}



b.配置resource
1
2
3
4
5
6
7
# dd if=/dev/zero of=/dev/sdb1 bs=1M count=100          ##用指定大小的块拷贝一个文件
# drbdadm -c /etc/drbd.conf create-md all        ##创建设备元数据
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success




1
2
3
4
5
6
7
8
9
10
# drbdadm create-md r1                   ##创建r1设备元(注:使用上命令,则该命令非必须)
You want me to create a v09 style flexible-size internal meta data block.
There appears to be a v09 flexible-size internal meta data block
already in place on /dev/sdb1 at byte offset 314568704
Do you really want to overwrite the existing meta-data?
[need to type 'yes' to confirm] yes
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.




1
2
3
# drbdadm up r1                     ##启用该资源
Device '1' is configured!
Command 'drbdmeta 1 v09 /dev/sdb1 internal apply-al' terminated with exit code 20



1
2
# drbd-overview                        ##查看状态
1:r1/0  Connected(1*) Secondary(1*) Inconsistent(1*)




六、drbd同步测试

①配置primary node
设置node1为primary node:
1
2
3
# drbdadm primary r1
# drbd-overview
1:r1/1  Connected(2*) Primar/Second UpToDa/UpToDa



node2状态:
1
2
# drbd-overview
1:r1/1  Connected(2*) Second/Primar UpToDa/UpToDa



格式化并挂载(node1):
1
2
3
4
5
# mkdir /drbd
# mkfs.ext4 /dev/drbd1                ##格式化/dev/drbd1
# mount /dev/drbd1 /drbd                ##挂载
# drbd-overview                    ##查看状态
1:r1/1  Connected(2*) Primar/Second UpToDa/UpToDa /drbd ext4 283M 2.1M 262M 1%




②进行同步测试
node1:
在node1下的挂载点/drbd写入一些数据
1
2
3
4
# umount /dev/drbd1                          ##卸载/dev/drbd1
# drbdadm secondary r1                        ##将主节点降级为备节点
# drbd-overview                       
1:r1/1  Connected(2*) Secondary(2*) UpToDa/UpToDa



wKioL1YzL2nyBhsPAAGuwZIPHt4728.jpg
node2:
1
2
3
4
# mount /dev/drbd1 /drbd                       ##挂载设备
# drbdadm primary r1                         ##将node2升级为主节点
# drbd-overview
1:r1/1  Connected(2*) Primar/Second UpToDa/UpToDa /drbd ext4 283M 3.2M 261M 2%



wKiom1YzMiLRGHlJAAFQxKSoRy8441.jpg
已实现同步!

附:
1
2
# drbdadm role r1                   ##查看节点状态
Secondary



1
# drbdadm dstate r1               ##查看硬盘状态



本地和对等节点的硬盘可能为下列状态之一:
diskless(无盘):本地没有块设备分配给DRBD使用,表示无可用设备,或是使用drbdadm命令手工分离;
                或是底层的I/O错误导致自动分离。
attaching:读取无数据时的瞬间状态。
failed(失败):本地块设备报告I/O错误的下一个状态,其下一个状态为diskless无盘。
negotiating:在已连接的DRBD设置进行attach读取无数据前的瞬间状态。
inconsistent:数据不一致,在两个节点上(初始的完全同步前)这种状态出现后立即创建一个新的资源。
outdated:数据资源一致,但已过时。
dunknown:当对等节点网络连接不可用时会出现该状态
consistent:一个没有连接的节点数据一致,当建立连接时,它决定数据是uptodate或outdated
uptodate:一致的最新的数据状态,为正常状态


运维网声明 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-137400-1-1.html 上篇帖子: 大数据迁移之DRBD扩容 下篇帖子: gfs2+cman+rgmanager+iscsi实现文件集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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