在两台 CentOS 7 服务器上设置 DRBD 以进行存储复制

文章的翻译是在课程开始前夕准备的 “Linux 管理员。 虚拟化与集群".

DRBD(分布式复制块设备)是一种适用于 Linux 的分布式、灵活且普遍可复制的存储解决方案。 它反映了硬盘、分区、逻辑卷等块设备的内容。 服务器之间。 它在两个存储设备上创建数据副本,以便在其中一个存储设备发生故障时,可以使用第二个存储设备上的数据。

你可以说这就像 网络RAID配置 1 磁盘映射到不同的服务器。 然而,它的工作方式与 RAID(甚至网络 RAID)完全不同。

最初,DRBD 主要用于高可用性(HA)计算机集群,但是从版本 XNUMX 开始,它可以用于部署云存储解决方案。

在本文中,我们将解释如何在 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 配置的全局和通用部分,我们需要在中定义资源 .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 部分。
  • test:这是新资源的名称。
  • 设备 /dev/drbd0:表示由DRBD管理的新虚拟块设备。
  • 磁盘 /dev/sdb1:这是一个块设备分区,是 DRBD 设备的备份设备。
  • 元磁盘:定义 DRBD 存储其元数据的位置。 内部意味着 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 高级管理工具。
  • drbd安装程序:一种较低级别的管理工具,用于将 DRBD 设备连接到其备份设备、配置成对的 DRBD 设备以反映其备份设备,以及验证正在运行的 DRBD 设备的配置。
  • 德博德梅塔:元数据管理工具。

添加所有初始资源配置后,我们必须在两个节点上调用资源。

# drbdadm create-md test

在两台 CentOS 7 服务器上设置 DRBD 以进行存储复制
初始化元数据存储

接下来我们需要运行它,它将资源连接到其备份设备,然后设置复制参数并将资源连接到其对等设备:

# drbdadm up test

现在如果你运行命令 lsblk,您会注意到 DRBD 设备/卷 drbd0 与备份设备关联 /dev/sdb1:

# lsblk

在两台 CentOS 7 服务器上设置 DRBD 以进行存储复制
块设备列表

要禁用资源,请运行:

# drbdadm down test

要检查资源的状态,请运行以下命令(请注意,此时驱动器的状态是预期的) 不一致/不一致):

# drbdadm status test
OR
# drbdsetup status test --verbose --statistics 	#for  a more detailed status

在两台 CentOS 7 服务器上设置 DRBD 以进行存储复制
检查资源的状态
邪恶的

步骤六:设置主资源/初始设备同步源

在此阶段,DRBD 已准备就绪。 现在我们需要指定哪个节点应该用作初始设备同步的源。

仅在一个节点上运行以下命令以开始初始完全同步:

# drbdadm primary --force test
# drbdadm status test

在两台 CentOS 7 服务器上设置 DRBD 以进行存储复制
将主节点设置为初始设备
同步完成后,两个驱动器的状态应为 UpToDate。

第 7 步:测试 DRBD 设置

最后,我们需要检查 DRBD 设备是否能够按需要工作来存储复制的数据。 请记住,我们使用了空磁盘卷,因此我们必须在设备上创建一个文件系统并安装它以检查是否可以使用它来存储复制的数据。

我们需要在开始初始完全同步的节点(具有具有主要角色的资源)上使用以下命令在设备上创建文件系统:

# mkfs -t ext4 /dev/drbd0

在两台 CentOS 7 服务器上设置 DRBD 以进行存储复制
在 Drbd 卷上创建文件系统

然后如图所示安装它(您可以给安装点一个合适的名称):

# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/

现在在上面的安装点中复制或创建一些文件,并制作一个长列表 ls 命令:

# cd /mnt/DRDB_PRI/
# ls -l 

在两台 CentOS 7 服务器上设置 DRBD 以进行存储复制
列出 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 

在两台 CentOS 7 服务器上设置 DRBD 以进行存储复制
检查辅助节点上运行的 DRBD 设置。

有关更多信息,请参阅管理工具帮助页面:

# man drbdadm
# man drbdsetup
# man drbdmeta

常见问题解答: DRBD 用户手册.

总结

DRBD 极其灵活且用途广泛,使其成为适合向几乎任何应用程序添加 HA 的存储复制解决方案。 在本文中,我们展示了如何在 CentOS 7 上安装 DRBD 并简要演示了如何使用它进行存储复制。 请随时使用下面的反馈表与我们分享您的想法。

了解有关课程的更多信息。

来源: habr.com

添加评论