跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文档 / Quick Start Guides / 使用 DRBD 和 Pacemaker 的高度可用 NFS 储存
SUSE Linux Enterprise High Availability Extension 15 SP4

使用 DRBD 和 Pacemaker 的高度可用 NFS 储存

出版日期:2023 年 12 月 11 日

此文档介绍了如何使用以下组件在双节点群集中设置高度可用的 NFS 储存:DRBD*(Distributed Replicated Block Device,分布式复制块设备)、LVM(Logical Volume Manager,逻辑卷管理器)和群集资源管理器 Pacemaker。

作者: Tanja RothThomas Schraitle

1 使用情形

本文档将帮助您设置高度可用的 NFS 服务器。用于实现高度可用的 NFS 储存的群集具有以下属性:

  • 两个节点:alice(IP:192.168.1.1)和 bob(IP:192.168.1.2),两者之间通过网络彼此相连。

  • 两个浮动虚拟 IP 地址(192.168.1.10192.168.2.1),这样无论服务在哪个物理节点上运行,客户端都可连接到服务。一个 IP 地址用于使用 Hawk2 进行群集管理,另一个 IP 地址专用于 NFS 导出。

  • 一台共享储存设备,用作 SBD 屏蔽机制。可避免节点分裂的情况。

  • 当活动的主机发生故障(主动/被动设置)时,资源从一个节点故障转移至另一个节点。

  • 每台主机上的本地储存。使用 LVM 上的 DRBD 在主机之间同步数据。

  • 通过 NFS 导出的文件系统。

安装并设置好基本的双节点群集后,再使用 NFS 的储存和群集资源对其进行扩展,即可获得一个高度可用的 NFS 储存服务器。

2 安装基本的双节点群集

继续前,您需要安装并设置一个基本的双节点群集。《Installation and Setup Quick Start》(安装和设置快速入门)中介绍了此任务。《Installation and Setup Quick Start》(安装和设置快速入门)介绍了如何使用 crm 外壳花费极少的精力设置群集。

3 创建 LVM 设备

LVM(逻辑卷管理器)支持在多个文件系统上灵活分配硬盘空间。

要准备供 LVM 使用的磁盘,请执行以下操作:

  1. 创建 LVM 卷组,然后使用要用于 LVM 的相应设备替换 /dev/sdb1

    root # pvcreate /dev/sdb1
  2. 创建包含此物理卷的 LVM 卷组 nfs

    root # vgcreate nfs /dev/sdb1
  3. 在卷组 nfs 中创建一个或多个逻辑卷。下面的示例会创建一个名为 work 的 20 GB 逻辑卷:

    root # lvcreate -n work -L 20G nfs
  4. 激活卷组:

    root # vgchange -ay nfs

成功执行上述步骤后,您的系统将会显示以下设备:/dev/VOLGROUP/LOGICAL_VOLUME。在本示例中,该设备为 /dev/nfs/work

4 创建 DRBD 设备

本章介绍如何在 LVM 上设置 DRBD 设备。使用 LVM 作为 DRBD 后端的配置具有以下优点:

  • 比在 DRBD 上使用 LVM 的配置更容易设置。

  • 当需要调整 LVM 磁盘的大小或有更多磁盘添加到卷组时,管理起来更容易。

由于 LVM 卷组名为 nfs,DRBD 资源也会使用该名称。

4.1 创建 DRBD 配置

出于一致性原因,强烈建议您遵循以下建议:

  • 为您的配置使用 /etc/drbd.d/ 目录。

  • 根据资源的用途为文件命名。

  • 将您的资源配置置于扩展名为 .res 的文件中。以下示例中使用 /etc/drbd.d/nfs.res 文件。

按如下所示继续:

过程 1︰ 创建 DRBD 配置
  1. 创建包含以下内容的 /etc/drbd.d/nfs.res 文件:

    resource nfs {
       device /dev/drbd0; 1
       disk   /dev/nfs/work; 2
       meta-disk internal; 3
    
       net {
          protocol  C; 4
          fencing resource-and-stonith;
       }
    
       handlers { 5
          fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh";
          after-resync-target "/usr/lib/drbd/crm-unfence-peer.9.sh";
          # ...
       }
    
       connection-mesh { 6
          hosts     alice bob;
       }
       on alice { 7
          address   192.168.1.1:7790;
          node-id   0;
       }
       on bob { 7
          address   192.168.1.2:7790;
          node-id   1;
       }
    }

    1

    应用程序预期要访问的 DRBD 设备。

    2

    DRBD 用于储存实际数据的较低级别块设备。这是在第 3 节 “创建 LVM 设备”中创建的 LVM 设备。

    3

    储存元数据格式的位置。使用 internal 的情况下,元数据将与用户数据一起储存在同一设备上。有关更多信息,请参见手册页。

    4

    所指定要用于此连接的协议。如果是协议 C,则会将已到达所有磁盘(本地或远程)的写入操作视为完成。

    5

    启用资源级别屏蔽。如果 DRBD 复制链路的连接中断,Pacemaker 会尝试将 DRBD 资源升级到另一个节点。在此过程中会调用脚本。有关更多信息,请参见第 21.6 节 “搭配使用资源级屏蔽与 STONITH”

    6

    定义网格的所有节点。hosts 参数包含共享相同 DRBD 设置的所有主机名。

    7

    包含每个节点的 IP 地址和唯一标识符。

  2. 打开 /etc/csync2/csync2.cfg 并检查是否存在以下两行:

    include /etc/drbd.conf;
    include /etc/drbd.d/*.res;

    如果不存在,请将这两行添加到文件中。

  3. 将文件复制到其他节点上:

    root # csync2 -xv

    有关 Csync2 的信息,请参见第 4.5 节 “将配置传输到所有节点”

4.2 激活 DRBD 设备

准备好 DRBD 配置后,请执行以下操作:

  1. 如果您在群集中使用防火墙,请在防火墙配置中打开端口 7790

  2. 如果是第一次执行此操作,请在两个节点(在本示例中为 alicebob)上执行以下命令:

    root # drbdadm create-md nfs
    root # drbdadm up nfs

    此命令会初始化元数据储存并创建 /dev/drbd0 设备。

  3. 如果所有节点上的 DRBD 设备的数据都相同,请跳过初始的重新同步过程。使用以下命令:

    root # drbdadm new-current-uuid --clear-bitmap nfs/0
  4. alice 设为主节点:

    root # drbdadm primary --force nfs
  5. 检查 DRBD 状态:

    root # drbdadm status nfs

    此命令将返回以下消息:

    nfs role:Primary
      disk:UpToDate
      alice role:Secondary
        peer-disk:UpToDate

同步完成后,您便可访问块设备 /dev/drbd0 上的 DRBD 资源。将使用此设备来创建您的文件系统。有关 DRBD 的详细信息,请参见第 21 章 “DRBD

4.3 创建文件系统

完成第 4.2 节 “激活 DRBD 设备”后,您应该能在 /dev/drbd0 上看到 DRBD 设备:

root # mkfs.ext3 /dev/drbd0

5 调整 Pacemaker 的配置

当原始节点恢复联机并位于群集中时,资源可能会故障回复到该节点。为防止资源故障回复到之前运行它的节点,或者要指定让该资源故障回复到其他节点,请更改其资源粘性值。可以在创建资源时或之后指定资源粘性。

要调整选项,请以 root 身份(或任何属于 haclient 组的非 root 用户身份)打开 crm 外壳并运行以下命令:

root # crm configure
crm(live)configure# rsc_defaults resource-stickiness="200"
crm(live)configure# commit

有关全局群集选项的详细信息,请参见第 6.2 节 “仲裁判定”

6 创建群集资源

下面几节介绍高度可用的 NFS 群集所需资源的配置。使用 crm 外壳来执行配置步骤。下面的列表列出了必要的群集资源:

群集资源概述
DRBD 原始资源和可升级克隆资源

这些资源用于复制数据。群集资源管理器认为有必要时,会将可升级克隆资源在主次角色之间切换。

NFS 内核服务器资源

使用此资源,Pacemaker 可确保 NFS 服务器守护程序始终可用。

NFS 导出

一或多个 NFS 导出,通常对应于文件系统。

示例 NFS 情形
  • 下列配置示例假设 192.168.2.1 是用于为 192.168.2.x/24 子网中的客户端传递数据的 NFS 服务器的虚拟 IP 地址。

  • 服务从 /srv/nfs/work 导出传递的数据。

  • 在此导出目录中,群集将从 DRBD 设备 /dev/drbd0 挂载 ext3 文件系统。此 DRBD 设备位于名为 nfs 的 LVM 逻辑卷上。

6.1 DRBD 原始资源和可升级克隆资源

要配置这些资源,请从 crm 外壳运行以下命令:

crm(live)# configure
crm(live)configure# primitive drbd_nfs \
  ocf:linbit:drbd \
    params drbd_resource="nfs" \
  op monitor interval="15" role="Promoted" \
  op monitor interval="30" role="Unpromoted"
crm(live)configure# clone clone-drbd_nfs drbd_nfs \
  meta promotable="true" promoted-max="1" promoted-node-max="1" clone-max="2" \
  clone-node-max="1" notify="true"
crm(live)configure# commit

此命令会创建与 DRBD 资源 nfs 对应的 Pacemaker 可提升克隆资源。Pacemaker 现在应该会在两个节点上激活您的 DRBD 资源,并在其中一个节点上将该资源提升为主要角色。

使用 crm status 命令或运行 drbdadm status 检查群集的状态。

6.2 NFS 内核服务器资源

在 crm 外壳中,NFS 服务器守护程序的资源必须配置为 systemd 资源类型的克隆

crm(live)configure# primitive nfsserver \
  systemd:nfs-server \
  op monitor interval="30s"
crm(live)configure# clone cl-nfsserver nfsserver \
   meta interleave=true
crm(live)configure# commit

提交此配置后,Pacemaker 应该就会在两个节点上启动 NFS 内核服务器进程。

6.3 文件系统资源

  1. 按如下所示配置文件系统类型资源(但先不要提交此配置):

    crm(live)configure# primitive fs_work \
      ocf:heartbeat:Filesystem \
      params device=/dev/drbd0 \
        directory=/srv/nfs/work \
        fstype=ext3 \
      op monitor interval="10s"
  2. 将这些资源合并到一个 Pacemaker 资源中:

    crm(live)configure# group g-nfs fs_work
  3. 添加以下约束,以确保该组在 DRBD 可提升克隆资源为主要角色的节点上启动:

    crm(live)configure# order o-drbd_before_nfs Mandatory: \
      clone-drbd_nfs:promote g-nfs:start
    crm(live)configure# colocation col-nfs_on_drbd inf: \
      g-nfs clone-drbd_nfs:Promoted
  4. 提交此配置:

    crm(live)configure# commit

提交这些更改后,Pacemaker 会将 DRBD 设备挂载到同一节点上的 /srv/nfs/work。请使用 mount(或查看 /proc/mounts)确认这一点。

6.4 NFS 导出资源

当您的 DRBD、LVM 和文件系统资源正常工作时,继续使用用于管理 NFS 导出的资源。要创建高度可用的 NFS 导出资源,请使用 exportfs 资源类型。

要将 /srv/nfs/work 目录导出到客户端,请使用以下原始资源:

  1. 使用以下命令创建 NFS 导出:

    crm(live)configure# primitive exportfs_work \
      ocf:heartbeat:exportfs \
        params directory="/srv/nfs/work" \
          options="rw,mountpoint" \
          clientspec="192.168.2.0/24" \
          wait_for_leasetime_on_stop=true \
          fsid=100 \
      op monitor interval="30s"
  2. 创建这些资源后,将它们追加到现有的 g-nfs 资源组:

    crm(live)configure# modgroup g-nfs add exportfs_work
  3. 提交此配置:

    crm(live)configure# commit

    Pacemaker 将导出 NFS 虚拟根文件系统及两个其他导出。

  4. 确认 NFS 导出设置正确:

    root # exportfs -v
    /srv/nfs/work   IP_ADDRESS_OF_CLIENT(OPTIONS)

6.5 NFS 导出的虚拟 IP 地址

初始安装会创建用于 Hawk2 的管理虚拟 IP 地址。虽然您也可将此 IP 地址用于 NFS 导出,但最好另外创建一个专用于 NFS 导出的 IP 地址。这样,以后便可更轻松地应用安全限制。在 crm 外壳中使用以下命令:

crm(live)configure# primitive vip_nfs IPaddr2 \
   params ip=192.168.2.1 cidr_netmask=24 \
   op monitor interval=10 timeout=20
crm(live)configure# modgroup g-nfs add vip_nfs
crm(live)configure# commit

7 使用 NFS 服务

本章概述如何从 NFS 客户端使用高度可用的 NFS 服务。

要连接到 NFS 服务,请务必使用虚拟 IP 地址来连接群集,而不要使用其中一个群集节点的网络接口上配置的物理 IP。出于兼容性原因,请使用服务器上 NFS 导出的完整路径。

最简单的形式是,使用如下所示的命令挂载 NFS 导出:

root # mount -t nfs 192.168.2.1:/srv/nfs/work /home/work

要配置特定传输协议 (proto) 和最大读取和写入请求大小(rsizewsize),请使用以下命令:

root # mount -o rsize=32768,wsize=32768 \
    192.168.2.1:/srv/nfs/work /home/work

如果您需要与 NFS 版本 3 兼容,请在 -o 选项后添加值 vers=3

要了解更多 NFS 挂载选项,请参见 nfs 手册页。

8 法律声明

版权所有 © 2006– 2023 SUSE LLC 和贡献者。保留所有权利。

根据 GNU 自由文档许可 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的权限;本版权声明和许可附带不可变部分。许可版本 1.2 的副本包含在题为GNU Free Documentation License的部分。

有关 SUSE 商标,请参见 http://www.suse.com/company/legal/。所有其他第三方商标分别为相应所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。

本指南力求涵盖所有细节,但这不能确保本指南准确无误。SUSE LLC 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。