如何在 RHEL7/CentOS7 上安装和配置 DRBD 集群

测试 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

  1. 为了安装 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

环境

Serversylpldrbd01.onitroad.local.
Serversylpldrbd02.onitroad.local

配置DRBD

在两个节点上成功安装 DRBD 后,我们需要通过编辑文件 /etc/drbd.d/global_common.conf 来修改 DRBD 全局和通用设置。

  1. 让我们使用以下命令备份两个节点上的原始设置:
# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
  1. 在两个节点上新建一个 global_common.conf 文件,内容如下:
# vi /etc/drbd.d/global_common.conf
global {
 usage-count no;
}
common {
 net {
  protocol C;
 }
}
  1. 接下来,我们需要为名为 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.

  1. 通过在两个节点上执行以下命令来初始化每个节点上的元数据存储
# drbdadm create-md drbd0
  1. 在两个节点上启动和启用DRBD守护进程。
# systemctl start drbd
# systemctl enable drbd
  1. 让我们将 DRBD 主节点定义为第一个节点“ylpldrbd01”。
# drbdadm up drbd0
# drbdadm primary drbd0

说明:
如果我们在将节点设为主节点时遇到任何错误,请使用以下命令强制将该节点设为主节点:

# drbdadm primary drbd0 --force
  1. 在 Secondary 节点“ylpldrbd02”上运行以下命令启动 drbd0
# drbdadm up drbd0
  1. 我们可以在执行同步时检查同步的当前状态。
    cat /proc/drbd 命令显示资源的创建和同步进度,如下所示:
# cat /proc/drbd
  1. 使用以下命令调整防火墙:
# 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。

日期:2020-06-02 22:18:18 来源:oir作者:oir