问题描述
Microstack 被设置为具有 2 个计算节点的集群。
版本:microstack ussuri 222 latest/beta canonical✓ devmode
更改配置文件:
/var/snap/microstack/common/libvirt/libvirtd.conf
到
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
LIBVIRTD_ARGS="--listen"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/snap/microstack/common/run/libvirt"
auth_unix_ro = "none"
auth_unix_rw = "none"
auth_tcp = "none"
并重新启动服务没有帮助。如何启用 TCP 侦听以便在此特定 snapd 环境中可以进行远程连接?
错误信息:
virsh -c qemu+tcp://node1/system list
error: Failed to connect to the hypervisor
error: unable to connect to server at 'node1:16509': Connection refused
解决方法
我遇到了同样的问题并最终找到了它。首先,libvirt 最近发生了变化,导致它忽略了 libvirtd.conf reference 中的端口/监听参数。经过一番挖掘,我注意到 /etc/systemd/system/
中没有必要的 .socket 文件。要解决此问题,请复制以下文件:
/snap/microstack/222/usr/lib/systemd/system/libvirtd-tcp.socket
/snap/microstack/222/usr/lib/systemd/system/libvirtd.socket
到/etc/systemd/system/
。接下来,您需要进行一些小的编辑。在 libvirtd.socket 和 libvirtd-tcp.socket 中,您将更改两行:
#Before=libvirtd.service
Before=snap.microstack.libvirtd.service
#Service=libvirtd.service
Service=snap.microstack.libvirtd.service
在 libvirtd-tcp 中
删除或注释行 SocketGroup=libvirt from libvirtd.socket
接下来您将运行 systemctl daemon-reload
、systemctl enable libvirtd-tcp.socket
和最后 systemctl enable libvirtd.socket
。在任何和所有微堆栈计算/控制器节点上完成此操作后,重新启动它们,您应该能够在主机之间实时迁移实例。