Skip to main content
NetApp artificial intelligence solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

部署 Lustre 高可用度叢集和用戶端

貢獻者 netapp-jsnyder

準備伺服器作業系統,安裝 NVIDIA DOCA-OFED,部署 Lustre HA 叢集,並使用 NetApp Ansible playbooks 設定 Lustre 用戶端。

在開始之前,請完成並確保"自訂 Lustre Ansible 庫存"中所述的物品清單。

部署 Lustre HA 叢集

步驟
  1. 從工作複本的 `building_blocks/playbooks`目錄中,準備 Lustre 伺服器上的作業系統。將 `<inventory_path>`替換為您自訂的庫存目錄路徑:

    ansible-playbook -i <inventory_path>/lustre_inventory.yml deploy_lustre_os/deploy_lustre_os_playbook.yml
  2. 在每台 Lustre 伺服器上安裝 NVIDIA DOCA-OFED。針對上一步安裝的核心建置核心模組。請按照適用於您核心的步驟進行操作"NVIDIA DOCA-Host 安裝與升級"。以下範例展示了在 RHEL 或 Rocky Linux 上安裝 DOCA-OFED 的過程。

    1. 安裝 DOCA 主機儲存庫套件並重新整理套件快取。請將 `<doca_host_package>`替換為您的作業系統和架構對應的 DOCA 主機套件:

      dnf install -y wget tar
      wget https://www.mellanox.com/downloads/DOCA/<doca_host_package>.rpm
      rpm -i <doca_host_package>.rpm
      dnf clean all
      dnf makecache
    2. 為正在執行的核心建立 DOCA 核心模組。該指令碼會列印其所建立的套件路徑:

      dnf install -y doca-extra
      /opt/mellanox/doca/tools/doca-kernel-support
    3. 安裝指令碼建立的核心模組儲存庫套件,然後重新整理套件快取。將 `<doca_kernel_repo>`替換為上一步中的路徑:

      rpm -Uvh <doca_kernel_repo>.rpm
      dnf makecache
    4. 安裝 DOCA-OFED 使用者空間、核心和 NVMe 套件。將 `<kernel_version>`替換為目前執行中的核心版本:

      dnf install -y doca-ofed-userspace
      dnf install -y --disablerepo=doca doca-kernel-<kernel_version>
      dnf install -y kmod-mlnx-nvme
  3. 執行主要部署 playbook:

    ansible-playbook -i <inventory_path>/lustre_inventory.yml lustre_playbook.yml
    註 調整 --forks`以依部署規模控制 Ansible 並行設定的主機數量。例如,對於較大的叢集,請新增 `--forks 20

此腳本配置 E 系列 Volume 群組或動態磁碟資源池,以及 Volume,設定 NVMe-oF 主機連線功能,格式化並裝載 Lustre 目標,設定 LNet,套用效能調校,以及設定 Pacemaker HA 資源。

註 包含一個建置區塊的部署將形成一個雙節點 Pacemaker 叢集。在容錯移轉時,節點 A 將獲得額外的投票權。若要在雙節點叢集中實現仲裁,請考慮設定 qdevice。當部署包含多個建置區塊時,每個建置區塊都會向更大的 Pacemaker 叢集貢獻一對雙節點伺服器,直到達到已記錄的叢集限制。請檢閱"HA 管理使用者指南"中的隔離和仲裁組態,以便叢集能夠在節點故障期間安全地恢復目標。

部署 Lustre 用戶端

透過自訂用戶端部署範本並執行用戶端 playbook,可在任何需要檔案系統存取的系統上部署 Lustre 用戶端。

步驟
  1. "Lustre 支援對照表" 中選擇相容的用戶端作業系統和核心。如果尚未安裝,請從 "netapp-lustre" 建置並安裝適用於該核心的 Lustre 用戶端軟體套件。

  2. 建立範本目錄的工作複本 clients(包括其共享的 `passwords.yml`檔案),並選擇與您的架構相符的範本:

  3. 自訂 lustre_client_inventory.ymlhost_vars`和 `group_vars`以供您的用戶端使用。表格中的行引用指向 `ansible-lustre `release/1.0.0`標籤中的 RoCE 用戶端範本檔案;InfiniBand 用戶端範本使用相同的變數,除非另有說明。

    欄位 Ansible 變數 模板檔案 (release/1.0.0 範圍 附註

    用戶端主機

    lustre_clients

    "lustre_client_inventory.yml#L4"

    每個用戶端

    列出每個用戶端主機名稱。

    用戶端 SSH 使用者名稱和密碼

    ssh_client_user / ssh_client_become_pass

    "passwords.yml#L2"

    全集群範圍

    僅當 SSH 使用者不是 `root`時,才設定 become 密碼。

    LNet 介面

    eseries_lustre_lnet

    "group_vars/all.yml#L7"

    全集群範圍

    用戶端 LNet 介面名稱(L13 的值)。

    裝載 MGS NID

    lustre_client_mounts.mgsnode

    "group_vars/all.yml#L17"

    全集群範圍

    用於裝載檔案系統的 MGS NID (L20 中的值)。

    檔案系統名稱

    lustre_client_mounts.fsname

    "group_vars/all.yml#L21"

    全集群範圍

    必須與叢集 `fsname`相符。

    裝載點

    lustre_client_mounts.mount_point

    "group_vars/all.yml#L22"

    全集群範圍

    用戶端裝載目錄。

    用戶端管理 IP

    ansible_host

    "host_vars/client_01.yml#L4"

    每個用戶端重複

    每個用戶端一個 `host_vars/client_NN.yml`檔案。

    儲存架構介面

    eseries_roce_interfaces

    "host_vars/client_01.yml#L10"

    每個用戶端重複

    前端介面位址(第 15 行的值)。InfiniBand 模板在此處使用 eseries_ipoib_interfaces

    對每個用戶端重複上述設定。為每個用戶端建立一個 host_vars/client_NN.yml`檔案,並將相應的主機新增至 `lustre_client_inventory.yml。填入共享的 `clients/passwords.yml`檔案,並在執行用戶端 playbook 之前使用 Ansible Vault 對其加密。

  4. 從用戶端模板目錄執行用戶端 playbook:

    ansible-playbook -i lustre_client_inventory.yml lustre_client_playbook.yml

用戶端 playbook 設定用戶端網路介面和 LNet,並可為 Lustre 檔案系統建立持久的 systemd 裝載單元。

完成後