在CentOS 8 | rhel 8上安装和配置DRBD
这是关于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