Openstack: какая разница между новой миграцией и новой эвакуацией?
На свободе я искал способ "очистить" гипервизор от всех его виртуальных машин. В документации клиента nova я нашел следующие команды, связанные с этим:
nova evacuate: эвакуировать сервер с неисправного хоста.
Новая миграция: миграция сервера. Новый хост будет выбран планировщиком
- nova live-igration: миграция работающего сервера на новую машину.
а также:
nova host-evacuate: эвакуировать все экземпляры с неисправного хоста.
nova host-evacuate-live: Прямая миграция всех экземпляров указанного хоста на другие доступные хосты.
nova host-servers-migrate: перенос всех экземпляров указанного хоста на другие доступные хосты.
Я могу использовать команды из первой группы для перемещения серверов (или виртуальных машин) один за другим, с одного гипервизора на другой. Аналогичным образом, используя команду из второй группы с гипервизором в качестве цели, все его серверы перемещаются к другим гипервизорам. И тут приходит путаница.
В чем разница между командами "migrate" и "evacuate" (помимо немного отличающихся аргументов) при использовании с работающим гипервизором?
Они делают то же самое, или они разные, и я что-то упустил? Должен ли один использоваться в одних случаях, а другой в других? Даже в глоссарии говорится:
- миграция: процесс перемещения экземпляра виртуальной машины с одного хоста на другой.
- эвакуация: процесс миграции одного или всех экземпляров виртуальных машин (ВМ) с одного хоста на другой, совместимый как с динамической миграцией общего хранилища, так и с миграцией блоков.
Итак, должно быть похоже. Но тогда почему оба существуют?
1 ответ
Справка nova немного сбивает с толку, так как она часто использует слово "сервер", где на самом деле подразумевается "экземпляр", и "хост", где подразумевается "вычислительный узел". Терминология OpenStack изменилась за всю его историю, и некоторые из используемых здесь терминов являются историческими старыми терминами.
Поэтому я немного поэкспериментировал, чтобы выяснить, что на самом деле делают эти команды. Я придумал:
Команды, которые работают на неисправных вычислительных узлах:
nova evacuate
перезапускает один экземпляр, который работал на выключенном вычислительном узле. По умолчанию OpenStack выбирает, какие вычислительные узлы получат экземпляр, но вычислительный узел можно выбрать с помощью--target-host
,nova host-evacuate
перезапускает все экземпляры, которые работали на отключенном вычислительном узле. По умолчанию OpenStack выбирает, какие вычислительные узлы будут получать экземпляры, но вычислительный узел можно выбрать с помощью--target-host
,В любом случае эвакуация завершается неудачей, если вычислительный узел действительно работает.
Команды, которые работают на работающих вычислительных узлах:
nova host-evacuate-live
пытается выполнить живую миграцию всех экземпляров, запущенных на вычислительном узле, на другие вычислительные узлы. По умолчанию OpenStack выбирает, какие вычислительные узлы будут получать экземпляры, но вычислительный узел можно выбрать с помощью--target-host
,nova host-servers-migrate
переносит остановленные экземпляры с вычислительного узла. OpenStack выбирает, какие вычислительные узлы будут получать экземпляры.nova live-migration
Live мигрирует один экземпляр на вычислительном узле. По умолчанию OpenStack выбирает, какие вычислительные узлы будут получать экземпляры, но вычислительный узел можно выбрать с помощью--target-host
,nova migrate
переносит остановленный экземпляр с вычислительного узла. OpenStack выбирает, какой вычислительный узел получит экземпляр.
Документация Red Hat по OpenStack содержит немного лучшее объяснение эвакуации и различий между этими командами, чем документация вышестоящего уровня.