我设置了2台Ubuntu 18.04 64主机,并安装了virt-manager软件包。
在主机A中创建一个VM。
将主机A配置为NFS服务器(将其/ var / lib / libvirt / images导出到主机B)。
在主机B上,配置/etc/libvirt/libvirtd.conf,以侦听TCP,如下所示,
listen_tcp = 1
如下所示,在主机A中运行命令以将VM迁移到主机B中,
virsh migrate --live --verbose testVM qemu+ssh://hostB_ip/system
它显示了此错误,
error: unable to connect to server at 'hostB:49152': Connection refused
然后,在主机B上,将/p/libvirt/libvirtd.conf添加到
tcp_port = "49152"
并重新启动libvirtd服务,再次尝试实时迁移,现在错误已更改为
error: unable to connect to server at 'hostB:49153': Connection refused
我不知道该如何解决问题。
答案 0 :(得分:0)
您正在混淆两个不同的连接。
libvirtd.conf
设置是指libvirtd
守护程序侦听的IP地址。对于TLS连接,默认为16514
;对于普通TCP连接,默认为16509
;通过将--listen
标志传递到libvirtd
来启用。
尽管您的URI指定了qemu+ssh://
协议,但是您不需要libvirtd
来监听任何网络端口。将使用libvirtd
通过SSH连接建立netcat
连接。
您可能真正遇到的错误来自QEMU本身。 libvirt运行迁移时,它必须为目标主机QEMU分配一个端口,以接受来自源主机QEMU的传入迁移。这些是从49152 -> 49252
范围分配的。
鉴于来自源QEMU的消息表明它无法连接至目标QEMU,最可能的问题是您有防火墙规则阻止了TCP端口49152 -> 49252
。
您可以打开防火墙以允许这些端口。或者,您可以告诉libvirt通过libvirtd连接建立QEMU迁移数据流的隧道,从而避免需要具有开放端口。可以使用--tunnelled
到virsh migrate
的参数
还请注意libvirt不支持您的存储设置。您不能让一台主机作为本地文件系统访问存储,而另一台主机作为NFS文件系统访问存储。这将导致许可问题,可能会导致迁移最终失败。
两个主机都应该通过NFS访问映像,或者两个主机都不应该使用NFS。如果您不使用NFS,则可以将args传递给virsh migrate
来告诉它在存储文件内容之间进行复制。