VMware Cloud Director 配置エンジンは、vApp の仮想マシン (VM) が配置されるリソース(リソース プール、データストア、ネットワークまたはネットワーク プールを含む)を決定します。エンジンは各仮想マシンの要件に基づいて、vApp 内の各仮想マシンの配置を個別に決定します。

配置エンジンは次のシナリオで実行されます。
注: VMware Cloud Director は、各仮想マシンの要件に基づいて、vApp 内に個別に仮想マシンを配置します。
  • 仮想マシンを作成すると、配置エンジンは、仮想マシンの配置先となるリソース プール、データストア、およびネットワーク プールを決定します。
  • 仮想マシンを起動する際に仮想マシンがパワーオンに失敗した場合、VMware Cloud Director は、仮想マシンを別のリソース プール、データストア、またはネットワーク プールに選択的に移動することができます。
  • 仮想マシンを編集して、そのデータストア、リソース、またはネットワーク構成を変更すると、VMware Cloud Director は、新しい仮想マシン設定をサポートする別のデータストアおよびリソース プールに仮想マシンを移動することがあります。VMware Cloud Director は、現在のリソースが新しい要件をサポートできない場合にのみ仮想マシンを移動します。
  • 仮想マシンを別のリソース プールに移行する場合。
  • 組織仮想データセンター (VDC) が、VDC をバッキングする vCenter Server リソース プールで作成された仮想マシンを検出すると、検出した各仮想マシンを格納するために簡素化された vApp が構築されます。
配置エンジンは、次の基準を使用して仮想マシンのリソース プール候補を選択します。
  • CPU の容量
  • メモリ容量
  • 仮想 CPU の数
  • ホストでサポートされ、プロバイダ VDC で許可されているハードウェア バージョン
  • アフィニティ ルール

配置エンジンは、無効になっているリソース プールを候補リストから除外します。可能であれば、VMware Cloud Director は、組織 VDC 内の他の仮想マシンと同じホスト クラスタに仮想マシンを配置します。

配置エンジンは、次の基準を使用して仮想マシンのデータストア候補を選択します。
  • ストレージ容量
  • ストレージ ポリシー
  • 仮想マシン間のアフィニティ要件
  • IOPS が有効になっている場合、IOPS キャパシティと仮想マシン ディスクの IOPS

多くの場合、配置エンジンは候補リストから無効になっているデータストアと、赤いしきい値に到達しているデータストアを除外します。vCenter Server から仮想マシンをインポートした場合は、エンジンはこれらのデータストアを除外しません。

配置エンジンは、ネットワーク名を使用して vApp およびその仮想マシンのネットワーク プール候補を選択します。

配置エンジンは、一連の候補リソースを選択した後、各仮想マシンの CPU、仮想 RAM、およびストレージ構成に基づいてリソースをランク付けし、仮想マシンに最適な場所を選択します。

リソースのランク付けの際には、配置エンジンは、現在および推定される将来のリソース使用率を調べます。想定される将来の使用率は、特定のリソース プールに現在配置されているパワーオフ状態の仮想マシンおよびパワーオン後に想定されるそれらの使用率に基づいて計算されます。CPU およびメモリに関しては、現在予約されていない容量、最大使用量、および推測される将来の未予約の容量が考慮されます。ストレージに関して、エンジンは各リソース プールが属しているクラスタによって提供される集計されたプロビジョニング済み容量を考慮します。その後配置エンジンは、各リソース プールの現在および将来の適合性の重み付けされたメトリックを検討します。

移動が必要な場合、配置エンジンは、CPU、メモリ、およびストレージで未予約の容量が最も多いリソース プールを優先します。さらに、黄状態のクラスタは優先しないため、配置条件を満たす健全なクラスタが使用できない場合にのみ黄状態のクラスタが選択されます。vCenter Server から仮想マシンをインポートする際は、仮想マシンの配置が適切な場合、移動を最小限にするためにエンジンはしきい値を無視します。

仮想マシンをパワーオンすると、VMware Cloud Director は現在の場所で仮想マシンをパワーオンします。vCenter Server がホストの CPU とメモリ容量についてエラーを報告した場合、VMware Cloud Director はリソース プールの移動を 2 回試行してから、組織 VDC 上の互換性のある他のリソース プールへの仮想マシンの移動を試行します。配置エンジンを再実行して互換性のあるリソース プールを検索すると、VMware Cloud Director は以前に試行して失敗したリソース プールを除外します。VMDK が配置されているデータストアに適切なリソース プールが接続されていない場合、仮想マシンを別のリソース プールに移動すると、仮想マシンの VMDK が別のデータストアに移行される可能性があります。仮想マシンの要件を満たすすべての場所で仮想マシンの配置が失敗すると、VMware Cloud Director は配置が不可能であるというエラー メッセージを返します。現在のデータストアに対するアフィニティがあり、データストアが使用できない場合、配置エンジンは配置が不可能であるというエラーを返します。これは、システムがほぼフル キャパシティで運用され、提案された解決策が現在の要件のすべてを満たしていない場合のシステムの正常な状態です。エラーを修正するには、リソースを追加または解放して再試行を開始します。特定のデータストアが要件でない場合、配置エンジンは、ストレージ ポリシー、ストレージ容量、IOPS キャパシティなどの他の要件を満たすデータストアを候補ホスト クラスタまたはリソース プールから選択します。

リソース プールが容量に近い場合の同時デプロイの状況では、リソース プールに仮想マシンをサポートするリソースがない場合であっても、そのリソース プールの検証が正常に行われる場合があります。これらのケースでは、仮想マシンはパワーオンになりません。この状況で仮想マシンのパワーオンに失敗し、VDC をバッキングしているリソース プールが複数ある場合、VMware Cloud Director が仮想マシンを別のリソース プールに移行するようにパワーオン操作を再び開始します。

リソース プールが属するクラスタが容量に近いときは、個々のホストに仮想マシンをパワーオンするための容量がない場合、そのリソース プールの仮想マシンがパワーオンできないことがあります。クラスタ レベルでの容量の断片化の結果としてこのような状況が発生します。このようなケースでは、システム管理者はいくつかの仮想マシンをクラスタから移行させ、クラスタに利用可能な容量を十分に確保する必要があります。

仮想マシン配置エンジンのアルゴリズム

配置アルゴリズムは、必須のストレージ プロファイルが使用可能で、既存の仮想マシン間、仮想マシンとホスト間のアフィニティ、または非アフィニティ ルールに従うホスト クラスタのリストからホスト クラスタを選択します。 VMware Cloud Director は、さまざまなスコアを使用して配置ソリューションを計算します。エンジンの動作を変更するには、セル管理ツールを使用して、アンダースコア (_) 記号で始まる構成可能なパラメータを変更します。
  1. ワークロード配置エンジンは、各ホスト クラスタについて capacityScorefutureCapacityScore、および reservationScore を計算します。配置エンジンは、各スコアを CPU、メモリ、ストレージについて個別に計算します。
    capacityScore: (not available in some cases ) 
    
    CPU = (cpuUnreservedCapacityMHz - (cupBurstMHz * _cpuBurstRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memBurstMB * _memoryBurstRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    futureCapacityScore (not available in some cases) 
    
    CPU = (cpuUnreservedCapacityMHz - (cpuUndeployedReservationMHz * _futureDeployRatio)) / cpuRequirementMHz 
    Memory = (memoryUnreservedCapacityMB - (memUndeployedReservationMB * _futureDeployRatio)) / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
    
    reservationScore: (used for capacityScore and futureCapacityScore when those scores are unavailable) 
    
    CPU = cpuUnreservedCapacityMHz / cpuRequirementMHz 
    Memory = memoryUnreservedCapacityMB / memRequirementMB 
    Storage = storageFreeCapacityMB / stgRequirementMB 
  2. 各ホスト クラスタについて、配置エンジンは CPU、メモリ、およびストレージの weightedCapacityScore を計算します。
    weightedCapacityScore = capacityScore * _currentScoreWeight + futureCapacityScore * (1 - _currentScoreWeight)

    weightedCapacityScore は 0 ~ 1 の比率で、値が高いほどリソースが利用可能であることを表します。weightedCapacityScore 値は可用性の無名数の測定値で表されるため、CPU、メモリ、ストレージなど、異なるリソース タイプ間で比較できます。weightedCapacityScore が高いほど、ホスト クラスタ内の対応するリソースの可用性が高いことを示します。

  3. 配置エンジンは、CPU、メモリ、およびストレージに十分なリソースがあることを確認します。
    totalAvailable * _[memory|cpu|storage]headRoom < free / UnreservedCapacity
  4. 配置エンジンは、weightedCapacityScore に基づいてホスト クラスタのリストをソートし、制約の最も少ないホスト クラスタが最初に、制約の最も大きいホスト クラスタが最後になるようにします。
  5. 配置エンジンは、リスト内の各ホスト クラスタを処理します。
    • 非アフィニティ ルールなどの理由でホスト クラスタを回避する必要がある場合は、エンジンによって avoidHubList に追加されます。
    • ホスト クラスタに十分な追加リソースがない場合は、エンジンによって noHeadRoomHubList に追加されます。
    • 高いアフィニティ ルールや現在のホスト クラスタなど、ホスト クラスタが優先される場合、エンジンによって preferredHubList に追加されます。
    • 他のすべてのホスト クラスタは、acceptableHubList に移動されます。

    各リスト内で、最も優先されるホスト クラスタが最初に、最も優先度の低いホスト クラスタが最後になります。

  6. エンジンは 4 つのリストを統合します。

    preferredHubList + acceptableHubList + noHeadRoomHubList + avoidHubList

    エンジンは、結果のリストを最も優先されるホスト クラスタから最も優先度の低いホスト クラスタに順序付けします。

  7. 配置エンジンは、リストから最上位のホスト クラスタをターゲット ハブとして選択します。

調整可能なパラメータ

さまざまな選択アルゴリズムのしきい値に影響を与えるために、カスタマイズ可能なパラメータがいくつかあります。ただし、予期しない結果が生じる可能性があるため、これらのパラメータのデフォルト値からの変更は、VMware Cloud Director の操作に関する高度な知識を持つサービス プロバイダ管理者のみが実行する必要があります。最初に、非本番環境でパラメータの変更をテストします。

セル管理ツールを使用して、次のパラメータをカスタマイズできます。

パラメータ 説明
vcloud.placement.ranking.currentScoreWeight ホスト クラスタ スコアの現在のコンポーネントの相対的な重要度。値は [0.1] にする必要があります。値を 0 にすると、エンジンは将来のスコアのみに基づいてホスト クラスタをランク付けします。値を 1 にすると、エンジンは現在のスコアのみに基づいてホスト クラスタをランク付けします。デフォルトは0.5個です。

vcloud.placement.ranking.memoryBurstRatio

vcloud.placement.ranking.cpuBurstRatio

ランク付けでクラスタの負荷の予測に使用する仮想マシンの予約を超えた割り当ての割合。値は 0 ~ 1 です。0 は、仮想マシンが予約のみを使用していることを意味します。1 は、仮想マシンが完全にビジー状態であることを意味します。デフォルトは0.67個です。
vcloud.placement.ranking.futureDeployRatio デプロイされ、メモリと CPU を使用することが想定される、このホスト クラスタ上の仮想マシンの割合。値は 0 ~ 1 です。デフォルトは0.5個です。

vcloud.placement.ranking.memoryHeadRoom

vcloud.placement.ranking.cpuHeadRoom

vcloud.placement.ranking.storageHeadRoom

これらのパラメータを使用すると、ホスト クラスタの拡張用に追加のリソースを残すための制御が可能になります。エンジンは、ヘッドルームを未予約リソースの比率として定義します。たとえば、vcloud.placement.ranking.memoryHeadRoom が 0.2 の場合、ホスト クラスタの使用可能なリソースが 20% 未満になると、エンジンは、メモリのヘッドルームが不十分なクラスタと見なし、他のホスト クラスタよりも下位にランク付けします。値は 0 ~ 1 にする必要があります。デフォルトは0.2個です。

例:
./cell-management-tool manage-config -n vcloud.placement.ranking.memoryHeadRoom -v 0.3