DRS кластер включает виртуальные машины только на одном ESXI хосте

Обновлено 28.04.2021

rds esxi

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в России Pyatilistnik.org. В прошлый раз мы с вами методы, как разархивировать файл, поняли что для этого не обязательно иметь локально установленные программы. Сегодня я хочу переключиться на серверные задачи и разобрать интересный случай связанный с DRS кластером. Появилась такая неприятная вещь, что при старте виртуальной машины, они запускаются всегда на одном и том же ESXI хосте, в независимости от того самый он свободный по ресурсам или нет.

Странная работа DRS кластера

Опишу более подробно инфраструктуру, есть физические сервера Dell Power Edge R740, на них установлены гипервизоры Vmware ESXI 6.5, которыми управляет vCenter Server 6.5, на который мы обновились относительно недавно. На базе этих серверов собран DRS кластер. В какой-то момент стали обращать внимание, что все включаемые виртуальные машины стартуют на одном и том же ESXI хосте, и без разницы загружен он по процессору или ОЗУ на 90% или же полностью свободен, это дико не удобно, так как заставляет нагружать другие виртуальные сервера, и сразу запускать процесс миграции.

Параметры DRS в vCenter 6.5

Изучив данный вопрос, я понял, что это связано с новым алгоритмом DRS, представленным в vCenter Server 6.5, который можно исправить, но перед этим давайте я напомню какие есть режимы работы DRS кластера. Выберите ваш кластер и перейдите на вкладку "Configure", далее вкладка "vSphare DRS" и в правой части найдите кнопку "Edit".

Открытие настроек DRS кластера

Вы можете определить, будет ли DRS просто отображать рекомендации по миграции или автоматически выполнять миграцию, когда кластер становится несбалансированным, определяя уровень автоматизации. DRS принимает решения, о размещении виртуальных машин, когда виртуальная машина включена и когда виртуальные машины должны быть перебалансированы по хостам в кластере DRS. Доступны три уровня автоматизации:

  • Вручную (Manual)- при включении виртуальной машины DRS отобразит список рекомендуемых хостов, на которых вы можете разместить виртуальную машину. Если кластер DRS становится несбалансированным, DRS отобразит рекомендации по миграции виртуальной машины.
  • Частично автоматизировано (Partially Automated)- когда виртуальная машина включается, DRS разместит ее на наиболее подходящем хосте без запроса пользователя. Если кластер DRS становится несбалансированным, DRS отобразит рекомендации по миграции виртуальной машины.
  • Полностью автоматизированный (Fully Automated) - когда виртуальная машина включается, DRS разместит ее на наиболее подходящем хосте без запроса пользователя. Если кластер DRS становится несбалансированным, DRS автоматически мигрирует виртуальные машины с чрезмерно загруженных хостов на недостаточно используемые хосты.

Порог миграции (Migration Threshold) - этот ползунок определяет, насколько агрессивно DRS будет мигрировать виртуальные машины. Для полностью автоматизированного уровня доступны пять вариантов:

  • Уровень 1 (Консервативный) (Level 1 (Conservative)) - применять только рекомендации 1-го приоритета. vCenter Server применяет только рекомендации, которые должны быть приняты для удовлетворения ограничений кластера, таких как правила соответствия (affinity rules) и обслуживание хоста (maintenance).
  • Уровень 2  (Level 2) - применять рекомендации 1 и 2 приоритета. vCenter Server применяет рекомендации, которые обещают значительное улучшение баланса нагрузки кластера.
  • Уровень 3 (Level 3) - применять рекомендации 1,2 и 3 приоритета. vCenter Server применяет рекомендации, которые обещают хорошее улучшение баланса нагрузки кластера. Это значение по умолчанию.
  • Уровень 4 (Level 4) - применять рекомендации 1,2,3 и 4 приоритета. vCenter Server применяет рекомендации, которые обещают умеренное улучшение баланса нагрузки кластера.
  • Уровень 5 (Агрессивный) (Level 5 (Aggressive)) - применить все рекомендации. vCenter Server применяет рекомендации, которые обещают даже небольшое улучшение баланса нагрузки кластера.

Уровни работы DRS кластера ESXI

Что по факту в vCenter 6.5, если стоит режим "Manual", то при запуске виртуальной машины, кластер не предлагает на выбор несколько ESXI хостов, хотя должен. Он все так же предлагает только один ESXI хост. В режиме "Partially Automated" виртуальная машина должна автоматически быть запущена на наиболее подходящем хосте, но в итоге это один и тот же. Режим "Fully Automated" не подходит, так как начнет двигать сервера в рабочее время, чем будет создавать дополнительную нагрузку на сервисы, так же есть ряд технологий, которые требуют размещение определенных виртуальных машин на одном ESXI хосте, например технология NLB.

Что нового предлагает DRS в vCenter 6.5

В компании Vmware есть отдельное обсуждение по новой работе DRS логики.

https://kb.vmware.com/s/article/50113706

Описание ситуации: При включении виртуальных машин в кластере DRS в ручном режиме, вы получаете только один хост в списке рекомендаций в vCenter Server 6.5. Разработчики для решения данной ситуации ввели дополнительные опции:

  • FastInitPlace
  • NetworkAwareDrs

Включив FastInitPlace и NetworkAwareDrs на вашем DRS кластере, вы вернете привычную работу в ручном режиме.

Что такое Network-Aware DRS enhancements

Как вам хорошо известно, DRS использовал в работе балансировку нагрузки с использованием ресурсов процессора и памяти. Метрики использования сети до сих пор не учитывались, что могло привести к проблемным размещениям виртуальных машин на интенсивно загруженных в плане сети хостах. В vSphere 6.0 в рамках Network IO Control (v3) можно было установить резервирование для виртуальной машины с точки зрения пропускной способности сети, и DRS учитывает это. В vSphere 6.5 DRS теперь учитывается использование pNIC хостов при размещении виртуальной машины во время миграции DRS.

Когда загрузка хоста превышает 80%, он будет считать этот хост поднагруженным и не будет рассматривать размещение на нем новых виртуальных машин. DRS также перенесет виртуальные машины с хоста, на котором интенсивно используются физические сетевые адаптеры (pNIC), и попытается сбалансировать кластер.

Давайте представим следующую ситуацию. Предположим, у вас есть три ESXI хоста в кластере с 6-ю включенными виртуальными машинами. Если вы включите другую виртуальную машину, она будет размещена на первом хосте DRS.

Хотя 1 хост интенсивно использует своей сетью, работающие на нем виртуальные машины не потребляют большое количество ЦП/памяти, и следующая виртуальная машина будет размещена на нем же. Это вызовет еще большие проблемы с сетью.

NetworkAwareDrs

К счастью, в vSphere 6.5 функция DRS поможет вам избежать подобных ситуаций. Это связано с новой функцией, называемой "Network-Aware DRS enhancements", в которой используется новый алгоритм DRS. Теперь он будет учитывать пропускную способность сети при составлении рекомендаций по размещению. Он будет вычислять Tx и Rx подключенных физических интерфейсов и избегать размещения новых виртуальных машин на хостах, которые используются более чем на 80% своей пропускной способности. Это дополнительное рассмотрение размещения после принятия всех других решений о размещении.

Теперь, что ваш режим "Manual" давал выбор хостов при старте, вам нужно для параметров "FastInitPlace" и "NetworkAwareDrs" выставить значения "0". Открываем настройки RDS кластера и переходим в раздел "Advanced Options" и с помощью кнопки "Add" добавляете оба ключа, в значении (Value) ставите "0".

Данные настройки применяться моментально после сохранения

Создание параметров FastInitPlace NetworkAwareDrs

Опция Predictive DRS

Predictive - это новая функция, представленная в vSphere 6.5. Это функция, которая будет использовать vROps для предоставления решений о размещении и распределении нагрузки. Если в вашей среде запущены vROps, он начнет предоставлять прогнозируемую информацию DRS, а затем будет использовать эти показатели для балансировки кластера.

Прогнозируемая по умолчанию информация, получаемая DRS, составляет 60 минут (3600 секунд), и ее можно изменить с помощью расширенного параметра "ProactiveDrsLookaheadIntervalSecs".

Это действительно круто, представьте, что вы знаете, что у виртуальной машины будет рабочая нагрузка, которая увеличит использование ресурсов этой виртуальной машины, а DRS обеспечит миграцию этой виртуальной машины на хост с достаточными ресурсами.

Обратите внимание, что, конечно, DRS будет продолжать использовать данные, предоставленные vCenter Server, но, кроме того, он также использует VROps для прогнозирования того, как будет выглядеть использование ресурсов, и все это на основе исторических данных. Вы можете представить себе виртуальную машину, которая в настоящее время использует 4 ГБ памяти (по требованию), однако каждый день примерно в одно и то же время запускается задание SQL, в результате чего спрос на память увеличивается до 8 ГБ. Эти данные теперь доступны через VROps, и поэтому при составлении рекомендаций по размещению / балансировке этот прогнозируемый всплеск ресурсов теперь может быть принят во внимание.

Чтобы включить "Predictive DRS", вам просто в настройках нужно выставить галочку "Enable Predictive DRS"

включить Predictive DRS

Дополнительные параметры DRS

В DRS на vCenter Server 6.5 появился ряд дополнительных параметров, они называются DRS профили.

  • VM Distribution - Распределение виртуальных машин позволяет обеспечить равномерное распределение виртуальных машин. Это заставит DRS равномерно распределять количество виртуальных машин по хостам. Это сводит к минимуму воздействие на виртуальную среду после сбоя хоста. Если DRS обнаружит серьезный дисбаланс производительности, это исправит проблему производительности за счет равномерного распределения счетчика.
  • Memory Metric for Load Balancing - Метрика памяти для балансировки нагрузки в DRS использует активную память +25% в качестве своей основной метрики при расчете загрузки памяти на хосте. Потребляемая память по сравнению с активной памятью заставит DRS использовать метрику потребляемой памяти, а не Активную. Это полезно, когда память не перераспределена. Как побочный эффект, пользовательский интерфейс показывает, что хосты более сбалансированы.
  • CPU Over-Commitment - Чрезмерное выделение ресурсов ЦП. Это опция для обеспечения максимального отношения vCPU и pCPU в кластере. Как только кластер достигнет этого определенного значения, никакие дополнительные виртуальные машины не будут включены для включения. Если проще, то параметр полезен, когда вы хотите ограничить количество виртуальных ЦП на один ЦП. Максимальное значение, которое вы можете предоставить, составляет 500.

Обновление 28.04.2021

Еще данная проблема может быть исправлена обновлением всего кластера до версии ESXi 7.01 и выше, проверено на себе, а так же перезагрузкой vCenter сервера.

Как дополнительная мера по распределению DRS-ом ваши виртуальные сервера является еще и любой из профилей DRS. На этом у меня все, мы разобрали новый алгоритм работы DRS в vCenter 6.5. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *