По итогам прошедшей конференции Explore 2022 компания VMware анонсировала платформу виртуализации vSphere 8. В прошлой версии платформы в технологии горячей миграции vMotion появилось очень много всего нового (например, вот, тут, тут, тут и тут). В этой версии также были сделаны некоторые улучшения vMotion, давайте на них посмотрим.
vSphere vMotion Notifications
Как вы знаете, переключение с одного процесса ВМ на другой целевого хоста ESXi занимает очень мало времени, и для большинства приложений это незаметно. Однако есть очень небольшое количество приложений, которые не могут пережить малые задержки (latency), поскольку очень интенсивно используют ресурсы CPU и хранилищ. Таких случаев буквально единицы, но VMware решила позаботиться и о них.
Теперь приложения могут быть написаны таким образом, чтобы они могли получить оповещение о предстоящей миграции vMotion и подготовиться к ней. Такие действия могут включать в себя остановку сервисов, заморозку приложения (quiescing), переключение на резервный инстанс в случае кластеризованного приложения, а также выполнение других операций.
Приложение может отложить миграцию vMotion на заданный таймаут, но не может отклонить и остановить ее. Вот как это работает (кликните на картинку для открытия анимации):
Приложение, через механизм VMware Tools, может быть оповещено о начале задачи vMotion. На полученную нотификацию оно реагирует согласно своей логике, после чего отсылает подтверждение платформе ESXi о том, что миграцию можно начинать. Виртуальная машина затем перемещается с помощью vMotion, после чего приложение получает оповещение о завершении миграции, чтобы оно могло также выполнить необходимые шаги, учитывая действия, совершенные на этапе подготовки.
Механизм vMotion Notifications не включен по умолчанию. Чтобы это работало, надо в расширенных настройках виртуальной машины установить параметр vmOpNotificationToAppEnabled:
После этого нужно установить host-level timeout, который будет определять максимальное время, которое есть у виртуальной машины для завершения подготовки к миграции. Для этого нужно через vSphere API установить параметр vmOpNotificationToApp.Timeout со значением большим 0. Значение устанавливается в секундах (то есть, чтобы дать приложению 5 минут, нужно установить значение 300).
Для установки данного параметра используйте ConfigManager API (см. документацию).
Приложение должно использовать утилиту командной строки vmtoolsd пакета VMware Tools для регистрации оповещений. Вот какие команды ему доступны: