Microstack libvirt 如何启用 TCP 监听模式

问题描述

Microstack 被设置为具有 2 个计算节点的集群。

版本:microstack ussuri 222 latest/beta canonical✓ devmode

但 libvirtd 认只附带套接字。

更改配置文件

/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-reloadsystemctl enable libvirtd-tcp.socket 和最后 systemctl enable libvirtd.socket。在任何和所有微堆栈计算/控制器节点上完成此操作后,重新启动它们,您应该能够在主机之间实时迁移实例。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...