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

时间:2020-02-23 14:39:08  来源:igfitidea点击:

这是关于CentOS 8/RHEL 8 Linux服务器上的分布式复制块设备(DRBD)的分布式复制块设备(DRBD)的逐步教程。
DRBD是一个自由开源,基于软件的复制存储解决方案,用于镜像诸如网络中主机之间的磁盘分区,硬盘和逻辑卷等块设备的内容。

DRBD的核心功能是通过Linux内核模块与虚拟块设备的驱动程序的方式实现的。
由于DRBD位于系统I/O堆栈的底部附近,因此它是非常灵活和多功能的,这使其成为实现高可用复制解决方案的理想解决方案。

通过安装DRBD,我们将获得一组与内核模块通信的管理工具,以便配置和管理DRBD资源。

DRBDAD:这是DRBD程序套件的高级管理工具.DRBDSetup:此工具用于将加载到Kerneldrbdmeta的DRBD模块配置:用于创建,转储,还原和修改DRBD元数据结构

DRBD镜像如何数据:实时。
在应用程序修改存储在设备中的数据时,复制将连续发生.Transperenty。
应用程序不知道数据存储在网络中的多个主机上。
同步或者异步。
使用使用同步镜像时,应用程序在完成所有主机上完成时会通知写入完成。
对于异步镜像,当写入本地完成时,应用程序被通知写完成,通常在它们传播到其他主机之前。

第1步:在CentOS 8 | Rhel 8 Linux上安装DRBD

DRBD的软件包需要在CentOS 8/Rhel 8 Linux上手动安装。
对于安装,我们将使用Elrepo存储库,其中包含Enterprise Linux的额外软件包。

通过运行下面的命令将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.git20170228.el8                            BaseOS                      365 k
 dracut-network                         x86_64                      049-70.git20170228.el8                            BaseOS                      100 k
 dracut-squash                          x86_64                      049-70.git20170228.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 DevicelVM逻辑Volumeany在系统上找到的其他块设备类型。

在我的设置中,我有两个服务器下方的细节。

||||
| --- - | --- | - - |
|服务器名称|服务器IP |原始磁盘设备|
| server-01.theitroad.com | 192.168.20.11 |/dev/sdb |
| server-02.theitroad.com | 192.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创建卷组,使其轻松稍后进行缩放。
这是在使用原始磁盘和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.theitroad.com {
    device    /dev/drbd1;
    disk      /dev/mapper/drbdpool-drbdata;
    address   95.217.209.209:7789;
    meta-disk internal;
  }
  on server-02.theitroad.com {
    device    /dev/drbd1;
    disk      /dev/mapper/drbdpool-drbdata;
    address   95.217.220.167:7789;
    meta-disk internal;
  }
}

配置摘要:我们的群集由两个节点组成,"Server01"和"Server02".we具有一个资源任意命名的Resource0,它使用/dev/mapper/drbdpool-drbdata作为较低级别设备,并配置内部元数据。
该资源使用TCP端口7789进行网络连接,并绑定到IP地址192.168.20.11和192.168.20.12,分别.server-01.theitroad.com和server-02.theitroad.com是如所示的正确服务器主机 uname -a

第4步:初始化DRDB资源

完成初始资源配置后,我们可以提出资源。
这只是一次完成。

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

初始化DRBD的元数据 - 语法:DRBDADM Create-MD <Resource>

$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.theitroad.com role:Secondary
    peer-disk:Inconsistent

此时,期望不一致/不一致的磁盘状态。

步骤6:初始设备同步

DRBD已成功分配磁盘和网络资源,并准备好运行。
下一个操作是告诉DRBD节点中的哪个节点应该用作初始设备同步的源。

我们需要启动初始完全同步(仅在一个节点上执行)。
我将在server-01.theitroad.com上运行我的

sudo drbdadm primary --force resource0

发出此命令后,初始完全同步将开始。
取决于设备的大小可能需要一段时间。

检查状态:

# On Primary
$sudo drbdadm status
sudo drbdadm status resource0
resource0 role:Primary
  disk:UpToDate
  server-02.theitroad.com role:Secondary
    peer-disk:UpToDate
# On Secondary
$sudo drbdadm status resource0
resource0 role:Secondary
  disk:UpToDate
  server-01.theitroad.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 May  7 00:36 10.txt
-rw-r--r--. 1 root root 0 May  7 00:36 1.txt
-rw-r--r--. 1 root root 0 May  7 00:36 2.txt
-rw-r--r--. 1 root root 0 May  7 00:36 3.txt
-rw-r--r--. 1 root root 0 May  7 00:36 4.txt
-rw-r--r--. 1 root root 0 May  7 00:36 5.txt
-rw-r--r--. 1 root root 0 May  7 00:36 6.txt
-rw-r--r--. 1 root root 0 May  7 00:36 7.txt
-rw-r--r--. 1 root root 0 May  7 00:36 8.txt
-rw-r--r--. 1 root root 0 May  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.theitroad.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 May  7 00:36 10.txt
-rw-r--r--. 1 root root 0 May  7 00:36 1.txt
-rw-r--r--. 1 root root 0 May  7 00:36 2.txt
-rw-r--r--. 1 root root 0 May  7 00:36 3.txt
-rw-r--r--. 1 root root 0 May  7 00:36 4.txt
-rw-r--r--. 1 root root 0 May  7 00:36 5.txt
-rw-r--r--. 1 root root 0 May  7 00:36 6.txt
-rw-r--r--. 1 root root 0 May  7 00:36 7.txt
-rw-r--r--. 1 root root 0 May  7 00:36 8.txt
-rw-r--r--. 1 root root 0 May  7 00:36 9.txt