7.8. SR-IOV オーバークラウドのデプロイ
SR-IOV 環境で Red Hat OpenStack Platform (RHOSP) オーバークラウドを設定する最後の手順は、openstack overcloud deploy
コマンドを実行することです。このコマンドに、作成したさまざまなオーバークラウドテンプレートと環境ファイルをすべて入力します。
前提条件
-
アンダークラウドホストへのアクセスと
stack
ユーザーの認証情報。 -
このセクションの前の手順にリストされているすべてのステップを実行し、
overcloud deploy
コマンドの入力として使用するさまざまな heat テンプレートおよび環境ファイルをすべてアセンブルしました。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
openstack overcloud deploy
コマンドを実行します。openstack overcloud deploy
コマンドへの入力を特定の順序でリストすることが重要です。一般的なルールは、デフォルトの heat テンプレートファイルを最初に指定し、次にカスタム環境ファイルと、デフォルトプロパティーのオーバーライドなどのカスタム設定を含むカスタムテンプレートを指定することです。次の順序で、
openstack overcloud deploy
コマンドに入力を追加します。オーバークラウド上の SR-IOV ネットワークの仕様が含まれるカスタムネットワーク定義ファイル (例:
network-data.yaml
)。詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの ネットワーク定義ファイル設定のオプション を参照してください。
RHOSP director が OVS ハードウェアオフロード環境をデプロイするために使用する
Controller
およびComputeOvsHwOffload
ロールを含むロールファイル。例:
roles_data_compute_sriov.yaml
詳細は、「SR-IOV のロールとイメージファイルの生成」 を参照してください。
オーバークラウドネットワークのプロビジョニングからの出力ファイル。
例:
overcloud-networks-deployed.yaml
詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの オーバークラウドのネットワーク定義の設定とプロビジョニング を参照してください。
オーバークラウド仮想 IP のプロビジョニングからの出力ファイル。
例:
overcloud-vip-deployed.yaml
詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの オーバークラウドのネットワーク仮想 IP の設定とプロビジョニング を参照してください。
ベアメタルノードのプロビジョニングからの出力ファイル。
たとえば、
overcloud-baremetal-deployed.yaml
です。詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの オーバークラウドのベアメタルノードのプロビジョニング を参照してください。
コンテナーイメージを取得する場所と保存方法を決定するためにディレクターが使用するイメージファイル。
例:
overcloud_images.yaml
詳細は、「SR-IOV のロールとイメージファイルの生成」 を参照してください。
環境が使用する Networking サービス (neutron) メカニズムドライバーとルータースキームの環境ファイル:
ML2/OVN
-
分散仮想ルーティング (DVR):
neutron-ovn-dvr-ha.yaml
-
集中型仮想ルーティング:
neutron-ovn-ha.yaml
-
分散仮想ルーティング (DVR):
ML2/OVS
-
分散仮想ルーティング (DVR):
neutron-ovs-dvr.yaml
-
集中型仮想ルーティング:
neutron-ovs.yaml
-
分散仮想ルーティング (DVR):
メカニズムドライバーに応じた SR-IOV の環境ファイル:
ML2/OVN
-
neutron-ovn-sriov.yaml
-
ML2/OVS
neutron-sriov.yaml
注記OVS-DPDK 環境もあり、OVS-DPDK インスタンスと SR-IOV インスタンスを同じノードに配置する場合は、デプロイメントスクリプトに次の環境ファイルを含めます。
ML2/OVN
neutron-ovn-dpdk.yaml
ML2/OVS
neutron-ovs-dpdk.yaml
以下の設定を含む 1 つ以上のカスタム環境ファイル:
- SR-IOV ノード用の PCI パススルーデバイス。
- SR-IOV ノードのロール固有のパラメーター。
SR-IOV 環境のデフォルト設定値をオーバーライドします。
例:
sriov-overrides.yaml
詳細は以下を参照してください。
- 「SR-IOV 用の PCI パススルーデバイスの設定」。
例
サンプルの
openstack overcloud deploy
コマンドからのこの抜粋は、DVR を使用する SR-IOV、ML2/OVN 環境のコマンド入力の適切な順序を示しています。$ openstack overcloud deploy \ --log-file overcloud_deployment.log \ --templates /usr/share/openstack-tripleo-heat-templates/ \ --stack overcloud \ -n /home/stack/templates/network_data.yaml \ -r /home/stack/templates/roles_data_compute_sriov.yaml \ -e /home/stack/templates/overcloud-networks-deployed.yaml \ -e /home/stack/templates/overcloud-vip-deployed.yaml \ -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ -e /home/stack/templates/overcloud-images.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ neutron-ovn-dvr-ha.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/services/\ neutron-ovn-sriov.yaml \ -e /home/stack/templates/sriov-overrides.yaml
openstack overcloud deploy
コマンドを実行します。オーバークラウドの作成が完了すると、RHOSP director は、オーバークラウドへのアクセスに役立つ詳細を提供します。
検証
- director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの オーバークラウドのデプロイメントの検証 のステップを実行します。
NIC が適切にパーティション分割されていることを確認するには、次の手順を実行します。
tripleo-admin
としてオーバークラウドの Compute ノードにログインし、VF の数を確認します。例
この例では、
p4p1
とp4p2
の両方の VF の数は10
です。$ sudo cat /sys/class/net/p4p1/device/sriov_numvfs 10 $ sudo cat /sys/class/net/p4p2/device/sriov_numvfs 10
OVS 接続を表示します。
$ sudo ovs-vsctl show
出力例
以下のような出力が表示されるはずです。
b6567fa8-c9ec-4247-9a08-cbf34f04c85f Manager "ptcp:6640:127.0.0.1" is_connected: true Bridge br-sriov2 Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port phy-br-sriov2 Interface phy-br-sriov2 type: patch options: {peer=int-br-sriov2} Port br-sriov2 Interface br-sriov2 type: internal Bridge br-sriov1 Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port phy-br-sriov1 Interface phy-br-sriov1 type: patch options: {peer=int-br-sriov1} Port br-sriov1 Interface br-sriov1 type: internal Bridge br-ex Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port br-ex Interface br-ex type: internal Port phy-br-ex Interface phy-br-ex type: patch options: {peer=int-br-ex} Bridge br-tenant Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port br-tenant tag: 305 Interface br-tenant type: internal Port phy-br-tenant Interface phy-br-tenant type: patch options: {peer=int-br-tenant} Port dpdkbond0 Interface dpdk0 type: dpdk options: {dpdk-devargs="0000:18:0e.0"} Interface dpdk1 type: dpdk options: {dpdk-devargs="0000:18:0a.0"} Bridge br-tun Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port vxlan-98140025 Interface vxlan-98140025 type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.37"} Port br-tun Interface br-tun type: internal Port patch-int Interface patch-int type: patch options: {peer=patch-tun} Port vxlan-98140015 Interface vxlan-98140015 type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.21"} Port vxlan-9814009f Interface vxlan-9814009f type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.159"} Port vxlan-981400cc Interface vxlan-981400cc type: vxlan options: {df_default="true", egress_pkt_mark="0", in_key=flow, local_ip="152.20.0.229", out_key=flow, remote_ip="152.20.0.204"} Bridge br-int Controller "tcp:127.0.0.1:6633" is_connected: true fail_mode: secure datapath_type: netdev Port int-br-tenant Interface int-br-tenant type: patch options: {peer=phy-br-tenant} Port int-br-ex Interface int-br-ex type: patch options: {peer=phy-br-ex} Port int-br-sriov1 Interface int-br-sriov1 type: patch options: {peer=phy-br-sriov1} Port patch-tun Interface patch-tun type: patch options: {peer=patch-int} Port br-int Interface br-int type: internal Port int-br-sriov2 Interface int-br-sriov2 type: patch options: {peer=phy-br-sriov2} Port vhu4142a221-93 tag: 1 Interface vhu4142a221-93 type: dpdkvhostuserclient options: {vhost-server-path="/var/lib/vhost_sockets/vhu4142a221-93"} ovs_version: "2.13.2"
SR-IOV コンピュートノードに
tripleo-admin
としてログインし、Linux ボンドを確認します。$ cat /proc/net/bonding/<bond_name>
出力例
以下のような出力が表示されるはずです。
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eno3v1 MII Status: up MII Polling Interval (ms): 0 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 Slave Interface: eno3v1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 4e:77:94:bd:38:d2 Slave queue ID: 0 Slave Interface: eno4v1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 4a:74:52:a7:aa:7c Slave queue ID: 0
OVS ボンドをリストします。
$ sudo ovs-appctl bond/show
出力例
以下のような出力が表示されるはずです。
---- dpdkbond0 ---- bond_mode: balance-slb bond may use recirculation: no, Recirc-ID : -1 bond-hash-basis: 0 updelay: 0 ms downdelay: 0 ms next rebalance: 9491 ms lacp_status: off lacp_fallback_ab: false active slave mac: ce:ee:c7:58:8e:b2(dpdk1) slave dpdk0: enabled may_enable: true slave dpdk1: enabled active slave may_enable: true
-
NovaPCIPassthrough
を使用して VF をインスタンスに渡した場合は、SR-IOV インスタンスをデプロイしてテストを行います。
関連情報
- director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの オーバークラウドの作成
- コマンドラインインターフェイスリファレンス の overcloud deploy
- 「SR-IOV または OVS TC-flower ハードウェアオフロード環境でのインスタンスの作成」