3.4. SR-IOV 対応の OpenDaylight のインストール


OpenDaylight は、Single Root Input/Output Virtualization (SR-IOV) 対応のコンピュートノードと共にデプロイすることができます。このデプロイメントでは、コンピュートノードは、SR-IOV の専用ノードで稼働する必要があり、OVS をベースとする nova インスタンスを混在させてはなりません。単一の OpenDaylight デプロイメント内で OVS と SR-IOV のコンピュートノードの両方をデプロイすることは可能です。

このシナリオでは、カスタムの SR-IOV コンピュートロールを使用してこの種のデプロイメントを行います。

SR-IOV のデプロイメントでは、neutron SR-IOV エージェントを使用して、Virtual Function (VF) を設定する必要があります。これらの機能は、デプロイ時にコンピュートインスタンスに直接渡されて、そこでネットワークポートとして機能します。VF はコンピュートノード上のホスト NIC から派生するので、デプロイメントを開始する前に、ホストのインターフェイスに関する情報が必要となります。

3.4.1. SR-IOV コンピュートロールの準備

カスタムロールでの OpenDaylight のインストール と同じ方法に従って、SR-IOV コンピュートノード用のカスタムロールを作成し、デフォルトのコンピュートロールが OVS ベースの nova インスタンスに対応する一方で、SR-IOV ベースのインスタンスを作成できるようにする必要があります。

作業を開始する前に

手順

  1. デフォルトのロールファイルを新規ディレクトリーにコピーします。元のファイルは、バックアップとして保管してください。

    $ mkdir ~/roles
    $ cp /usr/share/openstack-tripleo-heat-templates/roles/* ~/roles
    Copy to Clipboard Toggle word wrap
  2. ~/roles ディレクトリーに新しい ComputeSriov.yaml ファイルを作成して、以下のロールの説明を追加します。

     - name: ComputeSRIOV
       CountDefault: 1
       ServicesDefault:
         - OS::TripleO::Services::Kernel
         - OS::TripleO::Services::Ntp
         - OS::TripleO::Services::NeutronSriovHostConfig
         - OS::TripleO::Services::NeutronSriovAgent
         - OS::TripleO::Services::TripleoPackages
         - OS::TripleO::Services::TripleoFirewall
         - OS::TripleO::Services::Sshd
         - OS::TripleO::Services::NovaCompute
         - OS::TripleO::Services::NovaLibvirt
         - OS::TripleO::Services::NovaMigrationTarget
         - OS::TripleO::Services::Timezone
         - OS::TripleO::Services::ComputeNeutronCorePlugin
         - OS::TripleO::Services::Securetty
    Copy to Clipboard Toggle word wrap
  3. ファイルを保存します。
  4. NeutronSriovAgent および NeutronSriovHostConfig のサービスをデフォルトのコンピュートロールから削除して、情報を roles_data.yaml に保存します。

         - OS::TripleO::Services::NeutronSriovHostConfig
         - OS::TripleO::Services::NeutronSriovAgent
    Copy to Clipboard Toggle word wrap
  5. SR-IOV 対応の OpenDaylight のコンピュートで OpenStack オーバークラウドのデプロイに使用する新規ロールファイルを生成します。

    $ openstack overcloud roles generate --roles-path ~/roles -o ~/roles_data.yaml Controller Compute ComputeSriov
    Copy to Clipboard Toggle word wrap
  6. ローカルレジストリーを作成します。

    openstack overcloud container image prepare   --namespace=192.168.24.1:8787/rhosp13   --prefix=openstack-   --tag=2018-05-07.2
    -e /home/stack/templates/environments/services-docker/neutron-opendaylight.yaml -e /home/stack/templates/environments/services-docker/neutron-opendaylight-sriov.yaml --output-env-file=/home/stack/templates/overcloud_images.yaml --roles-file /home/stack/templates/roles_data.yaml
    Copy to Clipboard Toggle word wrap

3.4.2. SR-IOV エージェントサービスの設定

SR-IOV 対応の OpenDaylight をデプロイするには、neutron-opendaylight.yaml ファイルのデフォルトのパラメーターを上書きする必要があります。/usr/share/openstack-tripleo-heat-templates にある標準の SR-IOV 環境ファイルと、neutron-opendaylight.yaml 環境ファイルを使用することができます。ただし、元のファイルは編集しないのが適切なプラクティスです。代わりに、元の環境ファイルを複製して、その複製したファイル内でパラメーターを変更してください。

または、変更するパラメーターのみを指定する新規環境ファイルを作成して、両方のファイルをデプロイメントに使用することができます。カスタマイズされた OpenDaylight をデプロイするには、デプロイメントコマンドに両方のファイルを渡します。後で指定する環境ファイルが前の設定を上書きするので、これらは正しい順序でデプロイメントコマンドに含める必要があります。正しい順序は、neutron-opendaylight.yaml が最初で、neutron-opendaylight-sriov.yaml が後になります。

OpenDaylight と SR-IOV をデフォルト設定でデプロイする場合には、Red Hat で提供している neutron-opendaylight-sriov.yaml を使用することができます。パラメーターを変更または追加する必要がある場合には、デフォルトの SR-IOV 環境ファイルのコピーを作成して、その新規作成されたファイルを編集してください。

カスタマイズされた neutron-opendaylight-sriov.yaml ファイルの例を以下に示します。

# A Heat environment that can be used to deploy OpenDaylight with SRIOV
resource_registry:
  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
  OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
  OS::TripleO::Services::ComputeNeutronCorePlugin: ../puppet/services/neutron-plugin-ml2.yaml
  OS::TripleO::Services::NeutronCorePlugin: ../puppet/services/neutron-plugin-ml2-odl.yaml
  OS::TripleO::Services::OpenDaylightApi: ../docker/services/opendaylight-api.yaml
  OS::TripleO::Services::OpenDaylightOvs: ../puppet/services/opendaylight-ovs.yaml
  OS::TripleO::Services::NeutronSriovAgent: ../puppet/services/neutron-sriov-agent.yaml
  OS::TripleO::Services::NeutronL3Agent: OS::Heat::None

parameter_defaults:
  NeutronEnableForceMetadata: true
  NeutronPluginExtensions: 'port_security'
  NeutronMechanismDrivers: ['sriovnicswitch','opendaylight_v2']
  NeutronServicePlugins: 'odl-router_v2,trunk'

  # Add PciPassthroughFilter to the scheduler default filters
  #NovaSchedulerDefaultFilters: ['RetryFilter','AvailabilityZoneFilter','RamFilter','ComputeFilter','ComputeCapabilitiesFilter',         'ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter']
  #NovaSchedulerAvailableFilters: ["nova.scheduler.filters.all_filters","nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter"]

  #NeutronPhysicalDevMappings: "datacentre:ens20f2"

  # Number of VFs that needs to be configured for a physical interface
  #NeutronSriovNumVFs: "ens20f2:5"

  #NovaPCIPassthrough:
  #  - devname: "ens20f2"
  #    physical_network: "datacentre"
Copy to Clipboard Toggle word wrap

補足情報

neutron-opendaylight-sriov.yaml ファイルでは、以下のオプションを設定することができます。以下の表には、各オプションについての説明と、SR-IOV 機能を有効化するために必要な設定を記載します。

Expand

NovaSchedulerDefaultFilters

SR-IOV 用の PCI パススルーを使用できるようにします。このパラメーターは、環境ファイル内でコメント解除して、PciPassthroughFilter を追加する必要があります。

NovaSchedulerAvailableFilters

Nova のデフォルトフィルターに PCI パススルーフィルターを指定できるようにします。このパラメーターは必須で、nova.scheduler.filters.all_filters を追加する必要があります。

NeutronPhysicalDevMappings

neutron の論理ネットワークをホストのネットワークインターフェイスにマッピングします。neutron が仮想ネットワークを物理ポートにバインドできるようにするには、このパラメーターを指定する必要があります。

NeutronSriovNumVFs

1 つのホストのネットワークインターフェイス用に作成する VF の数。構文: <Interface name>:<number of VFs>

NovaPCIPassthrough

PCI パススルーでの使用を許可する nova の PCI デバイスのホワイトリストを一覧形式で設定します。以下に例を示します。

NovaPCIPassthrough:
    - vendor_id: "8086"
      product_id: "154c"
      address: "0000:05:00.0"
      physical_network: "datacentre"
Copy to Clipboard Toggle word wrap

特定のハードウェア属性の代わりに単に論理デバイス名を使用することもできます。

NovaPCIPassthrough:
  - devname: "ens20f2"
    physical_network: "datacentre"
Copy to Clipboard Toggle word wrap

3.4.3. SR-IOV 対応の OpenDaylight のインストール

作業を開始する前に

手順

  1. -r の引数を使用してデプロイメントコマンドを実行し、カスタムロールファイルと OpenDaylight で SR-IOV 機能を有効化するのに必要な環境ファイルを指定します。

    $ openstack overcloud deploy --templates /usr/share/openstack-tripleo-heat-templates
    -e <other environment files>
    -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight.yaml
    -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-opendaylight-sriov.yaml
    -e network-environment.yaml --compute-scale 1 --ntp-server 0.se.pool.ntp.org --control-flavor control --compute-flavor compute -r my_roles_data.yaml
    -e /home/stack/templates/docker-images.yaml
    -e /home/stack/templates/odl-images.yaml
    Copy to Clipboard Toggle word wrap
注記

デプロイのコマンドで先に指定する環境ファイルは、そのコマンドで後に指定する環境ファイルによって上書きされます。指定する環境ファイルの順序に注意を払って、パラメーターが誤って上書きされないようにする必要があります。

ヒント

変更するパラメーターのみの設定する最小限の環境ファイルを作成して、デフォルトの環境ファイルと組み合わせることにより、一部のパラメーターを上書きすることができます。

補足情報

  • -r オプションは、インストール時にロールの定義を上書きします。

    -r <roles_data>.yaml
    Copy to Clipboard Toggle word wrap
  • カスタムロールには、インストール時に追加の ironic ノードが必要です。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat