专栏首页WalkingCloud分布式块设备复制技术DRBD的简单实践

分布式块设备复制技术DRBD的简单实践

DRBD(Distributed Replicated Block Device)分布式复制块设备是基于软件的无共享复制存储解决方案,可镜像主机之间的块设备(硬盘,分区,逻辑卷等)的内容

DRBD镜像数据的特点

1)实时:当应用程序修改设备上的数据时,复制将连续进行。

2)透明:应用程序不需要知道数据存储在多个主机上。

3)同步或异步

使用同步镜像,在所有主机上执行写操作后,将通知应用程序写完成。

使用异步镜像,当本地完成写入时(通常在它们传播到其他主机之前),会通知应用程序写入完成。


结合上面的拓扑图,简单实践一下DRBD

Node1:192.168.31.6

Node2:192.168.31.7

已配置好了双机互信,可以参考之前的高可用集群Heartbeat配置实践中的配置

1、yum安装DRBD的相关安装包kmod-drbd84、drbd84-utils

1)先安装ELRepo yum源

yum install https://www.elrepo.org/elrepo-release-6-9.el6.elrepo.noarch.rpm

ELRepo是CentOS十分有用的稳定的软件源,与其他软件源不一样的是,这个第三方源主要是提供硬件驱动、内核更新方面的支持,如显卡、无线网卡、内核等等

2)yum install kmod-drbd84

会自动安装drbd84-utils

Installing : drbd84-utils-9.5.0-1.el6.elrepo.x86_64

Installing : kmod-drbd84-8.4.11-1.el6_10.elrepo.x86_64

且会自动更新内核版本

2、在node1和node2分别添加一块磁盘分区,且不要格式化

如下图所示/dev/sda6 大小为10G

3、配置drbd的配置文件

cat /etc/drbd.conf可以看出drbd的配置文件分为两个

1)全局配置文件global_common.conf

2)资源配置文件*.res(自行创建)

首先cd /etc/drbd.d,备份一下全局配置文件

cp global_common.conf global_common.conf_default_bak

vi global_common.conf

global {

usage-count yes;

}

common {

handlers {

pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";

pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";

local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";

}

startup {

}

options {

}

disk {

on-io-error detach;

}

net {

cram-hmac-alg "sha1";

shared-secret "www.walkingcloud.cn";

}

syncer {

rate 1000M;

}

}

再配置res资源配置文件 vi disk_sda6_sync.res

resource disk_sda6_sync {

on node1.walkingcloud.cn{

device /dev/drbd0;

disk /dev/sda6;

address 192.168.31.6:7789;

meta-disk internal;

}

on node2.walkingcloud.cn {

device /dev/drbd0;

disk /dev/sda6;

address 192.168.31.7:7789;

meta-disk internal;

}

}

4、配置文件同步到node2上

scp global_common.conf disk_sda6_sync.res node2:/etc/drbd.d/

5、加载drbd到内核

lsmod | grep drbd

modprobe drbd

ssh node2 "lsmod | grep drbd"

6、在两个节点上初始化已定义的资源并启动drbd服务

1)初始化资源,在Node1和Node2上分别执行:

drbdadm create-md disk_sda6_sync

2)启动服务,在Node1和Node2上分别执行:

service drbd start

3)查看启动状态

cat /proc/drbd

或者drbd-overview

4)从上面的信息中可以看出此时两个节点均处于Secondary状态。于是接下来需要将其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令

drbdadm -- --force primary disk_sda6_sync

可以使用iftop查看同步时的网络流量

iftop -i eth0 -N -n -m 1000M -P

等待同步进度完成

7、在node1主节点上格式化,并挂载,测试文件写入

文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化

8、测试高可用性

1)先在主节点上卸载并切换为Secondary

umount /dev/drbd0

drbdadm secondary disk_sda6_sync

drbd-overview

2)在node2上将资源设置为主,直接挂载

drbdadm primary disk_sda6_sync

mount /dev/drbd0 /home

可以正常读取,当然这是手动切换primary和secondary来实现,在实际生产环境可以drbd+corosync等方式实现自动化故障迁移,后期再进行实践测试

本文分享自微信公众号 - WalkingCloud(WalkingCloud2018)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux系统下安装zookeeper注册中心详细步骤

    在如何创建一个Dubbo的Demo里面我简单介绍了下在Windows系统下安装zookeeper过程,但是实际开发中我们都是把监控中心安装在Linux里面的,今...

    框架师
  • numpy在cs231n中的应用

    0.作者的话1.访问数组2.broadcast机制3.np.bincount()4.np.argmax()5.联合求解6.求取精度7.作者的话

    公众号guangcity
  • 虚拟化

    yum install -y docker* docker pull nignx docker pull centos docker version ...

    用户5760343
  • Linux经典面试题,了解一下!

    绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?

    框架师
  • 使用scikit-learn进行机器学习

    导语 为什么要出这个教程?1.基本用例:训练和测试分类器练习2.更高级的用例:在训练和测试分类器之前预处理数据2.1 标准化您的数据2.2 错误的预...

    公众号guangcity
  • Ghost 博客平台安装和配置

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    Alan Lee
  • Android Monkey压力测试介绍

    Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上。 Monkey会发送伪随机的用户...

    测试开发社区
  • Numpy实战全集

    0.导语1.Numpy基本操作1.1 列表转为矩阵1.2 维度1.3 行数和列数()1.4 元素个数2.Numpy创建array2.1 一维array创建2.1...

    公众号guangcity
  • 卧谈会之numpy

    0.月总结1.访问数组2.broadcast机制3.np.bincount()4.np.argmax()5.联合求解6.作者的话

    公众号guangcity
  • 利用Helm简化Kubernetes应用部署(1)

    Helm是Kubernetes生态系统中的一个软件包管理工具,有点类似于Linux操作系统里面的“apt-get”和“yum”。结合上一节内容,对Kuberne...

    心莱科技雪雁

扫码关注云+社区

领取腾讯云代金券