如何在CentOS Linux上安装DRBD

时间:2020-03-05 15:27:54  来源:igfitidea点击:

什么是DRBD?

DRBD(分布式复制块设备)是基于Linux的系统的软件包。

它用于通过网络将存储设备从一个节点复制到另一个节点。

它可以提供援助来处理灾难恢复和故障转移。
DRBD可以被理解为硬件的高可用性,并且可以被视为替换网络共享存储。

DRBD如何运作?

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

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

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

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

在CentOS上使用DRBD

本教程是在CentOS 7上执行的,但它也应该为其他CentOS版本工作。
阅读此事以了解如何检查CentOS版本。

要求

  • 两个CentOS安装系统
  • 两个系统上的免费块设备/dev/sdb1(优选相同大小)
  • Selinux许可或者禁用
  • 防火墙允许7788港口
  • 节点必须在同一网络内。

安装

其中我们按照CentOS发行版不可用的方式添加EPEL存储库进行安装。

$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负载服务。
因此,在/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为我们的指定块设备。

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

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

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

resource theitroad {
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;
                }
}

其中

  • oniarad是资源名称。资源名称必须始终是唯一的。
  • 协议C用于同步通信。它是完全同步复制协议。可用的其他协议是协议A和协议B.
  • 协议A:异步复制协议。通常优选的是长远距离网络中的节点。
  • 协议B:半同步复制协议。也称为内存同步协议。
  • 协议C:在短远程网络中优先于节点。
  • 节点1和Node2是各个节点的主机名。仅用于识别块。
  • 设备/dev/drbd0是创建的逻辑设备用作设备。
  • Disk/Dev/SDB1是DRBD0将占用的物理块设备。
  • 地址10.20.222.14:7788和地址10.20.222.15:7788是具有开放TCP端口7788的两个相应节点的IP地址。
  • 元内磁盘用于定义磁盘的内部元数据。

两个节点必须相同。

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

$drbdadm create-md theitroad

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

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

DD命令用于创建指定内存的随机文件。

"创建MD命令"必须是成功的。

在逻辑设备可用后,将DRBD0设备连接到两个节点上的SDB1磁盘。
查看LSBLK的输出

$lsblk

输出应该是这样的

如果没有,则通过资源文件将DRBD0设备连接到SDB1磁盘。

$drbdadm attach theitroad
or
$drbdadm up theitroad
Once again try,
$lsblk

启动并启用两个节点上的DRBD服务。

$systemctl start drbd
$systemctl enable drbd

如果DRBD启动可能会迅速为一个节点并为另一个节点花一些时间。

设置主节点和辅助节点

DRDB一次仅使用一个节点作为读取和写入的主节点可以预先形成。

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

$drbdadm primary theitroad --force

检查DRBD进程的状态:

$cat /proc/drbd 
or 
$drbd-overview

输出看起来像:

其中我们可以得到的信息是:

  • 目前哪个节点是primay,它是次要的。
  • 数据同步过程。
  • DRBD设备状态如:不一致,Uptodate,无盘。

另一个节点,node2自动设置为辅助节点。
请参阅DRBD概述流程状态。

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

其中我们将DRBD0格式化为EXT3.
XFS文件系统也有效。
我们使用与/dev/sdb1的相同磁盘类型更好。

$mkfs -t ext3 /dev/drbd0

现在,在主节点处再次(例如,本教程中的Node1)我们必须将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/

在此之后,我们将将Node1设置为辅助和Node2为主。
这个过程是类似的镜像。
在节点1(例如主节点),卸载/dev/drbd0设备,使其辅助。
在Node2(例如辅助节点),使其成为主节点,并安装到所需位置。

在节点1:

$umount  /mnt
$drbdadm secondary theitroad

在节点2:

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

在Node2成功安装后,请检查AT/MNT文件夹的文件。
我们必须看到DRBDTest.txt文件(在Node1创建)。

$ll  /mnt/

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