9.6. HCI および DPDK を使用するオーバークラウドのデプロイ
ハイパーコンバージドノードと共に NFV インフラストラクチャーをデプロイするには、リソースの使用率を最適化するために Compute サービスと Ceph Storage サービスを共存させて設定します。
ハイパーコンバージドインフラストラクチャー (HCI) についての詳しい情報は、ハイパーコンバージドインフラストラクチャーガイド を参照してください。
前提条件
- Red Hat OpenStack Platform 13.12 メンテナーンスリリース (2019 年 12 月 19 日) またはそれ以降
- Ceph 12.2.12-79 (luminous) またはそれ以降
- Ceph-ansible 3.2.38 またはそれ以降
手順
アンダークラウドに
ceph-ansible
をインストールします。sudo yum install ceph-ansible -y
$ sudo yum install ceph-ansible -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ComputeHCI ロール用に
roles_data.yaml
ファイルを生成します。openstack overcloud roles generate -o ~/<templates>/roles_data.yaml Controller \ ComputeHCIOvsDpdk
$ openstack overcloud roles generate -o ~/<templates>/roles_data.yaml Controller \ ComputeHCIOvsDpdk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
openstack flavor create
およびopenstack flavor set
コマンドを使用して、新規フレーバーを作成および設定します。フレーバー作成についての詳細は、Advanced Overcloud Customization Guideの Creating a new role を参照してください。 生成したカスタムの
roles_data.yaml
ファイルを使用して、オーバークラウドをデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6.1. NUMA ノード設定の例 リンクのコピーリンクがクリップボードにコピーされました!
パフォーマンスを向上させるために、テナントネットワークおよび Ceph オブジェクトサービスデーモン (OSD) を 1 つの NUMA ノード (例: NUMA-0) に配置し、VNF および NFV 以外の仮想マシンを別の NUMA ノード (例: NUMA-1) に配置します。
CPU の割り当て
NUMA-0 | NUMA-1 |
---|---|
Ceph OSD 数 * 4 HT | VNF および NFV 以外の仮想マシン用のゲスト仮想 CPU |
DPDK lcore - 2 HT | DPDK lcore - 2 HT |
DPDK PMD - 2 HT | DPDK PMD - 2 HT |
CPU 割り当ての例
NUMA-0 | NUMA-1 | |
---|---|---|
Ceph OSD | 32,34,36,38,40,42,76,78,80,82,84,86 | |
DPDK-lcore | 0,44 | 1,45 |
DPDK-pmd | 2,46 | 3,47 |
nova | 5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87 |
9.6.2. ceph 設定ファイルの例 リンクのコピーリンクがクリップボードにコピーされました!
以下のパラメーターを使用して、ceph OSD プロセスの CPU リソースを割り当てます。ワークロードおよびこのハイパーコンバージド環境のハードウェアに基づいて、値を調整します。
- 1
- ceph_osd_docker_cpuset_cpus: SSD ディスクの場合は、OSD ごとに 4 つの CPU スレッドを割り当てます。HDD ディスクの場合は、OSD ごとに 1 つの CPU を割り当てます。ceph に関連付けられた NUMA ノードからのコアおよびシブリングスレッド、ならびに 3 つの一覧
NovaVcpuPinSet
、OvsDpdkCoreList
、およびOvsPmdCoreList
に記載されていない CPU の一覧を含めます。 - 2
- ceph_osd_docker_cpu_limit: ceph OSD を
ceph_osd_docker_cpuset_cpus
からの CPU 一覧にピニングするには、この値を0
に設定します。 - 3
- ceph_osd_numactl_opts: 念のため、複数 NUMA にまたがる操作用にこの値を
preferred
に設定します。
9.6.3. DPDK 設定ファイルの例 リンクのコピーリンクがクリップボードにコピーされました!
- 1
- KernelArgs:
hugepages
を算出するには、合計メモリーからNovaReservedHostMemory
パラメーターの値を減算します。 - 2
- IsolCpusList: このパラメーターを使用して、ホストプロセスから分離する CPU コアのセットを割り当てます。
IsolCpusList
パラメーターの値を算出するには、NovaVcpuPinSet
パラメーターの値にOvsPmdCoreList
パラメーターの値を加えます。 - 3
- OvsDpdkSocketMemory:
OvsDpdkSocketMemory
パラメーターを使用して、NUMA ノードごとにヒュージページプールから事前に割り当てるメモリー容量を指定します (MB 単位)。OVS-DPDK パラメーターの計算についての詳しい情報は、ovsdpdk パラメーター に関する説明を参照してください。 - 4
- OvsPmdCoreList: このパラメーターを使用して、DPDK Poll Mode Driver (PMD) に使用される CPU コアを指定します。DPDK インターフェイスのローカルの NUMA ノードに関連付けられた CPU コアを選択します。
OvsPmdCoreList
パラメーターの値を算出するには、NUMA ノードごとに 2 つの HT シブリングスレッドを割り当てます。 - 5
- OvsDpdkCoreList: このパラメーターを使用して、handler および revalidator スレッド等のデータパス以外の OVS-DPDK プロセス用の CPU コアを指定します。
OvsDpdkCoreList
パラメーターの値を算出するには、NUMA ノードごとに 2 つの HT シブリングスレッドを割り当てます。
9.6.4. nova 設定ファイルの例 リンクのコピーリンクがクリップボードにコピーされました!
- 1
- NovaReservedHugePages:
NovaReservedHugePages
パラメーターを使用して、ヒュージページプールからメモリーを事前に割り当てます (MB 単位)。これは、OvsDpdkSocketMemory
パラメーターの値と同じ合計メモリーです。 - 2
- NovaReservedHostMemory:
NovaReservedHostMemory
パラメーターを使用して、ホスト上のタスク用にメモリーを確保します (MB 単位)。確保しなければならないメモリー容量を算出するには、以下のガイドラインを使用します。- OSD ごとに 5 GB
- 仮想マシンごとに 0.5 GB のオーバーヘッド
- 一般的なホストプロセス用に 4 GB。複数 NUMA にまたがる OSD 操作によって生じるパフォーマンスの低下を防ぐために、十分なメモリーを割り当てるようにしてください。
- 3
- NovaVcpuPinSet:
NovaVcpuPinSet
パラメーターを使用して、OvsPmdCoreList
、OvsDpdkCoreList
、またはCeph_osd_docker_cpuset_cpus
に記載されていない CPU の一覧を指定します。CPU は DPDK NIC と同じ NUMA ノードになければなりません。
9.6.5. HCI-DPDK デプロイメントに推奨される設定 リンクのコピーリンクがクリップボードにコピーされました!
ブロックデバイスの種別 | メモリー、デバイスごとの OSD および仮想 CPU |
---|---|
NVMe |
メモリー : OSD ごとに 5 GB |
SSD |
メモリー : OSD ごとに 5 GB |
HDD |
メモリー : OSD ごとに 5 GB |
以下の機能には、同じ NUMA ノードを使用します。
- ディスクコントローラー
- ストレージネットワーク
- ストレージ CPU およびメモリー
DPDK プロバイダーネットワークの以下の機能には、別の NUMA ノードを割り当てます。
- NIC
- PMD CPU
- ソケットメモリー