第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アンダークラウド認証情報ファイルを入手します。[stack@director ~]$ source ~/stackrcController、Compute、およびComputeVdpaロールを含む、roles_data_vdpa.yamlという名前の新しいロールデータファイルを生成します。(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_vdpa.yaml \ ComputeVdpa Compute ControllerVDPA ロールの
roles_data_vdpa.yamlファイルを更新します。############################################################################### # Role: ComputeVdpa # ############################################################################### - name: ComputeVdpa description: | VDPA Compute Node role CountDefault: 1 # Create external Neutron bridge tags: - compute - external_bridge networks: InternalApi: subnet: internal_api_subnet Tenant: subnet: tenant_subnet Storage: subnet: storage_subnet HostnameFormatDefault: '%stackname%-computevdpa-%index%' deprecated_nic_config_name: compute-vdpa.yaml-
オーバークラウド用の VDPA コンピュートノードをノード定義のテンプレート
node.jsonまたはnode.yamlに追加して、そのノードを登録します。詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの オーバークラウドのノードの登録 を参照してください。 ノードのハードウェアを検査します。
(undercloud)$ openstack overcloud node introspect \ --all-manageable --provide詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの ベアメタルノードハードウェアのインベントリーの作成 を参照してください。
カスタム VDPA リソースクラスを使用して、VDPA 用に指定する各ベアメタルノードにタグを付けます。
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.VDPA <node><node>は、ベアメタルノードの名前または UUID に置き換えます。ノード定義ファイル
overcloud-baremetal-deploy.yamlにComputeVdpaロールを追加し、予測ノード配置、リソースクラス、ネットワークトポロジー、またはノードに割り当てるその他の属性を定義します。- name: Controller count: 3 - name: Compute count: 3 - name: ComputeVdpa count: 1 defaults: resource_class: baremetal.VDPA network_config: template: /home/stack/templates/nic-config/<role_topology_file>-
<role_topology_file>を、ComputeVdpaロールに使用するトポロジーファイルの名前 (vdpa_net_top.j2など) に置き換えます。既存のネットワークトポロジーを再利用するか、ロール用の新しいカスタムネットワークインターフェイステンプレートを作成できます。詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの カスタムネットワークインターフェイステンプレート を参照してください。デフォルトのネットワーク定義設定を使用するには、ロール定義にnetwork_configを含めないでください。
ノード定義ファイルでノード属性を設定するために使用できるプロパティーの詳細は、ベアメタルノードのプロビジョニング属性 を参照してください。ノード定義ファイルの例は、ノード定義ファイルの例 を参照してください。
-
ネットワークインターフェイステンプレート
vdpa_net_top.j2を開き、次の設定を追加して、VDPA 対応のネットワークインターフェイスを OVS ブリッジのメンバーとして指定します。- type: ovs_bridge name: br-tenant members: - type: sriov_pf name: enp6s0f0 numvfs: 8 use_dhcp: false vdpa: true link_mode: switchdev - type: sriov_pf name: enp6s0f1 numvfs: 8 use_dhcp: false vdpa: true link_mode: switchdevロールの新しいノードをプロビジョニングします。
(undercloud)$ openstack overcloud node provision \ [--stack <stack>] \ [--network-config \] --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml-
オプション:
<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に変わります。(undercloud)$ watch openstack baremetal node list--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<role_topology_file>を、ComputeVdpaロールのネットワークトポロジーを含むファイルの名前 (vdpa_net_top.j2など) に置き換えます。デフォルトのネットワークトポロジーを使用するには、compute.j2に設定します。