Недавно компания VMware сделала важный анонс относительно компонента балансировщика нагрузки ввода-вывода Storage DRS (SDRS), который включает в себя механизм балансировки нагрузки на основе reservations для SDRS I/O и контроля ввода-вывода Storage I/O Control (SIOC). Все они будут устаревшими в будущих выпусках vSphere. Анонс был сделан в рамках релиза платформы VMware vSphere 8.0 Update 3. Об этом рассказал Дункан Эппинг.
Текущие версии ESXi 8.x и 7.x продолжат поддерживать эту функциональность. Устаревание затронет балансировку нагрузки на основе задержек (latency) для ввода-вывода и балансировку на основе reservations для ввода-вывода между хранилищами в кластере хранилищ Storage DRS. Кроме того, включение SIOC на хранилище и установка reservations и приоритетов с помощью политик хранения SPBM также будут устаревшими. Начальное размещение и балансировка нагрузки Storage DRS на основе хранилищ и настроек политик хранения SPBM для лимитов не будут затронуты.
Для Storage DRS (SDRS) это означает, что функциональность «балансировки по емкости» (capacity balancing) останется доступной, но все, что связано с производительностью, будет недоступно в следующем крупном выпуске платформы. Кроме того, обработка «шумных соседей» (noisy neighbor) через SIOC с использованием приоритетов или, например, reservations ввода-вывода также больше не будет доступна.
Некоторые из вас, возможно, уже заметили, что в интерфейсе на уровне отдельных ВМ исчезла возможность указывать лимит IOPS. Что это значит для лимитов IOPS в целом? Эта функциональность останется доступной через управление на основе политик (SPBM), как и сейчас. Таким образом, если вы задавали лимиты IOPS для каждой ВМ в vSphere 7 отдельно, после обновления до vSphere 8 вам нужно будет использовать настройку через политику SPBM. Опция задания лимитов IOPS через SPBM останется доступной. Несмотря на то, что в интерфейсе она отображается в разделе «SIOC», на самом деле эта настройка применяется через планировщик дисков на уровне каждого хоста.
Дункан Эппинг опубликовал интересный пост о том, как предотвратить исполнение виртуальных машин vCLS на VMware vSphere HA Failover Host. Напомним, что vSphere Clustering Service (vCLS) - это служба, которая позволяет организовать мониторинг доступности хостов кластера vSphere, без необходимости зависеть от служб vCenter. Она реализуется тремя агентскими виртуальными машинами в кластере, где 3 или более хостов, и двумя, если в кластере два хоста ESXi. Три машины нужны, чтобы обеспечивать кворум (2 против 1) в случае принятия решения о разделении кластера.
Для тех, кто не знает, сервер vSphere HA Failover Host — это хост, который используется, когда происходит сбой и vSphere HA должен перезапустить виртуальные машины. В некоторых случаях клиенты (обычно партнеры в облачных решениях) хотят предотвратить использование этих хостов для любых рабочих нагрузок, поскольку это может повлиять на стоимость использования платформы.
К сожалению, в пользовательском интерфейсе вы не можете указать, что машины vCLS не могут работать на определенных хостах, вы можете ограничить работу ВМ vCLS рядом с другими виртуальными машинами, но не хостами. Однако есть возможность указать, на каких хранилищах данных могут находиться виртуальные машины, и это может быть потенциальным способом ограничения хостов, на которых могут работать эти ВМ. Как?
Если вы создадите хранилище данных, которое недоступно назначенному Failover-хосту vSphere HA, то машины vCLS не смогут работать на этом хосте, так как хост не сможет получить доступ к датастору. Это обходной путь для решения проблемы, вы можете узнать больше о механизме размещения хранилищ данных для vCLS в этом документе. Обратите внимание, что если остальная часть кластера выйдет из строя и останется только Failover-хост, виртуальные машины vCLS не будут включены. Это означает, что механизм балансировки нагрузки VMware DRS также не будет функционировать, пока эти ВМ недоступны.
Таги: VMware, vSphere, HA, vCLS, VMachines, DRS, Blogs
Дункан Эппинг написал интересную статью про обслуживание межсайтового соединения (ISL) растянутого кластера VMware vSAN. Обычно, если условия позволяют, можно потушить все рабочие нагрузки (ВМ) на обеих площадках, после чего можно выключить кластеры и проводить обслуживание сетевого линка между площадками. Эта процедура описана в KB 2142676.
Но что делать в случае, когда вам нужно, чтобы рабочие нагрузки на одной из площадок продолжили выполняться во время обслуживания ISL?
Этот механизм и можно использовать для обслуживания ISL-соединения. Итак, переводим все хосты кластера на сайте 1 в режим обслуживания (Maintenance Mode) или выключаем их. В этом случае в растянутом кластере голоса для компонента Witness будут пересчитаны в течение 3 минут. После этого можно выключить и сам Witness - и это не приведет к падению виртуальных машин на сайте 2.
Итак, как он это проверял. Сначала перевел все хосты сайта 1 в режим обслуживания - и все его виртуальные машины начали переезд на второй сайт.
Затем он проверил RVC-консоль (как мы писали выше) и дождался, пока за пару минут будут пересчитаны голоса. Далее он просто выключил компонент Witness, после чего он убедился, что все ВМ продолжили нормально работать на второй площадке:
После этого можно начинать обслуживание ISL-соединения и работы по улучшению межкластерного соединения.
Для верности можно выполнить команду vsan.vm_object_info в консоли RVC и проверить объекты/экземпляры виртуальных машин на предмет того, что они находятся в статусе "ACTIVE" вместо "ABSENT":
После завершения обслуживания ISL-линка, вы можете включить компонент Witness, после чего включаете обратно хосты сайта 1 и обязательно выполняете ресинхронизацию (resync). После этого механизм VMware DRS в автоматическом режиме сам сбалансирует нагрузки по площадкам, распределив их по ним с помощью vMotion.
На сайте проекта VMware Labs появился новый интересный продукт - Cluster Rules Manager (CRM). С помощью данной утилиты можно провести обследование виртуальной инфраструктуры на предмет правил DRS affinity и anti-affinity rules. Первые определяют обязательное сосуществование ВМ на одном хосте ESXi (например, критичный сервис с высокой интенсивностью сетевого и дискового взаимодействия), а вторые - наоборот, невозможность существования ВМ на одном хосте (например, для целей отказоустойчивости и независимости от единой точки отказа оборудования).
По итогам использования этого средства через веб-консоль администраторы могут провести аудит текущих правил DRS, а также делать их импорт и экспорт в рамках инфраструктуры VMware vSphere.
Давайте посмотрим на возможности VMware Cluster Rules Manager:
Аудит правил anti-affinity для всех виртуальных машин в рамках сервера vCenter.
Импорт правил DRS affinity rules из разных серверов vCenter.
Экспорт правил DRS affinity rules в новый vCenter с сервера vCenter, гле они уже настроены.
Отчет о правилах, содержащий различные умные метрики - пользователь может выбрать, на каком уровне он будет сгенерирован (vCenter, датацентр или кластер). Отчет можно экспортировать в HTML-формат.
Отчет в реальном времени по ассоциациям VM-Rule. Можно выбрать виртуальную машину, и отчет будет содержать информацию обо всех правилах DRS, которые затрагивают данную ВМ. Этот отчет также можно генерировать на разных уровнях - ВМ, хост ESXi, кластер, датацентр и сервер vCenter. Его также можно экспортировать.
Возможность соединяться с разными vCenter в интерфейсе продукта.
Скачать VMware Cluster Rules Manager (CRM) можно по этой ссылке. Такую утилиту мы давно ждали, правда пока интерфейс оставляет желать лучшего. Ждем следующих версий!
Некоторое время назад мы писали о службах VMware vSphere Cluster Services (ранее они назывались Clustering Services), которые появились в VMware vSphere 7 Update 1. Они позволяют организовать мониторинг доступности хостов кластера vSphere, без необходимости зависеть от служб vCenter. Для этого VMware придумала такую штуку - сажать на хосты кластера 3 служебных агентских виртуальных машины, составляющих vCLS Control Plane, которые отвечают за доступность кластера в целом:
Надо отметить, что эти службы обязательны для функционирования механизма динамической балансировки нагрузки в кластере VMware DRS. Если вы выключите одну из виртуальных машин vCLS, то увидите предупреждение о том, что DRS перестанет функционировать:
Иногда требуется отключить службы Cluster Services, что может оказаться необходимым в следующих случаях:
Вам нужно правильно удалить кластер HA/DRS и выполнить корректную последовательность по выводу его из эксплуатации
Требуется удалить / пересоздать дисковые группы VMware vSAN, на хранилищах которых размещены виртуальные машины vCLS
Вам не требуется использовать DRS, и вы хотите отключить эти службы. В этом случае помните, что механизм обеспечения отказоустойчивости VMware HA также будет функционировать некорректно. Он зависит механизма балансировки нагрузки при восстановлении инфраструктуры после сбоя - именно на DRS он полагается при выборе оптимальных хостов для восстанавливаемых виртуальных машин.
Режим, в котором службы Cluster Services отключены, называется Retreat Mode. Итак, заходим в vSphere Client и выбираем кластер, в котором мы хотим ввести Retreat Mode. В строке браузера нам нужна строка вида:
domain ID domain-c<number>
Скопировав эту часть строчки, идем в Advanced Setting сервера vCenter и нажимаем Edit Settings:
Далее создаем там параметр со следующим именем и значением false:
config.vcls.clusters.domain-cxxx.enabled
Где cxxx - это идентификатор домена, который вы скопировали на прошлом шаге:
После этого нажимаем кнопку Save. В консоли vSphere Client в разделе vCLS для кластера мы увидим, что этих виртуальных машин больше нет:
На вкладке Summary мы увидим предупреждение о том, что vSphere Cluster Services больше не работает, а службы DRS вследствие этого также не функционируют корректно:
Чтобы вернуть все как было, нужно просто удалить добавленный параметр из Advanced Settings сервера vCenter.
На сайте проекта VMware Labs обновилась полезная для администраторов VMware vSphere утилита VMware DRS Sump Insight до версии 2.1. Напомним, что это портал самообслуживания, куда пользователи могут загружать файлы дампов DRS. После этого будет выведена информация об операциях по перемещению виртуальных машин, которые рекомендует выполнить механизм балансировки нагрузки DRS. О прошлых версиях этой утилиты мы писали тут и тут.
В новой верси не так много нововведений:
Добавлена поддержка дампов VMware vSphere 7.0 Update 2 и Update 3
Минорные улучшение интерфейса и бэкенда
Исправления ошибок
Напомним также о специальном плагине на базе HTML5 к vSphere Client для данного сервиса. Он добавляет функции утилиты DRS Dump Insight в интерфейс vSphere Client, работающего с сервером vCenter Server Appliance (vCSA).
Скачать VMware DRS Sump Insight 2.1 можно по этой ссылке.
Мы несколькораз писали об онлайн-сервисе
VMware vSphere DRS Dump Insight, который позволяет показывать различную информацию по перемещению виртуальных машин в кластере DRS на портале самообслуживания, куда пользователи могут загружать файлы дампов.
Это позволяет вам получить ответы на следующие вопросы:
Какие рекомендации DRS сделал на основе анализа cost/benefit
Почему DRS сделал именно эту рекомендацию
Почему DRS вообще иногда не делает рекомендаци для балансировки кластера
Как кастомное правило affinity/anti-affinity влияет на балансировку в кластере
Где взять полный список рекомендаций DRS
На днях у VMware вышло руководство пользователя по этой утилите, которое будет интересно почитать всем администраторам кластеров VMware DRS, решившим начать анализировать дампы DRS:
DRS Dump Insight User Guide небольшой и занимает всего 20 страниц, но там есть очень конкретные рекомендации по работе с интерфейсом утилиты и по трактовке ее результатов:
Напомним, что DRS Dump Insight в целом может делать следующие вещи:
Автоматизация воспроизведения дампов (с помощью встроенных кастомных DRS replayers)
Предоставление и визуализация дополнительной информации, которая недоступна в обычных анализаторах логов
Парсинг и анализ логов для понимания и наглядного отображения решений балансировщика DRS
Генерация итогового результата в текстовом формате
Скачать VMware vSphere DRS Dump Insight User Guide можно по этой ссылке.
Как вы знаете, при обновлении виртуальной инфраструктуры в части хостов ESXi с помощью vSphere Lifecycle Manager (vLCM), в кластере HA/DRS хост переводится в режим обслуживания (Maintenance mode), который предполагает эвакуацию виртуальных машин на другие серверы с помощью vMotion. После обновления хоста он выводится из режима обслуживания, и виртуальные машины с помощью DRS постепенно возвращаются на него. В зависимости от характера нагрузки этот процесс может занять от нескольких минут до нескольких часов, что не всегда соответствует ожиданиям администраторов.
Второй вариант - потушить виртуальные машины, обновить ESXi, а потом включить его - тоже не подходит, так как приводит к длительным простоям сервисов виртуальных машин (нужно не только время на обновление хоста, но и время на выключение и включение ВМ, либо их небыстрый Suspend на диск).
Поэтому VMware придумала технологию Suspend-to-Memory, которая появилась в VMware vSphere 7 Update 2. Суть ее в том, что при обновлении ESXi его виртуальные машины приостанавливаются, сохраняя свое состояние (Suspend) в оперативной памяти. Очевидно, что в таком состоянии перезагружать хост нельзя, поэтому данная техника используется только совместно с ESXi Quick Boot, которая подразумевает обновление гипервизора без перезагрузки сервера.
Надо отметить, что функции Quick Boot доступны не для всех серверов. Более подробная информация по поддержке этой технологии со стороны серверных систем приведена в KB 52477, а вот ссылки на страницы вендоров серверного оборудования, где можно узнать детали поддержки этой технологии:
По умолчанию настройка кластера Cluster Remediation для виртуальных машин выставлена в значение "Do not change power state" для виртуальных машин, что подразумевает их vMotion на другие серверы, поэтому чтобы использовать Suspend to Memory, надо выставить "Suspend to memory", как на картинке выше.
При использовании такого типа обновления vLCM будет пытаться сделать Suspend виртуальных машин в память, а если этого не получится (например, недостаточно памяти), то он просто не будет переходить в режим обслуживания.
Надо сказать, что Suspend-to-Memory поддерживает vSAN и работает с такими продуктами, как vSphere Tanzu и NSX-T.
Ну и вот небольшое демо того, как это работает:
Таги: VMware, vSphere, Upgrade, Update, ESXi, VMachines, HA, DRS, Memory
Одной из новых возможностей VMware vSphere 7 U1 стала служба vSphere Clustering Service (vCLS), которая позволяет организовать мониторинг доступности хостов кластера vSphere, без необходимости зависеть от служб vCenter.
Как вы знаете, кластер HA/DRS очень зависит от постоянной доступности сервисов vCenter, который является критическим звеном виртуальной инфраструктуры. Поэтому для него организовывают такие сервисы, как vCenter Server High Availability (VCHA), но и они не идеальны. Также проблема наблюдается при масштабировании кластеров в больших окружениях, которые объединяют онпремизные и облачные площадки, где масштабируемость vCenter является серьезной проблемой.
Учитывая это, VMware придумала такую штуку - сажать на хосты кластера 3 служебных агентских виртуальных машины, составляющих vCLS Control Plane, которые отвечают за доступность кластера в целом:
Таких виртуальных машин три в кластере, где 3 или более хостов, и две, если в кластере два хоста ESXi. Три машины нужны, чтобы обеспечивать кворум (2 против 1) в случае принятия решения о разделении кластера.
Три этих виртуальных машин следят друг за другом и оповещают об этом кластерные службы vCenter:
Это самокорректирующийся механизм, что значит, что если одна из агентских машин становится недоступной или выключенной, то службы vCLS пытаются самостоятельно наладить работу ВМ или включить ее.
Есть 3 состояния служб vCLS:
Healthy – как минимум 1 агентская ВМ работает в кластере, чтобы обеспечить доступность кластера развертываются 3 ВМ для кворума.
Degraded – как минимум одна агентская машина недоступна, но DRS продолжает функционировать и исполнять свою логику. Такое может, например, произойти при передеплое служебных машин vCLS или после какого-то события, повлиявшего на их "включенность".
Unhealthy – логика DRS не выполняется (балансировка или размещение ВМ), так как vCLS control-plane недоступна (то есть ни одной агентской ВМ не работает).
Легковесные машины-агенты исполняются на хостах ESXi и лежат на общих хранилищах, если общие хранилища недоступны - то на локальных дисках. Если вы развернули общие хранилища после того, как собрали кластер DRS/HA (например, развернули vSAN), то рекомендуется перенести агентские ВМ с локальных хранилищ на общие.
Сама гостевая ОС агентских ВМ очень легковесная, используется Photon OS следующей конфигурации:
Диск в 2 ГБ - это тонкий диск, растущий по мере наполнения данными (thin provisioned). Эти машины не имеют своего нетворка, а также не видны в представлении Hosts and Clusters в клиенте vSphere.
Агентские ВМ можно увидеть в представлении VMs and Templates где есть папка vCLS:
Обратите внимание, написано, что для агентских ВМ управление питанием производится со стороны служб vCLS. Если вы попытаетесь выключить эти ВМ, то будет показано следующее предупреждение:
При переводе кластера в режим обслуживания vCLS сам заботится о миграции агентских ВМ с обслуживаемых серверов и возвращении их обратно. Для пользователя это происходит прозрачно. И, конечно же, лучше не выключать эти ВМ вручную и не переименовывать папки с ними.
Жизненный цикл агентских ВМ обслуживается со стороны vSphere ESX Agent Manager (EAM).
EAM отвечает за развертывание и включение агентских ВМ, а также их пересоздание, если с ними что-то произошло. В анимации ниже показано, как EAM восстанавливает ВМ, если пользователь выключил и/или удалил ее:
Важный момент для разработчиков сценариев PowerCLI - это необходимость обрабатывать такие ВМ, чтобы случайно не удалить их. Например, ваш скрипт ищет неиспользуемые и забытые ВМ, а также изолированные - он может по ошибке принять машины vCLS за таковые и удалить, поэтому их надо исключать в самом сценарии.
В интерфейсе vSphere Client список агентских ВМ можно вывести в разделе "Administration > vCenter Server Extensions > vSphere ESX Agent Manager".
У агентских ВМ есть свойства, по которым разработчик может понять, что это они. В частности:
ManagedByInfo
extensionKey == "com.vmware.vim.eam"
type == "cluster-agent"
ExtraConfig keys
"eam.agent.ovfPackageUrl"
"eam.agent.agencyMoId"
"eam.agent.agentMoId"
Основное свойство, по которому можно идентифицировать агентскую ВМ, это HDCS.agent, установленное в значение "true". В Managed Object Browser (MOB) выглядит это так:
Ну и напоследок - небольшое демо технологии vSphere Clustering Service:
Раньше DRS был сфокусирован на выравнивании нагрузки на уровне всего кластера хостов ESXi в целом (на базе расчета стандартного отклонения по производительности), то есть бралась в расчет загрузка аппаратных ресурсов каждого из серверов ESXi, на основании которой рассчитывались рекомендации по миграциям vMotion виртуальных машин. Теперь же механизм запускается каждую минуту, а для генерации рекомендаций используется механизм VM DRS Score (он же VM Hapiness), отражающий удовлетворение потребности виртуальной машины в свободных ресурсах.
Пример 1 - хост с отклонением нагрузки от большинства
В старом DRS, работающем по принципу выравнивания нагрузки в кластере на базе анализа стандартного отклонения загруженности хостов в рамках определенного порога, могла возникнуть вот такая ситуация, когда DRS не требовалось предпринимать никаких действий по выравниванию нагрузки, хотя они, очевидно, требовались:
Новый DRS работает на базе анализа ресурсов для каждой виртуальной машины и будет перемещать их средствами vMotion, пока не достигнет максимальной доступности ресурсов для каждой ВМ. В точно таком же случае, как описано выше, это приведет в итоге к более сбалансированной ситуации:
Пример 2 - неравномерная загрузка хостов в кластере
В старом DRS был порог по дисбалансу в кластере, и если он не превышен - то механизм балансировки не запускался. Это могло приводить к образованием групп хостов с разными уровнями средней загрузки процессора и памяти:
В ситуации с новым DRS ситуация в итоге, опять-таки, получается более справедливая:
Также полезной оказывается метрика DRS Score (она же VM Hapiness), которая формируется из 10-15 главных метрик машин. Основные метрики из этого числа - Host CPU Cache Cost, VM CPU Ready Time, VM Memory Swapped и Workload Burstiness.
Если все машины чувствуют себя "комфортно" на всех хостах, то DRS Score оказывается максимальным:
Если подать нагрузку на пару хостов ESXi, то их средний DRS Score падает, а на дэшборде указывается число машин, для которых рассчитаны низкие уровни DRS Score:
После того, как DRS обработает эту ситуацию, нагрузка на хосты выравнивается, а значение DRS Score увеличивается:
Недавно мы писали о новых возможностях платформы виртуализации VMware vSphere 7, а также функциональности нового механизма динамического распределения нагрузки VMware DRS 2.0. Среди новых возможностей DRS мы упоминали про функции Assignable Hardware, которые позволяют назначить профили устройств PCIe с поддержкой Dynamic DirectPath I/O или NVIDIA vGPU для первоначального размещения виртуальных машин в кластере.
Сегодня мы поговорим об этой технологии в целом. Ранее виртуальные машины, использовавшие технологии DirectPath I/O или vGPU, привязывались к физическому адресу устройства, который включал в себя адрес расположения устройства на конкретной шине PCIe конкретного хоста ESXi. Это делало невозможным использование такой ВМ на других серверах кластера, что, конечно же, делало невозможным и работу технологий HA и DRS, которые являются критически важными в современных датацентрах.
Теперь же технология Assignable Hardware вводит новый уровень абстракции, который включает в себя профиль с возможностями устройств, требующихся для виртуальной машины. Таких профилей два - для технологии Dynamic DirectPath I/O и для NVIDIA vGPU:
Таким образом, технология Assignable Hardware позволяет отделить виртуальную машину от конкретного устройства и дать ей возможность быть запущенной на другом хосте ESXi с таким же устройством (или даже другим, но поддерживающим определенный набор функций).
Теперь при настройке виртуальной машины у вас есть выбор одного из следующих вариантов для устройства PCIe:
DirectPath I/O (legacy-режим, без интеграции с HA и DRS)
Dynamic DirectPath I/O
NVIDIA vGPU
После того, как вы выберете нужный профиль оборудования, механизм DRS сможет разместить машину на хосте ESXi с поддержкой нужных функций для ВМ.
На скриншоте выше, во второй опции Select Hardware, также есть лейбл "GPGPU example" - это возможность задать определенным устройствам метки таким образом, чтобы при выборе размещения ВМ использовались только устройства хостов с данными метками (при этом модели устройств могут отличаться, например, NVIDIA T4 GPU и RTX6000 GPU). Либо можно выбрать вариант использования только идентичных устройств.
Назначить метку можно во время конфигурации PCIe-устройств. В гифке ниже показано, как это делается:
При использовании NVIDIA vGPU для виртуальной машины выделяется только часть устройства. Поддержка горячей миграции vMotion для машин, использующих vGPU, уже была анонсирована в VMware vSphere 6.7 Update 1. Теперь эта поддержка была расширена, в том числе для DRS, который теперь учитывает профили vGPU.
Ну и в видео ниже вы можете увидеть обзор технологии Assignable Hardware:
Таги: VMware, vSphere, Hardware, NVIDIA, vGPU, VMachines, DRS, vMotion, HA
Некоторое время назад мы писали о новых возможностях платформы виртуализации VMware vSphere 7, среди которых мы вкратце рассказывали о нововведениях механизма динамического распределения нагрузки на хосты VMware DRS. Давайте взглянем сегодня на эти новшества несколько подробнее.
Механизм DRS был полностью переписан, так как его основы закладывались достаточно давно. Раньше DRS был сфокусирован на выравнивании нагрузки на уровне всего кластера хостов ESXi в целом, то есть бралась в расчет загрузка аппаратных ресурсов каждого из серверов ESXi, на основании которой рассчитывались рекомендации по миграциям vMotion виртуальных машин:
При этом раньше DRS запускался каждые 5 минут. Теперь же этот механизм запускается каждую минуту, а для генерации рекомендаций используется механизм VM DRS Score (он же VM Hapiness). Это композитная метрика, которая формируется из 10-15 главных метрик машин. Основные метрики из этого числа - Host CPU Cache Cost, VM CPU Ready Time, VM Memory Swapped и Workload Burstiness. Расчеты по памяти теперь основываются на Granted Memory вместо стандартного отклонения по кластеру.
Мы уже рассказывали, что в настоящее время пользователи стараются не допускать переподписку по памяти для виртуальных машин на хостах (Memory Overcommit), поэтому вместо "Active Memory" DRS 2.0 использует параметр "Granted Memory".
VM Happiness - это основной KPI, которым руководствуется DRS 2.0 при проведении миграций (то есть главная цель всей цепочки миграций - это улучшить этот показатель). Также эту оценку можно увидеть и в интерфейсе:
Как видно из картинки, DRS Score квантуется на 5 уровней, к каждому из которых относится определенное количество ВМ в кластере. Соответственно, цель механизма балансировки нагрузки - это увеличить Cluster DRS Score как агрегированный показатель на уровне всего кластера VMware HA / DRS.
Кстати, на DRS Score влияют не только метрики, касающиеся производительности. Например, на него могут влиять и метрики по заполненности хранилищ, привязанных к хостам ESXi в кластере.
Надо понимать, что новый DRS позволяет не только выровнять нагрузку, но и защитить отдельные хосты ESXi от внезапных всплесков нагрузки, которые могут привести виртуальные машины к проседанию по производительности. Поэтому главная цель - это держать на высоком уровне Cluster DRS Score и не иметь виртуальных машин с низким VM Hapiness (0-20%):
Таким образом, фокус DRS смещается с уровня хостов ESXi на уровень рабочих нагрузок в виртуальных машинах, что гораздо ближе к требованиям реального мира с точки зрения уровня обслуживания пользователей.
Если вы нажмете на опцию View all VMs в представлении summary DRS view, то сможете получить детальную информацию о DRS Score каждой из виртуальных машин, а также другие важные метрики:
Ну и, конечно же, на улучшение общего DRS Score повлияет увеличения числа хостов ESXi в кластере и разгрузка его ресурсов.
Кстати, ниже приведен небольшой обзор работы в интерфейсе нового DRS:
Еще одной важной возможностью нового DRS является функция Assignable Hardware. Многие виртуальные машины требуют некоторые аппаратные возможности для поддержания определенного уровня производительности, например, устройств PCIe с поддержкой Dynamic DirectPath I/O или NVIDIA vGPU. В этом случае теперь DRS позволяет назначить профили с поддержкой данных функций для первоначального размещения виртуальных машин в кластере.
В видео ниже описано более подробно, как это работает:
Ну и надо отметить, что теперь появился механизм Scaleable Shares, который позволяет лучше выделять Shares в пуле ресурсов с точки зрения их балансировки. Если раньше высокий назначенный уровень Shares пула не гарантировал, что виртуальные машины этого пула получат больший объем ресурсов на практике, то теперь это может использоваться именно для честного распределения нагрузки между пулами.
Этот механизм будет очень важным для таких решений, как vSphere with Kubernetes и vSphere Pod Service, чтобы определенный ярус нагрузок мог получать необходимый уровень ресурсов. Более подробно об этом рассказано в видео ниже:
Больше двух лет назад мы писали о средстве DRS Dump Insight, появившемся на сайте проекта VMware Labs. Это портал самообслуживания, куда пользователи могут загружать файлы дампов DRS. После этого будет выведена информация об операциях по перемещению виртуальных машин, которые рекомендует выполнить механизм балансировки нагрузки DRS.
Также мы писали о специальном плагине на базе HTML5 к vSphere Client для данного сервиса. Он добавляет функции утилиты DRS Dump Insight в интерфейс vSphere Client, работающего с сервером vCenter Server Appliance (vCSA).
На днях вышло обновление DRS Dump Insight 1.1, в котором появились следующие новые возможности:
Пользователи теперь могут загружать несколько дампов, указав папку, в которой все они лежат.
На базе загруженных дампов создается таймлайн миграций vMotion, по которому можно перемещаться в целях анализа нескольких дампов.
Пользователи могут экспортировать результат анализа нескольких дампов в виде одного PDF-документа.
Добавлена поддержка дампов VMware vSphere 6.5 Update 2, vSphere 6.5 Update 3 и vSphere 6.7 Update 3.
Множество исправлений ошибок и улучшений движка анализа.
Воспользоваться утилитой DRS Dump Insight 1.1 можно по этой ссылке.
На конференции VMworld 2019, которая недавно прошла в Сан-Франциско, было представлено так много новых анонсов продуктов и технологий, что мы не успеваем обо всех рассказывать. Одной из самых интересных новостей стала информация про новую версию распределенного планировщика ресурсов VMware Distributed Resource Scheduler (DRS) 2.0. Об этом было рассказано в рамках сессии "Extreme Performance Series: DRS 2.0 Performance Deep Dive (HBI2880BU)", а также про это вот тут написал Дункан Эппинг.
Надо сказать, что технология DRS, позволяющая разумно назначать хосты ESXi для виртуальных машин и балансировать нагрузку за счет миграций ВМ посредством vMotion между серверами, была представлена еще в 2006 году. Работает она без кардинальных изменений и по сей день (13 лет!), а значит это очень востребованная и надежная штука. Но все надо когда-то менять, поэтому скоро появится и DRS 2.0.
Если раньше основным ресурсом датацентров были серверы, а значит DRS фокусировался на балансировке ресурсов в рамках кластера серверов ESXi, то теперь парадигма изменилась: основной элемент датацентра - это теперь виртуальная машина с приложениями, которая может перемещаться между кластерами и физическими ЦОД.
Сейчас технология DRS 2.0 находится в статусе Technical Preview, что значит, что никто не гарантирует ее присутствие именно в таком виде в будущих продуктах VMware, кроме того нет и никаких обещаний по срокам.
В целом, изменилось 3 основных момента:
Появилась новая модель затраты-преимущества (cost-benefit model)
Добавлена поддержка новых ресурсов и устройств
Все стало работать быстрее, а инфраструктура стала масштабируемее
Давайте посмотрим на самое интересное - cost-benefit model. Она вводит понятие "счастья виртуальной машины" (VM Happiness) - это композитная метрика, которая формируется из 10-15 главных метрик машин. Основные из этого числа - Host CPU Cache Cost, VM CPU Ready Time, VM Memory Swapped и Workload Burstiness.
VM Happiness будет основным KPI, которым будет руководствоваться DRS 2.0 при проведении миграций (то есть цель - улучшить этот показатель). Также эту оценку можно будет увидеть и в интерфейсе. Помимо этого, можно будет отслеживать этот агрегированный показатель и на уровне всего кластера VMware HA / DRS.
Второй важный момент - DRS 2.0 будет срабатывать каждую минуту, а не каждые 5 минут, как это происходит сейчас. Улучшение связано с тем, что раньше надо было снимать "снапшот кластера", чтобы вырабатывать рекомендации по перемещению виртуальных машин, а сейчас сделан простой и эффективный механизм - VM Happiness.
Отсюда вытекает еще одна полезная функциональность - возможность изменять интервал опроса счастливости виртуальных машин - для стабильных нагрузок это может быть, например, 40-60 минут, а для более непредсказуемых - 15-20 или даже 5.
Еще одна интересная фича - возможность проводить сетевую балансировку нагрузки при перемещении машин между хостами (Network Load Balancing). Да, это было доступно и раньше, что было вторичной метрикой при принятии решений о миграции посредством DRS (например, если с ресурсами CPU и памяти было все в порядке, то сетевая нагрузка не учитывалась). Теперь же это полноценный фактор при принятии самостоятельного решения для балансировки.
Вот пример выравнивания такого рода сетевой нагрузки на виртуальные машины на разных хостах:
Модель cost-benefit также включает в себя возможности Network Load Balancing и устройства PMEM. Также DRS 2.0 будет учитывать и особенности аппаратного обеспечения, например, устройства vGPU. Кстати, надо сказать, что DRS 2 будет также принимать во внимание и характер нагрузки внутри ВМ (стабильна/нестабильна), чтобы предотвратить "пинг-понг" виртуальных машин между хостами ESXi. Кстати, для обработки таких ситуаций будет использоваться подход "1 пара хостов source-destination = 1 рекомендация по миграции".
Также мы уже рассказывали, что в настоящее время пользователи стараются не допускать переподписку по памяти для виртуальных машин на хостах (memory overcommit), поэтому вместо "active memory" DRS 2.0 будет использовать параметр "granted memory".
Ну и был пересмотрен механизм пороговых значений при миграции. Теперь есть следующие уровни работы DRS для различных типов нагрузок:
Level 1 – балансировка не работает, происходит только выравнивание нагрузки в моменты, когда произошло нарушение правил DRS.
Level 2 – работает для очень стабильных нагрузок.
Level 3 – работает для стабильных нагрузок, но сфокусирован на метрике VM happiness (включено по умолчанию).
Level 4 – нагрузки со всплесками (Bursty workloads).
Level 5 – динамические (Dynamic) нагрузки с постоянными изменениями.
В среднем же, DRS 2.0 обгоняет свою первую версию на 5-10% по быстродействию, что весьма существенно при больших объемах миграций. При этом VMware понимает, что новый механизм DRS второй версии может родить новые проблемы, поэтому в любой момент можно будет вернуться к старому алгоритму балансировки с помощью расширенного параметра кластера FastLoadBalance=0.
По срокам доступности технологии DRS 2.0 информации пока нет, но, оказывается, что эта технология уже почти год работает в облаке VMware Cloud on AWS - и пока не вызывала нареканий у пользователей. Будем следить за развитием событий.
В августе прошлого года мы сделали статью о новом виде памяти Persistent memory (PMEM) в VMware vSphere, которая находится на уровне между DRAM и Flash SSD с точки зрения производительности:
Надо сказать, что устройства с Persistent Memory (они же, например, девайсы с Intel Optane Memory) уже начинают рассматривать некоторые пользователи для внедрения в своей виртуальной инфраструктуре, поэтому надо помнить об их ограничениях, которые раскрыл Дункан Эппинг.
С точки зрения предоставления памяти PMEM виртуальной машине, на платформе vSphere есть 3 способа:
vPMEMDisk - vSphere представляет PMEM как обычный диск, подключенный к виртуальной машине через контроллер SCSI. В этом случае ничего не нужно менять для гостевой ОС или приложений. В таком режиме работают любые системы, включая старые ОС и приложения.
vPMEM - vSphere представляет PMEM как устройство NVDIMM для виртуальной машины. Большинство последних версий операционных систем (например, Windows Server 2016 и CentOS 7.4) поддерживают устройства NVDIMM и могут предоставлять их приложениям как блочные или байт-адресуемые устройства. Приложения могут использовать vPMEM как устройство хранения через тонкий слой файловой системы direct-access (DAX), либо замапить регион с устройства и получать к нему прямой доступ через байтовую адресацию. Такой режим может быть использован старыми или новыми приложениями, но работающими в новых версиях ОС, при этом версия Virtual Hardware должна быть не ниже 14.
vPMEM-aware - это то же самое, что и vPMEM, но только с дополнительными возможностями приложения понимать, что машина использует такое устройство, и пользоваться его преимуществами.
Если виртуальная машина использует такие устройства, то она имеет очень существенные ограничения, которые на данный момент препятствуют их использованию в производственной среде. Они приведены в документе "vSphere Resource Management Guide" на странице 47 внизу. А именно:
vSphere HA - полностью не поддерживается для машин с включенными vPMEM устройствами, вне зависимости от режима использования.
vSphere DRS - полностью не поддерживается для машин с включенными vPMEM устройствами (машины не включаются в рекомендации и не мигрируют через vMotion), вне зависимости от режима использования.
Миграция vMotion для машин с устройствами vPMEM / vPMEM-aware доступна только на хосты с устройствами PMEM.
Миграция vMotion машин с устройством vPMEMDISK возможна на хост без устройства PMEM.
Будем надеяться, что эта ситуация в будущем изменится.
Таги: VMware, vSphere, Memory, PMEM, Intel, VMachines, HA, DRS
Многие администраторы VMware vSphere весьма консервативны и подолгу не обновляют версию платформы виртуализации, даже когда есть деньги на продление поддержки. Отчасти это верная стратегия - VMware так часто пропускает серьезные баги в мажорных релизах, что многие ждут пока обновление "настоится".
Но долго ждать тоже не стоит, так как можно недополучить преимущества новых версий. Например, всегда от релиза к релизу у платформы vSphere растет производительность в различных аспектах. В частности, давайте посмотрим, как выросла производительность технологии миграции хранилищ Storage DRS в VMware vSphere 6.7 по сравнению с версией 6.5.
VMware провела тестирование двух версий платформы и посмотрела, как быстро происходит генерация рекомендаций DRS в разрезе следующих операций в кластере:
CreateVM
CloneVM
ReconfigureVM (добавление дополнительного диска)
RelocateVM (перемещение на другой датастор)
Datastore Enter Maintenance (перевод датастора в режим обслуживания)
При одновременном исполнении в кластере множества данных задач одновременно имеет значение своевременное формирование рекомендаций (куда поместить ВМ, куда ее клонировать и т.п.). По итогам тестирования были получены следующие результаты (столбики показывают процент улучшения по времени для 5 одновременных исполняемых операций):
Для 16 одновременных операций:
Отдельно представлен график для операций Datastore Enter Maintenance:
Все это приводит к увеличению скорости развертывания и миграции виртуальных машин и их VMDK-дисков в больших инфраструктурах, где в этом участвует механизм SDRS (генерация рекомендаций по размещению виртуальных машин).
Напомним, что сервис DRS Dump Insight - это портал самообслуживания, куда пользователи могут загружать файлы дампов DRS. После этого будет выведена информация об операциях по перемещению виртуальных машин, которые рекомендует выполнить механизм балансировки нагрузки DRS:
Плагин DRS Dump Insight в вашем vCSA позволит ответить на следующие вопросы:
Где взять список всех рекомендаций DRS?
Почему DRS выдал конкретную рекомендацию (улучшить баланс по CPU, по памяти и т.п.)?
Почему DRS не вырабатывает рекомендации по балансировке кластера?
Как созданное пользователем правило affinity/anti-affinity влияет на балансировку ресурсов в кластере?
Если применить некоторую политику в кластере, как изменится балансировка ресурсов DRS?
При установке DRS Dump Insight H5 Plugin нужно выполнить следующие действия:
Проверить версию vCenter Server Appliance - подходит только 6.5 и 6.7.
Положить пакет с плагином в папку /usr/lib/vmware-vsphere-ui/plugin-packages/ на сервере vCSA.
Добавить настройку CompressDrmdumpFiles со значением "0" в advanced options кластера.
Перезапустить службу графического интерфейса vsphere-ui командами:
service-control --stop vsphere-ui
service-control --start vsphere-ui
После установки на вкладке Monitor для каждого кластера вы увидите раздел "DRS Dump Insight".
Загрузить DRS Dump Insight H5 Plugin можно по этой ссылке (в комбо-боксе выберите версию для своего vCenter).
На сайте проекта VMware Labs появилась очередная утилита DRS Entitlement Viewer, которую давным-давно ожидали пользователи еще с третьей версии ESX Server. Это средство позволяет визуализовать иерархию пулов ресурсов, в которой для каждого пула показаны выделенные ему ресурсы процессора и памяти:
Кроме этого, как вы видите на картинке, также показываются и ресурсы, выделенные всем виртуальным машинам кластера VMware DRS. Эти параметры вычисляются и отображаются на основе фактически потребляемых машинами и пулами ресурсов, а также параметров reservation, limit и shares.
Помимо этого, утилита DRS Entitlement Viewer поддерживает 3 сценария "что если" (What-If):
Изменение настроек reservation, limit и shares для ВМ и/или пула ресурсов.
Что если ВМ будет потреблять столько ресурсов, сколько сможет (то есть нагружена на 100%).
Сочетание обоих предыдущих сценариев.
После применения этих сценариев пользователь сможет увидеть новую картину, которая не повлияет на реальные настройки кластера DRS.
И самое полезное - результат what-if моделирования можно выгрузить в виде консольной команды PowerCLI, которую можно затем применить в реальном окружении VMware vSphere, чтобы получить смоделированную конфигурацию кластера DRS.
Скачать DRS Entitlement Viewer можно по этой ссылке. Работает это как плагин к клиенту vSphere Client на базе технологии HTML5. Для запуска плагина вам потребуется vCenter Server Appliance версии 6.5 или 6.7.
Установить плагин просто:
Распаковываем архив дистрибутива в папку /usr/lib/vmware-vsphere-ui/plugin-packages/.
Добавляем следующие расширенные настройки (Advanced Settings) в кластер HA/DRS:
CompressDrmdumpFiles = 0
DrmdumpResActions = 1
Перезапускаем службу командами:
service-control --stop vsphere-ui
service-control --start vsphere-ui
После этого вы увидите раздел "DRS entitlements" на вкладке "Monitor" для каждого кластера.
На днях компания VMware обновила пару своих утилит на сайте проекта VMware Labs, которые могут оказаться вам полезными.
Во-первых, решение VMware vCenter VM Mobility, о котором мы писали вот тут, обновилось до версии 1.5. Напомним, что это средство позволяет через интерфейс командной строки (CLI) перенести машину между серверами vCenter, которые связаны в режиме Linked Mode или размещены независимо друг от друга. Надо отметить, что в режиме Linked Mode и так можно перемещать виртуальную машину между датацентрами, поэтому полезна утилита именно для несоединенных vCenter.
Давайте посмотрим, что нового появилось в версиях vCenter VM Mobility 1.2-1.5:
Добавлена возможность выбрать папку ВМ в месте назначения, а также storage pod (для механизма storage drs).
Поддержка соединения на сайте назначения, чтобы не прервалась задача перемещения ВМ.
Пофикшен баг, когда при миграции нескольких виртуальных машин с одной виртуальной сетью назначения мигрировалась только одна.
Поддержка передачи пароля в качестве аргумента для автоматизации задач клонирования и перемещения ВМ между датацентрами.
Скачать VMware vCenter VM Mobility 1.5 можно по этой ссылке. Напомним, что утилитой лучше не пользоваться для миграции связанных клонов ВМ (linked clones).
Вторая обновившаяся утилита - это DRS Lens, про которую мы рассказывали вот тут. Она позволяет администраторам виртуальных инфраструктур получить больше информации о работе механизма балансировки нагрузки на хост-серверы VMware vSphere DRS.
На днях вышла версия DRS Lens версии 1.2. Приведем ниже новые возможности утилиты версий 1.1-1.2:
Добавлена поддержка архивирования старых данных мониторинга.
Добавлена страница общей информации для vCenter, чтобы получать информацию о кластерах и архивах.
Улучшения пользовательского интерфейса.
Добавлена совместимость процесса логина с vCenter 5.5.
Дункан Эппинг написал интересную заметку о максимальных настройках виртуальных машин, защищенных средствами кластера непрерывной доступности VMware Fault Tolerance.
Некоторые из вас знают, что у Fault Tolerance есть ограничения как по числу одновременно защищенных виртуальных машин на хосте, так и по числу виртуальных процессоров (vCPU) на один хост ESXi. Напомним, что эти ограничения были улучшены в VMware vSphere 6.0, теперь можно с помощью FT защищать машины с четырьмя vCPU, а всего таких машин может быть до четырех штук. Но при этом заявлено, что для FT не может быть более 8 vCPU на хосте (то есть 4 машины по 4 vCPU в каждой поддерживать не получиться).
Но это, оказывается, только в дефолтной конфигурации. Для регулирования этих параметров есть две расширенные настройки (Advanced Settings) кластера HA/DRS:
das.maxftvmsperhost - максимальное число защищенных ВМ на хост (4).
das.maxFtVCpusPerHost - максимальное число защищенных vCPU на хост (8).
Они по умолчанию равны значениям, описанным выше, но вы можете выставить свои значения - и это будет работать. Тогда откуда они взялись? Очень просто - инженеры взяли типовые нагрузки, посадили их на адаптер 10G и получили, что хост потянет где-то 8 vCPU для Fault Tolerance (4 машины по 2 vCPU). Это условие выполняется при старте машин пользователем, миграциях vMotion, а также механизмом DRS при расчете рекомендаций.
Но у вас своя инфраструктура (может уже и адаптеры 40 Gbps), поэтому вы можете использовать какие захотите разумные значения. Кстати, если вы поставите значение 0, то кластер VMware DRS будет полностью игнорировать данное требование к числу FT-машин на хост.
Но помните, что со стороны VMware превышение указанных значений не будет официально поддерживаемой конфигурацией.
Многие из вас хотя бы раз задумывались о том, сколько виртуальных машин должно в среднем приходиться на один хост, а кроме того, в частности, сколько виртуальных процессоров (vCPU) могут исполняться на физических процессорах (pCPU) хост-сервера VMware ESXi.
На этот счет системные архитекторы часто дают следующие рекомендации (в соответствии с критичностью нагрузок в кластере):
Это общие рекомендации и, конечно же, не железные правила - отталкиваться нужно от имеющегося оборудования и характера нагрузок в виртуальных машинах.
Для того, чтобы регулировать это соотношение со стороны кластера балансировки нагрузки VMware DRS есть 2 специальные расширенные настройки:
MaxVcpusPerClusterPct - регулирует соотношение vCPU/pCPU на уровне всего кластера, не привязываясь к конкретным хостам ESXi (то есть сумма vCPU всех машин делится на сумму pCPU всех хостов).
MaxVCPUsPerCore - регулирует соотношение vCPU/pCPU на уровне каждого из хостов ESXi, то есть ни на одном из них это соотношение не может быть превышено.
Указываются эти расширенные настройки в разделе Configuration Parameters в vSphere Web Client при настройке DRS-кластера:
Но самое интересное - это то, что в vSpher Web Client эта настройка есть в GUI и регулирует параметр MaxVcpusPerClusterPct на уровне всего кластера (можно задать процент от 0 до 500, но разумно задавать значения от 100 до 500, если задать 500 - число vCPU может быть больше pCPU в пять раз):
А вот в vSphere Client - эта настройка уже MaxVCPUsPerCore, то есть задание CPU Overcommitment на уровне каждого из хостов ESXi, о чем и написано в интерфейсе:
Кстати, выставить эту настройку можно в диапазоне от 0 до 32.
Таги: VMware, DRS, Blogs, Web Client, Client, vSphere
Как вы знаете, механизм динамической балансировки нагрузки VMware DRS используется для того, чтобы в условиях неравномерной нагрузки на хост-серверы VMware ESXi выравнивать ее за счет дачи рекомендаций по миграции виртуальных машин средствами vMotion на другие хосты, либо автоматического выполнения этих рекомендаций.
Давайте посмотрим как Distributed Resource Scheduler работает с оперативной памятью. В кластере DRS есть такая настройка "Memory Metric for Load Balancing", которая отключена по умолчанию, и если почитать к ней описание, то становится понятно, что DRS по умолчанию руководствуется параметром Active memory для балансировки.
У машины есть три основных параметра памяти, учитываемых DRS - это Active, Consumed и Configured Memory:
Configured - это память, указанная в настройках виртуальной машины, то есть ее максимальное значение.
Consumed - это память, которая использовалась виртуальной машиной с момента ее загрузки (а вы знаете, что при загрузке операционная система обращается к большему объему памяти, чем затем ее использует).
Active - это активные страницы памяти (RAM), которые сейчас используются гостевой ОС.
На картинке ниже показан пример - у машины 16 ГБ памяти, при этом при загрузке она наинициализировала страниц памяти на 12 ГБ, а активно использует только 5734 МБ.
Для того чтобы подчитывать используемую память, планировщик DRS подсчитывает working set из страниц Active Memory и прибавляет к нему 25% от разницы между Consumed и Active (это называется Idle Consumed Memory) на незапланированные резкие изменения нагрузки - и это число использует в своих вычислениях балансировки кластера:
В данном случае будет использоваться значение 5734+0,25*(12288-5734) = 7372,5 МБ (на картинке 7373 МБ). Кстати, это еще не все - к машине с памятью в 16 ГБ прибавляются накладные расходы (Overhead) в размере 90 МБ, поэтому DRS в своих вычислениях будет использовать значение 7373+90 = 7463 МБ.
Если же включить настройку DRS-кластера, упомянутую выше, то DRS в своих вычислениях будет использовать Consumed Memory и также прибавлять Memory Overhead:
В обновлении vSphere 6.5 update 1d клиент позволяет вам просматривать как метрику Active Memory, так и Consumed Memory.
Вот так выглядит картинка для сбалансированного кластера DRS (рекомендаций и ошибок нет):
Кстати, если вы посмотрите на Active Memory сбалансированного кластера, то там вполне может быть дисбаланс:
В этом нет ничего страшного, так как машины используют менее 20% active memory от памяти хоста, всем памяти хватает, и DRS решает, что балансировать машины в таком случае - это только тратить ресурсы CPU и сети на vMotion.
Переключимся теперь на Consumed memory:
Тут мы видим большой дисбаланс и разница между хостами более 20% от значений Consumed memory на них. Поэтому если мы включим настройку "Memory Metric for Load Balancing", то кластер DRS начнет работу по миграции виртуальных машин между хост-серверами. Итогом будет вот такая картина:
Вывод тут вот какой. Если у вас кластер работает без оверкомита (non-overcommitted) и есть большой запас по RAM на хостах, то, возможно, вам и следует поставить настройку "Memory Metric for Load Balancing", чтобы DRS балансировал хосты по consumed memory, а сами рекомендации по миграциям, например, можно применять в ручном режиме, чтобы контролировать ситуацию.
Это Часть 2 в серии о Storage DRS. Часть 1 «Как конфигурировать Storage DRS кластеры с PowerCLI – Часть 1» находится здесь. Часть 3 «Как конфигурировать SDRS Anti-Affinity правила с PowerCLI – Часть 3» и может быть даже Часть 4 «Как просмотреть историю операций SDRS кластеров с PowerCLI – Часть 4» ожидаются в ближайшем будущем. Следите за новыми публикациями! Эта статья расскажет о 4 новых функциях...
Гостевой пост компании ИТ-ГРАД. Виртуальная инфраструктура в облаке гарантирует стабильную производительность, доступность и надежность, однако, чтобы достичь таких результатов, недостаточно мощной аппаратной платформы и качественного программного обеспечения. Когда виртуальных машин очень много, нагрузка на физические хосты может стать неравномерной и для ее ручного контроля требуется слишком много человеческих ресурсов. Корпоративные облачные провайдеры используют такие инструменты балансировки нагрузки, как, например, VMware DRS (Distributed Resource Scheduler).
Зачем нужен DRS
DRS позволяет наиболее эффективно использовать существующие мощности физической инфраструктуры, повысить качество предоставляемых услуг и выполнять миграцию виртуальных машин между хостами без остановки сервиса. В итоге администратору облака проще осуществлять мониторинг работы платформы без необходимости вручную перемещать машины между хостами, так как балансировщик делает это автоматически, выравнивая нагрузку.
Причем процесс автоматического распределения нагрузки работает значительно лучше ручного. Эксперименты показали, что после того как администратор платформы виртуализации распределил нагрузку между хостами в ручном режиме, а затем включил DRS, система нашла еще более эффективную схему размещения виртуальных машин.
Как работает DRS
В отличие от vMotion (перенос виртуальных машин с хоста на хост) для осуществления работы DRS необходимо, чтобы физические хосты были объединены в кластер – именно в его пределах будет осуществляться миграция виртуальных машин для распределения нагрузки без их перезапуска, так, что пользователь не заметит данного процесса.
Администратор отвечает за настройку правил распределения физических ресурсов, например, может закрепить определенные машины за выбранным хостом или исключить сам хост из кластера DRS, а также определяет режим работы.
После этого инструменты DRS начинают постоянный контроль за нагрузкой на хостах. В случае, когда она резко возрастает, часть виртуальных серверов переносится на менее нагруженный хост. DRS может работать в трех режимах: автоматическом, полуавтоматическом и ручном. Если активирован ручной режим, то осуществляется только расчет миграций, в полуавтоматическом администратор получает рекомендацию о переносе и сам принимает решение о его осуществлении, в автоматическом – кластер сам занимается распределением без вмешательсва человека.
Если DRS обнаруживает слишком низкую нагрузку на физическом сервере, она может отключить его питание для экономии электроэнергии и сообщить администратору о неэффективном использовании мощностей виртуальной инфраструктуры.
Эффективное использование мощности – одна из главных задач любого IaaS-провайдера, от этого зависит стоимость и качество предоставляемых облачных услуг.
Метрики для DRS
В своей работе DRS опирается на две метрики, которые позволяют ей определить, сбалансированно ли работает система. Если она видит отклонение от заданного значения в нагрузке одного из хостов, тот считается «несбалансированным» и виртуальные машины с него начинают распределяться по другим узлам кластера. Миграция производится бесшовно и без простоев, работа сервиса не приостанавливается, а пользователь не замечает данного процесса.
Метриками для определения нормальной работы являются загрузка CPU и оперативной памяти. По ним определяется средний уровень и стандартное отклонение от него. Относительно него регулярно осуществляется повторная оценка нагрузки на узлы и выполняется математическое восстановление баланса в случае отклонения. DRS выполняет оценку не только физического хоста, но и виртуальных машин, которые на нем запущены. Это необходимо для определения приоритета перемещения, машины с критическими показателями производительности будут перенесены в первую очередь.
Для вычисления баланса между хостами в кластере используется специальная формула:
На днях компания VMware выпустила утилиту DRS Dump Insight, описание которой доступно на сайте VMware Labs. Это портал самообслуживания, куда пользователи могут загружать файлы дампов DRS. После этого будет выведена информация об операциях по перемещению виртуальных машин, которые рекомендует выполнить механизм балансировки нагрузки DRS :
Утилита DRS Dump Insight позволит ответить на следующие вопросы:
Почему DRS выдал конкретную рекомендацию (улучшить баланс по CPU, по памяти и т.п.)?
Почему DRS не вырабатывает рекомендации по балансировке кластера?
Какие рекомендации DRS выработал для анализа cost/benefit (затраты/выгоды)?
Можно ли получить список вообще всех рекомендаций, выданных DRS?
После того, как вы загрузите файл дампа на портал, вы можете получить детальную информацию о том, через какие промежуточные рекомендации по миграциям механизм DRS прошел, чтобы выработать финальный список.
Вот так выглядит этот отчет (его можно экспортировать в PDF):
Нажав "Show" можно увидеть исходный и целевой хосты ESXi, для которых сформирована рекомендация по перемещению ВМ в данной категории.
Также в утилите доступна аналитика вида "что если?" (what-if analysis), которая позволяет смоделировать следующие ситуации:
Изменение пороговых значений миграции (DRS Migration Threshold).
Удаление правил affinity/anti-affinity rules в кластере.
Изменение расширенных настроек DRS.
Средство DRS Dump Insight будет очень полезно Enterprise-администраторам, ищущим средство для аналитики, тонкого тюнинга DRS и оптимизации миграций vMotion в рамках больших кластеров. Утилита доступна по адресу https://www.drsdumpinsight.vmware.com/.
На сайте проекта VMware Labs появилась очередная заслуживающая внимания утилита DRS Lens, поставляемая в виде виртуального модуля (Virtual Appliance). Она позволяет администраторам виртуальных инфраструктур получить больше информации о работе механизма балансировки нагрузки на хост-серверы VMware vSphere DRS.
Полученная информация располагается на 5 дэшбордах, которые дают представление о различных аспектах DRS.
Summary
Это вкладка с общей информацией. Тут агрегируются данные с других разделов в удобное представление для администратора.
Cluster Balance
Здесь размещен график, показывающий отклонения метрики баланса кластера во временном промежутке, в котором работает DRS. Тут можно определить точки, в которых DRS реагирует на дисбаланс в кластере и перемещает виртуальные машины между хостами.
VM Happiness
На этом дэшборде впервые можно увидеть метрику VM happiness в графическом интерфейсе. Здесь представлена диаграмма, показывающая число ВМ, которые "счастливы" в кластере (то есть работают под нормальной нагрузкой) и число тех, которые "несчастны" (работают в стрессовых условиях при недостатке ресурсов). Пользователь может выбирать отдельные ВМ для просмотра метрик производительности, которые влияют на VM happiness, такие как %CPU ready, memory swapped и т.п.
vMotions
Этот дэшборд предоставляет суммаризованную информацию о миграциях vMotion, которые происходили в кластере по инициативе DRS или пользователя. Для каждого временного периода можно посмотреть разбивку миграций по каждому из этих двух видов. Это не только позволяет наблюдать за количественными показателями работы DRS в миграциях, но и оценить, не делают ли администраторы слишком много миграций vMotion, что влияет на баланс кластера.
Operations
На этом дэшборде можно отслеживать различные операции (задачи на стороне vCenter Server), которые выполнялись с течением времени. Администраторы могут сопоставлять информацию о задачах с этого дэшборда с данными других вкладок.
Все эти вещи позволят более детально ответить на вопрос - а что же именно и когда механизм DRS делает с виртуальными машинами при перемещении между хост-серверами ESXi.
Скачать VMware DRS Lens можно по этой ссылке. После развертывания виртуального модуля утилитой можно пользоваться по следующим адресам:
Все администраторы платформы VMware vSphere знают, что такое параметры Shares и Reservation, но не все понимают, как именно они работают для виртуальных машин и пулов ресурсов. Мы уже затрагивали эту тему для виртуальных машин, не погружаясь в распределение ресурсов между пулами (хотя там все работает точно так же).
Основным источником знаний о Reservation и Shares является документ "Resource Management Guide", однако он большой и нудный, а на днях VMware выпустила более простую версию, сфокусированную на управлении кластером DRS с точки зрения резерваций и шар - "DRS Cluster Management with Reservation and Shares".
Именно из этого документа лучше узнать, как работают Shares (распределение ресурсов) и Reservations (гарантирование ресурсов) в рамках отдельных виртуальных машин, пулов ресурсов в рамках кластера DRS с учетом возможности заимствования ресурсов из родительского пула (expandable reservation).
Конечно же, если вы администратор платформы VMware vSphere, то вы должны были разобраться с этим всем еще в самом начале, но если какие-то аспекты работы механизмов гарантирования и распределения ресурсов вам остались непонятными, обязательно пробегитесь по документу "DRS Cluster Management with Reservation and Shares".
Даже для опытных администраторов VMware vSphere понимание всех аспектов работы механизма DRS является непростой задачей. Чтобы облегчить понимание действующих правил DRS (affinity и anti-affinity) в кластере для отдельных виртуальных машин, а также на уровне всего датацентра, сотрудники VMware на сайте проекта Labs выпустили очередную утилиту Cluster Rules Manager (CRM).
С помощью CRM, построенного на базе модуля с веб-интерфейсом для Apache Tomcat, можно делать следующие вещи:
Аудит правил anti-affinity (несуществования ВМ на одном хосте) по всем машинам в рамках vCenter Server.
Импорт правил DRS affinity сразу из нескольких серверов vCenter.
Экспорт правил DRS affinity в новый vCenter.
Отчет о всех действующих правилах DRS с подробными параметрами в реальном времени, содержащий различные интеллектуальные метрики. Его можно сделать на уровне всего vCenter, виртуальных датацентров или кластеров. Отчет можно экспортировать и сохранить на диске.
Отчет об ассоциированных с виртуальными машинами правилах. Этот отчет также можно сделать на уровне всего vCenter, виртуальных датацентров, кластеров или отдельных ВМ.
Возможность соединиться с другим сервером vCenter прямо из интерфейса.
Многие из вас читали, что в новой версии VMware vSphere 6.5 появилась экспериментальная поддержка механизма Predictive DRS, который проактивно предпринимает действия по выравниванию нагрузки виртуальных машин на хосты ESXi, еще до того, как эта нагрузка придет.
Посмотрим как раньше работал VMware Distributed Resource Scheduler (DRS):
Работал он реактивно (Reactive) - то есть, когда нагрузка пошла, только тогда включался механизм ее выравнивания. При этом пользователи во время этого процесса могут испытывать неудобства из-за миграций vMotion между хостами и, собственно, самой резко растущей нагрузки (например, весь отдел вернулся с обеда). В этом случае происходит миграция только необходимого числа машин, чтобы выровнять основные показатели нагрузки.
Поэтому появился сбалансированный метод (Balanced). В этом случае DRS старается поддерживать баланс по нагрузке на хосты кластера (или даже между кластерами), чтобы не было перекосов в ту или другую сторону. Работает этот метод совместно с продуктом vRealize Operations (vROps), который собирает метрики с хостов и старается поддерживать баланс в виртуальном датацентре:
Этот алгоритм пытается сгладить углы резко изменяющейся нагрузки, но требует серьезных вычислений на стороне vROps и, как мы видим из картинки, не дает никаких гарантий.
Поэтому в VMware решили применить другой подход - Predictive DRS. Суть этого метода проста - компонент vROps ежедневно собирает сотни различных метрик со всех объектов виртуального датацентра (хосты, ВМ, хранилища). Эти метрики "обучают" механизм vROps, который каждую ночь анализирует данные о производительности хостов и формирует так называемые Dynamic Thresholds:
Predictive DRS производит очень сложный анализ на основе 10 различных алгоритмов и формирует коридор производительности "нормального" поведения виртуальных машин (обозначен на картинке серым). Границы этого коридора и есть Dynamic Thresholds, при выходе за границы которых в данное время, поведение в кластере считается аномальным. Работает этот механизм на уровне каждой виртуальной машины.
И тут самое интересное - Predictive DRS позволяет заранее понять, что на таких-то хостах виртуальные машины будут биться за ресурсы через некоторое время, и проактивно начинает мигрировать виртуальные машины, готовясь к ситуации изменения нагрузки:
То есть, синяя линия - это то, как будет (а точнее, как обычно было раньше - ведь так, скорее всего, будет и сегодня), а вот красная линия - это то, что подается на вход обычного DRS, чтобы он заранее начинал действия по подготовке ко всплеску нагрузки, который произойдет через некоторое время (например, бухгалтерия придет к 9-00 и будет включать свои виртуальные десктопы). В этот момент их, например, можно поддержать простаивающими хостами ESXi, где хостятся десктопы ленивых менеджеров, приходящих к 11 утра.
Ну а какой метод нужно использовать? VMware рекомендует использовать все три, в зависимости от ситуации:
Ну и отметим, что этот функционал доступен только в рамках решения vRealize Operations, о котором также можно почитать вот тут.
Многие администраторы VMware vSphere бояться отключать механизм балансировки нагрузки VMware DRS из-за того, что после отключения DRS потеряется иерархия пулов ресурсов, которая была рассчитана и выстроена.
Не стоит этого бояться, ведь при снятии с кластера галочки DRS в vSphere Web Client вас спросят, нужно ли сохранить иерархию ресурсных пулов (снапшот), которая может быть восстановлена, когда вы снова включите DRS:
Сохраняем ее в файл:
Если вы нажмете правой кнопкой на кластере в Web Client, вы увидите загрееный пункт "Restore Resource Pool Tree" в меню "All vCenter Actions":
Этот пункт неактивен, так как у вас в кластере DRS отключен. Включите его и вы сможете выбрать созданный при бэкапе файл с конфигурацией дерева пулов ресурсов и восстановить его.
Все довольно просто. Если, все-таки, что-то осталось непонятным - обратитесь к KB 2032893 или посмотрите вот это обучающее видео от VMware: