Невозможно выполнить динамическую миграцию KVM при нагрузке на приложение cassandra в нем с помощью инструмента стресса cassandra с узла diff.

Я могу выполнить динамическую миграцию KVM с одного узла на другой, когда он находится в рабочем режиме. Но когда я пытаюсь перенести его в режиме реального времени при нагрузке с другого узла с помощью инструмента стресса Cassandra на текущий хост-узел Cassandra. Это приводит к сбою со следующим отображением.

Как я могу это исправить?

Unable to migrate guest: operation failed: domain is no longer running
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/asyncjob.py", line 90, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "/usr/share/virt-manager/virtManager/migrate.py", line 438, in _async_migrate  meter=meter)
File "/usr/share/virt-manager/virtManager/domain.py", line 1488, in migrate
    self._backend.migrate(libvirt_destconn, flags, None, interface, 0)

File "/usr/lib/python2.7/dist-packages/libvirt.py", line 1535, in migrate
    if ret is None:raise libvirtError('virDomainMigrate() failed', dom=self)
libvirtError: operation failed: domain is no longer running

person Naresh K    schedule 11.12.2016    source источник


Ответы (1)


Динамическая миграция должна копировать все страницы гостевой памяти с исходного хоста на конечный хост. Время, затрачиваемое на это, зависит от доступной пропускной способности сети и, в меньшей степени, от производительности процессора (если libvirt шифрует данные миграции). Во время этого копирования гость все еще может изменять свою память, поэтому одни и те же страницы памяти необходимо копировать снова и снова. Если гость загрязняет страницы памяти быстрее, чем QEMU может передать их по сети, миграция никогда не будет завершена.

При выполнении интенсивных рабочих нагрузок, таких как Cassandra, вполне вероятно, что миграция не будет завершена. Существует множество опций, которые можно включить, чтобы заставить его работать, но наиболее полезными являются «Автоматическое схождение», которое дросселирует гостевые ЦП, чтобы замедлить скорость загрязнения памяти, и «Пост-копирование», которое немедленно переключает гостя на целевой хост. и выполняет копирование при записи для извлечения страниц из источника.

Посткопирование — это наиболее эффективный способ завершения миграции за ограниченное время, но существует небольшой риск полной потери виртуальной машины, если исходный узел или сеть сломается до завершения посткопирования. Автоконвергенция — хороший второй вариант, если пост-копирование недоступно в вашей версии KVM или если вы не хотите рисковать потерей виртуальной машины при пост-копировании.

Я не думаю, что они доступны в virt-manager, поэтому вам придется инициировать миграцию с помощью virsh, чтобы использовать эти функции.

person DanielB    schedule 15.12.2016
comment
Я тоже пробовал с виршем. Это не сработало. Я заменил стресс на кассандру с программой бесконечного цикла, даже она не мигрировала - person Naresh K; 15.12.2016
comment
Если вы используете virsh migrate --auto-converge или virsh migrate --postcopy --postcopy-after-precopy, это гарантирует завершение миграции. - person DanielB; 21.12.2016
comment
Спасибо, но я хочу живую миграцию для эксперимента - person Naresh K; 24.12.2016
comment
Отличный ответ, спасибо, это тоже помогло мне, особенно дополнительные аргументы в комментариях. - person Flatron; 01.05.2017