VMware Cloud Director 배치 엔진은 vApp의 VM(가상 시스템)이 배치될 리소스(예: 리소스 풀, 데이터스토어, 네트워크 또는 네트워크 풀)를 결정합니다. 이 엔진은 각 VM 요구 사항에 따라 vApp의 각 VM에 대해 독립적으로 배치 결정을 내립니다.

배치 엔진은 다음과 같은 시나리오에서 실행됩니다.
참고: VMware Cloud Director는 각 VM의 요구 사항을 기반으로 vApp 내부에 VM을 독립적으로 배치합니다.
  • VM을 생성할 때 배치 엔진은 VM이 배치될 리소스 풀, 데이터스토어 및 네트워크 풀을 결정합니다.
  • VM을 시작할 때 VM의 전원이 켜지지 않으면 VMware Cloud Director는 VM을 다른 리소스 풀, 데이터스토어 또는 네트워크 풀로 선택적으로 이동할 수 있습니다.
  • VM을 편집하여 해당 데이터스토어, 리소스 또는 네트워크 구성을 변경할 때 VMware Cloud Director는 새 VM 설정을 지원하는 다른 데이터스토어 및 리소스 풀로 VM을 이동할 수 있습니다. VMware Cloud Director는 현재 리소스가 새 요구 사항을 지원할 수 없는 경우에만 VM을 이동합니다.
  • VM을 다른 리소스 풀로 마이그레이션할 때.
  • 조직 VDC(가상 데이터 센터)가 VDC를 지원하는 vCenter Server 리소스 풀에서 생성된 VM을 검색하고 시스템이 검색된 각 VM을 포함하도록 간소화된 vApp을 구성할 때.
배치 엔진은 다음 기준을 사용하여 VM에 대한 후보 리소스 풀을 선택합니다.
  • CPU 용량
  • 메모리 용량
  • 가상 CPU 수
  • 호스트에서 지원하고 제공자 VDC에서 허용하는 하드웨어 버전
  • 선호도 규칙

배치 엔진은 후보 목록에서 비활성화된 리소스 풀을 필터링하여 제외합니다. 가능하면 VMware Cloud Director는 조직 VDC의 다른 VM과 동일한 호스트 클러스터에 VM을 배치합니다.

배치 엔진은 다음 기준을 사용하여 VM에 대한 후보 데이터스토어를 선택합니다.
  • 스토리지 용량
  • 스토리지 정책
  • VM 간 선호도 요구 사항
  • IOPS가 활성화된 경우 IOPS 용량 및 VM 디스크 IOPS

대부분의 경우 배치 엔진은 후보 목록에서 비활성화된 빨간색 임계값 데이터스토어를 필터링하여 제외합니다. vCenter Server에서 VM을 가져올 때는 엔진이 이러한 데이터스토어를 필터링하여 제외하지 않습니다.

배치 엔진은 네트워크 이름을 사용하여 vApp 및 해당 VM에 대한 후보 네트워크 풀을 선택합니다.

배치 엔진은 후보 리소스 집합을 선택한 후 각 VM의 CPU, 가상 RAM 및 스토리지 구성을 기반으로 리소스의 순위를 결정하고 각 VM에 대한 최상의 위치를 선택합니다.

배치 엔진은 리소스의 순위를 결정하는 동안 현재 및 향후의 예상 리소스 사용을 검사합니다. 향후 예상 사용량은 현재 지정된 리소스 풀에 배치된 전원 꺼진 VM 그리고 VM 전원이 켜진 후의 예상 사용량을 기반으로 계산됩니다. CPU와 메모리의 경우 배치 엔진은 현재 예약되지 않은 용량, 최대 사용량, 예약되지 않은 향후 예측 용량을 고려합니다. 스토리지의 경우 엔진은 각 리소스 풀이 속한 클러스터에서 제공하는 프로비저닝된 집계 용량을 고려합니다. 그런 다음 각 리소스 풀의 현재 및 향후 적합성에 대한 가중치 메트릭을 고려합니다.

이동이 필요한 경우 배치 엔진은 예약되지 않은 CPU, 메모리 및 스토리지 용량이 가장 많은 리소스 풀을 선호합니다. 또한 노란색 클러스터에는 더 낮은 우선 순위를 부여하여 배치 기준을 충족하는 정상 상태의 클러스터가 없는 경우에만 노란색 클러스터가 선택될 수 있도록 합니다. vCenter Server에서 VM을 가져올 때 VM 배치가 적절하면 이동을 최소화하기 위해 엔진은 임계값을 무시합니다.

VM의 전원을 켤 때 VMware Cloud Director는 현재 위치에서 전원을 켜려고 시도합니다. vCenter Server가 호스트 CPU 및 메모리 용량 오류를 보고하는 경우 VMware Cloud Director는 VM을 조직 VDC의 호환되는 다른 리소스 풀로 이동하기 전에 리소스 풀을 두 번 시도합니다. 배치 엔진을 다시 실행하여 호환되는 리소스 풀을 찾으려고 시도하는 동안 VMware Cloud Director는 이전에 시도했고 실패한 리소스 풀을 제외합니다. VMDK가 위치한 데이터스토어에 적합한 리소스 풀이 연결되어 있지 않은 경우 VM을 다른 리소스 풀로 이동하면 VM의 VMDK가 다른 데이터스토어로 마이그레이션될 수 있습니다. VM의 요구 사항을 충족하는 모든 위치에서 VM 배치가 실패하면 VMware Cloud Director는 배치가 가능하지 않다는 오류 메시지를 반환합니다. 현재 데이터스토어에 대한 선호도가 있고 데이터스토어를 사용할 수 없으면 배치 엔진은 배치가 가능하지 않다는 오류를 반환합니다. 이것은 시스템이 거의 전체 용량으로 작동하고 제안된 솔루션이 현재의 모든 요구 사항을 충족하지 않는 경우 시스템의 정상적인 상태입니다. 오류를 해결하려면 리소스를 추가하거나 확보한 후 재시도를 시작하면 됩니다. 특정 데이터스토어가 필요한 경우가 아니면 배치 엔진은 스토리지 정책, 스토리지 용량 및 IOPS 용량과 같은 다른 요구 사항을 충족하는 후보 호스트 클러스터 또는 리소스 풀에서 데이터스토어를 선택합니다.

리소스 풀이 용량 한계에 거의 도달했을 때 동시 배포가 진행되면 리소스 풀에 VM을 지원할 리소스가 부족하더라도 해당 리소스 풀의 유효성 검사가 성공할 수 있습니다. 이러한 경우 VM의 전원을 켤 수 없습니다. 이 상황에서 VM의 전원을 켜지 못하고 VDC를 지원하는 리소스 풀이 둘 이상 있는 경우 VMware Cloud Director에 VM을 다른 리소스 풀로 마이그레이션하라는 메시지를 표시하려면 전원 켜기 작업을 다시 시작합니다.

리소스 풀이 속한 클러스터의 용량이 한계에 거의 도달했을 때 개별 호스트에 VM의 전원을 켤 수 있는 용량이 없으면 해당 리소스 풀의 VM 전원을 켜지 못할 수 있습니다. 이 문제는 클러스터 수준에서 용량 조각화의 결과로 발생합니다. 이러한 경우 시스템 관리자는 일부 VM을 클러스터 외부로 마이그레이션하여 클러스터의 사용 가능한 용량이 충분히 유지될 수 있도록 해야 합니다.

VM 배치 엔진 알고리즘

배치 알고리즘은 사용 가능한 필수 스토리지 프로파일이 있고 기존 VM-VM, VM-호스트 선호도 또는 반선호도 규칙을 충족하는 호스트 클러스터 목록에서 호스트 클러스터를 선택합니다. VMware Cloud Director는 다양한 점수를 통해 배치 솔루션을 계산합니다. 엔진의 동작을 변경하려면 셀 관리 도구를 사용하여 밑줄(_) 기호로 시작하는 구성 가능한 매개 변수를 수정할 수 있습니다.
  1. 각 호스트 클러스터에 대해 워크로드 배치 엔진은 capacityScore, futureCapacityScorereservationScore를 계산합니다. 배치 엔진은 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. 엔진은 네 가지 목록을 통합합니다.

    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

순위 결정 기능이 클러스터의 로드를 추정하는 데 사용하는 VM의 예약을 초과하는 할당 비율입니다. 값은 0에서 1까지입니다. 0은 VM이 예약만 사용한다는 의미입니다. 1은 VM이 완전히 사용 중임을 의미합니다. 기본값은 0.67입니다.
vcloud.placement.ranking.futureDeployRatio 이 호스트 클러스터에서 배포되고 메모리 및 CPU를 사용할 것으로 예상되는 VM의 백분율입니다. 값은 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