我有一个包含 84 个 Openstack Essex 计算节点的集群,其中一个节点大约在 2 小时前决定前往峡湾,上面有 8 个正在运行的实例。
所有实例都在 NFS 共享上的 qcow2 磁盘上运行,因此磁盘映像仍然可用。
nova live-migration
似乎只能将正在运行的实例从一个运行节点迁移到另一个运行节点。
我想要的是将死机实例从死机计算节点“迁移”到任何活动计算节点。实例将重新启动(并且必须在启动时进行 fsck)这一事实并不重要 - 这比完全丢失它们要好。
在我开始考虑使用 virsh 并直接入侵 nova 的 mysql 数据库之前,是否有人知道这种“死亡迁移”的工具或记录程序?
答案1
这是一个老问题,但你可以使用 nova evacuate 命令。将 vm_name 移动到 nova_compute1 节点的示例:
nova evacuate vm_name nova_compute1
nova reboot --hard vm_name
实例将在新节点上启动。
答案2
我从来没有这样做过。我希望这个参考能帮助你恢复实例。
http://docs.openstack.org/essex/openstack-compute/admin/content/nova-disaster-recovery-process.html
答案3
在较新的 openstack 客户端中您可以使用:
openstack server evacuate $SERVER_ID
答案4
只有按照以下步骤操作,Openstack 实例迁移才会成功。
两台主机都需要为用户 nova 建立无密码 ssh 连接。
为此,我们需要在运行命令后使用 ssh-keygen 创建密钥对su nova
# usermod -s /bin/bash nova
# su nova
# ssh-keygen
密钥对将在 /var/lib/nova/.ssh 中生成
#cat <pub_key> >> /var/lib/nova/.ssh/authorized_keys
#echo 'StrictHostKeyChecking no' >> /var/lib/nova/.ssh/config
对第二台主机重复上述步骤。
将公钥(id_rsa.pub)从第一台主机复制到第二台主机,并通过运行以下命令添加到授权密钥中
#cat <pub_key> >> /var/lib/nova/.ssh/authorized_keys
将公钥(id_rsa.pub
)从第二台主机复制到第一台主机,并添加到授权密钥中。授权密钥文件/var/lib/nova/.ssh/
应包含来自两台主机的公钥。然后
# su nova
# ssh nova@otherhost should connect without password.
然后Openstack迁移将会起作用。