Теория и практика Multi-NIC vMotion

Одним из столпов виртуализации является vMotion – живая миграция виртуальных машин между хостов.

95% нагрузок перемещаются без каких-либо последствий, но 5% могут иметь занимательные проблемы – я бы назвал это похмельным синдромом перемещения.

В чём он выражается? Во время миграции вы ощущаете лёгкое отупление как от употребления алкоголя в чуть повышенной дозе, а потом жесточайшие тормоза, длящиеся от пары до пары десятков минут.

vMotion имеет длительную историю, но для меня ключевыми вехами стали версии 5 и 7 (новый функционал релизнули в 7u1). Например, в 5-ке появился целый набор технологий – Mirror [Copy] Driver, Stun During Page Send и Multi-NIC vMotion.

Лучшее доступное описание по архитектуре и настройке читайте в блоге Frank Denneman:

Part 1 – Designing your vMotion network
Part 2 – Multi-NIC vMotion failover order configuration
Part 3 – Multi-NIC vMotion and NetIOC
Part 4 – Choose link aggregation over Multi-NIC vMotion?
Part 5 – 3 reasons why I use a distributed switch for vMotion networks

В 7-ке разработчики озадачились миграцией виртуальных машин с большой нагрузкой и выкатили Monster VM vMotion, о чём подробно можно почитать в документе:

vMotion Innovations in VMware vSphere7.0 U1 .

Теперь вернёмся к причине похмельного синдрома после перемещения – приведу короткую цитату из Sensitive Virtual Machines become impacted by vMotion stun time:

some highly sensitive applications like Database or Banking applications have been known to encounter crash’s or persistent performance impact due to the stun or suspend resume time they experienced as part of the vMotion.

Что же вредного делает этот stun? А он при перемещении ВМ понижает частоту виртуальных процессоров до уровня, когда миграция начинает успевать передавать изменённые страницы памяти с хоста на хост и чем интенсивнее приложение меняет содержимое памяти, тем сильнее приходится прижимать ресурсы процессора. В итоге, мы видим резкий рост очередей на процессор. Пример проблемы на графике: на 20 процессоров две очереди во время миграции составляют по 600 сессий, а потом ~15 минут в районе 300 сессий из-за накопительного эффекта + наложилась борьба за 101% памяти на хосте.

Как сократить время миграции и нивелировать действия stun? Я выбрал старый метод – расширить канал с использованием Multi-NIC vMotion!

У меня есть два сегмента с проблемной миграцией – обычные машины плохо едут по 1 Гбит/с, тяжёлые машины плохо едут по 10 Гбит/с.

Открываем вышеуказанные ссылки плюс статью Multiple-NIC vMotion in vSphere и настраиваем отдельные VMkernel-интерфейсы с сетевыми картами в режиме Active-Standby первый, в режиме Standby-Active второй в политике Teaming and Failover.

У меня ситуация с 10-ками получилась не очень – сетевухи уже 25 Гбит/с, а свитчи всё ещё 10 Гбит/с. Но тяжелые ВМ-ки у меня в 2-узловом кластере, соответственно, интерфейсы под vMotion переключаем на DAC и получаем 2 по 25 Гбит/с.

Результаты

Примечание. Тюнинг vMotion не использовался. Конфигурация железа разная в vSphere 6.7 и в 8.0.

Переход с 6.7 на 7.0 – один канал vMotion на 10 Гбит/с, проверяем улучшения в 7-ке. Миграция ВМ с работающей под высокой нагрузкой системой управления базами данных Oracle DB (20 виртуальных процессоров и 242 гигабайта оперативной памяти) была перемещена за 3 минуты 47 секунд по сравнению с 4 минутами 8 секундами в версии 6.7 – ускорение составило порядка 10%.

Меняем 7-ку на 8-ку, постепенно изменяем конфигурацию сети vMotion:

ВМ СУБД Oracle DB, низкая нагрузка (64 ГБ, 4 vCPU)
Скорость сети, Гбит/с Время миграции, сек Пиковая скорость
10 51 1,2 ГБ/с
25 23 1,8 ГБ/с
2*25 14 2,7 ГБ/с
ВМ СУБД Oracle DB, низкая нагрузка (320 ГБ, 20 vCPU)
Скорость сети, Гбит/с Время миграции, сек Пиковая скорость
2*25 76 5,3ГБ/с
ВМ СУБД Oracle DB, высокая нагрузка (320 ГБ, 20 vCPU)
Скорость сети, Гбит/с Время миграции, сек Пиковая скорость
10 ~51 минута ~1,2 ГБ/с
2*25 61 6,2 ГБ/с

В результате тестов стало ясно, что скорость vMotion растёт практически линейно, если есть что перемещать, – мы получили ускорение до 5 раз при переходе с 10 на 2*25. Для не слишком тяжёлых виртуальных машин не хватает разгона, так как основное время занимают сервисные операции. Если широкого канала хватает для покрытия скорости изменения памяти, то stun не используется и не влияет на время миграции, также мы не видим каких-то особо выраженных пиков по очередям процессора во время начала и конца миграции, да и похмелья у ВМ-ки нет.

Релиз RVTools 4.6.1

Rob de Veij выпустил обновление своей отличной утилиты инвентаризации VMware vSphere — RVTools версии 4.4.1.

В этой версии исправлено:

  • Проблема, требующая, чтобы рабочий каталог был установлен в каталог установки RVTools при использовании сценариев командной строки.
  • Проблема, возникающая, когда при копировании/вставке имени хоста или имени пользователя включался ведущий или завершающий пробел.
  • Проблема, при которой фоновые ошибки не позволяли успешно завершить работу RVTools в неинтерактивном режиме в качестве запланированного задания.
  • Протоколирование ошибок теперь включено по умолчанию для ускорения поиска неисправностей. Ручное переключение на уровень отладки теперь будет запрашиваться только в ситуациях, требующих более подробной информации об устранении неполадок. ПРИМЕЧАНИЕ: Расположение файлов журнала по умолчанию было перенесено в папку AppData/Local/RVTools пользователя.
  • Устранена проблема с повреждением csv-файлов при использовании значений, содержащих двойные кавычки.

Добавлено:

  • Дополнительная программа улучшения продукта для сбора минимальных анонимных телеметрических данных для использования в целях оптимизации пользовательского интерфейса и эффективности RVTools. Дополнительную информацию смотрите на странице “О RVTools”. *При установке можно отказаться.
  • На странице вкладки vHost появились новые столбцы: Compliance Check State, Domain List, Memory Tiering Type.
  • На странице вкладки vHost появились новые столбцы Certificate: Certificate Issuer, Certificate Start, Certificate Expiry, Certificate Status, Certificate Subject.
  • На странице вкладки vInfo новые столбцы: Suspended To Memory, Suspend Interval.
  • На странице vInfo новые столбцы: Overall Cpu Readiness, Active Memory, Fixed Passthru Hot Plug, Op Notification Timeout, VM Failover In Progress.
  • На странице вкладки vInfo новый столбец Customization Info.
  • На странице vInfo новый столбец Guest Detailed Data, который включает – architecture, bitness, buildNumber, cpeString, distroName, distroVersion, familyName, kernelVersion, prettyName.
  • На странице вкладки vHealth: Добавлено предупреждение “Срок действия сертификата истекает через XX дней или уже истек” (настраиваемые XX дней).
  • Свойства Health: Новый флажок для включения/выключения предупреждения об истечении срока действия сертификата и настройки желаемых временных рамок (по умолчанию = 90 дней).

Релиз RVTools 4.4.1

Rob de Veij выпустил обновление своей отличной утилиты инвентаризации VMware vSphere — RVTools версии 4.4.1.

В этой версии используются свежие версии фреймворков, а также есть другие исправления:

  • Теперь для разработки используется Visual Studio 2022, VMware vSphere Management SDK 8.0
  • Log4net обновлен до версии 2.0.15
  • RVToolsPasswordEncryption теперь использует mac-адрес вместо фиксированной строки для шифрования пароля
  • На странице вкладки vInfo появились новые колонки: Total Disk capacity MiB, Folder ID, FT role, Reboot powerOff, EFI Secure boot option и SMBIOS UUID.
  • На вкладке vCPU новый столбец: “Numa Hotadd Exposed” – раскрывается ли виртуальная топология NUMA при включенном горячем добавлении процессора.
  • На странице вкладки vDisk новые колонки: Disk UUID, Sharing mode
  • На всех связанных страницах вкладок VM столбцы тегов перемещены непосредственно перед столбцом “Datacenter”
  • На всех страницах вкладок, связанных с ВМ: Изменен текст всплывающей подсказки VM UUID на “VirtualCenter-specific 128-bit UUID of a virtual machine”
  • На странице вкладки vSource добавлены новые столбцы: Version, Patch level и VI SDK Server
  • На странице вкладки vHealth: /storage/archive исключен для проверки “free disk capacity”, так как раздел /storage/archive может быть заполнен by design 
  • Исправление ошибки на странице вкладки vInfo: колонка “Primary IP Address” не показывала правильное значение
  • Исправление ошибки на странице вкладки vNetwork: определение того, является ли ip-адрес ipv4 или ipv6, не всегда проходило успешно

Релиз RVTools 4.3.2

Rob de Veij выпустил обновление своей отличной утилиты инвентаризации VMware vSphere — RVTools версии 4.3.2.

В этой версии используются свежие версии фреймворков, а также есть другие исправления:

  • используется .NET Framework версии 4.6.2 вместо 4.6.1.
  • используется Newtonsoft.Json версии 13.0.1 вместо 12.0.3.
  • исправлена ошибка: таймаут соединения для огромных сред vSphere.
  • исправлена ошибка: изменена целевая платформа для RVToolsMergeExcelFiles на “Any CPU”, что позволило использовать платформу X64 и избежать исключения System.OutOfMemoryException для огромных сред vSphere.
  • исправлена ошибка: удаленные выходные строки для отладки из RVToolsMergeExcelFiles.

Доступность инструкций процессора в зависимости от версии vHW

Ранее на бложике публиковались две статьи о разном поведении виртуальных машин при разном vHW и EVC

  1. Минимальная рекомендуемая версия vHW
  2. EVC Mode и vHW

Один из участников сообщества VMUG провел анализ доступных инструкций процессора в зависимости от версии виртуального железа с помощью утилиты /proc/cpuinfo. В результат появилась занимательная таблица:
vHW CPU flags Исходник в Google Таблицы.

P.S. Комментарий автора:

После обсуждения CPUID решил проверить зависимость доступных инструкций от vHW, но основной вывод уже был сделан в КВ по процессорным уязвимостям: “безопасной” версией является 9, а тормозить оно перестаёт на 11. Также выяснилось:
1. vHW режет флаги не так сильно, как EVC. Например, на vHW=8 доступны fma и movbe (Haswell), а на vHW=13 доступны xsavec и xsaves (Skylake).
2. Между 13-16 версиями без NVDIMM и гостевой виртуализации нет разницы.

Настройка разрешений на vCenter

Как-то потребовалось мне решить задачу “сосуществования” в рамках vCenter нескольких команд администраторов, обслуживающих свои кластера vSphere.

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

Continue reading “Настройка разрешений на vCenter”

VMware PSC replication

Компонент Single Sign On, выполняющий проверку подлинности, появился в VMware vSphere 5.1. К vSphere 5.5 он стал “адекватнее” и стабильнее.

Его можно было поставить как на отдельный сервер, так и совместить вместе с vCenter Server.

В vSphere 6 этот компонент был объединен с другими сервисами в роли Platform Service Controller.

С тех пор и до vSphere 6.7 (или 6.7 Update 1) рекомендуемой схемой высокодоступного размещения PSC была следующая:

  1. Несколько внешних/отдельных PSC-серверов. Размещать PSC совместно с vCenter и реплицировать данные не некомендовалось.
  2. Требовался балансировщик между PSC и vCenter-серверами (хотя я видел скрипты, переключающие vCenter на резервный psc при недоступности основного).

Наверное, особенно круто было заниматься обновлением этого зоопарка из 4+ систем.

Особенно я прослезился со следующего KB – правила репликации PSC, рассказавшего о том, что репликация происходит в том порядке, в каком ранее добавлялись PSC (если развернули первый, на него нацелили второй, на второй – третий, то и репликация пойдет по такой схеме). Все связи между SSO-службами добавляются и удаляются только вручную.

Попутно узнал, что рекомендуемая топология – c центральным PSC.

Еще несколько KB:

А теперь к хорошим новостям: забудьте все, что только что прочитали 🙂

Начиная с vCenter 6.7 рекомендуемой топологией является встроенный PSC для любой топологии. Вы даже можете сделать vCenter HA (vCenter High Availability) для встроенного PSC, если хотите его защитить.

Ну и к вопросу резервной копии – в v6.7 появился ручной File-Based Backup, позволяющий сделать бэкап системы vCenter+PSC, восстанавливаемой с нуля с помощью этих файлов.

А в v6.7 Update 1 – возможность запуска бэкапа по расписанию.

В общем, администрирование нескольких vCenter-серверов в v6.7 стало значительно легче.

VMFS vs NFS in vSphere

Как-то Diz задал вопрос: “правда ли, что NFS гораздо лучше, чем SCSI для хранилищ в случае одного большого хранилища? Как ситуация изменилась в 6.x?”

Наше путешествие будет включать в себя следующие пункты:

  • SCSI-очереди.
  • А что там с NFS?
  • Решает ли скорость протокола?
  • vSphere 6.x?
  • Рекомендации.

SCSI-очереди

Отлично тема очередей раскрыта тут. Continue reading “VMFS vs NFS in vSphere”

Изменение имени хоста VMware ESXi

Иногда возникают простые задачи, при решении которых возникают странные эффекты.

В нашей организации есть требование именовать все серверы по FQDN имени с указанием суффикса домена.

Но, как обычно, часть работничков на это дело забивает.

При инвентаризации хостов ESXi несколько таких замечаний было обнаружено. Для переименования воспользовались заметкой Changing the name of an ESX or ESXi host (1010821) и подали команды в SSH:

В результате получили esxi-01.domain.local.domain.local ;). Ошибка была простая – указали параметру host имя с суффиксом домена.

Проверить каждый параметр можно одной командой:

Исправить ошибку можно двумя способами – задать fqdn или домен:

PowerCLI – CloneVM

Понадобилось наполнить объект vAPP однотипными клонами одной и той же ВМ.

Клонировать ее вручную показалось трудоемко – изучил возможности PowerCLI и написал себе шпаргалку:

После подключения к vCenter запускаем подобный скрипт:

После запуска данного скрипта у вас появится 67 однотипных клонов виртуальной машины vm01_bi.

Вместо параметра VApp рекомендуется использовать параметр “ResourcePool”