你好,游客 登录 注册 搜索
背景:
阅读新闻

OpenStack中实例的在线迁移

[日期:2012-09-25] 来源:Linux社区  作者:姜永 [字体: ]

参考文档:
http://www.sebastien-han.fr/blog/2012/07/12/openstack-block-migration/
http://docs.openstack.org/trunk/openstack-compute/admin/content/configuring-live-migrations.html

OpenStack在线迁移的类型

OpenStack有两种在线迁移类型:live migration和block migration。Live migration需要实例保存在共享存储中,否则会报错,这种迁移主要是实例的内存状态的迁移,速度应该会很快。Block migration除了实例内存状态要迁移外,还得迁移磁盘文件,速度会慢些,但是它不要求实例存储在共享文件系统中。这里我所进行的是block migration。这两种迁移方式在nova client都通过命令nova live-migration实现。带参数--block_migrate表示后一种,不带表示前一种。要进行该操作需要用户在实例所在的tenant有admin角色。

修复BUG

要实现block migration首先得修复这个bug,方法在这里,或者实例采用没有设置Root Disk和Ephemeral Disk大小的flavor。我查看了源文件在nova-2012.1.2中这个bug已经修复,但是我我进行的仍然是后一种。

修改配置

主要是修改nova和libvirt的配置,让nova的vncserver监听0.0.0.0而不是计算节点的内部ip,让libvirt监听tcp,注意这里的关于修改libvirt配置的命令是针对CentOS的,Ubuntu等的修改请参照参考文档。命令如下:

注意事项

修改vncserver_listen后创建的实例才能迁移
在我的实验中,哪怕我手动修改实例的libvirt.xml文件,将vnc的监听ip改为0.0.0.0并重启nova-compute且让实例也重启仍然失败了。迁移过程中我看到在目的计算节点上已经创建了实例的相关文件,但是很快又被删除了,没有任何报错,实例仍然在源计算节点运行,状态从migrating恢复为active。
如果实例有挂载volume一定要先卸载再迁移
这点更重要,我对挂载有volume的实例进行迁移,结果一直处于mirating状态,所挂载的卷也处于migrating状态,通过Virual Machine Manager观察实例在源计算节点和目的计算节点的状态都为paused。我尝试重启两个节点的nova-compute服务,并配置让实例跟随重启。结果源节点报Domain not found错,且在Virual Machine Manager观察到实例被删除,但实例文件还在,服务也因报错启动失败。目的节点实例启动成功,且能识别挂载的卷,但是文件中缺少libvirt.xml文件,且不受OpenStack管理了,通过客户端查询实例信息,显示的信息为实例仍在源节点上,状态为正在迁移。尝试手动修改数据库使状态一致没有成功。
实例迁移过程会有短暂的无法联通情况
迁移过程我用ping命令测试,在迁移快完成的时候丢失了5个包,多次测试一样。
会在目的节点_base文件夹下创建额外的镜像文件
尽管我的目的节点_base下已经有了创建该实例所需要的镜像文件,但仍然会创建新的镜像文件,新文件文件名只是多加了个"_11",大小一样,如果直接使用已有的镜像不创建新就好了,当然如果已经有这个带后缀"_11"的文件存在就不会再创建了。
linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款