DRBD上路---安装配置篇

简介:

DRBD的全称为:Distributed Replicated Block Device (DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,基于软件的,无共享(shared-nothing),对硬盘、分区、逻辑卷进行复制镜像的存储解决方案。它允许用户在远程机器上建立一个本地块设备的实时镜像。与心跳连接结合使用,也可以把它看作是一种网络RAID。
工作原理:Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。DRBD不需要任何的硬件投资,利用drbd作为共享存储设备,比存储网络要实惠的多;原理图:

181538109.png

安装部分:
如果系统内核(linux)版本低于2.6.33,在安装软件之前需要加载DRBD模块,如果高于(或等于)2.6.33,则只安装客户端软件。
如果没有安装DRBD模块,会在启动drbd时出现如下错误:

Starting DRBD resources: Can not load the drbd module.
从www.drbd.org下载drbd-8.3.8.1.tar.gz,分别在两个节点上编译安装:
注意,DRBD需要内核模块支持,2.6.33后的Linux内核已内置DRBD的支持,在此版本前,安装时需要kernel-devel包,同时编译drbd时要带上--with-km。
#./configure --prefix=/ --with-km
#make
#make install
安装成功之后/sbin目录下面有drbdadm,drbdmeta,drbdsetup命令,以及/etc/init.d/drbd启动脚本。(多半时候是在使用drbdadm ,它其实调用的是drbdsetup drbdmeta两个命令)
在这里我准备的是两个物理分区,分区大小必须一致;

配置部分:
/etc/drbd.conf

global {
usage-count no; #统计drbd的使用
}
common {
syncer {rate 100M;} #同步速率,单位是字节
}
resource r0 {
protocol C; #使用协议C.表示收到远程主机的写入确认后,则认为写入完成. 
disk {
on-io-error detach; 
}
net { #通信验证算法信息,及脑裂处理信息
cram-hmac-alg "sha1";
shared-secret "FootFunFactory";
after-sb-0pri discard-younger-primary;
after-sb-1pri call-pri-lost-after-sb;
rr-conflict disconnect;
}
syncer {
rate 100M;
al-extents 257;
}
on drbd-master{ #具体主机磁盘信息,后面是主机名,在/etc/hosts 注明;端口是7789
device /dev/drbd0;
disk /dev/sdb;
address 192.168.6.101:7789;
meta-disk internal;
}
on centos.weipengfei.net{
device /dev/drbd0; #device名字必须是drbd开头,后面是数字,从0开始,最大为147
disk /dev/sdc;
address 192.168.6.135:7789;
meta-disk internal;
}
} 配置的详细信息,后续再谈;

启动之前的操作:

分别在两台主机的drbd分区上,创建DRBD记录信息的数据块,分别在两台主机上运行:

drbdadm create-md r0

在两节点分别启动服务:

/etc/init.d/drbd start

查看节点状态:

cat /proc/drbd

1: 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:2007644

设置主节点

于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:

drbdadm -- --overwrite-data-of-peer primary all

第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:

/sbin/drbdadm primary r0

执行此命令后,开始同步两台机器对应磁盘的数据

如果第一次设置主备节点时使用“/sbin/drbdadm primary r0”命令,那么会提示如下错误:
0: State change failed: (-2) Need access to UpToDate data Command '/sbin/drbdsetup 0 primary' terminated with exit code 17

只要第一次用上面命令成功后,以后就可以用“/sbin/drbdadm primary r0”命令了。

格式化文件系统

由于mount操作只能在主节点进行,所以只有设置了主节点后才能格式化磁盘分区,然后挂载:

mkfs.ext3 /dev/drbd0

mount /dev/drbd0 /mnt


主备节点切换

1、停止drbd服务的切换:

关闭主节点服务,此时挂载的drbd分区就自动在主节点卸载了,然后在备用节点执行切换命令:

drbdadm -- --overwrite-data-of-peer primary all

当在备用节点执行切换到主节点命令后,原来的主用节点自动变为备用节点。无需在主用节点再次执行切换到备用节点的命令。

2、正常切换

在主节点卸载磁盘分区,然后执行

drbdadm secondary all

如果不执行这个命令,直接在备用节点执行切换到主节点的命令,会报错:
2: State change failed: (-1) Multiple primaries not allowed by config
Command 'drbdsetup 2 primary' terminated with exit code 11

接着,在备用节点执行

drbdadm primary all

最后在备用节点挂载磁盘分区即可;






本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1322770,如需转载请自行联系原作者

目录
相关文章
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
444 1
|
12月前
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
584 66
|
11月前
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
4632 6
|
Java Linux 数据安全/隐私保护
CTF — 图像隐写三板斧
CTF — 图像隐写三板斧
1289 1
|
存储 Linux 数据中心
docker的底层原理四: 资源隔离
本文详细解释了Docker利用Linux内核的Namespace和Cgroups技术实现资源隔离,包括CPU、内存、网络、存储、文件系统、进程间通信、用户和用户组以及进程ID和主机名的隔离,确保容器的独立性和系统的安全性。
639 0
|
12月前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
346 1
|
Java 关系型数据库 MySQL
DataX教程(10)- DataX插件热插拔原理
DataX教程(10)- DataX插件热插拔原理
1147 0
|
Kubernetes Linux Docker
如何在Docker和Kubernetes中使用代理IP?
如何在Docker和Kubernetes中使用代理IP?
667 1
|
机器学习/深度学习 自动驾驶 数据可视化
【细粒度】由CUB_200_2011数据集展开讲解细粒度分类任务
【细粒度】由CUB_200_2011数据集展开讲解细粒度分类任务
1065 0
【细粒度】由CUB_200_2011数据集展开讲解细粒度分类任务
下一篇
开通oss服务