DRBD(分布式复制块设备)是用于Linux的分布式,灵活且通用复制的存储解决方案。它反映了块设备的内容,例如硬盘驱动器,分区,逻辑卷等。服务器之间。它在两个存储设备上创建数据的副本,以便如果其中一个发生故障,则可以使用另一个上的数据。
可以说,这类似于RAID 1 网络配置,磁盘映射到不同的服务器。但是,它的工作原理与RAID(甚至是网络)完全不同。
最初,DRBD主要用于高可用性(HA)计算机集群中,但是从版本9开始,它可以用于部署云存储解决方案。
在本文中,我们将引导您完成如何在CentOS上安装DRBD的过程,并简要演示如何使用它在两台服务器之间复制存储(分区)。这是在Linux上开始使用DRBD的完美文章。
测试环境
我们将使用两节点群集进行此设置。
- 节点1:192.168.56.101-tecmint.tecmint.lan
- 节点2:192.168.56.102-server1.tecmint.lan
步骤1:安装DRBD软件包
DRBD被实现为Linux内核模块。它是一个虚拟的块设备驱动程序,因此它位于系统I / O堆栈的最底部。
可以从ELRepo或EPEL安装DRBD。让我们首先导入ELRepo软件包签名密钥并在两个节点上连接存储库,如下所示。
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
然后,您需要使用以下命令在两个节点上安装DRBD内核模块和实用程序:
# yum install -y kmod-drbd84 drbd84-utils
如果启用了SELinux,则需要配置策略以从SELinux控件中释放DRBD进程。
# semanage permissive -a drbd_t
另外,如果您的系统正在运行Firewalld,则需要添加DRBD端口7789,以允许两个节点之间的数据同步。
在第一个节点上运行以下命令:
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload
然后在第二个节点上运行以下命令:
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload
步骤2.准备低级存储
现在,我们已经在集群的两个节点上安装了DRBD,我们必须在它们上准备大约相同大小的存储区域。它可以是硬盘分区(或整个物理硬盘),软件RAID设备,LVM逻辑卷或系统上找到的任何其他类型的块设备。
在本教程中,我们将使用dd命令创建一个2 GB的测试块设备。
# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024
假设它是连接到两个节点的第二个块设备(/ dev / sdb)上未使用的分区(/ dev / sdb1)。
步骤3.配置DRBD
主要的DRBD配置文件是
/etc/drbd.conf
,在目录中可以找到其他配置文件/etc/drbd.d
。
要复制存储,我们需要向
/etc/drbd.d/global_common.conf
包含全局和常规DRBD配置节的文件中添加必要的配置,并且需要在.res
文件中定义资源。
在两个节点上备份原始文件,然后打开新文件进行编辑(使用首选的文本编辑器)。
# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
# vim /etc/drbd.d/global_common.conf
将以下行添加到两个文件中:
global {
usage-count yes;
}
common {
net {
protocol C;
}
}
保存文件,然后关闭编辑器。
让我们简要介绍一下协议C行:DRBD支持三种不同的复制模式(即三种复制同步度),即:
- 协议A:异步复制协议;最常用于远程复制方案。
- 协议B:半同步复制协议或同步内存协议。
- 协议C:通常用于短距离网络上的节点;它是迄今为止DRBD设置中最常用的复制协议。
重要说明:复制协议的选择会影响两个部署因素:安全性和延迟。相反,吞吐量在很大程度上与所选的复制协议无关。
步骤4.添加资源
资源是一个统称,指的是要复制的特定数据集的所有方面。我们将在文件中定义资源
/etc/drbd.d/test.res
。
将以下内容添加到两个节点上的文件中(切记将变量替换为您环境的实际值)。
注意主机名,我们需要提供可以使用uname命令获取的网络主机名
-n
。
resource test {
on tecmint.tecmint.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.101:7789;
}
on server1.tecmint.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.102:7789;
}
}
}
哪里:
- on hostname:嵌套配置语句所属的on部分。
- test:这是新资源的名称。
- device / dev / drbd0:指定由DRBD管理的新虚拟块设备。
- disk / dev / sdb1:这是一个块设备分区,是DRBD设备的备份设备。
- meta-disk:定义DRBD将元数据存储在何处。内部手段DRBD将其元数据与生产中的实际数据存储在同一物理低层设备上。
- address:指定相应主机的IP地址和端口号。
还要注意,如果两个主机上的参数值都相同,则可以直接在资源部分中指定它们。
例如,以上配置可以重构为:
resource test {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
on tecmint.tecmint.lan {
address 192.168.56.101:7789;
}
on server1.tecmint.lan {
address 192.168.56.102:7789;
}
}
步骤5.初始化和启动资源
为了与DRBD进行交互,我们将使用以下管理工具(与内核模块进行交互以配置和管理DRBD资源):
- drbdadm:高级DRBD管理工具。
- drbdsetup:一种较低级的管理工具,用于将DRBD设备连接到其备份设备,配置DRBD设备对以镜像其备份设备以及检查正在运行的DRBD设备的配置。
- Drbdmeta:元数据管理工具。
添加所有初始资源配置后,我们需要在两个节点上调用资源。
# drbdadm create-md test
初始化元数据存储
接下来,我们必须启动它,它将资源连接到其备份设备,然后设置复制参数并将资源连接到其对等节点:
# drbdadm up test
现在,如果您运行lsblk命令,您将注意到DRBD设备/卷drbd0与备份设备相关联
/dev/sdb1
:
# lsblk
块设备列表
要禁用资源,请运行:
# drbdadm down test
要检查资源的状态,请运行以下命令(请注意,此时应该处于Inconsistent / Inconsistent状态):
# drbdadm status test
OR
# drbdsetup status test --verbose --statistics #for a more detailed status
检查资源状态是否
有害
步骤6:设置初始设备同步的主要资源/来源
至此,DRBD已准备就绪。现在,我们需要指定哪个节点应用作初始设备同步的源。
仅在一个节点上运行以下命令以启动初始完全同步:
# drbdadm primary --force test
# drbdadm status test
将主节点设置为启动设备
同步完成后,两个磁盘的状态都应为UpToDate。
步骤7:测试DRBD设置
最后,我们需要检查DRBD设备是否可以像存储复制数据那样工作。请记住,我们使用了一个空的磁盘卷,因此我们必须在设备上创建一个文件系统并将其挂载,以查看是否可以使用它来存储复制的数据。
我们需要在启动初始完全同步的节点上使用以下命令在设备上创建文件系统(该节点具有主要角色的资源):
# mkfs -t ext4 /dev/drbd0
在Drbd卷上创建一个文件系统,
然后如图所示进行安装(您可以为安装点指定一个合适的名称):
# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/
现在,在上述安装点复制或创建一些文件,并使用ls命令列出一长串文件:
# cd /mnt/DRDB_PRI/
# ls -l
列出主要Drbd卷的内容
接下来,卸载设备(确保装载未打开,卸载后更改目录以避免错误),并将节点角色从主要更改为次要:
# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test
将另一个节点(具有辅助角色的资源)设为主要节点,然后将设备连接到该节点并运行一长串安装点。如果安装正常,则该卷上存储的所有文件都应该存在:
# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls -l
检查在辅助节点上运行的DRBD设置。
有关更多信息,请参考管理工具手册页:
# man drbdadm
# man drbdsetup
# man drbdmeta
帮助:DRBD用户指南。
摘要
DRBD非常灵活且用途广泛,使其成为适用于几乎所有应用程序添加HA的存储复制解决方案。在本文中,我们向您展示了如何在CentOS 7上安装DRBD,并简要演示了如何使用它来复制存储。欢迎使用下面的反馈表与我们分享您的想法。
了解有关该课程的更多信息。