在CentOS 8 | RHEL 8上安装和配置DRBD

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

这是在CentOS 8 / RHEL 8 Linux服务器上安装分布式复制块设备(DRBD)的分步指南。 DRBD是一种免费的,开源的,基于软件的复制存储解决方案,用于在网络中的主机之间镜像块设备的内容,例如磁盘分区,硬盘和逻辑卷。

DRBD的核心功能由具有虚拟块设备驱动程序的Linux内核模块实现。 DRBD在系统I / O堆栈的底部附近,非常灵活且用途广泛,使其成为实现高可用性复制解决方案的理想解决方案。

安装DRBD可为您提供一组与内核模块进行通信的管理工具,以配置和管理您的DRBD资源。

  • 德布达姆:这是DRBD程序套件的高级管理工具。
  • drbdsetup:此工具用于配置内核中加载的DRBD模块
  • b:用于创建,转储,还原和修改DRBD元数据结构

DRBD如何镜像数据:

  • 实时..当应用程序修改设备上存储的数据时,复制将继续。
  • 透明地..该应用程序不知道数据存储在网络中的多个主机上。
  • 同步中 要么 异步地..使用同步镜像,当所有主机上的写入完成时,将通知应用程序。对于异步镜像,当本地完成写入时,将通知应用程序写入已完成。通常是在将写传播到其他主机之前。

步骤1:在CentOS 8上安装DRBD | RHEL 8 Linux

必须在CentOS 8 / RHEL 8 Linux上手动安装DRBD软件包。安装使用带有用于企业Linux的其他软件包的ELRepo存储库。

运行以下命令以将ELRepo存储库添加到CentOS / RHEL 8系统。

sudo dnf -y install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

–将存储库添加到系统后,即可导入公共密钥。

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

搜索DRBD软件包并验证配置。

$ sudo dnf search drbd
ELRepo.org Community Enterprise Linux Repository - el8                                                                            338 kB/s | 264 kB     00:00
================================================================== Name & Summary Matched: drbd ==================================================================
kmod-drbd90.x86_64 : drbd90 kernel module(s)
drbd90-utils.x86_64 : Management utilities for DRBD
drbd90-utils-sysvinit.x86_64 : The SysV initscript to manage the DRBD.

您现在可以在CentOS 8 Linux上将DRBD与内核模块一起安装。

sudo dnf install vim drbd90-utils kmod-drbd90

通过运行命令,在显示的提示符下接受安装。

Dependencies resolved.
========================================================================================================================================================
 Package                                Arch                        Version                                           Repository                   Size
========================================================================================================================================================
Installing:
 kmod-drbd90                            x86_64                      9.0.21-3.el8_2.elrepo                             elrepo                      292 k
 drbd90-utils                           x86_64                      9.10.0-2.el8.elrepo                               elrepo                      753 k
Upgrading:
 dracut                                 x86_64                      049-70.git20200228.el8                            BaseOS                      365 k
 dracut-network                         x86_64                      049-70.git20200228.el8                            BaseOS                      100 k
 dracut-squash                          x86_64                      049-70.git20200228.el8                            BaseOS                       54 k
 iptables                               x86_64                      1.8.4-10.el8                                      BaseOS                      581 k
 iptables-ebtables                      x86_64                      1.8.4-10.el8                                      BaseOS                       70 k
 iptables-libs                          x86_64                      1.8.4-10.el8                                      BaseOS                      105 k
 kexec-tools                            x86_64                      2.0.20-14.el8                                     BaseOS                      485 k
 libnftnl                               x86_64                      1.1.5-4.el8                                       BaseOS                       83 k
 linux-firmware                         noarch                      20191202-97.gite8a0f4c9.el8                       BaseOS                       72 M
 systemd                                x86_64                      239-30.el8_2                                      BaseOS                      3.5 M
 systemd-libs                           x86_64                      239-30.el8_2                                      BaseOS                      1.1 M
 systemd-pam                            x86_64                      239-30.el8_2                                      BaseOS                      449 k
 systemd-udev                           x86_64                      239-30.el8_2                                      BaseOS                      1.3 M
Installing dependencies:
 kernel-core                            x86_64                      4.18.0-193.6.3.el8_2                              BaseOS                       28 M

Transaction Summary
========================================================================================================================================================
Install   3 Packages
Upgrade  13 Packages

Total download size: 109 M
Is this ok [y/N]: y

使用默认的SELinux安全策略,DRBD邮件可能无法运行,并且您可能需要从SELinux控件中排除DRBD进程。

sudo dnf -y install policycoreutils-python-utils
sudo semanage permissive -a drbd_t

在防火墙上启用DRBD服务端口。

sudo firewall-cmd --add-port=6996-7800/tcp --permanent
sudo firewall-cmd --reload

步骤2:准备较低的存储空间

如果在CentOS / RHEL 8 Linux系统上安装了DRBD,则可以使用DRBD在两台服务器之间配置复制的存储。

您应该在两个群集节点上保留大约相同大小的存储空间,以用作DRBD资源的子设备。易于使用的块设备有:

  • 硬盘分区(或完整的物理硬盘)
  • 软件RAID设备
  • LVM逻辑卷
  • 系统检测到的其他块设备类型。

在我的设置中,我有两台具有以下详细信息的服务器。

服务器名称服务器IP原始磁盘设备
server-01.computingforgeeks.com192.168.20.11/ dev / sdb
server-02.computingforgeeks.com192.168.20.12/ dev / sdb

这是服务器的磁盘布局:

$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda       8:0    0 19.1G  0 disk
├─sda1    8:1    0   19G  0 part /
├─sda14   8:14   0    1M  0 part
└─sda15   8:15   0   64M  0 part /boot/efi
sdb       8:16   0   50G  0 disk
sr0      11:0    1 1024M  0 rom

使用LVM创建DRBD卷组,以便以后扩展。这是在装有RAW磁盘和DRBD的服务器上完成的。

在磁盘上创建一个分区表。

sudo parted -s -a optimal -- /dev/sdb mklabel gpt
sudo parted -s -a optimal -- /dev/sdb mkpart primary 0% 100%
sudo parted -s -- /dev/sdb align-check optimal 1

安装LVM工具并为DRBD创建PV,VG和LV。

$ sudo dnf -y install lvm2
$ sudo pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
$ sudo vgcreate drbdpool /dev/sdb1
Volume group "drbdpool" successfully created
$ sudo lvcreate -n drbdata -l100%FREE drbdpool
Logical volume "drbdata" created.

检查LVM设置。

$ sudo pvs
  PV         VG       Fmt  Attr PSize   PFree
  /dev/sdb1  drbdpool lvm2 a--  <50.00g <50.00g

$ sudo vgs
  VG       #PV #LV #SN Attr   VSize   VFree
  drbdpool   1   0   0 wz--n- <50.00g <50.00g

步骤3:配置DRBD资源

DRBD的各个方面 /etc/drbd.conf 具有以下内容的配置文件。

$ cat /etc/drbd.conf
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

include "drbd.d/global_common.conf";
include "drbd.d/*.res";

这只是一个框架文件,它告诉服务哪些目录寻找其他配置文件。

在下面创建一个新的配置文件 /etc/drbd.d/r0.res

sudo vim /etc/drbd.d/resource0.res

具有以下内容:

resource resource0 {
  on server-01.computingforgeeks.com {
    device    /dev/drbd1;
    disk      /dev/mapper/drbdpool-drbdata;
    address   95.217.209.209:7789;
    meta-disk internal;
  }
  on server-02.computingforgeeks.com {
    device    /dev/drbd1;
    disk      /dev/mapper/drbdpool-drbdata;
    address   95.217.220.167:7789;
    meta-disk internal;
  }
}

配置概述:

  • 集群由两个节点组成。server01'和'server02
  • 有任何名称的资源 资源0/ dev / mapper / drbdpool-drbdata 配置为从属设备, 内部元数据..
  • 资源使用TCP端口 7789 对于网络连接,绑定到IP地址192.168.20.11和192.168.20.12。
  • server-01.computingforgeeks.com和server-02.computingforgeeks.com是下面显示的正确服务器主机名。 uname -a

步骤4:初始化DRDB资源

完成资源的初始配置后,您可以启动资源。只能执行一次。

必须在两个节点上完成以下步骤。

初始化DRBD元数据–语法:drbdadm create-md

$ sudo drbdadm create-md resource0
initializing activity log
initializing bitmap (1600 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.

步骤5:启用DRBD资源

资源初始化后,需要将资源与后备设备(或多卷资源的情况下的设备)关联,设置复制参数,并将资源连接到对等方。

$ sudo drbdadm up resource0
 --==  Thank you for participating in the global usage survey  ==--
The server's response is:

you are the 6934th user to install this version

检查状态。

$ sudo drbdadm status resource0
resource0 role:Secondary
  disk:Inconsistent
  server-02.computingforgeeks.com role:Secondary
    peer-disk:Inconsistent

在这一点上,一个过时/不一致的磁盘状况是可以预期的。

步骤6:初始设备同步

DRBD已成功分配了磁盘和网络资源,并可以进行操作。下一步是告诉DRBD哪个节点 资源 初始设备同步。

您需要开始第一次完全同步(仅在一个节点上运行)。 我跑 server-01.computingforgeeks.com

sudo drbdadm primary --force resource0

发出此命令后,将开始第一次完全同步。这可能需要一些时间,具体取决于设备的大小。

检查状态:

# On Primary
$ sudo drbdadm status
sudo drbdadm status resource0
resource0 role:Primary
  disk:UpToDate
  server-02.computingforgeeks.com role:Secondary
    peer-disk:UpToDate

# On Secondary
$ sudo drbdadm status resource0
resource0 role:Secondary
  disk:UpToDate
  server-01.computingforgeeks.com role:Primary
    peer-disk:UpToDate

步骤7:使用DRBD设备

DRBD设备功能齐全,可以立即使用。您可以在设备上创建文件系统,将其用作原始块设备,进行安装,并使用可访问的块设备执行其他操作。

获取名称设备映射。

$ lsblk
NAME                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 19.1G  0 disk
├─sda1                 8:1    0   19G  0 part /
├─sda14                8:14   0    1M  0 part
└─sda15                8:15   0   64M  0 part /boot/efi
sdb                    8:16   0   50G  0 disk
└─sdb1                 8:17   0   50G  0 part
  └─drbdpool-drbdata 253:0    0   50G  0 lvm
    └─drbd1          147:1    0   50G  0 disk
sr0                   11:0    1 1024M  0 rom

在DRBD设备上创建文件系统:

$ sudo mkfs.xfs /dev/drbd1
meta-data=/dev/drbd1             isize=512    agcount=4, agsize=3276442 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=13105767, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=6399, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

让我们尝试挂载:

sudo mkdir /mnt/mydrbd
sudo mount /dev/drbd1 /mnt/mydrbd

确认:

$ df -hT /mnt/mydrbd/
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/drbd1     xfs    50G  390M   50G   1% /mnt/mydrbd

请检查文件是否可以写入。

for i in {1..10}; do
  sudo touch /mnt/mydrbd/${i}.txt
done

检查文件是否在DRBD设备上创建。

$ ls -l /mnt/mydrbd
total 0
-rw-r--r--. 1 root root 0 Jul  7 00:36 10.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 1.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 2.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 3.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 4.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 5.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 6.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 7.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 8.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 9.txt

步骤8:在辅助主机上挂载DRBD设备:

首先卸载 主节点 并获得第二角色。

sudo umount /mnt/mydrbd
sudo drbdadm secondary resource0

然后在辅助节点上运行以下命令:

$ sudo drbdadm primary resource0
$ sudo drbdadm status
resource0 role:Secondary
  disk:UpToDate
  server-02.computingforgeeks.com role:Primary
    peer-disk:UpToDate

$ sudo mkdir  /mnt/mydrbd
$ sudo mount /dev/drbd1 /mnt/mydrbd
$ df -hT /mnt/mydrbd
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/drbd1     xfs    50G  390M   50G   1% /mnt/mydrbd

$ ls -lh /mnt/mydrbd/
total 0
-rw-r--r--. 1 root root 0 Jul  7 00:36 10.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 1.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 2.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 3.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 4.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 5.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 6.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 7.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 8.txt
-rw-r--r--. 1 root root 0 Jul  7 00:36 9.txt

在本指南中,您学习了如何在CentOS / RHEL 8 Linux机器上安装和配置DRBD。有关DRBD技术的更多信息,请参考下面链接的官方文档。

储存细节:

在CentOS 8上安装Ceph 15(Octopus)集群

在Ubuntu 20.04上安装Ceph 15(Octopus)存储集群

在CentOS 8 / CentOS 7上使用Heketi设置GlusterFS存储

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

Sidebar