Как на самом деле работает миграция работающей виртуальной машины с одного гипервизора на другой в облачной среде?
Я знаю, что это возможно и что такая возможность существует. Но что на самом деле происходит, когда работающая виртуальная машина переносится с одного гипервизора на другой? Мне сложно представить, что это возможно без малейшего перерыва?
Хотя я могу представить, что этого можно было бы каким-то образом достичь, если физически «голое железо» было очень близко, я борюсь со сценарием миграции работающей виртуальной машины, например, из центра обработки данных в США в центр обработки данных в ЕС.
Может ли кто-нибудь объяснить, что на самом деле происходит и как это достигается, чтобы не было заметного простоя, но оставалась согласованность?
Концептуально процесс прост: начните копировать всю оперативную память виртуальной машины с одного физического хоста на другой по сети, отслеживая, какие разделы памяти, которые вы уже скопировали, были обновлены после того, как вы их скопировали. Повторите цикл для измененной ОЗУ, пока набор изменений не станет небольшим, приостановите виртуальную машину, скопируйте последние биты ОЗУ (и состояние регистра ЦП) и начните запуск виртуальной машины на новом физическом хосте. Отправьте бесплатный ARP, чтобы сеть увидела новое местоположение виртуальной машины, и вперед. Это не на 100% прозрачно - между паузой и задержкой ARP виртуальная машина будет отключена примерно на секунду.
Чтобы это работало, скорость ввода-вывода памяти должна быть меньше, чем скорость соединения между хостами (вот почему для VMotion предпочтительнее использовать прямое соединение 10GigE, без маршрутизаторов между хостами) и задержка между хостами. должно быть довольно коротким - VMware требует 5 мс туда и обратно.
Хосты источника и назначения должны иметь одно и то же базовое дисковое хранилище, что обычно ограничивает вас хостами в одной комнате. Вы можете выполнить синхронную репликацию хранилища, чтобы пойти дальше, но обычно это происходит за счет более низкой производительности (поскольку каждая операция с диском должна выполняться на дальнем конце и получать подтверждение).
Существуют способы переноса сервисов на большие расстояния (даже между континентами), но это подходы к переключению, где находится активный экземпляр приложения (и как вы его достигаете), а не к живой миграции самой виртуальной машины.