网站搜索

如何设置 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 可以从 ELRepoEPEL 存储库安装。让我们首先导入 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,并简要演示了如何使用它来复制存储。请随时通过下面的反馈表与我们分享您的想法。