SystemCenter2012SP1实践(18)HyperV实时迁移

发布于 2013-05-07  1160 次阅读


HyperV2012的实时迁移是一项非常有价值的重大改进。

什么叫做实时迁移呢?在介绍实时迁移之前,我们来介绍一下之前版本(2008、2008R2)的"快速迁移"吧。所谓快速迁移,就是从A主机到B主机之前,通过存储、复制、和重新启动来完成虚拟机的移动。由于虚拟机会有一个保存再重启的过程,所以快速迁移会有一个短暂的服务中断时间。

而所谓的"实时迁移"就是字面的意思,实时,几乎让你感觉不到中断。

我们可以看看下表Windows2008到2012之间的一些性能差距。这里仅关注"实时迁移"这一块就可以了。在2008中根本不支持实时迁移、在2008R2中也仅仅支持一条实时迁移,同时也是有条件的,需要SCVMM,而在WindowsServer2012中,就没有任何限制了。

我们可以通过实时迁移做什么呢?

=================我是分隔线=================

  1. 可以从一台虚拟机迁移到另外一台
  2. 可以从一个群集迁移到另外一个群集
  3. 可以从群集迁移到独立的虚拟机,反之亦然。
  4. 由于有神奇的无共享迁移技术,从群集迁移到群集以及独立的虚拟机,不会有停机时间。

下面来跟我一起体验一下吧。

===========我是分隔线=============

委派

我们先来体验一下无共享迁移。在体验无共享迁移之前,我们要做的第一件事情就是"委派"。为什么要委派呢?下面这张图很能说明问题。不得不说的是,这张图的来源是微软的MVA虚拟学员,水印我也搞不掉,这图也不是我原创的。

我们现在所操作的SCVMM相当于这个用户,那么它希望服务器A和服务器B去通信和迁移。但是我们多数时间并不是直接在服务器A上去操作的(如果你直接登录A,去迁移到B是可以成功的),我们在SCVMM上声明这件事情,让A和B去通信,很明显,这需要一种权限,委派就是让两个不信任的设备相互信任。这类似于我们在企业中常见的委任状、领导指派谁谁谁干活,这些都不是直接嘴一张就能实现的,需要一个合法合理的授权行为。而这个授权行为,就是"委派"。

委派要说简单也很简单,下面一张图就全搞定了。

在域控制器上,找到一台HyperV的服务器,查看他的属性,选择委派,勾选仅信任此计算机来委派指定的服务器→仅使用Kerberos→添加计算机→输入其他的HyperV服务器名称(有多台同时又都参与这个实时迁移,那么就都要加一遍),选择CIFS和MicroSoft  virtural System Migration Service就可以了。

委派成功之后,我们需要对HyperV主机配置一下实时迁移的网络。实时迁移的网络配置基本是有几台机器就要配置几台。

我们在VMM中,选中需要操作的HyperV主机,右键查看属性,对虚拟机交换机和迁移设置进行如下图的修改。主要是保证迁移主机和被迁移主机都拥有同样的虚拟交换机。

迁移设置默认设置即可。如果担心安全为题,可以在传入实时迁移网络设置处,增加允许迁进来的HyperV主机IP地址,仅允许这些IP地址进行迁移。

实时迁移

打开VMM控制台,在一台物理机上选中任意一个虚拟机,右键点击,选择迁移虚拟机。

继续的时候,我们看到报错了。发现原因是处理器功能不一致。造成这个错误的原因是,主机A和主机B采用了不一样的CPU。

修改这个很简单,修改这台虚拟机的属性,勾选下图这个选项卡即可。可能有人会说。要修改必须要关机啊,这个所谓的不关机不是骗局么

首先大家要确认的一点是,在生产环境中,CPU类型不一致的情况比较少见(毕竟都是至强的U,同批次同型号);其次,你现在已经知道不勾选这个选项会造成一些不良后果,那么以后真实施的时候,也就可以避免这个问题。

强烈建议,对重要业务、重要的虚拟机,一定要勾选这个选项。因为你不知道未来会不会迁移这个虚拟机,也不知道它会不会使用群集。

再次操作迁移虚拟机,发现已经没有报错了。

接下来选择迁移后的虚拟机保存的位置,可以保存在对端的本地磁盘上,也可以保存在SMB共享上,毕竟SMB算是一个最廉价的共享存储了。(关于如何将虚拟机放在SMB3.0上,可以参考http://jiushu.blog.51cto.com/972756/1185875中的SMB文件共享部分。)

然后是对端的网络配置,需要注意的是,迁移到的主机上必须有一张网卡和迁移前的主机在同一个网络中。另外不用担心迁移过后MAC地址会自动变之类的问题。使用"实时迁移",虚拟机的MAC地址是不会改变的。

最后我们可以看一下摘要,同时查看所执行的脚本。说实话,脚本还是非常值得大家学习的。

在任务中可以看到迁移的详细过程,这个时候我们其实已经不需要去管它了,过一会就能完成实时迁移动作,当然时间可长可短,因为HyperV首先会拷贝一份完整的镜像到被迁移的机器上,然后复制内存和其他信息过去,耗时最长的就是拷贝镜像这个过程。

至此实时迁移的简单介绍就完成了。实现实时迁移的条件也显而易见了,最关键的是

  1. WindowsServer2012
  2. SCVMM2012SP1(当然这个不是必须的,但是有了方便很多)
  3. 尽量同品牌同型号的CPU,以减少麻烦。

============我是分隔线=========================

可能有人会觉得这个技术好简单。我这里总结一下,希望大家能够认识到实时迁移的威力

  1. 实时迁移中断时间在ping上反映就是最多4个包,最少1个包。
  2. 除非是网游,一般的业务几乎感觉不到这个短暂的中断,特别是TCPIP协议是5秒超时。
  3. 实时迁移在2008R2上同时只能有一个任务进行,同时必须借助共享存储。这在架构设计和资金上就是一个挑战。而到了WS2012,这些问题都没有了。
  4. 实时迁移可以不需要共享、也可以使用廉价的SMB共享,当然CSV这种以前就支持的高级货必然也是支持的,它的迁移更灵活多样。

最后用一张成功迁移的作业图作为本文的结束,大概耗时18分钟,中断时间丢2个包。

如果使用共享存储,那么时间一般都在1分钟左右,中断时间和无共享迁移一致。

原创文章,转载请注明: 转载自奶油九叔

本文链接地址: SystemCenter2012SP1实践(18)HyperV实时迁移