ADG Оставить заявку
Блог Инфраструктура 5 мин чтения

Экстренное масштабирование VMware Horizon: с 50 до 200 десктопов за выходные

Добавляем Connection Server, настраиваем Instant Clone пулы, упираемся в лицензии и ресурсы хоста: реальный кейс масштабирования VDI-фермы под COVID-нагрузку.

Контекст момента

VMware Horizon и Citrix Virtual Apps взлетают по спросу: компании экстренно лицензируют VDI для сотрудников на личных устройствах

В пятницу вечером клиент написал в чат: «Руководство говорит, надо перевести ещё 150 человек на VDI к понедельнику. Сейчас у нас 50 десктопов работают нормально, нужно 200». Мы пообещали разобраться к утру воскресенья. Это был оптимизм.

У клиента стоит VMware Horizon 7 на трёх ESXi-хостах с vCenter. Инфраструктура поднималась год назад под небольшой пилот - финансовый отдел, человек пятьдесят. Работало стабильно, никто особо не трогал. И вот теперь карантин, BYOD, личные ноутбуки - и задача на порядок увеличить ёмкость пула за уикенд.

Что было и чего не хватало

Начали с аудита того, что есть. Один Connection Server, один пул Full Clone десктопов, лицензии Horizon Standard на 50 конкурентных пользователей. Full Clone - это когда каждый виртуальный десктоп это полная копия мастер-образа. Быстро разворачивать новые машины так не получится: провизионинг одного Full Clone занимает минут 15-20, а у нас задача поднять 150 новых за разумное время.

Первые три проблемы стали видны сразу:

  • Лицензии. 50 конкурентных пользователей - это жёсткий лимит. Horizon 7 Standard при исчерпании лицензионного пула начинает отказывать новым подключениям. Нужно либо докупать, либо активировать временный лицензионный grace-период (в Horizon он есть - 30 дней для evaluation, но это не производственное решение).
  • Один Connection Server. Для масштабирования и отказоустойчивости нужна реплика. VMware рекомендует минимум два Connection Server в кластере - они работают в режиме active-active, клиент подключается к любому, состояние синхронизируется между ними через LDAP-репликацию.
  • Вычислительные ресурсы. Три ESXi-хоста с текущими Full Clone десктопами уже загружены примерно на 60-65% по RAM. Четыре раза по 50 там физически не помещаются.

Connection Server номер два

Начали с добавления второго Connection Server - это относительно быстро и меняет архитектуру в хорошую сторону независимо от решения по лицензиям и ресурсам.

Установка стандартная: Windows Server 2016 VM, установщик VMware Horizon Connection Server в режиме «Replica» (не Standalone - это важно, иначе поднимется отдельный независимый экземпляр со своей базой). При установке указываешь адрес существующего Connection Server, реплика подхватывает конфигурацию через LDAP. Процесс занял около часа включая настройку балансировщика - клиент использует F5 LTM, там добавили второй член в pool с health-monitor по порту 443.

Один нюанс, который мы поймали: SSL-сертификат. У первого Connection Server стоял корпоративный сертификат, у нового - сначала самоподписанный. Horizon Clients ругаются на несоответствие. Пришлось сразу выпустить сертификат с тем же SAN-именем и установить на реплику. Полчаса потеряли на это, но лучше сразу.

Instant Clone вместо Full Clone

Параллельно начали переход на Instant Clone пулы. Instant Clone - технология VMware, при которой новый десктоп создаётся как «заморозка» родительской VM с последующим fork-ом. Провизионинг занимает секунды, не минуты, что критично когда нужно быстро поднять много машин.

Создали новый Automated Desktop Pool с типом Instant Clone. Мастер-образ взяли тот же, что был для Full Clone пула - Windows 10 с корпоративным ПО. Настройки пула:

  • Provisioning. Минимальный размер - 30 машин (всегда готовы), максимальный - 80 (потолок по ресурсам одного пула).
  • Headroom. 5 машин в состоянии Available поверх текущих подключённых - чтобы пользователи не ждали провизионинга при пиковой нагрузке.
  • Floating assignment. Пользователи не привязаны к конкретной VM - получают любую свободную. Для клиентов, которым важна персистентность данных, есть App Volumes, но это отдельная история.

Провизионинг 80 машин с Instant Clone занял около 8 минут. Для сравнения - 50 Full Clone в своё время разворачивались почти час.

Лицензии: стена

Вот тут приятная техническая часть закончилась. Под 200 пользователей нужно было докупить лицензии Horizon. Связались с партнёром VMware - постоянные лицензии есть, но оформление и активация через My VMware занимает рабочие дни, не часы. Выходные не в счёт.

VMware Horizon поддерживает grace-период при нехватке лицензий - Connection Server выдаёт предупреждение в консоли, но временно разрешает подключения сверх лицензионного лимита. Это не официальный механизм для production, но в кризисной ситуации - рабочий вариант на несколько дней пока оформляется постоянная лицензия. Зафиксировали в тикете, клиент подтвердил понимание ситуации письменно.

Вычислительные ресурсы: упёрлись в железо

Третья проблема оказалась твёрдой. RAM на трёх хостах, считая Instant Clone overhead и balloon memory, не тянет 200 одновременных десктопов с Windows 10. Виртуальные машины для Instant Clone легче Full Clone, но не в разы.

Клиент поднял на выходных четвёртый хост из резерва - он был куплен для расширения кластера, но стоял нераспакованным. Добавили в vCenter, подключили к тому же vDS, включили DRS. Horizon видит ресурсный пул через vCenter, так что новые Instant Clone машины начали размещаться в том числе на четвёртом хосте автоматически.

Итог выходных

К воскресному вечеру: два Connection Server за балансировщиком, два пула (старый Full Clone для тех кто уже работал, новый Instant Clone для новых пользователей), четыре хоста в кластере, 170 машин в пулах. До 200 не дотянули - не хватило RAM даже с четвёртым хостом под полную нагрузку, остановились на 170 как на рабочем максимуме.

Лицензионный вопрос пока висит в grace-режиме, постоянные лицензии оформляются через партнёра - ждём подтверждения активации.

В managed-сопровождении таких «экстренных выходных» за последние две недели у нас уже три. Инфраструктура, которая проектировалась под нормальный режим работы, сейчас проходит стресс-тест, к которому никто не готовился. Хорошо хоть Instant Clone придумали заранее.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.