お世話になっております。
DRSの仮想マシン再配置における、挙動についてご教示頂きたいです。
VCSAにて統合管理されている物理サーバ4台のクラスタにおいて、DRSがレベル3にて稼働している環境になります。
【事象】
1、WebClientから確認したところ、クラスタ内4台中1台(サーバA)のCPU使用率が92%になりました。
しきい値を超えたため、アラートは発生したものの、DRSが働かず、仮想マシンの分散がされていませんでした。
2、下記手順を実施。
サーバAを手動でメンテナンスモードにいれる>DRSが働き、サーバA上の仮想マシンが他3台に分散>サーバAのメンテナンスモードを解除>DRSが働き、仮想マシンが再配置
3、サーバA上の仮想マシンの個数、CPU・メモリのリソースが他3台より少なく、リソースが均等になっていないように見受けられました。
【質問事項】
1、リソースの計算はCPU使用率とメモリの合算にて行われている認識ですが、他3台にリソースに余裕がある状態で、1台のみCPU10%、メモリ93%、になってもDRSは作動しないのでしょうか。DRSレベル3位であれば、vMotionによるリソース分散をしているはずですが、メモリのみ90%を超えることはあるのでしょうか。
2、各Nodeのリソースの使用率以外に、DRSで分散する仮想マシンを選ぶ際、基準となる値やコンポーネント等が他になにかあればご教示頂きたいです。
※アフィニティールールを設定した場合、アフィニティールールに則り仮想マシンが再配置される認識ですが相違ありますでしょうか。
3、メンテナンスモードを解除後に、DRSにより仮想マシンが再配置されない事象など、DRSが起動されない場合のナレッジがあればご教示頂きたいです。
何卒宜しくお願い致します。
記載いただいた前提について一点確認がありまして、
> 【事象】
> 1、WebClientから確認したところ、クラスタ内4台中1台(サーバA)のCPU使用率が92%になりました。
ここのリソース使用率は CPU 92% ですか? 下の方で書かれている メモリ使用率 93% と条件が似ているので念のため確認させてください。
だいぶ端折って説明すると、DRS の動作は割り当てメモリだけでなく、VM が実際に使用しているアクティブなメモリ量がメイン(Active + Idol の 25%)で判断されます。
CPU も同じく RUN と Ready を考慮したアクティブな CPU 使用量などを組み合わせ判断され、
その他含め結構複雑な計算の上で標準偏差で重みづけされ移行の基準が決定されています。
詳細が書かれた参考資料を探したのですが、
日本語版だと6年前の VMware vSphereクラスタ構築/運用の技法(Duncan Epping Frank Denneman)|翔泳社の本 に詳細説明があります。
ペースとなっている Clustering Deep Dive の最新版が昨年 Rubrik と VMUG の支援で ebook が無償提供されていますので、以下も参照頂くと良いかと思います。
vSphere 6.7 Clustering Deep Dive
https://pages.rubrik.com/clustering-deep-dive-ebook.html
挙動の詳細は書かれていませんが、以下も参考になる情報がまとまっています。
Performance Best Practices for VMware vSphere 6.7
Load Balancing vSphere Clusters with DRS
https://blogs.vmware.com/vsphere/2016/05/load-balancing-vsphere-clusters-with-drs.html
上記踏まえた上で、推測から回答しますと
回答 1.
メモリ 90% を超えていてもアクティブメモリが少なかったか、他のリソース利用状況にもよりますがレベル 3 での条件を満たしていなかった可能性があります。
切り分けとしては、vSphere Client で DRS のバランシングの状態を確認した上で、DRS レベルを上げてみて挙動を比較してみると良いかと思います。または、DRS のオプション設定で「ロードバランシングのためのメモリメトリック」の項目で「アクティブメモリではなく仮想マシンの消費メモリに基づいた vMotion」にチェックを入れる事で DRS の動作を促す事が出来るかもしれません。
ただ、消費メモリに基づいた vMotion の設定は UI 上の注記にある様に、メモリオーバーコミットしていない環境で行うのが安全です。
※ 実際に Live Optics や vROps などアセスメントツールやモニタリングツールで利用状況を見てみると各仮想マシンの消費メモリは多いのですが、ゲスト OS としての アクティブメモリ が非常に小さい事が多く見られ、このような場合は DRS による vMotion の判定基準に達していない事が多々あります。
回答 2.
記載いただいたアフィニティールール、DRS グループなどの設定の他、仮想マシン自体の予約、制限などの各値、ホストのアドミッションコントロールなども影響する事があります。
回答 3.
DRS の計算は規程では 300 秒間隔です(vSphere 7.0 以降では 60秒)、なので即時に動くわけではなく時間差で動きます。なのでしばらく待つと動く場合もあります。
日本語のクラスタ構築/運用の技法だと P181 辺りから第14章の推奨の計算について記載があり、
DRS で移行する事に関してのコストとメリットの考え方、考慮などがまとまっています(DRS に関する記述だけで 80ぺージ位あります…)。
本家 Duncan 本の6.7版でも P261 辺りから記載があります、が、その前の P171 くらいから DRS 関連の記載があります。
答えになっていないと思いますが、私自身が DRS の挙動に不明点があった場合に参照している情報をご紹介させていただきました。
ご参考まで。
だいぶ時間が空いてしまいましたが本件に関連するメモリの挙動について、
@Jangari さんがメモリの消費とアクティブについてとても分かりやすくまとめて下さったのでご紹介します。
仮想マシンのメモリの Active と Comsumed の動きを見る https://jangari-ntk.github.io/post/2021-01-19/
上記で記されておりますが、当時は未リリースだった vSphere 7.0 から DRS の挙動も大幅にアップデートされており、より実際の割り当て・利用に応じた分散が行われる様になりました。