声明:

本博客欢迎转发,但请保留原作者信息!

新浪微博:@孔令贤HW;

博客地址:http://blog.csdn.net/lynn_kong

内容系本人学习、研究和总结,如有雷同,实属荣幸!

更新记录:

2013.06.24  增加在实际环境中rebuild的操作示例

2013.06.26  后端卷启动的虚拟机,rebuild无效

版本:Grizzly 2013.06.15

hypervisor:KVM

1、概念

rebuild:xp系统的虚拟机用烦了,想换个linux的操作系统,就可以使用rebuild。

evacuate:虚拟机所在的host宕机了,可以使用evacuate将虚拟机在另外一个host上启起来,其实利用这个接口配合host监控工具,可以实现虚拟机的HA能力。

为什么要将这两个一起说呢,是因为在底层,这两个接口其实对应一个操作。

2、rebuild

引用一下官方的API文档说明:

底层的实现,其实就是在虚拟机所在的host上,将原来的虚拟机干掉,然后再根据新的镜像创建一个新的虚拟机,实现虚拟机系统盘的变更,而用户盘的数据是不变的(软件的安装和配置会丢失),虚拟机的网络信息也不变。API里的accessIPv4和accessIPv6参数,在使用Quantum的场景下,是无效的。

目前rebuild仅支持active和stopped状态的虚拟机。而且使用后端卷启动的虚拟机,rebuild之后系统盘不会发生变化,见后面的实验部分。

3、evacuate

引用官方的API文档说明:

该接口使用的前提是虚拟机所在的host宕机。

参数onSharedStorage是让使用者指明,计算节点是否使用共享存储。其实在计算节点是有能力判断是否使用共享存储的(并且计算节点也确实会再进行判断),这里写在接口里,猜测应该是为了在API层做判断吧。

当使用共享存储时,才是真正意义上的HA,虚拟机的软件和数据不会丢失;否则,只有虚拟机的用户盘数据不会丢失,系统盘是全新的系统盘。

上面提到,rebuild和evacuate在底层的实现是一样的。其实想想也是,两个接口都需要重新创建虚拟机,唯一的区别是:

1、rebuild需要多做一步删除虚拟机的操作,而evacuate是直接创建新虚拟机。

2、rebuild使用的镜像是接口指定的新的镜像(可以与老镜像相同),而evacuate使用的是虚拟机原来的镜像。

再次引用下wiki上的evacuate流程图:

但evacuate也有一些不足,比如如果支持系统自动选择主机,用户体验可能会更好;还有,同rebuild一样,目前evacuate仅支持active和stopped状态的虚拟机,其他状态(paused,suspended等)的虚拟机是不支持的,这也就意味着其他状态的虚拟机遇到host故障的时候是无法恢复的。

顺带说一句,目前只有libvirt driver支持rebuild和evacuate。

4、实践

4.1、rebuild

步骤如下:

1、先使用keypaire创建cirros虚拟机,关联floatingip,创建成功后,ssh登录,操作正常。

  1. root@controller231:~# nova show rebuild-test2
  2. +-------------------------------------+----------------------------------------------------------+
  3. | Property                            | Value                                                    |
  4. +-------------------------------------+----------------------------------------------------------+
  5. | status                              | ACTIVE                                                   |
  6. | updated                             | 2013-06-24T08:14:45Z                                     |
  7. | OS-EXT-STS:task_state               | None                                                     |
  8. | OS-EXT-SRV-ATTR:host                | controller231                                            |
  9. | key_name                            | mykey                                                    |
  10. | image                               | cirros (4851d2f2-ef75-4a80-91c6-f0fcbcd7276a)            |
  11. | hostId                              | 083729f2f8f664fffd4cffb8c3e76615d7abc1e11efc993528dd88b9 |
  12. | OS-EXT-STS:vm_state                 | active                                                   |
  13. | OS-EXT-SRV-ATTR:instance_name       | instance-0000000e                                        |
  14. | OS-EXT-SRV-ATTR:hypervisor_hostname | controller231.openstack.org                              |
  15. | flavor                              | m1.small (2)                                             |
  16. | id                                  | 03774415-d9ce-4b34-b012-6891d248b767                     |
  17. | security_groups                     | [{u'name': u'default'}]                                  |
  18. | user_id                             | f882feb345064e7d9392440a0f397c25                         |
  19. | name                                | rebuild-test2                                            |
  20. | created                             | 2013-06-24T08:14:38Z                                     |
  21. | tenant_id                           | 6fbe9263116a4b68818cf1edce16bc4f                         |
  22. | OS-DCF:diskConfig                   | MANUAL                                                   |
  23. | metadata                            | {}                                                       |
  24. | accessIPv4                          |                                                          |
  25. | accessIPv6                          |                                                          |
  26. | testnet01 network                   | 10.1.1.20, 192.150.73.3                                  |
  27. | progress                            | 0                                                        |
  28. | OS-EXT-STS:power_state              | 1                                                        |
  29. | OS-EXT-AZ:availability_zone         | nova                                                     |
  30. | config_drive                        |                                                          |
  31. +-------------------------------------+----------------------------------------------------------+
  1. root@network232:~# ssh -i mykey.pem -l cirros 192.150.73.3
  2. OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
  3. Authenticated to 192.150.73.3 ([192.150.73.3]:22).
  4. $ sudo passwd
  5. Changing password for root
  6. New password:
  7. Retype password:
  8. Password for root changed by root

2、命令行执行rebuild,指定ubuntu镜像,注意此时虚拟机的image已经发生改变:

  1. root@controller231:~# nova rebuild rebuild-test2 1f7f5763-33a1-4282-92b3-53366bf7c695
  2. +-------------------------------------+-------------------------------------------------------------------+
  3. | Property                            | Value                                                             |
  4. +-------------------------------------+-------------------------------------------------------------------+
  5. | status                              | REBUILD                                                           |
  6. | updated                             | 2013-06-24T08:34:47Z                                              |
  7. | OS-EXT-STS:task_state               | rebuilding                                                        |
  8. | OS-EXT-SRV-ATTR:host                | controller231                                                     |
  9. | key_name                            | mykey                                                             |
  10. | image                               | Ubuntu 12.04 cloudimg i386 (1f7f5763-33a1-4282-92b3-53366bf7c695) |
  11. | hostId                              | 083729f2f8f664fffd4cffb8c3e76615d7abc1e11efc993528dd88b9          |
  12. | OS-EXT-STS:vm_state                 | active                                                            |
  13. | OS-EXT-SRV-ATTR:instance_name       | instance-0000000e                                                 |
  14. | OS-EXT-SRV-ATTR:hypervisor_hostname | controller231.openstack.org                                       |
  15. | flavor                              | m1.small (2)                                                      |
  16. | id                                  | 03774415-d9ce-4b34-b012-6891d248b767                              |
  17. | security_groups                     | [{u'name': u'default'}]                                           |
  18. | user_id                             | f882feb345064e7d9392440a0f397c25                                  |
  19. | name                                | rebuild-test2                                                     |
  20. | created                             | 2013-06-24T08:14:38Z                                              |
  21. | tenant_id                           | 6fbe9263116a4b68818cf1edce16bc4f                                  |
  22. | OS-DCF:diskConfig                   | MANUAL                                                            |
  23. | metadata                            | {}                                                                |
  24. | accessIPv4                          |                                                                   |
  25. | accessIPv6                          |                                                                   |
  26. | testnet01 network                   | 10.1.1.20, 192.150.73.3                                           |
  27. | progress                            | 0                                                                 |
  28. | OS-EXT-STS:power_state              | 1                                                                 |
  29. | OS-EXT-AZ:availability_zone         | nova                                                              |
  30. | config_drive                        |                                                                   |
  31. +-------------------------------------+-------------------------------------------------------------------+

3、等待虚拟机状态变为ACTIVE,再次登录虚拟机:

  1. root@network232:~# ssh -i mykey.pem 192.150.73.3
  2. Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-35-virtual i686)
  3. * Documentation:  https://help.ubuntu.com/
  4. System information as of Mon Jun 24 08:47:49 UTC 2013
  5. System load:  0.0               Processes:           60
  6. Usage of /:   2.9% of 19.67GB   Users logged in:     0
  7. Memory usage: 1%                IP address for eth0: 10.1.1.20
  8. Swap usage:   0%
  9. Graph this data and manage this system at https://landscape.canonical.com/
  10. 0 packages can be updated.
  11. 0 updates are security updates.
  12. Get cloud support with Ubuntu Advantage Cloud Guest
  13. http://www.ubuntu.com/business/services/cloud
  14. Last login: Mon Jun 24 08:46:09 2013 from 192.168.82.232
  15. root@rebuild-test2:~#

看到系统盘已经变成Ubuntu系统。

4、后端卷启动的虚拟机,rebuild

比如有一个虚拟机,后端卷启动,后端卷是cirros镜像:

  1. root@controller231:~# nova show kong2
  2. +-------------------------------------+----------------------------------------------------------+
  3. | Property                            | Value                                                    |
  4. +-------------------------------------+----------------------------------------------------------+
  5. | status                              | ACTIVE                                                   |
  6. | updated                             | 2013-06-26T10:01:29Z                                     |
  7. | OS-EXT-STS:task_state               | None                                                     |
  8. | OS-EXT-SRV-ATTR:host                | controller231                                            |
  9. | key_name                            | mykey                                                    |
  10. | image                               | Attempt to boot from volume - no image supplied          |
  11. | hostId                              | 083729f2f8f664fffd4cffb8c3e76615d7abc1e11efc993528dd88b9 |
  12. | OS-EXT-STS:vm_state                 | active                                                   |
  13. | OS-EXT-SRV-ATTR:instance_name       | instance-00000021                                        |
  14. | OS-EXT-SRV-ATTR:hypervisor_hostname | controller231.openstack.org                              |
  15. | flavor                              | kong_flavor (6)                                          |
  16. | id                                  | 8989a10b-5a89-4f87-9b59-83578eabb997                     |
  17. | security_groups                     | [{u'name': u'default'}]                                  |
  18. | user_id                             | f882feb345064e7d9392440a0f397c25                         |
  19. | name                                | kong2                                                    |
  20. | created                             | 2013-06-26T10:00:51Z                                     |
  21. | tenant_id                           | 6fbe9263116a4b68818cf1edce16bc4f                         |
  22. | OS-DCF:diskConfig                   | MANUAL                                                   |
  23. | metadata                            | {}                                                       |
  24. | accessIPv4                          |                                                          |
  25. | accessIPv6                          |                                                          |
  26. | testnet01 network                   | 10.1.1.6                                                 |
  27. | progress                            | 0                                                        |
  28. | OS-EXT-STS:power_state              | 1                                                        |
  29. | OS-EXT-AZ:availability_zone         | nova                                                     |
  30. | config_drive                        |                                                          |
  31. +-------------------------------------+----------------------------------------------------------+

注意image字段中,显示该虚拟机是boot from volume。

对该虚拟机进行rebuild操作,指定ubuntu镜像:

  1. root@controller231:~# nova rebuild kong2 1f7f5763-33a1-4282-92b3-53366bf7c695
  2. +-------------------------------------+-------------------------------------------------------------------+
  3. | Property                            | Value                                                             |
  4. +-------------------------------------+-------------------------------------------------------------------+
  5. | status                              | REBUILD                                                           |
  6. | updated                             | 2013-06-26T10:25:03Z                                              |
  7. | OS-EXT-STS:task_state               | rebuilding                                                        |
  8. | OS-EXT-SRV-ATTR:host                | controller231                                                     |
  9. | key_name                            | mykey                                                             |
  10. | image                               | Ubuntu 12.04 cloudimg i386 (1f7f5763-33a1-4282-92b3-53366bf7c695) |
  11. | hostId                              | 083729f2f8f664fffd4cffb8c3e76615d7abc1e11efc993528dd88b9          |
  12. | OS-EXT-STS:vm_state                 | active                                                            |
  13. | OS-EXT-SRV-ATTR:instance_name       | instance-00000021                                                 |
  14. | OS-EXT-SRV-ATTR:hypervisor_hostname | controller231.openstack.org                                       |
  15. | flavor                              | kong_flavor (6)                                                   |
  16. | id                                  | 8989a10b-5a89-4f87-9b59-83578eabb997                              |
  17. | security_groups                     | [{u'name': u'default'}]                                           |
  18. | user_id                             | f882feb345064e7d9392440a0f397c25                                  |
  19. | name                                | kong2                                                             |
  20. | created                             | 2013-06-26T10:00:51Z                                              |
  21. | tenant_id                           | 6fbe9263116a4b68818cf1edce16bc4f                                  |
  22. | OS-DCF:diskConfig                   | MANUAL                                                            |
  23. | metadata                            | {}                                                                |
  24. | accessIPv4                          |                                                                   |
  25. | accessIPv6                          |                                                                   |
  26. | testnet01 network                   | 10.1.1.6, 192.150.73.16                                           |
  27. | progress                            | 0                                                                 |
  28. | OS-EXT-STS:power_state              | 1                                                                 |
  29. | OS-EXT-AZ:availability_zone         | nova                                                              |
  30. | config_drive                        |                                                                   |
  31. +-------------------------------------+-------------------------------------------------------------------+

待虚拟机active之后,VNC登录虚拟机,发现虚拟机并没有发生变化,还是cirros。

因为rebuild在nova driver层调用还是spawn函数创建新的虚拟机,而后端卷启动的虚拟机,是不会跟glance打交道的,还是直接挂载系统盘。

【OpenStack】Nova中的rebuild和evacuate(HA)相关推荐

  1. OpenStack Nova hacking和读书笔记

    OpenStack Nova 设计与实现 1. Nova OpenStack采用一种无共享的.基于消息队列的架构,解耦的各模块组合在一起构成了一个统一的IaaS云. Nova是OpenStack生态中 ...

  2. OpenStack nova M Blueprints 分析

    OpenStack nova M Blueprints 分析 OpenStack nova M Blueprints 分析 mitaka-1 mitaka-2 mitaka-3 mitaka-rc1 ...

  3. Openstack Nova 源码分析 — 使用 VCDriver 创建 VMware Instance

    目录 目录 前言 流程图 nova-compute vCenter 前言 在上一篇 Openstack Nova 源码分析 - Create instances (nova-conductor阶段) ...

  4. 在openstack环境中安装rackspace private cloud --1 环境准备

    在一个openstack环境中安装rackspace private cloud, 环境准备: 在good-net网络中创建3个虚拟机vm Network Detail: good-net Netwo ...

  5. OpenStack Nova核心组件和RabbitMQ通信流程分析

    前言 云计算从资源提供类型可以分为 IaaS(基础设施即服务) PaaS(平台即服务)和 SaaS(软件即服务)三层. IaaS和PaaS相辅相成,目前云计算商业领域的各大公有云厂商一般都会提供Iaa ...

  6. 云系列---Openstack Nova组件 | 参数说明 | 详细讲解

    Openstack Nova组件 一.Nova 概念 二.Nova 系统架构 三.Nova 组件详讲 1.API 讲解 2.Scheduler 讲解 调度器类型 过滤调度器调度过程 过滤器类型 Sch ...

  7. nova中periodic task的实现

    作为个人学习笔记分享,有任何问题欢迎交流! 本文主要分析nova中periodic task的实现过程,周期性任务有如跟踪资源的变化,虚拟机状态的变化等.它的实现使用的python中的metaclas ...

  8. openstack环境中安装mistral

    确认keystone版本是v3,必须是v3: . admin-openrc.sh openstack endpoint list |grep keystone 确认git客户端是否安装,如果没有先安装 ...

  9. [OpenStack Nova] ephemeral disk root disk swap disk

    在openstack中, 一个instance涉及到的存储空间, 主要是根分区 (/ ,root分区), swap分区, ephemeral disk, 还有就是block storage (块存储, ...

  10. Nova 中的一些基本概念与操作(2)

    目录: 1. 基本操作-请求和响应数据格式 2. Nova 命令行工具简要说明 3. 开发指南 4. 开发指南 :Adding a Method to the OpenStack API 5. 开发指 ...

最新文章

  1. Python 还能实现哪些 AI 游戏?附上代码一起来一把!
  2. C++line segment intersection线段求交(交点)(附完整源码)
  3. 计算机最早的运算领域,2013年计算机一级MsOffice模拟试题及答案38
  4. django获取ip与数据重复性判定
  5. php观察者模式使用场景,php设计模式系列--观察者模式
  6. 线程池的参数及执行顺序
  7. hdu2066一个人的旅行(disjkstra)
  8. 《Effective C#》读书笔记(4)
  9. 【转】Android自动化测试(UiAutomator)简要介绍
  10. 前端培训丁鹿学堂:nodeJS入门指南(一)
  11. 十次方——父工程子模块、公共模块
  12. android 魅族 webview,魅族 Flyme 系统出现大面积应用闪退问题,提供临时解决方法...
  13. educoder:实验十一 函数
  14. 如何将m3u8格式转成MP4以及可播放格式
  15. node下载(使用nvm的方式)
  16. Linux学习2.0(非markdown编辑)
  17. 软考高级 真题 2012年上半年 信息系统项目管理师 案例分析
  18. Kelvin connection-开尔文连接
  19. 一篇文章讲清楚什么是数据网格和数据网格的原则
  20. 什么是 Ribbon?什么是负载均衡?怎么用Ribbon

热门文章

  1. windows使用批处理bat控制打印机自动打印测试页(可设置定时自动打印)
  2. java加密与解密的艺术.pdf_Java加密与解密的艺术
  3. 日语——动词的各种变形
  4. 此Flash Player 与您的地区不相容,请重新安装Adobe Flash Player问题解决
  5. 装了xmapp还需要装mysql吗_安装xamp之后,appach、mysql等问题的总结
  6. 安装windows和android双系统,真正的安卓Windows双系统,RemixOS Windows共存系统安装+附带ROOT+大分区...
  7. 基于Milton的webdav解决方案 - Test
  8. 用Python对微信好友进行简单统计分析
  9. 公司邮箱登录入口哪个方便,邮箱移动办公哪个最好用?
  10. ERROR StatusLogger No log4j2 configuration file found. Using default configuration解决方式