Skip to main content
BeeGFS on NetApp with E-Series Storage
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

指定通用文件节点配置

贡献者

使用组变量(group_vars)指定通用文件节点配置。

概述

应连接到所有文件节点的配置在中进行定义 group_vars/ha_cluster.yml。通常包括:

  • 有关如何连接和登录到每个文件节点的详细信息。

  • 通用网络配置。

  • 是否允许自动重新启动。

  • 应如何配置防火墙和SELinux状态。

  • 集群配置、包括警报和隔离。

  • 性能调整。

  • 常见BeeGFS服务配置。

备注 此外、还可以在各个文件节点上定义此文件中设置的选项、例如、如果使用的是混合硬件型号、或者每个节点的密码不同。单个文件节点上的配置将优先于此文件中的配置。

步骤

创建文件 group_vars/ha_cluster.yml 并按如下所示进行填充:

  1. 指示Ansible Control节点应如何向远程主机进行身份验证:

    ansible_ssh_user: root
    ansible_become_password: <PASSWORD>
    警告 尤其是在生产环境中、不要以纯文本格式存储密码。请改用Ansible Vault (请参见 "使用Ansible Vault加密内容")或 --ask-become-pass 运行攻略手册时的选项。如果 ansible_ssh_user 已为root用户、则可以选择省略 ansible_become_password
  2. 如果要在以太网或InfiniBand接口上配置静态IP (例如集群IP)、并且多个接口位于同一IP子网中(例如、ib0使用192.168.1.10/24、ib1使用192.168.1.11/24)、要使多主机支持正常工作、必须设置其他IP路由表和规则。只需按如下所示启用提供的网络接口配置挂钩:

    eseries_ip_default_hook_templates:
      - 99-multihoming.j2
  3. 部署集群时、根据存储协议的不同、可能需要重新启动节点、以便于发现远程块设备(E系列卷)或应用配置的其他方面。默认情况下、节点将在重新启动之前进行提示、但您可以通过指定以下内容来允许节点自动重新启动:

    eseries_common_allow_host_reboot: true
    1. 默认情况下、重新启动后、为确保块设备和其他服务准备就绪、Ansible将等待系统完成 default.target 将在继续部署之前访问。在某些使用NVMe/IB的情况下、此过程可能不够长、无法初始化、发现和连接到远程设备。这可能会导致自动部署过早继续并失败。为避免在使用NVMe/IB时出现这种情况、还应定义以下内容:

      eseries_common_reboot_test_command: "! systemctl status eseries_nvme_ib.service || systemctl --state=exited | grep eseries_nvme_ib.service"
  4. 要使BeeGFS和HA集群服务进行通信、需要使用多个防火墙端口。除非您要手动配置固件(不建议)、否则请指定以下内容以创建所需的防火墙区域并自动打开端口:

    beegfs_ha_firewall_configure: True
  5. 目前不支持SELinux、建议将状态设置为disabled以避免冲突(尤其是在使用RDMA时)。设置以下内容以确保SELinux已禁用:

    eseries_beegfs_ha_disable_selinux: True
    eseries_selinux_state: disabled
  6. 配置身份验证以使文件节点能够进行通信、并根据组织策略根据需要调整默认值:

    beegfs_ha_cluster_name: hacluster                  # BeeGFS HA cluster name.
    beegfs_ha_cluster_username: hacluster              # BeeGFS HA cluster username.
    beegfs_ha_cluster_password: hapassword             # BeeGFS HA cluster username's password.
    beegfs_ha_cluster_password_sha512_salt: randomSalt # BeeGFS HA cluster username's password salt.
  7. 根据"规划文件系统"指定此文件系统的BeeGFS管理IP部分:

    beegfs_ha_mgmtd_floating_ip: <IP ADDRESS>
    备注 虽然`冗余、但当您将BeeGFS文件系统扩展到单个HA集群之外时、`beegfs_ha_mgmtd_floating_ip非常重要。部署后续HA集群时无需额外的BeeGFS管理服务、并指向第一个集群提供的管理服务。
  8. 根据需要启用电子邮件警报:

    beegfs_ha_enable_alerts: True
    # E-mail recipient list for notifications when BeeGFS HA resources change or fail.
    beegfs_ha_alert_email_list: ["<EMAIL>"]
    # This dictionary is used to configure postfix service (/etc/postfix/main.cf) which is required to set email alerts.
    beegfs_ha_alert_conf_ha_group_options:
          # This parameter specifies the local internet domain name. This is optional when the cluster nodes have fully qualified hostnames (i.e. host.example.com)
          mydomain: <MY_DOMAIN>
    beegfs_ha_alert_verbosity: 3
    #  1) high-level node activity
    #  3) high-level node activity + fencing action information + resources (filter on X-monitor)
    #  5) high-level node activity + fencing action information + resources
  9. 强烈建议启用隔离、否则、在主节点发生故障时、可能会阻止服务在二级节点上启动。

    1. 通过指定以下内容全局启用隔离:

      beegfs_ha_cluster_crm_config_options:
        stonith-enabled: True
      1. 注意如果需要、也可以在此处指定任何受支持的 "集群属性" 。通常不需要调整这些值,因为BeeGFS HA角色附带了许多经过充分测试的 "默认值"

    2. 接下来、选择并配置隔离代理:

      1. 选项1:要使用APC配电单元(PDU)启用隔离、请执行以下操作:

        beegfs_ha_fencing_agents:
          fence_apc:
            - ipaddr: <PDU_IP_ADDRESS>
              login: <PDU_USERNAME>
              passwd: <PDU_PASSWORD>
              pcmk_host_map: "<HOSTNAME>:<PDU_PORT>,<PDU_PORT>;<HOSTNAME>:<PDU_PORT>,<PDU_PORT>"
      2. 选项2:要使用联想XCC (及其他BMC)提供的Redffish API启用隔离:

        redfish: &redfish
          username: <BMC_USERNAME>
          password: <BMC_PASSWORD>
          ssl_insecure: 1 # If a valid SSL certificate is not available specify “1”.
        
        beegfs_ha_fencing_agents:
          fence_redfish:
            - pcmk_host_list: <HOSTNAME>
              ip: <BMC_IP>
              <<: *redfish
            - pcmk_host_list: <HOSTNAME>
              ip: <BMC_IP>
              <<: *redfish
      3. 有关配置其他隔离代理的详细信息,请参见 "RedHat文档"

  10. BeeGFS HA角色可以应用多种不同的调整参数来帮助进一步优化性能。其中包括优化内核内存利用率和块设备I/O等参数。根据对NetApp E-Series块节点的测试、此角色会附带一组合理的 "默认值" 、但默认情况下、除非您指定以下内容、否则不会应用这些功能:

    beegfs_ha_enable_performance_tuning: True
    1. 如果需要、还可以在此处指定对默认性能调整所做的任何更改。有关更多详细信息、请参见完整 "性能调整参数" 文档。

  11. 为了确保用于BeeGFS服务的浮动IP地址(有时称为逻辑接口)可以在文件节点之间进行故障转移、所有网络接口的名称必须一致。默认情况下、网络接口名称由内核生成、即使在安装了相同PCIe插槽中的网络适配器的相同服务器型号上、也不能保证生成一致的名称。在部署设备之前创建清单并知道生成的接口名称时、这一点也很有用。以确保设备名称一致、具体取决于服务器或的方框图 lshw -class network -businfo 输出中、按如下所示指定所需的PCIe地址到逻辑接口映射:

    1. 对于InfiniBand (IPoIB)网络接口:

      eseries_ipoib_udev_rules:
        "<PCIe ADDRESS>": <NAME> # Ex: 0000:01:00.0: i1a
    2. 对于以太网网络接口:

      eseries_ip_udev_rules:
        "<PCIe ADDRESS>": <NAME> # Ex: 0000:01:00.0: e1a
      重要说明 为避免重命名接口时发生冲突(防止重命名接口)、不应使用任何可能的默认名称、例如eth0、ens9f0、ib0或ibs4f0。一种常见的命名约定是、对以太网或InfiniBand使用"e"或"i"、后跟PCIe插槽编号和一个字母以指示端口。例如、插槽3中安装的InfiniBand适配器的第二个端口为:i3b。
    备注 如果您使用的是经验证的文件节点型号、请单击 "此处" PCIe地址到逻辑端口映射示例。
  12. (可选)指定应应用于集群中所有BeeGFS服务的配置。可以找到默认配置值 "此处",并在其他位置指定每项服务配置:

    1. BeeGFS管理服务:

      beegfs_ha_beegfs_mgmtd_conf_ha_group_options:
        <OPTION>: <VALUE>
    2. BeeGFS元数据服务:

      beegfs_ha_beegfs_meta_conf_ha_group_options:
        <OPTION>: <VALUE>
    3. BeeGFS存储服务:

      beegfs_ha_beegfs_storage_conf_ha_group_options:
        <OPTION>: <VALUE>
  13. 截至BeeGFS 7.2.7和7.3.1 "连接身份验证" 必须配置或显式禁用。使用基于Ansible的部署可以通过以下几种方式进行配置:

    1. 默认情况下、部署将自动配置连接身份验证并生成 connauthfile 该文件将分发到所有文件节点、并与BeeGFS服务结合使用。此文件还将放置/维护在位于的Ansible控制节点上 <INVENTORY>/files/beegfs/<sysMgmtdHost>_connAuthFile 应(安全)维护的位置、以便在需要访问此文件系统的客户端中重复使用。

      1. 要生成新密钥、请指定 -e "beegfs_ha_conn_auth_force_new=True 运行Ansible攻略手册时。请注意、如果出现、则会忽略此问题 beegfs_ha_conn_auth_secret 已定义。

      2. 有关高级选项,请参阅附带的完整默认值列表 "BeeGFS HA角色"

    2. 可以通过在中定义以下内容来使用自定义密钥 ha_cluster.yml

      beegfs_ha_conn_auth_secret: <SECRET>
    3. 可以完全禁用连接身份验证(不建议使用):

      beegfs_ha_conn_auth_enabled: false

单击 "此处" 有关表示通用文件节点配置的完整清单文件的示例。

将HDR (200 GB) InfiniBand与NetApp EF600块节点结合使用:

要将HDR (200 GB) InfiniBand与EF600结合使用、子网管理器必须支持虚拟化。如果使用交换机连接文件和块节点、则需要在子网管理器管理器上为整个网络结构启用此功能。

如果块节点和文件节点使用InfiniBand直接连接、 `opensm`则必须在每个文件节点上为直接连接到块节点的每个接口配置一个实例。通过指定 `configure: true`时间来完成此"配置文件节点存储接口"操作。

目前、受支持的Linux分发版附带的收件箱版本 opensm 不支持虚拟化。而是需要从NVIDIA OpenFabFabric企业分发版(OFED)安装和配置版本 opensm 。尽管仍支持使用Ansible进行部署、但还需要执行一些额外步骤:

  1. 使用cURL或所需工具、将NVIDIA网站上部分中列出的OpenSM版本的软件包下载到目录中 "技术要求" <INVENTORY>/packages/ 。例如:

    curl -o packages/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm https://linux.mellanox.com/public/repo/mlnx_ofed/23.10-3.2.2.0/rhel9.3/x86_64/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm
    
    curl -o packages/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm https://linux.mellanox.com/public/repo/mlnx_ofed/23.10-3.2.2.0/rhel9.3/x86_64/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm
  2. group_vars/ha_cluster.yml 定义以下配置:

    ### OpenSM package and configuration information
    eseries_ib_opensm_allow_upgrades: true
    eseries_ib_opensm_skip_package_validation: true
    eseries_ib_opensm_rhel_packages: []
    eseries_ib_opensm_custom_packages:
      install:
        - files:
            add:
              "packages/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm": "/tmp/"
              "packages/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm": "/tmp/"
        - packages:
            add:
              - /tmp/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm
              - /tmp/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm
      uninstall:
        - packages:
            remove:
              - opensm
              - opensm-libs
          files:
            remove:
              - /tmp/opensm-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm
              - /tmp/opensm-libs-5.17.2.MLNX20240610.dc7c2998-0.1.2310322.x86_64.rpm
    
    eseries_ib_opensm_options:
      virt_enabled: "2"