迁移实例¶
如果硬件故障或其他错误导致云计算节点失败,您可以迁移实例以使其再次可用。
为了保留服务器磁盘上的用户数据,请在目标主机上配置共享存储。当您迁移实例时,Compute 会检测目标主机上是否可用共享存储。此外,您必须验证当前 VM 主机是否未运行。否则,迁移将失败。
有两种不同的方法可以从失败的计算节点迁移实例。第一种使用 nova evacuate 命令可以用来从失败节点迁移单个实例。在某些情况下,如果该节点托管了许多实例,使用 nova host-evacuate 一次性迁移所有实例可能更容易。
迁移单个实例¶
以下步骤说明了如何从失败的计算节点迁移单个实例。请注意,这些步骤描述了故障后的场景,不应在实例仍然启动并运行时使用。
要查找迁移实例的主机,请列出所有主机
$ openstack host list
迁移实例。您可以使用
--password PWD选项将实例密码传递给该命令。如果您没有指定密码,该命令将在成功完成后生成并打印一个密码。以下命令将从失败的主机迁移服务器到HOST_B。$ nova evacuate EVACUATED_SERVER_NAME HOST_B
该命令将从原始镜像或卷重新构建实例,并返回一个密码。该命令保留原始配置,包括实例 ID、名称、uid、IP 地址等。
+-----------+--------------+ | Property | Value | +-----------+--------------+ | adminPass | kRAJpErnT4xZ | +-----------+--------------+
您可以选择省略
HOST_B参数,让调度器选择新的目标主机。为了保留迁移服务器上的用户磁盘数据,请使用共享文件系统部署 Compute。要配置您的系统,请参阅 配置实时迁移。以下示例不会更改密码。
$ nova evacuate EVACUATED_SERVER_NAME HOST_B --on-shared-storage
注意
从 2.14 compute API 版本开始,不再需要指定
--on-shared-storage即使服务器位于使用共享存储的计算主机上。Compute 服务将自动检测它是否正在运行在共享存储上。
迁移所有实例¶
以下步骤说明了如何从失败的计算节点迁移所有实例。请注意,如果主机仍然有启动并运行的实例,则不应使用此方法。
要查找迁移实例的主机,请列出所有主机
$ openstack host list
将所有实例从
FAILED_HOST迁移到TARGET_HOST$ nova host-evacuate --target_host TARGET_HOST FAILED_HOST
选项
--target_host是可选的,可以省略让调度器决定将实例放置在何处。上述参数
FAILED_HOST也可以是用于搜索的模式,而不是精确的 hypervisor 主机名,但建议使用完全限定域名以确保没有 hypervisor 主机被错误地迁移。只要您没有使用模式,您可能需要使用在版本 10.2.0 中引入的--strict标志,以确保 nova 完全匹配FAILED_HOST。
注意
+------+--------+--------------+
| Name | Status | Task State |
+------+--------+--------------+
| vm_1 | ACTIVE | powering-off |
+------------------------------+
如果实例任务状态不是 None,则可以进行迁移。但是,根据正在进行的操作,可能需要在其他服务中进行清理,例如 neutron、cinder、glance 或存储后端。