付録A 付録
A.1. スケーリング リンクのコピーリンクがクリップボードにコピーされました!
HCI ノードをスケールアップまたはスケールダウンするには、Compute または Ceph Storage ノードのスケーリングと同じ原則 (および大半はメソッド) が適用されます。以下の点に注意してください。
A.1.1. スケールアップ リンクのコピーリンクがクリップボードにコピーされました!
単一型の HCI 環境内で (全コンピュートノードがハイパーコンバージドノードである場合) HCI ノードをスケールアップするには、コンピュートノードのスケールアップと同じ方法を使用します。詳しくは、「ノードのさらなる追加」 (『director のインストールと使用方法』) を参照してください。
混合型の HCI 環境の HCI ノードのスケールアップにも同じ方法が該当します (オーバークラウドにハイパーコンバージドと通常のコンピュートノードの両方の機能がある場合)。新規ノードをタグ付けする場合には、適切なフレーバー (この場合には osdcompute) を使用することを念頭にいれてください。「新規フレーバーの作成と割り当て」を参照してください。
A.1.2. スケールダウン リンクのコピーリンクがクリップボードにコピーされました!
HCI ノードのスケールダウンプロセス (単一型と混合型の両方の HCI 環境) を簡単に説明すると以下のようになります。
HCI ノード上の Ceph OSD サービスを無効化して、リバランスします。director は、HCI ノードまたは Ceph Storage ノードの削除時に Red Hat Ceph Storage クラスターを自動でリバランスしないので、このステップが必要となります。
「Scaling Down and Replacing Ceph Storage Nodes」 (『Deploying an Overcloud with Containerized Red Hat Ceph』) を参照してください。このガイドに記載のノードの削除の手順には従わないでください。ノード上のインスタンスを移行して、Compute サービスを最初に無効化する必要があります。
- HCI ノードからインスタンスを移行します。手順については 「オーバークラウドのコンピュートノードからの仮想マシンの移行」を参照してください。
- ノード上の Compute サービスを無効にして、そのサービスが新規インスタンス起動に使用されるのを防ぎます。
- オーバークラウドからノードを削除します。
3 番目と 4 番目のステップ (Compute サービスの無効化とノードの削除) については、『director のインストールと使用方法』の「コンピュートノードの削除」 を参照してください。
A.2. アップストリームのツール リンクのコピーリンクがクリップボードにコピーされました!
OpenStack におけるハイパーコンバージェンスに関連した Heat テンプレート、環境ファイル、スクリプト、およびその他のリソースは、以下のアップストリームの Github リポジトリーから提供されています。
https://github.com/RHsyseng/hci/tree/master/custom-templates
このリポジトリーは、「Compute の CPU およびメモリーの計算」のスクリプトに対応しています。
このスクリプトの最新版をダウンロードするには、リポジトリーを直接アンダークラウドにクローンします。
git clone https://github.com/RHsyseng/hci
$ git clone https://github.com/RHsyseng/hci
または、以下のサブセクションで説明するスクリプトもダウンロードすることができます。
A.2.1. Compute の CPU およびメモリーの計算 リンクのコピーリンクがクリップボードにコピーされました!
本リリースでは、OpenStack Workflow を使用して、ハイパーコンバージドノードに適した CPU とメモリーの割り当て設定値を自動的に設定することができます。 ただし、一部のインスタンスでは、 OpenStack Workflow による設定は CPU またはメモリーのいずれかに限定して、それ以外は自分で設定することができます。そのためには、通常のとおりにオーバーライドすることができます (「メモリーまたは CPU 割り当てに計算された設定値のオーバーライド」に説明を記載)。
以下のスクリプトを使用すると、ハイパーコンバージドノードに適したNovaReservedHostMemory および cpu_allocation_ratio の基準値を算出することができます。
以下のサブセクションでは、両設定について詳しく説明します。
A.2.1.1. NovaReservedHostMemory リンクのコピーリンクがクリップボードにコピーされました!
NovaReservedHostMemory パラメーターは、ホストノードに確保するメモリー容量 (MB 単位) を設定します。ハイパーコンバージドノードに適切な値を決定するには、 各 OSD が 3 GB のメモリーを消費すると仮定します。メモリーが 256 GB で OSD が 10 の場合には、Ceph に 30 GB のメモリーを割り当てて、Compute に 226 GB 残します。このメモリー容量があるノードでは、たとえば、2 GB のメモリーを使用するインスタンスを 113 ホストすることができます。
ただし、ハイパーバイザー には、1 インスタンスあたりの追加のオーバーヘッドを考慮する必要があります。このオーバーヘッドが 0.5 GB と仮定すると、同じノードでは、90 インスタンスしかホストできません。この値は、226 GB を 2.5 GB で除算して割り出します。ホストノードに確保するメモリー容量 (Compute サービスが使用してはならないメモリー) は以下のように算出します。
(In * Ov) + (Os * RA)
ここで、
-
Inはインスタンス数に置き換えます。 -
Ovは 1 インスタンスあたりに必要なオーバヘッドメモリーの容量に置き換えます。 -
Osはノード上の OSD 数に置き換えます。 -
RAは、各 OSD に割り当てる必要のある RAM 容量に置き換えます。
90 インスタンスの場合には、(90*0.5) + (10*3) = 75GB という計算になります。Compute サービスには、この値を MB 単位で指定します (75000)。
以下の Python コードは、この計算を実装します。
A.2.1.2. cpu_allocation_ratio リンクのコピーリンクがクリップボードにコピーされました!
Compute スケジューラーは、インスタンスをデプロイする Compute ノードを選択する際に cpu_allocation_ratio を使用します。デフォルトでは、この値は 16.0 (16:1) です。1 台のノードに 56 コアある場合には、Compute スケジューラーは 1 台のノードで 896 の仮想 CPU を使用するのに十分なインスタンスをスケジュールすることになります。この値を超えると、そのノードはそれ以上インスタンスをホストできないと見なされます。
ハイパーコンバージドノードに適切な cpu_allocation_ratio を決定するには、各 Ceph OSD が最小で 1 コアを使用すると仮定します (ワークロードが I/O 集中型で、SSD を使用しないノード上にある場合を除く)。56 コア、10 OSD のノードでは、この計算で 46 コアが Compute に確保されます。各インスタンスが割り当てられた CPU の 100 パーセント使用すると、この比率は単にインスタンスの仮想 CPU 数をコア数で除算した値となります (46 / 56 = 0.8)。ただし、インスタンスは通常割り当てられた CPU を 100 パーセント使用することはないため、ゲストに必要な仮想 CPU 数を決定する際には、予想される使用率を考慮に入れて、cpu_allocation_ratio を高くすることができます。
したがって、インスタンスが仮想 CPU の 10 パーセント (または 0.1) のみを使用すると予想できる場合には、インスタンス用の仮想 CPU は 46 / 0.1 = 460 の式で示すことができます。この値をコア数 (56) で除算すると、比率は約 8 に増えます。
以下の Python コードは、この計算を実装します。
cores_per_OSD = 1.0 average_guest_util = 0.1 # 10% nonceph_cores = cores - (cores_per_OSD * osds) guest_vCPUs = nonceph_cores / average_guest_util cpu_allocation_ratio = guest_vCPUs / cores
cores_per_OSD = 1.0
average_guest_util = 0.1 # 10%
nonceph_cores = cores - (cores_per_OSD * osds)
guest_vCPUs = nonceph_cores / average_guest_util
cpu_allocation_ratio = guest_vCPUs / cores
nova_mem_cpu_calc.py のスクリプトを使用して、reserved_host_memory と cpu_allocation_ratio の基準値を算出することができます。 詳しくは、「Compute の CPU およびメモリーの計算」を参照してください。