如何在 CentOS Linux 上安装 DRBD如何在 CentOS Linux 上安装 DRBD如何在 CentOS Linux 上安装 DRBD如何在 CentOS Linux 上安装 DRBD
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 CentOS Linux 上安装 DRBD

本分步教程演示了如何在 CentOS Linux 上安装分布式复制块设备 (DRBD)。

什么是 DRBD?

DRBD(分布式复制块设备)是基于 Linux 系统的软件包。它用于通过网络将存储设备从一个节点复制到另一节点。

它可以提供处理灾难恢复和故障转移的帮助。 DRBD可以理解为硬件的高可用性,可以看作是网络共享存储的替代品。

DRBD 是如何工作的?

假设我们想要在两个 CentOS 系统上集群存储分区,我们需要在两个系统上都有一个块设备(如 /dev/sdb1)。这些系统被定义为主节点和辅助节点(可以切换主节点和辅助节点)。

DRBD 使用虚拟块设备(如 drbd0)来共享两个系统的 /dev/sdb1 块设备。主节点是安装虚拟驱动器 drbd0 以进行读/写的节点。

首先我们需要安装 DRBD 软件包,它用于创建虚拟磁盘 drbd0。我们可以将其格式化为 xfs 或 ext3 文件系统以使用 /dev/drbd0 设备。 drbd0 设备配置为在两个系统上使用 /dev/sdb1 块设备。我们现在仅在 drbd0 设备上工作。

由于 drbd0 只能挂载在 Primary 节点上,因此一次只能从 Primary 节点访问内容。无论如何,如果主系统崩溃,我们可能会丢失系统文件,但虚拟设备 drbd0 将可用。我们可以将最初的辅助节点切换为主节点,并可以再次访问其内容。

在 CentOS 上使用 DRBD

本教程是在 CentOS 7 上执行的,但它也应该适用于其他 CentOS 版本。阅读本文以了解如何检查 CentOS 版本。

要求

  • 两台CentOS安装系统

  • 两个系统上都有像 /dev/sdb1 这样的空闲块设备(最好大小相同)

  • Selinux 允许或禁用

  • 防火墙允许端口 7788

  • 节点必须位于同一网络内。

安装

这里我们通过添加 epel 存储库来进行安装,因为 drbd 软件包在 CentOS 发行版上不可用。

$ rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

还要在两个节点上添加 GPG 密钥。 GPG-key 是用于加密节点之间通信的公钥。

$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org

现在我们可以使用 yum 安装 drbd 软件包了。我们必须确定我们的内核支持的 drbd 版本。检查适用于您的内核的 drbd 版本:

$ yum info *drbd* | grep Name

输出如下:

现在安装所需版本的 drbd 以及必要的内核模块。

$ yum -y install drbd84-utils kmod-drbd84

验证内核模块是否已加载。

$ lsmod | grep -i drbd

如果上述命令的响应给出空输出,则不会加载内核模块。您需要重新启动系统并尝试:

$ modprobe drbd

modprobe 是一个从 Linux 内核中智能添加或删除模块的命令。为了使模块在每次启动时加载,使用了systemd-modules-load服务。因此,在 /etc/modulesload.d 中创建一个名为 drbd.conf 的文件。

$ echo drbd > /etc/modules-load.d/drbd.conf

配置DRBD

DRBD 配置文件位于 /etc/drbd.d/

默认情况下,/etc/drbd.d/global_common.conf 是全局可用的,其中包含全局或主要配置。其他配置文件称为资源文件,扩展名为 *.res。

现在我们在两个节点上创建资源配置文件,以便将 drbd 用于指定的块设备。

让我们创建名为 linux.res 的资源文件

$ vi /etc/drbd.d/linux.res

将以下内容复制并粘贴到资源文件中

resource linux {
protocol C;          
on node1 {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 10.20.222.14:7788;
                meta-disk internal;
                }
on node2 {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 10.20.222.15:7788;
                meta-disk internal;
                }
} 

这里,

  • linux 是资源名称。资源名称必须始终是唯一的。

  • 协议C用于同步通信。它是完全同步的复制协议。其他可用的协议有协议 A 和协议 B。

  1. 协议A:异步复制协议。通常首选用于长距离网络中的节点。

  2. 协议B:半同步复制协议。也称为内存同步协议。

  3. 协议C:短距离网络中节点的首选。

  • 节点 1 和节点 2 是各个节点的主机名。仅用于识别块。

  • device /dev/drbd0 是创建用作设备的逻辑设备。

  • disk /dev/sdb1 是 drbd0 将占用的物理块设备。

  • 地址 10.20.222.14:7788 和地址 10.20.222.15:7788 是开放 TCP 端口 7788 的两个相应节点的 IP 地址。

  • 元内部磁盘用于定义使用磁盘内部元数据。

两个节点上的配置必须相同。

现在,我们需要初始化每个节点上的元数据存储:

$ drbdadm create-md linux

如果这给出了错误消息,那么您必须手动创建一个虚拟数据文件,然后尝试上面的命令。

$ dd if=/dev/zero of=/dev/sdb1 bs=1024k count=1024

dd命令用于创建指定内存的随机文件。之后create-md命令必须成功。

逻辑设备可用后,将 drbd0 设备附加到两个节点上的 sdb1 磁盘。查看 lsblk 的输出

$ lsblk

输出应该是这样的

如果没有,则通过资源文件将 drbd0 设备附加到 sdb1 磁盘。

$ drbdadm attach linux
or
$ drbdadm up linux

Once again try,
$ lsblk

在两个节点上启动并启用 drbd 服务。

$ systemctl start drbd
$ systemctl enable drbd

如果 drbd 启动对于一个节点可能很快,而对于另一个节点则需要一些时间。

设置主节点和辅助节点

DRDB一次只使用一个节点作为主节点,可以进行读写。

我们首先指定节点 1 作为主节点。

$ drbdadm primary linux --force

检查drbd进程的状态:

$ cat /proc/drbd 
or 
$ drbd-overview

输出看起来像:

在这里,我们可以获得的信息是:

  • 目前哪个节点是主要节点,哪个节点是次要节点。

  • 数据同步过程。

  • drbd 设备状态如:不一致、最新、无盘。

另一个节点,node2 会自动设置为辅助节点。查看 drbd 概述进程状态。

我们尚未执行的主要步骤是格式化 drbd0 设备。这只能在其中一个节点上完成。

这里,我们使用 mkfs 命令将 drbd0 格式化为 ext3。 xfs 文件系统也可以工作。最好使用与 /dev/sdb1 相同的磁盘类型。

$ mkfs -t ext3 /dev/drbd0

现在,再次在主节点(例如,本教程中的节点 1)我们必须安装 drbd0 设备才能在其上工作。

$ mount /dev/drbd0  /mnt 

you can select your required mount point instead of /mnt. for example, I can mount the /dev/drbd0 device to /var/lib/mysql to use it for mysql database drbd.

注意:永远记住这个过程。首先,您应该将该节点设为 DRBD 的主节点。然后将 drbd0 设备安装到您的系统,您就可以在该设备上执行操作。如果不将节点设为主节点,则无法挂载 drb0 设备,也无法使用该设备的内容。

测试DRBD过程

在两个节点上设置 drbd 后,其中一个节点将成为主节点。我们将设备安装到 /mnt 位置。现在创建一个文件来测试drbd节点的同步。

$ touch  /mnt/drbdtest.txt
$ ll /mnt/

之后,我们将节点 1 设置为辅助节点,将节点 2 设置为主节点。该过程是类似的镜像。在节点 1(在实例主节点),卸载 /dev/drbd0 设备,使其成为辅助设备。在node2(在实例辅助节点)上,将其设为主节点,并挂载到所需位置。

在节点 1 处:

$ umount  /mnt
$ drbdadm secondary linux

在节点 2 处:

$ drbdadm primary linux
$ mount /dev/drbd0  /mnt

在node2成功挂载后,检查/mnt文件夹中的文件。您必须看到 drbdtest.txt 文件(在节点 1 上创建)。

$ ll  /mnt/

如果您希望使用 GUI 界面来管理和可视化 drbd 集群节点,可以使用 LCMC(Linux 集群管理控制台)。

就是这样!您已在系统中成功实施 DRBD。如果还有疑问,可以在下方评论区评论。

作者:Rishi Raj Gautam 是一位 Linux 爱好者和开源活动家。

©2015-2025 艾丽卡 support@alaica.com