声明:
本博客欢迎转发,但请保留原作者信息!
新浪微博:@孔令贤HW;
博客地址:http://blog.csdn.net/lynn_kong
内容系本人学习、研究和总结,如有雷同,实属荣幸!
更新记录:
2013.07.04 增加在线迁移虚拟机Postman请求样例
版本:master分支 2013.06.25
hypervisor:KVM共享存储:无
1、migrate/resize
在虚拟机active和stopped状态下可以进行migrate/resize,resize与migrate的区别是在迁移的同时,改变虚拟机的flavor。配置项 allow_resize_to_same_host 表示是否允许迁移到本机,默认是False。
迁移前:
- root@controller231:~# nova show rebuild-test2
- +-------------------------------------+-------------------------------------------------------------------+
- | Property | Value |
- +-------------------------------------+-------------------------------------------------------------------+
- | status | ACTIVE |
- | updated | 2013-06-24T09:23:53Z |
- | OS-EXT-STS:task_state | None |
- | OS-EXT-SRV-ATTR:host | controller231 |
- | key_name | mykey |
- | image | Ubuntu 12.04 cloudimg i386 (1f7f5763-33a1-4282-92b3-53366bf7c695) |
- | hostId | 083729f2f8f664fffd4cffb8c3e76615d7abc1e11efc993528dd88b9 |
- | OS-EXT-STS:vm_state | resized |
- | OS-EXT-SRV-ATTR:instance_name | instance-0000000e |
- | OS-EXT-SRV-ATTR:hypervisor_hostname | controller231.openstack.org |
- | flavor | m1.small (2) |
- | id | 03774415-d9ce-4b34-b012-6891d248b767 |
- | security_groups | [{u'name': u'default'}] |
- | user_id | f882feb345064e7d9392440a0f397c25 |
- | name | rebuild-test2 |
- | created | 2013-06-24T08:14:38Z |
- | tenant_id | 6fbe9263116a4b68818cf1edce16bc4f |
- | OS-DCF:diskConfig | MANUAL |
- | metadata | {} |
- | accessIPv4 | |
- | accessIPv6 | |
- | testnet01 network | 10.1.1.20, 192.150.73.3 |
- | progress | 0 |
- | OS-EXT-STS:power_state | 1 |
- | OS-EXT-AZ:availability_zone | nova |
- | config_drive | |
- +-------------------------------------+-------------------------------------------------------------------+
- root@controller231:/etc/init.d# nova migrate rebuild-test2
- root@controller231:/etc/init.d# nova show rebuild-test2
- +-------------------------------------+-------------------------------------------------------------------+
- | Property | Value |
- +-------------------------------------+-------------------------------------------------------------------+
- | status | VERIFY_RESIZE |
- | updated | 2013-06-25T03:34:43Z |
- | OS-EXT-STS:task_state | None |
- | OS-EXT-SRV-ATTR:host | compute233 |
- | key_name | mykey |
- | image | Ubuntu 12.04 cloudimg i386 (1f7f5763-33a1-4282-92b3-53366bf7c695) |
- | hostId | cb0c6e82948e76d2bc0c0a6bb906cdd2d2bcc6e99f0741e2ae05b7cc |
- | OS-EXT-STS:vm_state | resized |
- | OS-EXT-SRV-ATTR:instance_name | instance-0000000e |
- | OS-EXT-SRV-ATTR:hypervisor_hostname | compute233.openstack.org |
- | flavor | m1.small (2) |
- | id | 03774415-d9ce-4b34-b012-6891d248b767 |
- | security_groups | [{u'name': u'default'}] |
- | user_id | f882feb345064e7d9392440a0f397c25 |
- | name | rebuild-test2 |
- | created | 2013-06-24T08:14:38Z |
- | tenant_id | 6fbe9263116a4b68818cf1edce16bc4f |
- | OS-DCF:diskConfig | MANUAL |
- | metadata | {} |
- | accessIPv4 | |
- | accessIPv6 | |
- | testnet01 network | 10.1.1.20, 192.150.73.3 |
- | progress | 0 |
- | OS-EXT-STS:power_state | 1 |
- | OS-EXT-AZ:availability_zone | nova |
- | config_drive | |
- +-------------------------------------+-------------------------------------------------------------------+
对于resize,还有两个相关操作:confirm_resize和revert_resize,两个操作都是在虚拟机状态为resized下的操作。前者是resize的确认,后者是回退。也就是说,在做完migrate/resize操作后,给用户提供了后悔的机会,比如用户可能对新规格的虚拟机性能不满意,不愿意花冤枉钱,于是可以调用revert_resize,是虚拟机回退到之前的状态(包括虚拟机所在的主机和虚拟机的规格)。还需要注意,会有这样的情况,用户做完了resize/migrate,然后没有确认也没有回退(因为可能resize操作并不收费,所以用户想着能体验多长时间就用多长时间)。此时,OpenStack提供了循环任务的机制处理这种情况,当系统中配置项 resize_confirm_window 大于0时,计算节点会自动将在本机中状态为resized,时间超过resize_confirm_window的虚拟机进行确认。
在做migrate/resize前还应注意,计算节点间是需要配置nova用户无密码访问的;同时,migrate/resize操作支持共享存储。
2、os-migrateLive
migrate操作会先将虚拟机停掉,也就是所谓的“冷迁移”,而os-migrateLive是“热迁移”,虚拟机不会停机。live-migration是在虚拟机active状态下的操作,且不允许热迁移到本机。
live-migration允许用户指定block_migration参数,表示是否进行块迁移。有几种情况:
1、block_migration=True,但系统使用了共享存储,抛异常;
2、block_migration=False,但系统没有使用共享存储且虚拟机没有使用后端系统卷,抛异常;
注意事项:
1、需要配置计算节点的/etc/hosts文件,使相互之间能够用主机名访问。
2、如果在virt driver层失败,虚拟机状态会重置为active,所以当调用live-migration后,但查询虚拟机发现没有发生迁移,且状态仍是active,则很有可能是在计算节点出现异常。
迁移流程手绘图:
我的环境中,ssh登录虚拟机,在虚拟机内不停的发送ping请求,在线迁移过程中,会有10s左右的停顿现象,然后恢复正常,与虚拟机的ssh连接没有中断。迁移虚拟机: