如何设置 DRBD 以在两台 CentOS 7 服务器上复制存储
DRBD(代表分布式复制块设备)是一种适用于 Linux 的分布式、灵活且通用的复制存储解决方案。它在服务器之间镜像块设备的内容,例如硬盘、分区、逻辑卷等。它涉及两个存储设备上的数据副本,这样,如果一个存储设备发生故障,另一个存储设备上的数据可以使用。
您可以将其视为有点像网络 RAID 1 配置,其中磁盘在服务器之间进行镜像。然而,它的运行方式与 RAID 甚至网络 RAID 非常不同。
最初,DRBD主要用于高可用性(HA)计算机集群,但是从版本9开始,它可以用于部署云存储解决方案。
在本文中,我们将展示如何在 CentOS 中安装 DRBD,并简要演示如何使用它在两台服务器上复制存储(分区)。这是一篇帮助您开始在 Linux 中使用 DRBD 的完美文章。
测试环境
出于本文的目的,我们为此设置使用两个节点集群。
- 节点1:192.168.56.101 – howtoing.howtoing.lan
- 节点2:192.168.56.102 – server1.howtoing.lan
步骤1:安装DRBD包
DRBD 是作为 Linux 内核模块实现的。它精确地构成了虚拟块设备的驱动程序,因此它建立在系统 I/O 堆栈底部附近。
DRBD 可以从 ELRepo 或 EPEL 存储库安装。让我们首先导入 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,则需要修改策略以使 DRBD 进程免受 SELinux 控制。
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 命令 创建一个大小为 2GB 的虚拟块设备。
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 配置的全局和公共部分,并且我们可以在 /etc/drbd.d/global_common.conf 中定义资源。 >.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 设备的支持设备。
- 元磁盘:定义 DRBD 存储其元数据的位置。使用Internal意味着DRBD将其元数据存储在与实际生产数据相同的物理下层设备上。
- 地址:指定相应节点的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
要检查资源状态,请运行以下命令(请注意,此时预计会出现不一致/不一致磁盘状态):
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
然后如图所示安装它(您可以为安装点指定适当的名称):
mkdir -p /mnt/DRDB_PRI/
mount /dev/drbd0 /mnt/DRDB_PRI/
现在在上面的安装点中复制或创建一些文件,并使用 ls 命令进行长列表:
cd /mnt/DRDB_PRI/
ls -l
接下来,卸载设备(确保挂载未打开,卸载后更改目录以防止出现任何错误)并将节点的角色从主要更改为次要:
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
有关更多信息,请参阅用户空间管理工具的手册页:
man drbdadm
man drbdsetup
man drbdmeta
概括
DRBD 极其灵活且用途广泛,这使其成为适合向几乎任何应用程序添加 HA 的存储复制解决方案。在本文中,我们展示了如何在CentOS 7中安装DRBD,并简要演示了如何使用它来复制存储。请随时通过下面的反馈表与我们分享您的想法。