2.7. Deploying a custom role with ML2/OVN

デフォルトの Red Hat OpenStack (RHOSP) デプロイメントでは、ML2/OVN コンポーザブルサービスはコントローラーノード上で実行されます。以下の例のように、サポートされているカスタムロールをオプションで使用できます。

Networker
専用のネットワーカーノードで OVN コンポーザブルサービスを実行します。
Networker と SR-IOV の組み合わせ
SR-IOV と共に専用のネットワークノードで OVN コンポーザブルサービスを実行します。
Controller と SR-IOV の組み合わせ
SR-IOV 対応のコントローラーノードで OVN コンポーザブルサービスを実行します。

独自のカスタムロールを生成することもできます。

制限

本リリースでは、ML2/OVN デプロイメントで SR-IOV とネイティブ OVN DHCP の組み合わせを使用する場合、以下の制限が適用されます。

  • すべてのポートに対して HA シャーシグループが 1 つしかないため、すべての外部ポートは単一のゲートウェイノード上でスケジュールされる。
  • 外部ポートは論理ルーターのゲートウェイポートと共存しないため、VLAN テナントネットワークでは、VF (直接) ポートでの North-South ルーティングは SR-IOV では機能しない。Bug #1875852 を参照してください。

前提条件

手順

  1. アンダークラウドホストに stack ユーザーとしてログインし、source コマンドで stackrc ファイルを読み込みます。

    $ source stackrc
  2. デプロイメントに適したカスタムロールファイルを選択します。そのままでご自分のニーズに適する場合には、直接デプロイコマンドで使用します。あるいは、他のカスタムロールファイルを組み合わせる独自のカスタムロールファイルを生成することもできます。

    デプロイメントロールロールファイル

    Networker ロール

    Networker

    Networker.yaml

    Networker ロールと SR-IOV の組み合わせ

    NetworkerSriov

    NetworkerSriov.yaml

    共存する control および networker と SR-IOV の組み合わせ

    ControllerSriov

    ControllerSriov.yaml

  3. (オプション) 前述のカスタムロールファイルの 1 つを他のカスタムロールファイルと組み合わせた、新しいカスタムロールデータファイルを生成します。

    Director のインストールと使用 ガイドの roles_data ファイルの作成 の手順に従ってください。デプロイメントに応じて、適切なソー出力ルファイルを含めます。

  4. (オプション) ロール用の特定のノードを特定するには、特定のハードウェアフレーバーを作成して特定のノードにフレーバーを割り当てることができます。次に、環境ファイルを使用してロールのフレーバーを定義し、ノード数を指定します。

    詳細については、Director のインストールと使用 ガイドの 新しいロールの作成 の例を参照してください。

  5. デプロイメントに適した環境ファイルを作成します。

    デプロイメント環境ファイルのサンプル

    Networker ロール

    neutron-ovn-dvr-ha.yaml

    Networker ロールと SR-IOV の組み合わせ

    ovn-sriov.yaml

  6. デプロイメントに適するように、以下の設定を含めます。

    デプロイメント設定

    Networker ロール

    ControllerParameters:
        OVNCMSOptions: ""
    ControllerSriovParameters:
            OVNCMSOptions: ""
    NetworkerParameters:
        OVNCMSOptions: "enable-chassis-as-gw"
    NetworkerSriovParameters:
        OVNCMSOptions: ""

    Networker ロールと SR-IOV の組み合わせ

    OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
    
    ControllerParameters:
        OVNCMSOptions: ""
    ControllerSriovParameters:
            OVNCMSOptions: ""
    NetworkerParameters:
        OVNCMSOptions: ""
    NetworkerSriYou can uovParameters:
        OVNCMSOptions: "enable-chassis-as-gw"

    共存する control および networker と SR-IOV の組み合わせ

    OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
    
    ControllerParameters:
        OVNCMSOptions: ""
    ControllerSriovParameters:
            OVNCMSOptions: "enable-chassis-as-gw"
    NetworkerParameters:
        OVNCMSOptions: ""
    NetworkerSriovParameters:
        OVNCMSOptions: ""
  7. デプロイコマンドを実行し、-r オプションを使用してデプロイコマンドにコア Heat テンプレート、その他の環境ファイル、およびカスタムロールデータファイルを含めます。

    重要

    後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。

    $ openstack overcloud deploy --templates <core_heat_templates> \
    -e <other_environment_files> \
    -e /home/stack/templates/my-neutron-environment.yaml
    -r mycustom_roles_file.yaml

検証手順

  1. tripleo-admin ユーザーとして Controller ノードまたは Networker ノードにログインします。

    ssh tripleo-admin@controller-0

  2. ovn_metadata_agent が実行されていることを確認します。

    $ sudo podman ps | grep ovn_metadata

    出力例

    a65125d9588d  undercloud-0.ctlplane.localdomain:8787/rh-osbs ...
    openstack-neutron-metadata-agent-ovn ...
    kolla_start  23 hours ago  Up 21 hours ago  ovn_metadata_agent

  3. OVN サービスが設定されたコントローラーノードまたは専用のネットワーカーノードが OVS のゲートウェイとして設定されていることを確認します。

    $ sudo ovs-vsctl get Open_Vswitch . external_ids:ovn-cms-options

    出力例

    enable-chassis-as-gw

SR-IOV デプロイメントの追加検証手順

  1. tripleo-admin ユーザーとしてコンピュートノードにログインします。

    ssh tripleo-admin@compute-0

  2. neutron_sriov_agent がコンピュートノード上で実行されていることを確認します。

    sudo podman ps | grep neutron_sriov_agent

    出力例

    f54cbbf4523a  undercloud-0.ctlplane.localdomain:8787 ...
    openstack-neutron-sriov-agent ...
    kolla_start  23 hours ago  Up 21 hours ago  neutron_sriov_agent

  3. ネットワークに接続された SR-IOV NIC が正常に検出されていることを確認します。

    $ sudo podman exec -uroot galera-bundle-podman-0 mysql nova \
    -e 'select hypervisor_hostname,pci_stats from compute_nodes;'

    出力例

    computesriov-1.localdomain	{... {"dev_type": "type-PF", "physical_network"
    : "datacentre", "trusted": "true"}, "count": 1}, ... {"dev_type": "type-VF",
    "physical_network": "datacentre", "trusted": "true", "parent_ifname":
    "enp7s0f3"}, "count": 5}, ...}
    
    computesriov-0.localdomain	{... {"dev_type": "type-PF", "physical_network":
    "datacentre", "trusted": "true"}, "count": 1}, ... {"dev_type": "type-VF",
    "physical_network": "datacentre", "trusted": "true", "parent_ifname":
    "enp7s0f3"}, "count": 5}, ...}

関連情報