【IT168 资讯】内核报错、CPU工作不正常、硬盘故障、业务扩展导致性能出现瓶颈……..这些都是运维工程师们的噩梦。怎样积极、有效地预防故障的发生?如何主动提高运维可靠性?在性能危机出现时,怎样化解?所有这些问题,在美团云的“零感知”在线迁移解决方案中,都能找到答案。
在线迁移是什么?
Live Migration (在线迁移)是指将一台虚拟机从其所在物理机无缝地转移到另一台物理机的过程。
哪些场景下会用到在线迁移?
场景一:
* 在物理机发生内核报错、CPU工作不正常等底层基础设施故障时,管理员可以将虚拟机迁移到状态正常的物理机上,提前预防更恶劣的故障发生,比如机器彻底宕机。
场景二:
* 物理机硬盘故障,尽管云服务商往往使用了多副本的存储方式保障可靠性,即某块盘坏了另一块能够继续服务。但是坏盘送修往往有一定的时间窗口,在这段时间内将关键业务在线迁移走也是一种更为安全的选择。
场景三:
* 云计算服务商存在批量采购新机器,以及淘汰旧有机器的现象,可能某次采购之后,机器资源池有富余,这时候可以将老用户的机器均匀迁移到新机器上,以便提升性能。
场景四:
* 用户的某些机器上承载的业务发生变化,负载持续过高,性能下降,可以联系云计算服务商进行主动迁移。
场景五:
* 共享块存储服务(EBS)大大降低了在线迁移的成本,对用户来说,在上层业务暂时没有做到高可用性的情况下,可以通过将数据存在云端,底层快速保障就绪这种方式来提高可用性。
为什么美团云的在线迁移方式被称为“零感知”?
传统情况下,在数据迁移的过程中,用户的业务会被迫中断,因此被称为“冷迁移”。相反,美团云采用了“热迁移”方式,整个过程中,不关机不断网,用户业务始终不会中断。同时,无需运维介入,美团云能够替用户选择迁移路径及时间点,并进行高效的集中式运维管理。因此无论从业务角度,还是运维角度,美团云的迁移方案对用户来说,都是“零感知”的。
美团云如何做到“零感知” ?
美团云主机所采用的 QEMU/KVM 架构,对在线迁移技术有着较为成熟的支持。在软件实现上,为了追求对底层更加准确的控制,并没有使用例如 libvirt 这样的库,而是直接通过代码操作 QEMU 以及 QEMU monitor。在硬件上,物理机全部接入万兆网卡,同步内存的速度能够达到几百MB每秒,提升迁移成功率。
迁移过程是怎样的?
迁移虚拟机其实就是分别迁移网络、磁盘、机器状态(内存)的过程,假设源宿主机为A,迁移目标宿主机为B,我们会首先在B上启动一个空壳的虚拟机(QEMU进程),然后按照网络、磁盘、内存的顺序把A上面的QEMU转移过来。通过查看整个迁移过程的细节,我们能够明白为什么整个迁移过程完全是“无感知”的。
-第一步:网络
由于使用了Open vSwitch,我们可以很方便地在目标物理机上配置出完全相同的网桥,并且给将要到来的虚拟机分配相同的IP及MAC地址,这时候网络就算是就绪了,直到机器状态发生转移的那一瞬间,网络流量也会自然而然地由A切到B上,一个完全相同的虚拟网卡开始在B上工作了。但是这里还存在一个小问题,网络上的交换机内部有arp缓存,它仍然认为虚拟机MAC地址对应的这块网卡是在A而不是在B上,所以我们的控制程序需要在完成迁移后立刻从B向网络上发送一个免费arp报文,让交换机能够学习到新的地址。在这段时间内网络是不可用的,但由于时间非常短(几十毫秒左右),在TCP的超时重传范围内,因此基本不会被业务感知。