VMotion в деле: мигрируем живую VM между хостами без остановки. Бухгалтеры не заметили
VMware Infrastructure 3 с VMotion и HA стал коммерчески доступным. Запускаем первую живую миграцию у клиента и убеждаем руководство: два хоста с HA - это новый минимум.
VMware Infrastructure 3 с VMotion и High Availability становится коммерчески доступным летом-осенью 2006
Мы долго ждали этого момента. VMotion - функция, которая позволяет перенести работающую виртуальную машину с одного физического хоста на другой, не останавливая её ни на секунду, - была в ESX давно, но для её использования нужен был VirtualCenter, нормальная сеть и SAN. Теперь VMware упаковала всё это в коммерческий пакет VMware Infrastructure 3 с вменяемым лицензированием, и мы наконец включили это у живого клиента.
Как выглядит задача
Клиент - небольшая компания, у которой мы ведём всю инфраструктуру по сопровождению. Два ESX-хоста, vCenter Server, общее хранилище на Fibre Channel SAN - всё по-взрослому. До этого момента VMotion у них не был включён: лицензия была, желания попробовать было, но повода не нашлось. И тут нам понадобилось сделать техническое обслуживание одного из хостов - добавить память. Хост надо остановить. Виртуалки с него - шесть штук, одна из которых 1С с активными пользователями в разгаре рабочего дня.
Раньше тут был бы разговор с заказчиком про окно обслуживания. Теперь решили попробовать иначе.
Что именно происходит при миграции
VMotion - не магия, но очень похоже. Механика такая: vCenter копирует содержимое оперативной памяти виртуальной машины с исходного хоста на целевой. Это происходит итеративно - пока копируется первый «слой», VM продолжает работать и что-то писать в память. Потом vCenter копирует изменения, потом ещё раз - итерации сжимаются. На финальном шаге VM приостанавливается буквально на долю секунды, передаётся управление, и она продолжает работать уже на другом хосте. Диски при этом не переносятся - они на общем SAN-хранилище, доступном обоим хостам.
Ключевые условия для работы VMotion:
- Общее хранилище - оба хоста видят одни и те же датасторы.
- Сеть VMotion - отдельная гигабитная сеть между хостами, выделенная под передачу памяти.
- Процессорная совместимость - хосты должны быть на одного поколения CPU, иначе VM просто не запустится на другом хосте.
- vCenter - без него VMotion не работает, это не функция отдельного ESX.
У клиента всё это было. Запускаем.
Как прошло
В 11 утра, когда бухгалтерия вовсю работает в 1С, мы в vCenter выбрали нужную виртуалку, нажали «Migrate», указали целевой хост. vCenter показал прогресс-бар. Примерно через полторы минуты - всё. VM на другом хосте, работает, сессии активны, пользователи даже не почувствовали.
Мы позвонили ответственному и спросили, не жаловался ли кто-нибудь. «На что жаловаться?» - удивился он. Вот именно.
Оставшиеся пять виртуалок перенеслись примерно за столько же каждая - зависит от объёма занятой памяти. Потом обслуживание хоста, потом - обратно. Итого: плановые работы без единого окна обслуживания.
High Availability: второй хост как страховка
VMotion - это про запланированные переносы. VMware HA в VI3 - про незапланированные. Если физический хост падает, vCenter замечает это через heartbeat и автоматически перезапускает виртуалки на оставшихся хостах кластера. Перезапуск - не живая миграция, VM перезагружается, но это секунды-минуты, а не звонок в службу поддержки в час ночи и ожидание пока приедет администратор.
После того как мы продемонстрировали VMotion, разговор с руководством прошёл проще, чем обычно. Мы обычно долго объясняем, зачем нужен второй хост, - это деньги, которые «ни на что не тратятся». Теперь объяснение было короткое: «Вы только что видели, как мы перенесли 1С между серверами и никто не заметил. HA делает то же самое автоматически, если сервер умрёт». Руководство кивнуло.
Два хоста с HA - это новый минимум для инфраструктуры, где виртуализация используется для чего-то реального. Один хост с виртуалками - это иллюзия надёжности. Хост упал, всё упало, и виртуализация тут вообще ни при чём, только создала дополнительный слой для диагностики.
Что требует внимания
HA работает, но у него есть нюансы, которые надо понимать до включения.
Admission control. vCenter резервирует ресурсы на случай отказа хоста - по умолчанию система не позволит загрузить кластер так, чтобы при отказе одного хоста оставшиеся не смогли поднять все VM. Это правильная механика, но она означает, что нельзя использовать 100% ресурсов обоих хостов одновременно. Надо это учитывать при планировании.
Хранилище. HA не защищает от отказа SAN. Если хранилище недоступно - VM не поднять ни на каком хосте. Это отдельный разговор про избыточность на уровне дисковой подсистемы.
Сеть. vCenter должен видеть оба хоста, хосты должны видеть друг друга. Если Management Network ненадёжная - HA будет работать непредсказуемо.
В нашем случае всё оказалось в порядке - SAN с redundant-путями мы настраивали ещё весной, Management Network отдельная. Так что HA включили без лишних беспокойств.
Итог
VMotion работает именно так, как написано в документации, - это приятно. Не всегда так бывает. Живая миграция занятой виртуалки с пользователями без прерывания сессий - это работает, и это меняет подход к обслуживанию. Плановые работы на хостах больше не требуют окна обслуживания. Это стоит денег на лицензии и второй хост, но цена вопроса оправдана уже на первом таком обслуживании.