如何在CentOS Linux上安装DRBD
什么是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群集管理控制台)。