На свободе я искал способ «очистить» гипервизор от всех его виртуальных машин. На клиентские документы nova, Я нашел следующие команды, связанные с этим:
nova evacuate: эвакуация сервера с отказавшего хоста.
nova migrate: миграция сервера. Новый хост будет выбран планировщиком
nova live-migration: перенос работающего сервера на новый компьютер.
и:
nova host-evacuate: эвакуировать все экземпляры с отказавшего хоста.
nova host-evacuate-live: Live переносит все экземпляры указанного хоста на другие доступные хосты.
nova host-servers-migrate: переносит все экземпляры указанного хоста на другие доступные хосты.
Я могу использовать команды из первой группы для перемещения серверов (также называемых виртуальными машинами) один за другим с одного гипервизора на другой. Аналогичным образом, используя команду из второй группы с гипервизором в качестве цели, все ее серверы перемещаются на другие гипервизоры. И тут возникает путаница.
В чем разница между командами «migrate» и «evacuate» (помимо немного разных аргументов) при использовании с работающим гипервизором?
Они делают одно и то же или внутри они разные, и я что-то упускаю? Следует ли использовать один в одних случаях, а другой - в других? Даже на глоссарий он говорит:
Итак, должно быть похоже. Но тогда почему оба существуют?
Справка 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 немного лучше объяснение эвакуации и разница между этими командами, чем в исходной документации.