IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 2021年DRBD9.1学习测试脱坑指南 -> 正文阅读

[系统运维]2021年DRBD9.1学习测试脱坑指南

概要

  • DRBD 简介

  • DRBD 安装及测试

  • DRBD与pacemaker集成


一、DRBD 简介

1、DRBD基础

DRBD的全称为:Distributed Replicated Block Device(DRBD)分布式块设备复制。DRBD是一个基于软件的、无共享、复制存储解决方案,它在主机之间镜像块设备(硬盘、分区、逻辑卷等)的内容。可以简单的看作是一种网络RAID-1。

DRBD镜像数据
  • 实时: 当应用程序修改设备上的数据时,数据的副本更改是连续进行的。

  • 透明: 应用程序不会意识到数据实际上是存储在多台主机上的。

  • 同步 or 异步: 当使用同步镜像数据时,只有在所有(连接上的)主机上都完成写操作后,才会通知应用程序写完成。当使用异步镜像数据时,在本地完成写入时(通常在镜像数据传输到其他节点前),就会通知应用程序写入完成。

DRBD工作原理

DRBD的核心功能是通过Linux内核模块实现的。具体来说,DRBD构成虚拟块设备的驱动程序,因此DRBD位于系统的I/O堆栈的底部附近。因此,DRBD非常灵活和通用,这使得它成为一个复制解决方案,适合为几乎任何应用程序添加高可用性。

根据定义和Linux内核体系结构的要求,DRBD与上面各层无关。因此,DRBD不可能奇迹般地向上层添加它们不具备的特性。例如,DRBD无法自动检测文件系统损坏,也无法向ext3或XFS等文件系统添加活动群集功能。

原理架构图如下:

在这里插入图片描述

2、DRBD特征

DRBD两种模式
1、单主模式

在单一主模式下,资源在任何给定的时间仅在一个群集成员上处于主角色。由于可以保证在任何时候只有一个集群节点操作数据,因此这种模式可以用于任何传统的文件系统(ext3、ext4、XFS等)。

在单一主模式下部署DRBD是高可用性(支持故障转移)集群的规范方法。

2、双主模式

在双主模式下,资源在任何给定时间都处于两个群集节点上的主角色。由于可以并发访问数据,因此模式需要依赖使用分布式锁管理器的共享群集文件系统。示例包括GFS和OCFS2。

在双主模式下部署DRBD是负载均衡集群的首选方法,这种集群需要从两个节点并发访问数据,例如需要实时迁移的虚拟化环境。此模式在默认情况下是禁用的,并且必须在DRBD的配置文件中显式启用。

主备说明

主的DRBD设备可以不受限制地用于读写操作。它可用于创建和装载文件系统、原始或直接I/O到块设备等。

备的DRBD设备接收来自对等节点设备的所有更新,但在其他情况下完全不允许访问。它不能被应用程序使用,也不能用于读写访问。甚至不允许对设备进行只读访问的原因是必须保持缓存一致性,如果以任何方式访问辅助资源,这是不可能的。

DRBD的复制模式

DRBD支持三种不同的复制模式,允许三种程度的复制同步性。

  • Protocol A
    异步复制协议。一旦本地磁盘写入完成,并且复制数据包已放置在本地TCP发送缓冲区中,则认为主节点上的本地写入操作已完成。在强制故障转移的情况下,可能会发生数据丢失。备用节点上的数据在故障转移后是一致的;但是,在崩溃之前执行的最新更新可能会丢失。Protocol A最常用于远程复制场景。当与DRBD Proxy结合使用时,它是一个有效的灾难恢复解决方案

  • Protocol B
    内存同步(半同步)复制协议。一旦本地磁盘写入发生,并且复制数据包已到达对等节点,则认为主节点上的本地写入操作已完成。通常,在强制故障转移的情况下不会丢失任何写操作。但是,如果同时在主备节点 同时 发生了电源故障,则主节点的数据存储可能会丢失最新完成的写入操作。

  • Protocol C
    同步复制协议。只有在确认本地和远程磁盘写入之后,主节点上的本地写入操作才被视为完成。因此,单个节点的丢失不会导致任何数据丢失。数据丢失当然是不可避免的,即使采用这个复制协议,如果所有节点(例如:它们的存储子系统)同时遭到不可逆转的破坏, 数据也可能丢失。

到目前为止,DRBD设置中最常用的复制协议是protocol C。

复制协议的选择影响部署的两个因素:保护和延迟 。相比之下,吞吐量在很大程度上独立于所选的复制协议。

高效同步

同步不同于设备复制。当对主角色中的资源的任何写入事件发生复制时,同步与传入的写操作是分离的。否则,它会影响到设备整体。

如果复制链路由于任何原因中断(无论是由于主节点故障、辅助节点故障还是复制链路中断)时,则必须进行同步。同步是有效的,因为DRBD不会按照修改后的块最初写入的顺序,而是按照线性顺序同步,这会产生以下后果:

  • 同步速度很快,因为发生多个连续写操作的块只同步一次。

  • 同步还与很少的磁盘查找相关,因为块是根据磁盘上块的自然布局进行同步的。

  • 在同步过程中,备用节点上的数据集部分过时,部分已更新。这种数据状态称为 不一致 。后台同步正在进行时,服务继续在活动节点上不间断地运行。

支持磁盘刷新

当本地块设备(如硬盘驱动器或RAID逻辑磁盘)启用了写缓存时,对这些设备的写入在到达易失性缓存后即被视为完成。控制器制造商通常将此称为回写模式,反之则为直写模式。如果控制器在回写模式下断电,则最后一次写入永远不会提交到磁盘,可能会导致数据丢失。

为了解决这个问题,DRBD使用了磁盘刷新。磁盘刷新是一种写入操作,仅当关联的数据已提交到稳定(非易失性)存储时才完成,也就是说,它已有效地写入磁盘,而不是缓存。DRBD使用磁盘刷新对其复制的数据集和元数据进行写操作。实际上,DRBD在其认为必要的情况下绕过写缓存

磁盘错误处理策略

策略可能是以下选项之一

  • detach
    这是默认和推荐的选项。在发生较低级别的I/O错误时,节点将丢弃其备份设备,并继续以无盘模式运行。

  • pass-on
    这导致DRBD向上层报告I/O错误。在主节点上,它将报告给已装入的文件系统。在次节点上,它被忽略(因为次节点没有要报告的上层)。

  • call-local-io-error
    调用定义为本地I/O错误处理程序的命令。这要求在资源的 handlers 部分中定义相应的 local-io-error 命令调用。完全由管理员自行决定使用 local-io-error 调用的命令(或脚本)来实现I/O错误处理。

如果是detach策略,主盘坏了可以不用提升和降级资源(也就是不用做任何操作),主盘可以以diskless(无盘)模式继续运行,在主节点上可以继续读写数据。因为这时候写数据会通过TCP写到备盘。当主盘恢复后,会同步数据回主盘。

二、CentOS7 DRBD 安装及测试

安装

1、安装drbd-utils

wget https://pkg.linbit.com//downloads/drbd/utils/drbd-utils-9.18.2.tar.gz

tar zxvf drbd-utils-9.18.2.tar.gz&&cd drbd-utils-9.18.2

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --runstatedir=/var/run/drbd

make -j cat /proc/cpuinfo | grep processor | wc -l

make install

ps: --sysconfdir=/etc 这个最好就是/etc 我用pacemaker管理dtbd 发现他是从/etc下面找这个配置文件的(也许pacemaker有什么地方能配置,但是没仔细研究)

error : Operation in progress
warning: failed to load external entity "http://docbook.sourceforge.net/release/xsl/current/manpages/pi.xsl"
compilation error: file http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl line 41 element include
xsl:include : unable to load http://docbook.sourceforge.net/release/xsl/current/manpages/pi.xsl
make[1]: *** [drbdsetup.8] 错误 5
make[1]: 离开目录“/home/xxx/Desktop/data/drbd-utils-9.18.2/documentation/v9”
make: *** [doc] 错误 2

或者

../../scripts/drbd.ocf meta-data |\
/usr/bin/xsltproc --novalid \
	--stringparam package "drbd-pacemaker" \
	--stringparam provider linbit \
	--stringparam version "9.18.2" \
	--output ocf_linbit_drbd.xml ../ra2refentry.xsl -
../../scripts/drbd-attr meta-data |\
/usr/bin/xsltproc --novalid \
	--stringparam package "drbd-pacemaker" \
	--stringparam provider linbit \
	--stringparam version "9.18.2" \
	--output ocf_linbit_drbd-attr.xml ../ra2refentry.xsl -
../../scripts/drbd-attr:行4: /resource.d/heartbeat/.ocf-shellfuncs: 没有那个文件或目录
../../scripts/drbd-attr:行319: ocf_is_true: 未找到命令
asciidoctor -I. -rasciidoctor-extensions.rb -amansource=drbd-utils -amanmanual='DRBD Manual' -amanversion= -aorgname='LINBIT HA Solutions GmbH https://linbit.com' -d manpage -b docbook5 drbd-lvchange@.service.adoc
make[1]: asciidoctor:命令未找到
make[1]: *** [drbd-lvchange@.service.xml] 错误 127
make[1]: *** 正在等待未完成的任务....
make[1]: 离开目录“/home/xxx/Desktop/data/drbd-utils-9.18.2/documentation/v9”
make: *** [doc] 错误 2

报错影响的是文档, 文档要在线下载但翻不过那座墙, 那就不用管,不影响软件使用。

2、安装drbd

wget https://pkg.linbit.com//downloads/drbd/9/drbd-9.1.3.tar.gz

tar zxvf drbd-9.1.3.tar.gz&&cd drbd-9.1.3

make && make install

modprobe drbd

lsmod|grep drbd

systemctl status drbd

systemctl enable drbd #这样开机drbd就会自动加载到Linux内核模块

DRBD的测试使用

虚拟机重启后如果改了配置资源,需要重新配置资源
DRBD允许您在资源运行时重新配置它们。包括,
对 /etc/drbd.conf 中的资源配置需要进行任何必要的更改,
在两个节点之间同步 /etc/drbd.conf 文件,
在两个节点上发出 drbdadm adjust 命令。
drbdadm adjust 然后切换到 drbdsetup 对配置进行必要的调整。与往常一样,您可以通过使用 -d (dry-run)选项运行 drbdadm 来查看挂起的 drbdsetup 调用。
对 /etc/drbd.conf 中的 common 部分进行更改时,可以通过发出 drbdadm adjust all 来调整一次运行中所有资源的配置。

环境
主机IP角色
node1192.168.1.115DRBD主节点
node2192.168.1.116DRBD备节点

注意: 本文实验中所有主机SElinux和防火墙都关闭

vim /etc/hosts (node1和node2都要执行)

192.168.1.115 node1
192.168.1.116 node2

node1机器上面执行 hostnamectl set-hostname node1

node2机器上面执行 hostnamectl set-hostname node2

不设置hostname后面执行命令会报错,如下

$ drbdadm create-md drbd0                                                                                         1 ?
'drbd0' not defined in your config (for this host).

-------- -------- --------两个节点都要进行这些操作 开始-------- -------- --------

1、为虚拟机添加硬盘并进行分区
把虚拟机中的系统关闭,如果现在不关闭的话,后面添加不了新硬盘(VMWare Fusion不提示不"无法添加此设备,直到关闭了虚拟机")。然后选择
虚拟机->设置,在弹出的对话框中点击硬盘(SCSI),接着点击添加设备,就会出现添加硬件向导:新硬盘->应用,其他都是默认,SCSI、默认是20G、将虚拟磁盘拆分成多个文件

2、打开虚拟机的Linux系统。执行fdisk -l

$ fdisk -l                          

磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000bd3cb

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4812799     2098176   82  Linux swap / Solaris
/dev/sda3         4812800   125829119    60508160   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

可以看到此时多了个sdb,但是并没有分区,下面我们为sdb进行分区:

输入命令fdisk /dev/sdb

在提示下输入m,就会出现帮助列表,根据需要选择选项完成自己的需要。

输入n,即为增加分区,

接着回车 建立主分区,

再回车,下面会提示卷的起始地址和结束地址,

再回车

回车默认就可以了。

最后键入w保存并退出。

操作记录如下

$ fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xfd63b3d2 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

再输入 fdisk -l

就可以看到多了/dev/sdb1了,说明我们已经成功为sdb添加了分区。

$ fdisk -l

磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000bd3cb

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4812799     2098176   82  Linux swap / Solaris
/dev/sda3         4812800   125829119    60508160   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfd63b3d2

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

创建完分区后不能对其进行格式化

mkdir /data

查看配置文件位置

 find / -name 'drbd.conf' 2>/dev/null 
/etc/drbd.conf
/etc/multipath/conf.d/drbd.conf
/usr/lib/tmpfiles.d/drbd.conf
/home/bob/Desktop/data/drbd-utils-9.18.2/scripts/drbd.conf
/home/bob/Desktop/data/drbd-utils-9.18.2/scripts/multipath/drbd.conf

$ find / -name 'global_common.conf' 2>/dev/null
/etc/drbd.d/global_common.conf
/home/bob/Desktop/data/drbd-utils-9.18.2/scripts/global_common.conf

备份配置

mv /etc/drbd.d/global_common.conf  /etc/drbd.d/global_common.conf.bak
cat << EOF > /etc/drbd.d/global_common.conf
global {
  usage-count no;
}
common {
  net {
    protocol C;
  }
  options {
    auto-promote yes;
  }
}
EOF

按回车

拓展说明:
这里的自动提升资源,auto-promote官方说明如下:
If you’re using the auto-promote feature, you don’t need to change the roles (Primary/Secondary) manually; only stopping of the services and unmounting, respectively mounting, is necessary.

cat << EOF > /etc/drbd.d/drbd0.res
resource drbd0 {
  disk /dev/sdb1;
  device /dev/drbd0;
  meta-disk internal;
  on node1 {
    address 192.168.1.115:7789;
  }
  on node2 {
   address 192.168.1.116:7789;
  }
}
EOF

按回车

首次启用资源

创建设备元数据

此步骤只能在初始设备创建时完成。它初始化DRBD的元数据:

drbdadm create-md drbd0

$ drbdadm status
# No currently configured DRBD found.

启用资源

此步骤将资源与其备份设备(如果是多卷资源,则为多个设备)关联,设置复制参数,并将资源连接到其对等方

drbdadm up drbd0

$ drbdadm status
drbd0 role:Secondary
  disk:Inconsistent
  node2 connection:Connecting  (如果是Connecting应该就是防火墙没关)

$ drbdadm status
drbd0 role:Secondary
  disk:Inconsistent
  node2 role:Secondary
    peer-disk:Inconsistent

到目前为止,DRBD已经成功地分配了磁盘和网络资源,并准备就绪。然而它还不知道应该使用哪个节点作为初始设备同步的源。

-------- -------- --------两个节点都要进行这些操作 结束-------- -------- --------

初始设备同步

要使DRBD完全运行,还需要两个步骤:

选择初始同步源
如果处理的是新初始化的空磁盘,则此选择完全是任意的。但是,如果您的某个节点已经有需要保留的有价值的数据,则选择该节点作为同步源至关重要。如果在错误的方向上执行初始设备同步,则会丢失该数据。这点要非常小心。

启动初始化全量同步
此步骤只能在一个节点上执行,只能在初始资源配置上执行,并且只能在您选择作为同步源的节点上执行。要执行此步骤,请输入以下命令:

这里设置node1为主节点,在node1上执行

drbdadm primary --force drbd0

发出此命令后,将启动初始化全量同步。您将能够通过 drbdadm status 监视其进度。根据设备的大小,可能需要一些时间。

drbdadm status drbd0 
drbd0 role:Primary
  disk:UpToDate
  node2 role:Secondary
    replication:SyncSource peer-disk:Inconsistent done:4.56
  
$ fdisk -l                               

磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000bd3cb

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4812799     2098176   82  Linux swap / Solaris
/dev/sda3         4812800   125829119    60508160   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfd63b3d2

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

磁盘 /dev/drbd0:21.5 GB, 21473095680 字节,41939640 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字

在node2上

$ drbdadm status drbd0
drbd0 role:Secondary
  disk:Inconsistent
  node1 role:Primary
    replication:SyncTarget peer-disk:UpToDate done:16.52
  
$ fdisk -l            

磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000bd3cb

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4812799     2098176   82  Linux swap / Solaris
/dev/sda3         4812800   125829119    60508160   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x44229f15

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

就变成Secondary了

通过上述两个对比可以看到primary上面多了个 /dev/drbd0

格式化并挂载 primary上执行

需要对drbd设备格式化并挂载才能使用(drbd正常情况下只有主节点能够挂载)

mkfs.ext4 /dev/drbd0  #格式化drbd设备
mount /dev/drbd0 /data   #挂载到data目录

输出内容如下

$ mkfs.ext4 /dev/drbd0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242455 blocks
262122 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

╭─root@localhost  ~ ?node-?  ?? 
╰─$ mount /dev/drbd0 /data
╭─root@localhost  ~ ?node-?  ?? 
╰─$ ll /                                                
总用量 36K
。。。。。。。。。。。。 其他目录省略
drwxr-xr-x    3 root root 4.0K 8月  15 17:36 data
。。。。。。。。。。。。
创建测试文件

在primary上执行

cd /data
dd if=/dev/zero of=50M.file bs=1M count=50
dd if=/dev/zero of=50M.file2 bs=1M count=50

$ ll
总用量 101M
-rw-rw-r-- 1 root root 50M 8月  15 17:46 50M.file
-rw-rw-r-- 1 root root 50M 8月  15 17:46 50M.file2
drwx------ 2 root root 16K 8月  15 17:36 lost+found

可以看到有两个生成的文件了。

DRBD同步测试1

当在备机node2启动drbd时,它是无法挂载/dev/sdb1分区的,我们可以尝试写些数据到node1的目录/data上,然后停止node2的drbd。

drbdadm down drbd0

之后就可以把node2的/dev/sdb1挂载到目录/data

mount /dev/sdb1 /data

DRBD同步测试2

将node1设置为seondary并将node2设置为primary
执行命令前要退出/data目录(如cd / 或 cd 到非/data目录即可),否则umount报错如下

$ umount /data                                                                                                   32 ?
umount: /data:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)

umount /data     #首先要卸载drbd0
drbdadm secondary drbd0
其他命令

drbdadm status drbd0

drbdsetup status drbd0 --verbose --statistics

drbdsetup events2 --now drbd0

drbdadm cstate drbd0

drbdadm dstate drbd0

drbdsetup status --verbose --statistics 性能指标

手动故障切换

如果不使用Pacemaker并希望在被动/主动配置中手动处理故障转移,则过程如下。
在当前主节点上,停止使用DRBD设备的任何应用程序或服务,卸载DRBD设备,并将资源降级为次要资源。

# umount /dev/drbd/by-res/<resource>/<vol-nr>
# drbdadm secondary <resource>

现在登录到想提升为primary的节点上,升级资源并装载设备。

# drbdadm primary <resource>
# mount /dev/drbd/by-res/<resource>/<vol-nr> <mountpoint>

If you’re using the auto-promote feature, you don’t need to change the roles (Primary/Secondary) manually; only stopping of the services and unmounting, respectively mounting, is necessary.

三、DRBD与pacemaker集成

pacemaker 官方文档

https://clusterlabs.org/pacemaker/doc/deprecated/en-US/Pacemaker/1.1/html-single/Clusters_from_Scratch/index.html

Pacemaker是一个复杂的、功能丰富的、广泛部署的Linux平台集群资源管理器。这里主要是利用pacemaker管理DRBD实现故障时自动切换主备,并mount目录

pacemaker 安装

node1 和node2都执行

yum install -y pacemaker pcs psmisc policycoreutils-python3

echo password|passwd --stdin hacluster

systemctl start pcsd.service

systemctl enable pcsd.service

node1执行

pcs cluster auth node1 node2

pcs cluster setup --name mycluster node1 node2

pcs cluster start --all

pcs cluster cib

pcs property set stonith-enabled=false

crm_verify -L 没报错就行

pcs cluster cib drbd_cfg

drbd_cfg 是自己起的配置名称

pcs -f drbd_cfg resource create DRBDData ocf:linbit:drbd drbd_resource=drbd0 op monitor interval=60s

说明:DRBDData 是resource的名称(自己起),drbd0是DRBD配置的资源名称

pcs -f drbd_cfg resource master DRBDDataClone DRBDData master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true

DRBDDataClone是自己起的备用节点resource的名称

pcs -f drbd_cfg resource show

pcs cluster cib-push drbd_cfg --config

pcs cluster cib fs_cfg

pcs -f fs_cfg resource create DRBDFS Filesystem device="/dev/drbd0" directory="/data" fstype=“ext4”

DRBDFS是自己起的名称;/dev/drbd0是对应的DRBD设备;/data 是要挂载的目录;ext4是文件系统类型

pcs -f fs_cfg constraint colocation add DRBDFS with DRBDDataClone INFINITY with-rsc-role=Master

pcs -f fs_cfg constraint order promote DRBDDataClone then start DRBDFS

执行步骤,先提升备,在挂载文件系统

pcs -f fs_cfg resource show

pcs cluster cib-push fs_cfg --config

pcs status

测试

pcs cluster standby node1

然后node2上执行

drbdadm status drbd0

就会发想自动切换为primary了并且/data目录页自动挂载了

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:29:39  更:2021-08-20 15:32:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:55:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码