VMware Distributed Resource Scheduler (DRS)

이 섹션에는 최적의 성능을 위해 VMware에서 권장하는 DRS(Distributed Resource Scheduler) 사례 및 구성이 나열되어 있다.

DRS 일반

  • DRS에서 생성된 수동 권장 사항, 특히 수동 재정의를 설정한 경우 주의한다. 경우에 따라 언급되지 않은(unaddressed) 수동 권장 사항이 DRS에서 권장 사항을 생성하지 못할 수 있다.
  • DRS 선호도 규칙이 설정된 경우 규칙 위반으로 생성된 DRS 장애 여부를 확인한다. 그러한 고장을 해결하는 것은 종종 로드 밸런싱에 크게 도움이 될 수 있다.

DRS 클러스터 구성 설정

  • DRS 클러스터로 그룹화할 호스트를 결정할 때 CPU 및 메모리 측면에서 최대한 동종 호스트를 선택한다. 이것은 성능 예측성과 안정성을 향상시킨다.
    이기종 시스템이 호환되는 CPU를 가지고 있지만 CPU 주파수 및/또는 메모리 양이 다른 경우, DRS는 일반적으로 더 많은 메모리와 더 높은 CPU 주파수(다른 모든 것이 동일함)를 가진 시스템에서 가상 시스템을 찾는 것을 선호한다.
  • CPU가 호환되지 않는 호스트에서는 VMware vMotion이 지원되지 않으므로, '호환성이 없는 CPU' 이기종 시스템에서는 DRS가 클러스터 전체의 로드 밸런싱을 개선할 수 있는 기회가 제한된다.
    CPU 호환성을 보장하려면 시스템이 동일한 CPU 벤더, 유사한 CPU 제품군 및 일치하는 SSE 명령 집합 기능으로 구성되어 있는지 확인한다. 이 항목에 대한 자세한 내용은 VMware KB 문서 1991, 1992 및 1993을 참조한다.
    또한 EVC(Enhanced vMotion Compatibility)를 사용하여 서로 다른 CPU 세대 간의 vMotion을 원활하게 수행할 수 있다. 이 항목에 대한 자세한 내용은 VMware vMotion 및 CPU 호환성 및 VMware KB 문서 1003212를 참조한다.
  • vMotion과 호환되는 ESXi 호스트가 많을수록 DRS 클러스터의 균형을 더 잘 맞춰야 한다. CPU 비호환성 외에도 두 개 이상의 호스트 간에 vMotion을 차단할 수 있는 다른 잘못된 구성이 있다. 예를 들어 호스트의 vMotion 네트워크 어댑터가 1Gb/s 이상의 이더넷 링크로 연결되어 있지 않으면 호스트 간에 vMotion이 발생하지 않을 수 있다.
    확인할 다른 구성 설정으로는 가상 하드웨어 버전 호환성, vMotion 게이트웨이의 잘못된 구성, 소스 및 대상 호스트 vMotion 네트워크 어댑터 간의 호환되지 않는 보안 정책, 대상 호스트에서 가상 시스템 네트워크 가용성 등이 있다. 자세한 내용은 vSphere vCenter Server and Host Management를 참조한다.
  • 가능한 경우 DRS 클러스터의 모든 호스트가 해당 클러스터의 다른 호스트에서 액세스할 수 있는 전체 데이터스토어 집합에 연결되어 있는지 확인한다. 이러한 전체 연결을 통해 DRS는 호스트 간에 로드 밸런싱 시 더 나은 결정을 내릴 수 있다.
  • 메모리 크기가 작거나 vCPU 수가 적은 가상 시스템은 DRS가 클러스터 전체의 균형을 개선하기 위해 가상 시스템을 마이그레이션할 수 있는 더 많은 기회를 제공한다. 메모리 크기가 크거나 vCPU가 더 많은 가상 시스템은 가상 시스템을 마이그레이션하는 데 더 많은 제약 조건을 추가한다. 이는 vCPU 수와 가상 메모리가 필요한 만큼만 가상 시스템을 구성해야 하는 또 다른 이유 중 하나이다.
  • 가상 시스템이 자동 모드가 아닌 가상 시스템 이전의 ESXi 호스트 간의 클러스터 로드 밸런싱 마이그레이션에 고려되므로 가능하면 가상 시스템을 DRS 자동 모드로 설정하십시오.
  • 전원이 켜진 가상 시스템은 메모리 리소스를 소비하며 일반적으로 유휴 상태에서도 일부 CPU 리소스를 소비한다. 따라서 유휴 가상 머신의 활용도는 보통 작지만 DRS 의사결정에 영향을 미칠 수 있다. 이러한 이유 및 기타 이유로 사용하지 않는 가상 시스템을 종료하거나 일시 중단함으로써 한계 성능 증가를 얻을 수 있다.
  • 리소스 풀은 성능 문제의 관리성 및 문제 해결을 돕는다. 그러나 우리는 리소스 풀과 가상 머신이 계층(같은 수준)에서 형제자매가 되지 않도록 권장한다. 대신 각 수준에는 리소스 풀만 포함하거나 가상 시스템만 포함해야 한다. 이는 기본적으로 리소스 풀에 가상 시스템에 할당된 값과 적절하게 비교되지 않을 수 있는 공유 값이 할당되기 때문에 예기치 않은 성능이 발생할 수 있기 때문이다.
  • DRS 선호도 규칙은 둘 이상의 가상 시스템을 동일한 ESXi 호스트("VM/VM 선호도")에 유지하거나 항상 서로 다른 호스트("VM/VM 반선호도")에 있도록 할 수 있다. DRS 선호도 규칙은 가상 시스템 그룹이 특정 ESXi 호스트 그룹("VM/호스트 선호도")에서만 실행되거나 특정 호스트 그룹("VM/호스트 반선호도")에서 실행되지 않도록 하는 데 사용될 수 있다.
    대부분의 경우 선호도 설정을 변경하지 않고 그대로 두면 최상의 결과를 얻을 수 있다. 그러나 드문 경우지만 선호도 규칙을 지정하면 성능 향상에 도움이 될 수 있다. 선호도 설정을 변경하려면 vSphere Client에서 클러스터를 선택하고 Configure 탭을 클릭한 다음 Configuration을 확장하고 VM/Host Rules을 클릭하고 Add를 클릭하고 새 규칙의 이름을 입력하고 규칙 유형을 선택한 다음 선택한 규칙 유형에 따라 GUI를 진행한다.
    기본 설정 외에 선호도 설정 유형:
    • Keep Virtual Machines Together
      이 선호도 유형은 기계 간 통신 지연 시간이 낮아져 성능을 향상시킬 수 있다.
    • Separate Virtual Machines
      이 선호도 유형은 가상 시스템의 최대 가용성을 유지할 수 있다. 예를 들어, 두 웹 서버 모두 동일한 응용 프로그램의 프런트엔드인 경우 두 웹 서버 모두 동시에 다운되지 않도록 하는 것이 좋을 수 있다. 또한 I/O 집약적인 가상 머신을 공동 배치하면 호스트 I/O 용량이 포화되어 성능이 저하될 수 있다.
    • Virtual Machines to Hosts(Must run on..., Should run on..., Must not run..., Should not run on...포함)
      이러한 선호도 유형은 소프트웨어 라이센싱 제한 또는 특정 가용성 영역 요구사항이 있는 클러스터에 유용할 수 있다.
  • DRS의 최대 유연성을 허용하려면:
    • 클러스터의 모든 호스트에서 액세스할 수 있는 공유 데이터스토어에 가상 시스템을 배치한다.
    • 가상 시스템이 해당 호스트에서 이동하지 못하도록 하는 호스트 디바이스에 연결되어 있지 않은지 확인한다.
  • vSphere 6.5에 도입된 쌍-비교 밸런싱(pair-wise balancing)은 DRS 지원 클러스터에서 기본적으로 사용하도록 설정되어 있다. 이 기능은 클러스터에서 가장 많이 사용되는 호스트와 가장 적게 사용되는 호스트 간의 로드 차이를 고려하며, 정기적인 로드 밸런싱(모든 호스트에 대한 표준 편차만 고려)을 완료한 후에만 적용된다.
    이 특성은 특히 부하 범위를 최소화하는 것이 중요한 경우에 큰 클러스터에서 가장 적합하다. 고급 옵션 CheckPairwiseImbalance를 사용하여 이 동작을 변경할 수 있다. 자세한 내용은 DRS Performance for vSphere 6.5(특히 vSphere 6.5의 DRS 문제를 해결하지만 이 백서는 vSphere 6.7의 DRS와도 관련이 있음)을 참조하십시오.
  • DRS Lens(https://labs.vmware.com/flings/drs-lens) 및 DRS Dump Insight(https://labs.vmware.com/flings/drs-dump-insight), VMware의 비공식 툴을 통해 DRS 및 해당 툴이 수행하는 작업에 대해 더 많은 정보를 제공할 수 있음) 이 통찰력은 DRS 문제를 해결할 때 유용할 수 있다.

DRS 클러스터 크기 조정 및 리소스 설정

  • vSphere 6.7의 구성 최대값에 지정된 각 DRS 클러스터의 최대 호스트, 가상 시스템 또는 리소스 풀 수를 초과할 수 없다. 효과가 있는 것처럼 보이더라도 그렇게 하면 vCenter Server 또는 DRS 성능에 부정적인 영향을 미칠 수 있다.
  • 가상 시스템의 리소스 설정(Reservation, Shares, Limits)을 신중하게 선택한다.
  • 예약을 너무 높게 설정하면 클러스터에 예약되지 않은 리소스가 거의 없으므로 DRS에서 로드 밸런싱 옵션을 제한할 수 있다.
  • Limits를 너무 낮게 설정하면 가상 시스템이 성능을 향상시키기 위해 클러스터에서 사용할 수 있는 추가 리소스를 사용하지 못할 수 있다.
    가상 시스템에 필요한 최소 요구 사항을 보장하기 위해서는 Reservation을 사용한다. 공유는 리소스 경합이 있는 경우에만 적용된다는 점에 유의하십시오. 클러스터에서 리소스를 싸이징할 때 가상 시스템 메모리 오버헤드를 위해 예약된 추가 리소스를 고려해야 한다는 점에 유의한다.
    전체 클러스터 용량이 피크 시간 동안 모든 가상 시스템의 요구 사항을 충족하지 못할 수 있는 경우 미션 크리티컬 애플리케이션을 호스팅하는 리소스 풀이나 가상 시스템에 상대적으로 더 높은 공유를 할당하여 덜 중요한 가상 시스템의 성능 간섭을 줄일 수 있다.
  • vSphere 6.0을 기준으로 DRS는 계산에 NetIOC("네트워크 I/O 제어(NetIOC)" 참조) 대역폭 예약을 포함한다.
  • vMotion을 사용할 경우 사용하지 않은 CPU 용량(예약되지 않은 CPU 용량)을 클러스터에 남겨 두는 것이 좋다. "VMware vMotion 권장 사항"에서 설명한 것처럼 vMotion 작업이 시작되면 ESXi는 해당 작업을 위해 일부 CPU 리소스를 예약한다.

DRS 성능 조정

  • 완전 자동화된 DRS의 마이그레이션 임계값을 통해 관리자는 DRS 알고리즘의 강도를 제어할 수 있다. 대부분의 경우, 중간 수준의 공격성을 나타내는 마이그레이션 임계값의 기본 설정이 잘 작동할 것이다.
    마이그레이션 임계값은 다음 조건이 충족될 때 보다 적극적인 수준으로 설정해야 한다.
    • 클러스터의 호스트는 비교적 동종이다.
    • 가상 머신의 리소스 활용도는 시간이 지남에 따라 크게 다르지 않다.

마이그레이션 임계값은 반대 상황의 경우 더 보수적인 수준으로 설정해야 한다.

가장 보수적인 임계값을 선택한 경우 DRS는 로드 밸런싱을 수행하지 않으며, 선호도 또는 반선호도 규칙과 같은 하드 제약 조건을 충족하거나 유지 보수 또는 대기 모드로 전환되는 호스트에서 가상 시스템을 제거하기 위해 취해야 하는 이동 권장 사항만 적용할 것이다.

  • 클러스터 관리를 단순화하기 위해 vSphere 6.7은 DRS 동작에 대한 간단한 사용자 지정 기능을 제공하는 세 가지 고급 옵션을 제공하므로 다양한 클러스터 요구 사항에 더 적합하다.
    • VM Distribution 옵션을 사용하면 DRS가 가용성을 위해 클러스터의 호스트 간에 VM을 고르게 배포하는 것을 고려하게 된다.
    • Memory Metric for Load Balancing 옵션을 사용하면 DRS가 활성 메모리 사용량을 고려하지 않고 로드 밸런싱을 위한 사용된 메모리 사용량을 고려하게 된다.
    • CPU Over-Commitment 옵션을 사용하면 DRS가 고려해야 하는 CPU 오버 커밋 크기(총 클러스터 CPU 용량의 백분율)를 지정할 수 있다. 이는 하드웨어 리소스의 활용도를 높이기 위해 워크로드를 통합해야 할 때 유용할 수 있다.

이러한 옵션은 vSphere Client에서 사용할 수 있다(클러스터 선택, Configure 탭 클릭, Services 확장, vSphere DRS 선택, Edit 버튼 클릭, Additional Options 탭 클릭).

이러한 옵션에 대한 자세한 내용은 vSphere 6.5 DRS Performance을 참조한다(vSphere 6.5에서 DRS를 구체적으로 다루지만 이 백서는 vSphere 6.7의 DRS와도 관련이 있음).

  • DRS가 DRS 클러스터에서 가상 시스템의 CPU 수요를 예측하는 방법에 영향을 미치는 고급 옵션인 AggressiveCPUActive .
    AggressiveCPUActive가 0(기본값)으로 설정된 경우 DRS는 CPU 활동의 5분 평균을 사용하여 CPU 수요를 예측한다.
    AggressiveCPUActive를 1로 설정하면 DRS는 CPU 활동의 5분 평균 또는 CPU 활동의 마지막 5분 평균 값의 80번째 백분위수(즉, 두 번째로 높은 1분 평균) 중 하나를 사용하여 CPU 수요를 예측한다.
    이 값을 1로 설정하면 DRS 동작이 보다 적극적으로 수행되므로 CPU 준비 시간의 증가를 더 잘 감지하여 일부 배포의 CPU 수요를 더 잘 예측할 수 있다.
  • DRS 클러스터가 로드 불균형으로 표시될 수 있는 다양한 이유가 있다. 여기에는 다음이 포함된다:
    • 선호도/반선호도 규칙으로 인해 마이그레이션이 필터링된다.
    • VM-호스트 비호환성으로 인해 필터링되는 마이그레이션
    • 잠재적 마이그레이션에 대한 비용 추정치(이전 마이그레이션 비용 기준)가 잠재적 마이그레이션의 예상 편익을 초과함.
    • 클러스터의 모든 호스트는 네트워크 포화 상태임.

특정 환경에 "로드 밸런싱된" 클러스터를 달성하는 것이 중요한 경우 몇 가지 규칙을 완화하거나 마이그레이션 임계값을 조정할 수 있다.

반면에 모든 가상 시스템이 권한이 있는 리소스의 100%를 받고 있다면 클러스터가 약간 불균형한 것이 허용될 수 있다.

  • Predictive DRS는 VMware vRealize® Operations™로부터 예측을 수신하고 이 정보를 사용하여 로드 밸런싱을 수행하도록 구성할 수 있다.

이를 위해서는 vRealize Operations 버전 6.4 이상이 필요하다. 자세한 내용은 https://blogs.vmware.com/management/2016/11/david-davis-vrealize-operations-post-34-new-predictiv e-drs-vrealize-operations-6-4.html 을 참조한다.