Deploy the Lustre HA Cluster and Clients
Prepare the server operating system, install NVIDIA DOCA-OFED, deploy the Lustre HA cluster, and configure Lustre clients by using NetApp Ansible playbooks.
Before you begin, complete and secure the inventory described in Customize the Lustre Ansible inventory.
Deploy the Lustre HA cluster
-
From the
building_blocks/playbooksdirectory in your working copy, prepare the operating system on the Lustre servers. Replace<inventory_path>with the path to your customized inventory directory:ansible-playbook -i <inventory_path>/lustre_inventory.yml deploy_lustre_os/deploy_lustre_os_playbook.yml -
Install NVIDIA DOCA-OFED on each Lustre server. Build the kernel modules against the kernel that the previous step installed. Follow the procedure for your kernel in NVIDIA DOCA-Host installation and upgrade. The following example shows a DOCA-OFED installation on RHEL or Rocky Linux.
-
Install the DOCA host repository package and refresh the package cache. Replace
<doca_host_package>with the DOCA host package for your operating system and architecture: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 -
Build the DOCA kernel modules for the running kernel. The script prints the path of the package it creates:
dnf install -y doca-extra /opt/mellanox/doca/tools/doca-kernel-support -
Install the kernel module repository package that the script created, then refresh the package cache. Replace
<doca_kernel_repo>with the path from the previous step:rpm -Uvh <doca_kernel_repo>.rpm dnf makecache -
Install the DOCA-OFED user space, kernel, and NVMe packages. Replace
<kernel_version>with the running kernel version:dnf install -y doca-ofed-userspace dnf install -y --disablerepo=doca doca-kernel-<kernel_version> dnf install -y kmod-mlnx-nvme
-
-
Run the main deployment playbook:
ansible-playbook -i <inventory_path>/lustre_inventory.yml lustre_playbook.ymlAdjust --forksfor the size of the deployment to control how many hosts Ansible configures in parallel. For example, add--forks 20for a larger cluster.
The playbook provisions E-Series volume groups or DDP pools and volumes, configures NVMe-oF host connectivity, formats and mounts the Lustre targets, configures LNet, applies performance tuning, and configures the Pacemaker HA resources.
|
|
A deployment with one building block forms a two-node Pacemaker cluster. Node A is given an extra vote in the case of failover. To achieve quorum in a two-node cluster, consider configuring a qdevice. When a deployment contains multiple building blocks, each building block contributes a two-node server pair to the larger Pacemaker cluster, up to the documented cluster limit. Review the fencing and quorum configuration in the HA administration user guide so the cluster can safely recover targets during a node failure. |
Deploy Lustre clients
Deploy Lustre clients on any system that requires file system access by customizing the client deployment template and running the client playbook.
-
Select a compatible client operating system and kernel from the Lustre Support Matrix. Build and install the Lustre client packages for that kernel from netapp-lustre if they are not already installed.
-
Create a working copy of the
clientstemplate directory, including its sharedpasswords.ymlfile, and select the template that matches your fabric:-
InfiniBand: IB_lustre_cluster_clients
-
-
Customize
lustre_client_inventory.yml,host_vars, andgroup_varsfor your clients. Line references in the table point to the RoCE client template files in theansible-lustrerelease/1.0.0tag; the InfiniBand client template uses the same variables except where noted.Field Ansible variable Template file ( release/1.0.0)Scope Notes Client hosts
lustre_clientsPer client
List each client host name.
Client SSH user and become password
ssh_client_user/ssh_client_become_passCluster-wide
Set the become password only if the SSH user is not
root.LNet interfaces
eseries_lustre_lnetCluster-wide
Client-side LNet interface names (values at L13).
Mount MGS NIDs
lustre_client_mounts.mgsnodeCluster-wide
MGS NIDs used to mount the file system (values at L20).
File system name
lustre_client_mounts.fsnameCluster-wide
Must match the cluster
fsname.Mount point
lustre_client_mounts.mount_pointCluster-wide
Client mount directory.
Client management IP
ansible_hostRepeat per client
One
host_vars/client_NN.ymlfile per client.Storage fabric interfaces
eseries_roce_interfacesRepeat per client
Frontend interface addresses (values at L15). The InfiniBand template uses
eseries_ipoib_interfaceshere.Repeat the settings for each client. Create one
host_vars/client_NN.ymlfile for each client and add the corresponding host tolustre_client_inventory.yml. Populate the sharedclients/passwords.ymlfile and encrypt it with Ansible Vault before running the client playbook. -
Run the client playbook from the client template directory:
ansible-playbook -i lustre_client_inventory.yml lustre_client_playbook.yml
The client playbook configures the client network interfaces and LNet, and can create a persistent systemd mount unit for the Lustre file system.