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 содержит немного лучшее объяснение эвакуации и различий между этими командами, чем документация вышестоящего уровня.

Другие вопросы по тегам