nova Evacuate

作用:当一个 node down 掉后,在新的 node 上根据其 DB 中保存的信息重新 build down node 上虚机。这个往往在虚机 HA 方案中用到。它尽可能地将原来的虚机在新的主机上恢复

Permit admins to evacuate a server from a failed host to a new one.:

  • 虚机的配置:从 DB 中获取,包括 image,block,network 等
  • 虚机的数据:如果使用共享存储,则使用共享存储上的虚机数据;如果不使用共享存储,则无法恢复数据
  • 内存状态:无法恢复

因此,HA 方案中,应该尽可能地将虚机的数据文件放在共享存储上,否则,恢复出来的虚机的价值非常有限。

nova host-list
+--------------------+-------------+----------+
| host_name          | service     | zone     |
+--------------------+-------------+----------+
| controller | cert        | internal |
| controller | consoleauth | internal |
| controller | scheduler   | internal |
| controller | conductor   | internal |
| compute1   | compute     | nova     |
| compute2   | compute     | nova     |
| compute3   | compute     | nova     |
+--------------------+-------------+----------+

Nova CLI:usage: nova evacuate [--password <password>] [--on-shared-storage] <server> [<host>]

要求:

(1)必须指定和虚机的 host 不同的 host,否则将报错“The target host can‘t be the same one”。

(2)虚机的host 必须处于不可用状态,否则将报错 “Compute service of compute2 is still in use.”

(3)可以指定新的 admin password,不指定的话,nova 将生成一个随机密码

(4)参数 on-shared-storage 表示虚机的 instance folder 是不是在共享存储上。

主要步骤:

(1)在做完以上各种参数检查后,调用 Conductor 的 方法:

return self.compute_task_api.rebuild_instance(context, instance=instance, new_pass=admin_password, injected_files=None, image_ref=None,

orig_image_ref=None, orig_sys_metadata=None, bdms=None, recreate=True, on_shared_storage=on_shared_storage, host=host)

如果 host 为none 的话,conductor 将调用 scheduler 的方法选择一个 host。

(2)接着调用 nova compute 的 rebuild_instance
方法。该方法从系统(DB)中获取已有的数据,然后根据这些已有的 metadata 重新构造domain。“A ‘rebuild‘
effectively purges all existing data from the system and remakes the VM
with given ‘metadata‘ and ‘personalities‘.”

  • 获取 image_ref,再获取 image meta
  • 获取 network_info 并在新的 host 上构造网络
  • 获取 BlockDeviceMappingList
  • 获取 block_device_info

(3)然后调用 virt driver 的 rebuild 方法,但是 libvirt 没有实现该方法,转而调用 _rebuild_default_impl 方法。该方法:

  • 从 volume 端断开其与原来 host 的连接
  • 调用 driver.spawn 方法构造新的 domain,依次创建 image(如果 on_shared_storage =
    false 的话,则重新下载 image, 构造 instance folder;如果 on_shared_storage = true
    的话,则直接使用共享存储上的 instance folder。这也可见使用共享存储的优势),network 和 domain,并设置
    domain 的状态和之前一致。

(4)在坏了的 host 被重启后,nova-compute 服务调用 _destroy_evacuated_instances 方法来找到 evacuated instances 并将它们删除:

  • 调用 libvirt 找到该 host 上所有 domains,然后在 nova db 中一一查找其状态,过滤出 “deleted” 为 false 的 domains
  • 如果instance.host 不是本机,而且 instance.task_state 不是
    { MIGRATING,RESIZE_MIGRATING,RESIZE_MIGRATED,RESIZE_FINISH} 之一,则删除该
    domain,以及 network,block device 以及 instance folder。

总之,在使用共享存储的情况下,evacuate 出来的新的 domain 除了临时盘上的数据外,它和之前的 domain 的数据是一样的了,但是内存状态除外。

http://www.cnblogs.com/sammyliu/p/4571209.html

时间: 2024-07-28 13:21:13

nova Evacuate的相关文章

Openstack nova组件基本原理总结

1.       nova-compute 在计算节点上运行,负责管理节点上的 instance. OpenStack 对 instance 的操作,最后都是交给 nova-compute 来完成的. nova-compute 与 Hypervisor 一起实现 OpenStack 对 instance 生命周期的管理. --------------------------------------------------------------------------- 2.nova-compu

openstack运维实战系列(十八)nova与ceph结合

1. 背景说明    nova负责虚拟机的生命周期管理,包括创建,删除,重建,开机,关机,重启,快照等,作为openstack的核心,nova负责IaaS中计算重要的职责,其中nova的存储格外重要,默认情况下,nova将instance的数据存放在/var/lib/nova/instances/%UUID目录下,使用本地的存储空间.使用这种方式带来的好处是:简单,易实现,速度快,故障域在一个可控制的范围内.然而,缺点也非常明显:compute出故障,上面的虚拟机down机时间长,没法快速恢复,

nova 命令汇总四 ——计算相关命令

nova 命令汇总四 --计算相关命令 本节叙述一下计算资源相关的命令,重点分为管理计算节点的命令和虚拟机生命周期的管理命令. 管理计算节点的命令: 1. aggregate-add-host 功能: 将计算节点添加到指定的主机集合 用法: nova aggregate-add-host <aggregate> <host> 参数:<aggregate>  聚合的名称或ID:  <host>   添加到指定聚合的主机 2. aggregate-create

opentack学习nova使用:

nova (openstack组件) OpenStack包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块:后者是 Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用.Nova是最核心的,一套虚拟化管理程序,可管理网络和存储. Nova这一组件包含了许多的小组件,其中有API Server (nova-api).Message Queue (rabbit-mq server).Compute Workers (nova-com

《转》OpenStack Live Migration

This post is based assumption that KVM as hypervisor, and Openstack is running in Grizzly on top of RHEL6.4. Openstack VM live migration can have 3 categories: -Block live migration without shared storage -Shared storage based live migration -Volume

openstack高可用环境搭建(一):非高可用环境的搭建

1 方案设计 四节点基本信息: 10.192.44.148 10.192.44.149 10.192.44.150 10.192.44.151 每台设备1个128G的ssd系统盘,4个2T的数据盘 usr:root pwd:9b648 1.1 网络方案 目前先采用单网卡方案,即每台设备使用一个网卡.IP地址即采用目前的地址. 后续将管理网络.存储网络.存储管理网络.虚拟机网络.外部网络分开.目前采用单网卡方式. IP地址列表: Hostname IP(eth0) IP1(备用IP) 隧道IP(e

nova 云主机 evacuate 简单分析

原文链接:http://www.ishenping.com/ArtInfo/3318250.html #故障节点compute=down nova host-evacuate ostack245.bj1.net --target_host=ostack243.bj1.net --on-shared-storage #故障节点compute=up nova host-evacuate-live ostack243.bj1.net --target-host=ostack245.bj1.net 原文

1 张图秒懂 Nova 16 种操作 - 每天5分钟玩转 OpenStack(44)

前面我们讨论了 Instance 的若干操作,有的操作功能比较类似,也有各自的适用场景,现在是时候系统地总结一下了. 如上图所示,我们把对 Instance 的管理按运维工作的场景分为两类:常规操作和故障处理. 常规操作 常规操作中,Launch.Start.Reboot.Shut Off 和 Terminate 都很好理解. 下面几个操作重点回顾一下: Resize通过应用不同的 flavor 调整分配给 instance 的资源. Lock/Unlock可以防止对 instance 的误操作

nova

[email protected]:~$ nova usage: nova [--version] [--debug] [--os-cache] [--timings] [--timeout <seconds>] [--os-auth-token OS_AUTH_TOKEN] [--os-username <auth-user-name>] [--os-password <auth-password>] [--os-tenant-name <auth-tenant