Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
A.19.7. migration Fails with error: unables to address
- 症状
- QEMU 客户机代理失败,并显示这个错误消息:
# virsh migrate qemu qemu+tcp://192.168.122.12/system error: Unable to resolve address name_of_host service '49155': Name or service not known
例如,如果目标主机名是newyork
,则错误消息会显示如下:# virsh migrate qemu qemu+tcp://192.168.122.12/system error: Unable to resolve address 'newyork' service '49155': Name or service not known
但是,这个错误看上去有些奇怪,因为我们没有在任何位置使用newyork
主机名。 - 正在调查
- 在迁移过程中,在目标主机上运行的 libvirtd 从地址和端口创建一个 URI,用于接收迁移数据并将其发回源主机上运行的 libvirtd。在这种情况下,目标主机(
192.168.122.12)
的名称被设置为 'newyork'。出于某种原因,在该主机上运行的虚拟机的 libvirtd 无法将名称解析为可以返回并仍然有用的 IP 地址。因此,它会在解析名称时返回 "newyork "主机名希望源 libvirtd 更加成功。如果 DNS 没有被正确配置,或者/etc/hosts
具有与本地回环地址(127.0.0.1
)关联的主机名,则可能会出现此情况。请注意,无法从连接到目标 libvirtd 的地址自动决定用于迁移数据的地址(例如,来自qemu+tcp://192.168.122.12/system
)。这是因为,要与目标 libvirtd 通信,源 libvirtd 可能需要使用与 virsh (可能在独立计算机上运行)类型不同的网络基础架构。 - 解决方案
- 最佳解决方案是正确配置 DNS,以便涉及迁移的所有主机都可以解析所有主机名。如果 DNS 无法配置为执行此操作,则可以手动将用于迁移的每个主机添加到每个主机上的
/etc/hosts
文件中。但是,在动态环境中让这类列表保持一致非常困难。如果主机名不能被任何途径解析,virsh migrate 支持指定迁移主机:# virsh migrate qemu qemu+tcp://192.168.122.12/system tcp://192.168.122.12
目的地 libvirtd 将采用tcp://192.168.122.12
URI,并附加自动生成的端口号。如果这不是理想的情况(例如,由于防火墙配置),可在此命令中指定端口号:# virsh migrate qemu qemu+tcp://192.168.122.12/system tcp://192.168.122.12:12345
另一种选择是使用隧道迁移。隧道的迁移不会为迁移数据创建单独的连接,而是通过用于连接目标 libvirtd 的连接(例如qemu+tcp://192.168.122.12/system
):# virsh migrate qemu qemu+tcp://192.168.122.12/system --p2p --tunnelled