Lustre HAクラスタとクライアントをデプロイする
サーバーオペレーティングシステムを準備し、NVIDIA DOCA-OFEDをインストールし、Lustre HAクラスタをデプロイし、NetApp Ansibleプレイブックを使用してLustreクライアントを設定します。
始める前に、"Lustre Ansibleインベントリをカスタマイズする"に記載されているインベントリを完成させて保管してください。
Lustre HA クラスターをデプロイする
-
作業コピーの `building_blocks/playbooks`ディレクトリから、Lustreサーバー上のオペレーティングシステムを準備します。 `<inventory_path>`をカスタマイズしたインベントリディレクトリへのパスに置き換えます。
ansible-playbook -i <inventory_path>/lustre_inventory.yml deploy_lustre_os/deploy_lustre_os_playbook.yml -
各 Lustre サーバーに NVIDIA DOCA-OFED をインストールします。前の手順でインストールしたカーネルに対して、カーネルモジュールをビルドします。カーネルの手順については、"NVIDIA DOCA-Hostのインストールとアップグレード" を参照してください。以下の例は、RHEL または Rocky Linux への DOCA-OFED のインストール方法を示しています。
-
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 -
実行中のカーネル向けにDOCAカーネルモジュールをビルドします。このスクリプトは、作成したパッケージのパスを出力します。
dnf install -y doca-extra /opt/mellanox/doca/tools/doca-kernel-support -
スクリプトが作成したカーネルモジュールリポジトリパッケージをインストールし、パッケージキャッシュを更新します。 `<doca_kernel_repo>`を前の手順のパスに置き換えます:
rpm -Uvh <doca_kernel_repo>.rpm dnf makecache -
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
-
-
メインのデプロイメントプレイブックを実行します。
ansible-playbook -i <inventory_path>/lustre_inventory.yml lustre_playbook.ymlデプロイメントの規模に応じてAnsibleが並行して設定するホスト数を制御するには、 `--forks`を調整します。たとえば、大規模なクラスタの場合は `--forks 20`を追加します。
プレイブックは、Eシリーズのボリュームグループまたは DDP プールとボリュームをプロビジョニングし、NVMe-oF ホスト接続を設定し、Lustre ターゲットのフォーマットとマウントを行い、LNet を設定し、パフォーマンスチューニングを適用し、Pacemaker HA リソースを設定します。
|
|
1つの構成要素からなるデプロイメントは、2ノードクラスタのPacemakerクラスタを形成します。フェイルオーバーが発生した場合、ノードAには追加の投票権が与えられます。2ノードクラスタで定足数を達成するには、qdeviceの設定を検討してください。デプロイメントに複数の構成要素が含まれる場合、各構成要素は、文書化されたクラスタの上限まで、より大きなPacemakerクラスタに2ノードのサーバーペアを提供します。フェンスとクォーラムの構成を"HA管理ユーザーガイド"で確認し、ノード障害発生時にクラスタがターゲットを安全に復旧できるようにしてください。 |
Lustreクライアントをデプロイする
ファイルシステムへのアクセスが必要なシステムであれば、クライアント展開テンプレートをカスタマイズし、クライアントプレイブックを実行することで、Lustreクライアントをあらゆるシステムに展開できます。
-
互換性のあるクライアントオペレーティングシステムとカーネルを"Lustre サポートマトリックス"から選択してください。そのカーネル用のLustreクライアントパッケージが未インストールの場合は、"netapp-lustre"からビルドしてインストールしてください。
-
`clients`テンプレートディレクトリ(共有 `passwords.yml`ファイルを含む)の作業コピーを作成し、ファブリックに合ったテンプレートを選択してください。
-
InfiniBand: "IB_lustre_cluster_clients"
-
-
クライアント用に
lustre_client_inventory.yml、host_vars、およびgroup_vars`をカスタマイズします。表中の行参照は、 `ansible-lustre`release/1.0.0`タグ内のRoCEクライアントテンプレートファイルを指します。InfiniBandクライアントテンプレートは、特に明記されていない限り、同じ変数を使用します。フィールド Ansible変数 テンプレートファイル( release/1.0.0)Scope Notes クライアントホスト
lustre_clientsクライアントごと
各クライアントのホスト名を一覧表示してください。
クライアント SSH ユーザーと become パスワード
ssh_client_user/ssh_client_become_passクラスター全体
SSH ユーザーが `root`でない場合にのみ、become パスワードを設定してください。
LNetインターフェース
eseries_lustre_lnetクラスター全体
クライアント側のLNetインターフェース名(L13の値)。
MGS NIDsをマウント
lustre_client_mounts.mgsnodeクラスター全体
ファイルシステムをマウントするために使用されるMGS NID(L20の値)。
ファイルシステム名
lustre_client_mounts.fsnameクラスター全体
クラスターと一致する必要があります
fsname。マウント ポイント
lustre_client_mounts.mount_pointクラスター全体
クライアントのマウントディレクトリ。
クライアント管理IP
ansible_hostクライアントごとに繰り返す
クライアントごとに1つ `host_vars/client_NN.yml`のファイル。
ストレージ ファブリック インターフェース
eseries_roce_interfacesクライアントごとに繰り返す
フロントエンドインターフェースのアドレス(L15の値)。InfiniBand テンプレートはここで `eseries_ipoib_interfaces`を使用します。
各クライアントの設定を繰り返してください。クライアントごとに `host_vars/client_NN.yml`ファイルを1つ作成し、対応するホストを `lustre_client_inventory.yml`に追加してください。共有 `clients/passwords.yml`ファイルに必要な情報を入力し、クライアントプレイブックを実行する前にAnsible Vaultで暗号化してください。
-
クライアントテンプレートディレクトリからクライアントプレイブックを実行します。
ansible-playbook -i lustre_client_inventory.yml lustre_client_playbook.yml
クライアントプレイブックは、クライアントのネットワークインターフェースとLNetを設定し、Lustreファイルシステム用の永続的なsystemdマウントユニットを作成できます。