第9章 VDPA ポートを使用するインスタンスを有効にするための VDPA コンピュートノードの設定
VIRTIO データパスアクセラレーション (VDPA) は、VIRTIO を介したワイヤースピードのデータ転送を提供します。VDPA デバイスは、SR-IOV 仮想機能 (VF) に対する VIRTIO 抽象化を提供します。これにより、インスタンスでベンダー固有のドライバーなしで VF を使用できます。
NIC を VDPA インターフェイスとして使用する場合は、VDPA インターフェイス専用にする必要があります。NIC の物理機能 (PF) を switchdev
モードで設定し、ハードウェアオフロード OVS を使用して PF を管理する必要があるため、NIC を他の接続に使用することはできません。
クラウドユーザーが VDPA ポートを使用するインスタンスを作成できるようにするには、次のタスクを完了します。
- オプション: VDPA のコンピュートノードを指定します。
- 必要な VDPA ドライバーを持つ VDPA のコンピュートノードを設定します。
- オーバークラウドをデプロイする。
VDPA ハードウェアが制限されている場合は、ホストアグリゲートを設定して VDPA コンピュートノードでのスケジューリングを最適化することもできます。VDPA コンピュートノードで VDPA を要求するインスタンスのみをスケジュールするには、VDPA ハードウェアを備えたコンピュートノードのホストアグリゲートを作成し、VDPA インスタンスのみをホストアグリゲートに配置するようにコンピュートスケジューラーを設定します。詳細は、ホストアグリゲートの分離による絞り込み および ホストアグリゲートの作成と管理 を参照してください。
前提条件
- コンピュートノードには、必要な VDPA デバイスとドライバーがあります。
- Compute ノードには Mellanox NIC があります。
- オーバークラウドは OVS ハードウェアオフロード用に設定されています。詳細は、OVS ハードウェアオフロードの設定 を参照してください。
- オーバークラウドは ML2/OVN を使用するように設定されています。
9.1. VDPA 用コンピュートノードの指定 リンクのコピーリンクがクリップボードにコピーされました!
VIRTIO データパスアクセラレーション (VDPA) インターフェイスを要求するインスタンスのコンピュートノードを指定するには、新しいロールファイルを作成して VDPA ロールを設定し、VDPA リソースクラスを使用してベアメタルノードを設定し、VDPA のコンピュートノードにタグを付けます。
以下の手順は、まだプロビジョニングされていない新しいオーバークラウドノードに適用されます。すでにプロビジョニングされている既存のオーバークラウドノードにリソースクラスを割り当てるには、オーバークラウドをスケールダウンしてノードのプロビジョニングを解除してから、オーバークラウドをスケールアップして、新しいリソースクラスの割り当てでノードを再プロビジョニングします。詳細は、オーバークラウドノードのスケーリング を参照してください。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。source ~/stackrc
[stack@director ~]$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Controller
、Compute
、およびComputeVdpa
ロールを含む、roles_data_vdpa.yaml
という名前の新しいロールデータファイルを生成します。openstack overcloud roles \ generate -o /home/stack/templates/roles_data_vdpa.yaml \ ComputeVdpa Compute Controller
(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_vdpa.yaml \ ComputeVdpa Compute Controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VDPA ロールの
roles_data_vdpa.yaml
ファイルを更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
オーバークラウド用の VDPA コンピュートノードをノード定義のテンプレート
node.json
またはnode.yaml
に追加して、そのノードを登録します。詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの オーバークラウドのノードの登録 を参照してください。 ノードのハードウェアを検査します。
openstack overcloud node introspect \ --all-manageable --provide
(undercloud)$ openstack overcloud node introspect \ --all-manageable --provide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの ベアメタルノードハードウェアのインベントリーの作成 を参照してください。
カスタム VDPA リソースクラスを使用して、VDPA 用に指定する各ベアメタルノードにタグを付けます。
openstack baremetal node set \ --resource-class baremetal.VDPA <node>
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.VDPA <node>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <node>
は、ベアメタルノードの名前または UUID に置き換えます。ノード定義ファイル
overcloud-baremetal-deploy.yaml
にComputeVdpa
ロールを追加し、予測ノード配置、リソースクラス、ネットワークトポロジー、またはノードに割り当てるその他の属性を定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<role_topology_file>
を、ComputeVdpa
ロールに使用するトポロジーファイルの名前 (vdpa_net_top.j2
など) に置き換えます。既存のネットワークトポロジーを再利用するか、ロール用の新しいカスタムネットワークインターフェイステンプレートを作成できます。詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの カスタムネットワークインターフェイステンプレート を参照してください。デフォルトのネットワーク定義設定を使用するには、ロール定義にnetwork_config
を含めないでください。
ノード定義ファイルでノード属性を設定するために使用できるプロパティーの詳細は、ベアメタルノードのプロビジョニング属性 を参照してください。ノード定義ファイルの例は、ノード定義ファイルの例 を参照してください。
-
ネットワークインターフェイステンプレート
vdpa_net_top.j2
を開き、次の設定を追加して、VDPA 対応のネットワークインターフェイスを OVS ブリッジのメンバーとして指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロールの新しいノードをプロビジョニングします。
openstack overcloud node provision \ [--stack <stack>] \ [--network-config \]
(undercloud)$ openstack overcloud node provision \ [--stack <stack>] \ [--network-config \] --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
オプション:
<stack>
をベアメタルノードがプロビジョニングされるスタックの名前に置き換えます。デフォルトはovercloud
です。 -
オプション:
--network-config
オプションの引数を含めて、Ansible Playbookcli-overcloud-node-network-config.yaml
にネットワーク定義を提供します。network_config
プロパティーを使用してノード定義ファイルにネットワーク定義を定義していない場合は、デフォルトのネットワーク定義が使用されます。 -
<deployment_file>
は、デプロイメントコマンドに含めるために生成する heat 環境ファイルの名前に置き換えます (例:/home/stack/templates/overcloud-baremetal-deployed.yaml)
。
-
オプション:
別のターミナルでプロビジョニングの進捗をモニタリングします。プロビジョニングが成功すると、ノードの状態が
available
からactive
に変わります。watch openstack baremetal node list
(undercloud)$ watch openstack baremetal node list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --network-config
オプションを指定せずにプロビジョニングコマンドを実行した場合は、network-environment.yaml
ファイルで<Role>NetworkConfigTemplate
パラメーターを設定して、NIC テンプレートファイルを指すようにします。parameter_defaults: ComputeNetworkConfigTemplate: /home/stack/templates/nic-configs/compute.j2 ComputeVdpaNetworkConfigTemplate: /home/stack/templates/nic-configs/<role_topology_file> ControllerNetworkConfigTemplate: /home/stack/templates/nic-configs/controller.j2
parameter_defaults: ComputeNetworkConfigTemplate: /home/stack/templates/nic-configs/compute.j2 ComputeVdpaNetworkConfigTemplate: /home/stack/templates/nic-configs/<role_topology_file> ControllerNetworkConfigTemplate: /home/stack/templates/nic-configs/controller.j2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <role_topology_file>
を、ComputeVdpa
ロールのネットワークトポロジーを含むファイルの名前 (vdpa_net_top.j2
など) に置き換えます。デフォルトのネットワークトポロジーを使用するには、compute.j2
に設定します。