9.3. NFV ワークロードに向けた RT-KVM の有効化
本項では、Red Hat OpenStack Platform 向けに Red Hat Enterprise Linux 7.5 Real Time KVM (RT-KVM) をインストールおよび設定する手順を説明します。Red Hat OpenStack Platform は Red Hat Enterprise Linux for Real-Time に加えて、追加の RT-KVM カーネルモジュールおよびコンピュートノードの自動設定をプロビジョニングする新しい Real-Time コンピュートノードロールを使用したリアルタイムの機能を提供します。
9.3.1. RT-KVM コンピュートノードのプランニング リンクのコピーリンクがクリップボードにコピーされました!
RT-KVM コンピュートノードには、Red Hat 認定済みサーバーを使用する必要があります。詳しくは、Red Hat Enterprise Linux for Real Time 7 用認定サーバー を参照してください。
RT-KVM 用の rhel-7-server-nfv-rpms リポジトリーを有効にしてシステムを最新の状態に維持する方法については、director のインストールと使用方法の アンダークラウドの登録と更新 を参照してください。
このリポジトリーにアクセスするには、別途 Red Hat OpenStack Platform for Real Time SKU のサブスクリプションが必要です。
real-time のイメージのビルド
Real-time コンピュートノード用のオーバークラウドイメージをビルドするには、以下の手順を使用します。
stack ユーザーを初期化して director のコマンドラインツールを使用するには、以下のコマンドを実行します。
source ~/stackrc
[stack@undercloud-0 ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドに libguestfs-tools パッケージをインストールして、virt-customize ツールを取得します。
sudo yum install libguestfs-tools
(undercloud) [stack@undercloud-0 ~]$ sudo yum install libguestfs-toolsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要アンダークラウドに
libguestfs-toolsパッケージをインストールする場合は、アンダークラウドのtripleo_iscsidサービスとのポートの競合を避けるためにiscsid.socketを無効にします。sudo systemctl disable --now iscsid.socket
$ sudo systemctl disable --now iscsid.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージを抽出します。
tar -xf /usr/share/rhosp-director-images/overcloud-full.tar tar -xf /usr/share/rhosp-director-images/ironic-python-agent.tar
(undercloud) [stack@undercloud-0 ~]$ tar -xf /usr/share/rhosp-director-images/overcloud-full.tar (undercloud) [stack@undercloud-0 ~]$ tar -xf /usr/share/rhosp-director-images/ironic-python-agent.tarCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトのイメージをコピーします。
cp overcloud-full.qcow2 overcloud-realtime-compute.qcow2
(undercloud) [stack@undercloud-0 ~]$ cp overcloud-full.qcow2 overcloud-realtime-compute.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージを登録して、カスタマイズに適切な Red Hat のリポジトリーを有効にします。以下の例の
[username]および[password]を有効な認証情報に置き換えてください。virt-customize -a overcloud-realtime-compute.qcow2 --run-command \ 'subscription-manager register --username=[username] --password=[password]'
virt-customize -a overcloud-realtime-compute.qcow2 --run-command \ 'subscription-manager register --username=[username] --password=[password]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記コマンドプロンプトで認証情報を使用したら、そのつど履歴ファイルから削除してください。
history -dコマンドの後に行番号を指定して、履歴内の個々の行を削除することができます。アカウントのサブスクリプションからプール ID の一覧を検索し、適切なプール ID をイメージにアタッチします。
sudo subscription-manager list --all --available | less ... virt-customize -a overcloud-realtime-compute.qcow2 --run-command \ 'subscription-manager attach --pool [pool-ID]'
sudo subscription-manager list --all --available | less ... virt-customize -a overcloud-realtime-compute.qcow2 --run-command \ 'subscription-manager attach --pool [pool-ID]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenStack Platform で NFV を使用するのに必要なリポジトリーを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージ上でリアルタイム機能を設定するためのスクリプトを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RT イメージを設定するスクリプトを実行します。
virt-customize -a overcloud-realtime-compute.qcow2 -v --run rt.sh 2>&1 | tee virt-customize.log
(undercloud) [stack@undercloud-0 ~]$ virt-customize -a overcloud-realtime-compute.qcow2 -v --run rt.sh 2>&1 | tee virt-customize.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記rt.shスクリプトの出力にgrubby fatal error: unable to find a suitable templateというエラーメッセージが表示される場合があります。このメッセージは無視しても問題ありません。前項のコマンドで作成された
virt-customize.logファイルを調べ、rt.shスクリプトによりパッケージが正しくインストールされたことを確認することができます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux の再ラベル付けをします。
virt-customize -a overcloud-realtime-compute.qcow2 --selinux-relabel
(undercloud) [stack@undercloud-0 ~]$ virt-customize -a overcloud-realtime-compute.qcow2 --selinux-relabelCopy to Clipboard Copied! Toggle word wrap Toggle overflow vmlinuz および initrd を抽出します。
注記vmlinuzおよびinitramfsのファイル名に含まれるソフトウェアバージョンは、カーネルバージョンによって異なります。ファイル名に適切なソフトウェアバージョンを使用してください。たとえばimage/boot/vmlinuz-3.10.0-862.rt56.804.el7x86_64。あるいは、代わりにワイルドカードの記号*を使用してください。mkdir image guestmount -a overcloud-realtime-compute.qcow2 -i --ro image cp image/boot/vmlinuz-*.x86_64 ./overcloud-realtime-compute.vmlinuz cp image/boot/initramfs-*.x86_64.img ./overcloud-realtime-compute.initrd guestunmount image
(undercloud) [stack@undercloud-0 ~]$ mkdir image (undercloud) [stack@undercloud-0 ~]$ guestmount -a overcloud-realtime-compute.qcow2 -i --ro image (undercloud) [stack@undercloud-0 ~]$ cp image/boot/vmlinuz-*.x86_64 ./overcloud-realtime-compute.vmlinuz (undercloud) [stack@undercloud-0 ~]$ cp image/boot/initramfs-*.x86_64.img ./overcloud-realtime-compute.initrd (undercloud) [stack@undercloud-0 ~]$ guestunmount imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージをアップロードします。
openstack overcloud image upload --update-existing --os-image-name overcloud-realtime-compute.qcow2
(undercloud) [stack@undercloud-0 ~]$ openstack overcloud image upload --update-existing --os-image-name overcloud-realtime-compute.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、選択したコンピュートノード上の ComputeOvsDpdkRT コンポーザブルロールで使用することのできる real-time イメージの準備ができました。
RT-KVM コンピュートノード上での BIOS 設定の変更
RT-KVM コンピュートノードのレイテンシーを短縮するために、BIOS 設定を変更する必要があります。コンピュートノードの BIOS 設定で、以下のセクションの全オプションを無効にする必要があります。
- 電源管理
- ハイパースレッディング
- CPU のスリープ状態
- 論理プロセッサー
これらの設定に関する説明と、無効化の影響については、BIOS パラメーターの設定 を参照してください。BIOS 設定の変更方法に関する詳しい情報は、ハードウェアの製造会社のドキュメントを参照してください。
9.3.2. RT-KVM 対応の OVS-DPDK の設定 リンクのコピーリンクがクリップボードにコピーされました!
OVS-DPDK 向けの OpenStack ネットワークを最適化するには、network-environment.yaml ファイルで設定する OVS-DPDK パラメーターの最も適切な値を決定する必要があります。詳しくは、「ワークフローを使用した DPDK パラメーターの算出」を参照してください。
9.3.2.1. ComputeOvsDpdk コンポーザブルロールの生成 リンクのコピーリンクがクリップボードにコピーされました!
ComputeOvsDpdkRT ロールを使用して、real-time の Compute イメージを使用するコンピュートノードを指定します。
ComputeOvsDpdkRT ロール向けに roles_data.yaml を生成します。
(undercloud) [stack@undercloud-0 ~]$ openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkRT
# (undercloud) [stack@undercloud-0 ~]$ openstack overcloud roles generate -o roles_data.yaml Controller ComputeOvsDpdkRT
9.3.2.2. OVS-DPDK パラメーターの設定 リンクのコピーリンクがクリップボードにコピーされました!
不適切な値で Data Plane Development Kit (DPDK) のデプロイを試みると、デプロイメントに失敗したりデプロイメントが不安定になったりします。OVS-DPDK 向けの OpenStack ネットワークを最適化するには、network-environment.yaml ファイルで設定する OVS-DPDK パラメーターの最も適切な値を決定する必要があります。詳しくは、「ワークフローを使用した DPDK パラメーターの算出」を参照してください。
resource_registryセクションに、使用する OVS-DPDK ロールの nic 設定を追加します。resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdkRT::Net::SoftwareConfig: nic-configs/compute-ovs-dpdk.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yaml
resource_registry: # Specify the relative/absolute path to the config files you want to use for override the default. OS::TripleO::ComputeOvsDpdkRT::Net::SoftwareConfig: nic-configs/compute-ovs-dpdk.yaml OS::TripleO::Controller::Net::SoftwareConfig: nic-configs/controller.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaultsセクションで、OVS-DPDK および RT-KVM のパラメーターを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.2.3. コンテナーイメージの準備 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーイメージを準備します。
openstack overcloud container image prepare --namespace=192.0.40.1:8787/rhosp13 --env-file=/home/stack/ospd-13-vlan-dpdk/docker-images.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-ha.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-ovs-dpdk.yaml -e /home/stack/ospd-13-vlan-dpdk/network-environment.yaml --roles-file /home/stack/ospd-13-vlan-dpdk/roles_data.yaml --prefix=openstack- --tag=2018-03-29.1 --set ceph_namespace=registry.redhat.io/rhceph --set ceph_image=rhceph-3-rhel7 --set ceph_tag=latest
(undercloud) [stack@undercloud-0 ~]$ openstack overcloud container image prepare --namespace=192.0.40.1:8787/rhosp13 --env-file=/home/stack/ospd-13-vlan-dpdk/docker-images.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/docker-ha.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-ovs-dpdk.yaml -e /home/stack/ospd-13-vlan-dpdk/network-environment.yaml --roles-file /home/stack/ospd-13-vlan-dpdk/roles_data.yaml --prefix=openstack- --tag=2018-03-29.1 --set ceph_namespace=registry.redhat.io/rhceph --set ceph_image=rhceph-3-rhel7 --set ceph_tag=latest
9.3.2.4. オーバークラウドのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
ML2-OVS 向けのオーバークラウドをデプロイします。
9.3.3. RT-KVM インスタンスの起動 リンクのコピーリンクがクリップボードにコピーされました!
リアルタイム対応のコンピュートノードで RT-KVM インスタンスを起動するには、以下の手順を実行します。
オーバークラウド上に RT-KVM フレーバーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RT-KVM インスタンスを起動します。
openstack server create --image <rhel> --flavor <flavor-name> --nic net-id=<dpdk-net> test-rt
# openstack server create --image <rhel> --flavor <flavor-name> --nic net-id=<dpdk-net> test-rtCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプションとして、割り当てられたエミュレータースレッドをインスタンスが使用していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow