如何在 CentOS 上安装和设置 DRBD如何在 CentOS 上安装和设置 DRBD如何在 CentOS 上安装和设置 DRBD如何在 CentOS 上安装和设置 DRBD
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 CentOS 上安装和设置 DRBD

在此页

  1. 1。初步说明
  2. 2。安装阶段
  3. 3。验证阶段
  4. 5。 DRBD 配置
  5. 6。 DRBD 测试阶段

本教程解释了如何为您的服务器安装和设置 DRBD。在开始之前,让我解释一下 DRBD 实际上代表什么以及它的用途。 DRBD 代表分布式复制块设备,一种基于软件的、无共享的、复制的存储解决方案,用于镜像块设备的内容,如硬盘、分区、逻辑卷等。DRBD 的主要目的是提供一种替代解决方案遇到高可用性场景,例如故障转移或灾难恢复。您可以在此处查看其网站上的基本细节。

一、初步说明


对于本教程,我使用的是 32 位版本的 CentOS 6.4。示例最终结果将显示如何在服务器 A 上的分区内创建文件或文件夹,并使用 DRBD 成功显示另一台服务器(服务器 B)上的所有内容。

以下是服务器架构的草图:-

+--------------------------------+ +------------ ------------------+
| [DRBD 服务器 A] | 192.168.43.101 | 192.168.43.102 | [DRBD 服务器 B] |
| OEL641 +--------------------+------------------------+ OEL642 |
|文件夹A | |文件夹B |
+--------------------------------+ +------- ----------------------+

本教程兼容任何版本的 CentOS/Redhat/Oracle Linux 6。您要安装 DRBD 的服务器必须有空闲的块设备。此示例显示如何配置和使用块设备 /dev/sdb1。

2. 安装阶段


在开始之前,我们需要更新系统并安装 DRBD 依赖项所需的包。以下是需要运行的命令以及更新或安装的软件包列表。对于这种情况,我们使用 yum 命令从公共 CentOS 存储库获取最新的软件包。

yum -y update 
yum -y install gcc make automake autoconf libxslt libxslt-devel flex rpm-build kernel-devel
Setting up Install Process
Package gcc-4.4.7-3.el6.i686 already installed and latest version
Package 1:make-3.81-20.el6.i686 already installed and latest version
Package automake-1.11.1-4.el6.noarch already installed and latest version
Package autoconf-2.63-5.1.el6.noarch already installed and latest version
Package libxslt-1.1.26-2.0.2.el6_3.1.i686 already installed and latest version
Package libxslt-devel-1.1.26-2.0.2.el6_3.1.i686 already installed and latest version
Package flex-2.5.35-8.el6.i686 already installed and latest version
Package rpm-build-4.8.0-32.el6.i686 already installed and latest version
Package kernel-devel-2.6.32-358.el6.i686 already installed and latest version

我们必须在两台服务器上执行上述步骤。

在两台服务器上完成依赖包安装后,我们将开始安装 DRBD 包。可以从该网站下载这些包。

以下是步骤。

首先,我在 /root/ 路径下创建一个名为 BUILD、BUILDROOT 等的文件夹。在构建 DRBD 包后,需要此路径来存储 rpm 文件。

mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

下载 DRBD 包。

wget http://oss.linbit.com/drbd/drbd-utils-latest.tar.gz http://oss.linbit.com/drbd/8.4/drbd-8.4.7-1.tar.gz

提取软件包 drbd-8.4.7-1.tar.gz 和 drbd-utils-latest.tar.gz 文件。

tar -zxvf drbd-8.4.7-1.tar.gz
tar -zxvf drbd-utils-latest.tar.gz

编译 DRBD 包。

cd drbd-8.4.7-1 
drbd-8.4.7-1]# make km-rpm
...
...
You have now:
/root/rpmbuild/RPMS/i686/drbd-km-debuginfo-8.4.7-1.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1.i686.rpm

编译和配置包。

cd ..
cd drbd-utils-8.9.6
./configure
make rpm
...
...
You have now:
/root/rpmbuild/RPMS/i686/drbd-utils-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-debuginfo-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-heartbeat-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-xen-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km-debuginfo-8.4.7-1.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-pacemaker-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-bash-completion-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-udev-8.9.6-1.el6.i686.rpm

转到 /root/rpmbuild/RPMS/i686。编译出来的 rpm 包会存在里面,安装相关的 rpm 包。

cd /root/rpmbuild/RPMS/i686
rpm -Uvh drbd-xen* drbd-udev* drbd-pacemaker* drbd-bash-completion* drbd-utils-*.rpm drbd-km-*.rpm drbd-8*
Preparing... ########################################### [100%]
1:drbd-utils ########################################### [ 13%]
2:drbd-xen ########################################### [ 25%]
3:drbd-udev ########################################### [ 38%]
4:drbd-pacemaker ########################################### [ 50%]
5:drbd-bash-completion ########################################### [ 63%]
6:drbd ########################################### [ 75%]
7:drbd-km-2.6.32_358.el6.########################################### [ 88%]
8:drbd-km-debuginfo ########################################### [100%]


在第一台服务器上完成后,在服务器 OEL642 上执行相同的步骤。

3.验证阶段


现在我们距离完成还有一半。让我们关注 OEL641 配置方面。首先,验证您的服务器主机名,这很重要,因为 DRBD 的配置需要与其主机名相同的名称。以下是步骤:

uname -n
OEL641

然后更新DRBD模块

modprobe drbd
lsmod |grep drbd
drbd 341783 0
libcrc32c 841 1 drbd

4. 就这样,现在我们将创建一个新的磁盘分区作为DRDB 磁盘。这里我有一个新磁盘 /dev/sdb 。我将创建一个分区 /dev/sdb1 并将其用作 DRBD 磁盘。

fdisk -l
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130):
Using default value 130
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
fdisk -l
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x89770d51
Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 83 Linux

完成后,重复 OEL642 上的步骤

5.DRBD配置


现在我们来到最后一步,即 DRBD 的配置。基本上,我们需要设置哪个分区磁盘和服务器应该在 DRBD 模块下运行。为此,我们将创建一个如下所示的响应文件并将其复制到 OEL642,以便两台服务器具有相同的配置。

cd /etc/drbd.d/
vi s1.res
resource s1 {
on OEL641 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.101:7799;
meta-disk internal;
}
on OEL642 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.102:7799;
meta-disk internal;
}
}

用scp复制文件到第二台服务器:

scp /etc/drbd.d/s1.res :/etc/drbd.d/s1.res

完成后,我们需要在两台服务器上初始化分区。以下是步骤:

drbdadm create-md s1
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success

s1 是我们在上面的 s1.res 文件中定义的资源名称。

请登录服务器 OEL642 并执行与上面相同的步骤:

drbdadm create-md s1
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success


现在回到服务器OEL641,我们可以启动DRBD服务。以下是步骤:-

/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by ~]# /etc/init.d/drbd start
Starting DRBD resources: [
create res: s1
prepare disk: s1
adjust disk: s1
adjust net: s1
]
..........
***************************************************************
DRBD's startup script waits for the peer node(s) to appear.
- If this node was already a degraded cluster before the
reboot, the timeout is 0 seconds. [degr-wfc-timeout]
- If the peer was available before the reboot, the timeout
is 0 seconds. [wfc-timeout]
(These values are for resource 's1'; 0 sec -> wait forever)
To abort waiting enter 'yes' [ 26]:
.


注意上面的 DRBD 服务还没有启动。这是因为服务器 OEL641 正在 OEL642 上寻找 DRBD 服务。

因此,在此期间,请登录 OEL642 并按照与 OEL641 相同的方式启动 DRBD 服务。您会注意到,一旦 OEL642 上的 DRBD 服务启动,OEL641 上的 DRBD 服务将停止等待并同时启动。

完成后,DRBD 服务状态将在两台服务器上显示如下:

/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by , 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Secondary/Secondary Inconsistent/Inconsistent C


现在仅在服务器 OEL641 上执行以下步骤。这是为了初始化谁将成为初始主服务器。

drbdadm -- --overwrite-data-of-peer primary s1
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by , 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
... sync'ed: 0.8% (1037872/1044124)K
1:s1 SyncSource Primary/Secondary UpToDate/Inconsistent C

然后检查 OEL642:

/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by , 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
... sync'ed: 12.2% (921244/1044124)K
1:s1 SyncTarget Secondary/Primary Inconsistent/UpToDate C


您会在上面的状态报告中注意到,现在服务器 OEL641 已被验证为主服务器,OEL642 已被验证为辅助服务器。

这意味着现在我们在服务器 OEL641 上的 DRBD 分区下创建的任何文件或文件夹都将同步到 OEL642 上的 DRBD 分区。

6. DRBD测试阶段

现在,我们来到最后一部分,即测试 DRBD 服务以确保它满足目标。

首先,让我们挂载 DRBD 分区。

仅在主服务器 OEL641 上执行以下步骤一次!

mkfs.ext3 /dev/drbd1
...
...
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done


这会使用 ext3 文件系统格式化分区。

现在创建一个文件夹并将 DRBD 分区挂载到其中。

mkdir /folderA
mount /dev/drbd1 /folderA
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/drbd1 1004M 18M 936M 2% /folderA
cd /folderA/
ls -h
lost+found

如上图,新文件夹folderA创建成功。

现在让我们在文件夹中创建一个大小为 30Mb 的文件:

dd if=/dev/zero of=/folderA/testfile bs=1M count=30
30+0 records in
30+0 records out
31457280 bytes (31 MB) copied, 0.178448 s, 176 MB/s
ls -lh
total 31M
drwx------. 2 root root 16K Aug 21 08:55 lost+found
-rw-r--r--. 1 root root 30M Aug 21 09:09 testfile


这些都是先决条件,让我们开始测试这个过程。

作为最终结果,一旦我们在服务器 OEL642 上安装 DRBD 分区,测试文件应该存在于该文件夹中。

现在让我们卸载 OEL641 中的 DRBD 分区并将其设为辅助状态。次要状态意味着您将无法将 DRBD 分区挂载到要使用的操作系统中。

/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by , 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Primary/Secondary UpToDate/UpToDate C /folderA ext3
umount /folderA
drbdadm secondary s1
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by , 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Secondary/Secondary UpToDate/UpToDate C


现在两个 DRBD 服务器都处于辅助状态。让我们转到服务器 OEL642 并将其从次要状态更改为主要状态。

首先创建一个空文件夹并挂载到 OEL642 上的 DRBD 分区:

mkdir /folderB
cd /folderB
ls -lh
total 0
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by , 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Secondary/Secondary UpToDate/UpToDate C
drbdadm primary s1
/etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by , 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
1:s1 Connected Primary/Secondary UpToDate/UpToDate C
mount /dev/drbd1 /folderB
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_oel641-lv_root
96G 3.5G 88G 4% /
tmpfs 640M 80K 640M 1% /dev/shm
/dev/sda1 485M 32M 428M 7% /boot
/dev/drbd1 1004M 48M 906M 5% /folderB
ls -lh /folderB/
total 31M
drwx------. 2 root root 16K Aug 21 08:55 lost+found
-rw-r--r--. 1 root root 30M Aug 21 09:09 testfile


一旦您成功将 DRBD 分区安装到您的新文件夹,您会注意到您之前在服务器 OEL641 中创建的文件自动存在!


完成!您已经在 CentOS 上成功设置和配置了 DRBD!

©2015-2025 艾丽卡 support@alaica.com