динамическая миграция виртуальной машины KVM завершилась с TCP-соединением в Ubuntu - PullRequest
0 голосов
/ 28 марта 2019

Я установил 2 хоста Ubuntu 18.04 64 и установил пакет virt-manager.
Создайте одну виртуальную машину на хосте A.
Настройте хост A как сервер NFS (экспортировал его / var / lib / libvirt / images на хост B).

На хосте B настройте /etc/libvirt/libvirtd.conf для прослушивания TCP следующим образом:
listen_tcp = 1

После этого выполните команду на хосте A для переноса виртуальной машины на хост B следующим образом:

virsh migrate --live --verbose testVM qemu+ssh://hostB_ip/system  

Это показало эту ошибку,

error: unable to connect to server at 'hostB:49152': Connection refused

Затем на хосте B в /etc/libvirt/libvirtd.conf я добавил

tcp_port = "49152"

И перезапустите службу libvirtd, попробуйте снова выполнить живую миграцию, теперь ошибка меняется на

error: unable to connect to server at 'hostB:49153': Connection refused

Я не знаю, как решить проблему.

1 Ответ

0 голосов
/ 29 марта 2019

Вы смешиваете два разных соединения.

Параметр libvirtd.conf относится к IP-адресу, который прослушивает демон libvirtd. По умолчанию это 16514 для соединений TLS, 16509 для простых соединений TCP и включается путем передачи флага --listen в libvirtd.

.

Учитывая, что ваш URI указывает протокол qemu+ssh://, вам не нужно libvirtd для прослушивания любого сетевого порта. Соединение libvirtd будет туннелироваться через соединение SSH с использованием netcat.

Ошибка, которую вы можете получить, на самом деле исходит от самого QEMU. Когда libvirt запускает миграцию, она должна выделить порт для QEMU узла назначения, чтобы принять входящую миграцию из QEMU узла источника. Они выделяются из диапазона 49152 -> 49252.

Учитывая, что сообщение от исходного QEMU о том, что он не может подключиться к целевому QEMU, наиболее вероятной проблемой является то, что у вас есть правила брандмауэра, блокирующие порты TCP 49152 -> 49252.

Вы можете открыть брандмауэр, чтобы разрешить эти порты. В качестве альтернативы вы можете указать libvirt туннелировать поток данных миграции QEMU через соединение libvirtd, что устраняет необходимость в открытых портах. Это можно сделать с помощью --tunnelled arg до virsh migrate

Также помните, что ваши настройки хранилища не поддерживаются libvirt. Нельзя, чтобы один хост обращался к хранилищу как к локальной файловой системе, а другой хост обращался к хранилищу как к файловой системе NFS. Это приведет к разрешению проблем, которые могут привести к сбою миграции в конце.

Либо оба хоста должны обращаться к образу через NFS, либо ни один из хостов не должен использовать NFS. Если вы не используете NFS, вы можете передать аргументы в virsh migrate, чтобы указать ему копировать содержимое файла хранилища.

...