测试 DRBD
为了测试DRBD功能,我们需要创建一个文件系统,挂载卷并在主节点“ylpldrbd01”上写入一些数据,最后将主节点切换到“ylpldrbd02”
在主节点上运行以下命令,在 /dev/drbd0 上创建一个 xfs 文件系统并将其挂载到 mnt 目录,使用以下命令:
# mkfs.xfs /dev/drbd0 # mount /dev/drbd0 /mnt
使用以下命令创建一些数据:
# touch /mnt/file{1..5} # ls -l /mnt/ total 0 -rw-r--r--. 1 root root 0 Sep 22 21:43 file1 -rw-r--r--. 1 root root 0 Sep 22 21:43 file2 -rw-r--r--. 1 root root 0 Sep 22 21:43 file3 -rw-r--r--. 1 root root 0 Sep 22 21:43 file4 -rw-r--r--. 1 root root 0 Sep 22 21:43 file5
现在让我们将主要模式“ylpldrbd01”切换到第二个节点“ylpldrbd02”以检查数据复制是否有效。
首先,我们必须在第一个 drbd 集群节点“ylpldrbd01”上卸载卷 drbd0。
# umount /mnt
将第一个 drbd 集群节点“ylpldrbd01”上的主节点更改为辅助节点
# drbdadm secondary drbd
将辅助节点更改为第二个 drbd 集群节点“ylpldrbd02”上的主节点
# drbdadm primary drbd
挂载卷并检查数据是否可用。
# mount /dev/drbd0 /mnt # ls -l /mnt total 0 -rw-r--r--. 1 root root 0 Sep 22 21:43 file1 -rw-r--r--. 1 root root 0 Sep 22 21:43 file2 -rw-r--r--. 1 root root 0 Sep 22 21:43 file3 -rw-r--r--. 1 root root 0 Sep 22 21:43 file4 -rw-r--r--. 1 root root 0 Sep 22 21:43 file5
安装DRBD
- 为了安装 DRBD,我们需要在两个节点上启用 ELRepo 存储库,因为该软件包不是通过标准 CentOS 和 Red Hat Enterprise Linux 存储库分发的。
使用以下命令导入 GPG 密钥并在两个节点上安装 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
2.在两个节点上运行以下命令安装DRBD软件和所有必需的内核模块
# yum install drbd90-utils kmod-drbd90
安装完成后,我们需要检查内核模块是否正确加载,使用以下命令:
# lsmod | grep -i drbd
如果没有自动加载,我们可以使用以下命令将模块加载到两个节点上的内核中:
# modprobe drbd
请注意, modprobe 命令将负责在当前会话中暂时加载内核模块。
但是,为了在引导期间加载它,我们必须通过在 /etc/modulesload.d/中创建一个文件来使用 systemd-modules-load 服务,以便在每次系统引导时正确加载 DRBD 模块:
# echo drbd > /etc/modules-load.d/drbd.conf
环境
Servers | ylpldrbd01.onitroad.local. |
Servers | ylpldrbd02.onitroad.local |
配置DRBD
在两个节点上成功安装 DRBD 后,我们需要通过编辑文件 /etc/drbd.d/global_common.conf 来修改 DRBD 全局和通用设置。
- 让我们使用以下命令备份两个节点上的原始设置:
# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
- 在两个节点上新建一个 global_common.conf 文件,内容如下:
# vi /etc/drbd.d/global_common.conf global { usage-count no; } common { net { protocol C; } }
- 接下来,我们需要为名为 drbd0 的新资源创建一个名为 /etc/drbd.d/drbd0.res 的新配置文件,内容如下
内容:
# vi /etc/drbd.d/drbd0.res resource drbd0 { disk /dev/sdb; device /dev/drbd0; meta-disk internal; on ylpldrbd01 { address 192.168.1.20:7789; } on ylpldrbd02 { address 192.168.1.21:7789; } }
在上面的资源文件中,我们新建了一个资源drbd0,其中192.168.1.20和192.168.1.21是我们两个节点的IP地址,7789是用于通信的端口,使用磁盘/dev/sdb创建新设备/dev/drbd0.
- 通过在两个节点上执行以下命令来初始化每个节点上的元数据存储
# drbdadm create-md drbd0
- 在两个节点上启动和启用DRBD守护进程。
# systemctl start drbd # systemctl enable drbd
- 让我们将 DRBD 主节点定义为第一个节点“ylpldrbd01”。
# drbdadm up drbd0 # drbdadm primary drbd0
说明:
如果我们在将节点设为主节点时遇到任何错误,请使用以下命令强制将该节点设为主节点:
# drbdadm primary drbd0 --force
- 在 Secondary 节点“ylpldrbd02”上运行以下命令启动 drbd0
# drbdadm up drbd0
- 我们可以在执行同步时检查同步的当前状态。
cat /proc/drbd 命令显示资源的创建和同步进度,如下所示:
# cat /proc/drbd
- 使用以下命令调整防火墙:
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="ip_address" port port="7789" protocol="tcp" accept' # firewall-cmd --reload
什么是 DRBD(分布式复制块设备)?
DRBD(分布式复制块设备)是一种基于 Linux 的软件组件,用于通过网络连接将单个存储设备(例如硬盘或者分区)从一个节点镜像或者复制到另一个节点。
DRBD 使保持网络中多个系统之间数据的一致性成为可能。
DRBD 还确保 Linux 应用程序的高可用性 (HA)。
DRBD 支持三种不同的复制模式,允许三种程度的复制同步。
- Protocol A:异步复制协议。
- Protocol B:内存同步(半同步)复制协议。
- Protocol C:同步复制协议。
在本教程中,我们将创建和配置跨两台服务器的 DRBD 集群。
两台服务器都有一个添加的空磁盘 /dev/sdb。