您的位置:首页 > 运维架构

闲聊虚拟机迁移 – 运维派

2019-04-11 08:57 651 查看

云平台,虚拟机是云平台的基础,没有虚拟机,能构成云么?以后慢慢的应该不需要各种虚拟化的技术了,不过也就是一种资源的方式,对于用户来说,你并不需要知道什么物理机,虚拟机,容器,当容器修改一个主机名称之后,你会认为容器可能是一个虚拟机,虚虚实实,恍恍惚惚。

在容器中,存在一种状态,叫暂停态,诡异的状态,要么运行,要么停止,这个世界要么是白的,要么是黑的,你说,这个世界还有彩色,哼。

在虚拟机中,也存在一种状态,也是暂停态,此时已经不提供服务了,对于服务来说,也是暂停的,那为什么需要这种状态?驻足停留闻花香,内心如水波澜惊。

对于云平台的IAAS来说,虚拟机是在一个资源池里面创建的,娜里有海量的CPU,内存,存储,从基础上来说,有物理机的集群,每个物理机提供计算,存储,网络资源,对于应用来说,运行在哪个物理机上面,并没有太多纠结的含义,但是对于同一个应用来说,运行在不同的物理机上是很有含义的,不然一台物理机宕机了,整个应用就挂了,再多的冗余,再多的负载均衡就是无效的。我是谁,我在哪里并不重要,重要的是你提供什么样的服务,重要的是,你有什么样的能力,是提供了计算能力还是存储能力呢?

虚拟机是个好技术,为什么需要进行迁移虚拟机,一点都不可爱。

在进行运维的过程中,不断会碰到各种硬件错误,各种服务器需要更换固件,虚拟机出现了各种性能不足,延时等情况,从而必须要能进行虚拟机的迁移。

根据以上,从而分为两种情况,一种情况就是自动进行虚拟机迁移,这种主要的场景就是物理机宕机,发生的原因有很多了,例如内核bug,例如内存不释放,例如各种硬件损坏,主板啊,cpu,内存坏了。在这种情况下,主要就是自动迁移了,相当于冷迁移,也就是关闭了虚拟机,然后进行虚拟机的迁移,这种情况比较简单。一般就是将整个物理机上运行的虚拟机一个一个的迁移,将计算,存储,网络都迁移到另外一台好的物理机上面。

在进行冷迁移的时候,一般都是分布式存储的,从而存储基本上不用迁移,例如镜像文件,磁盘文件,对于虚拟机来说,运行在哪儿并不重要,这个时候的迁移只要在新的物理机上重建计算资源即可,也就是分配相应的CPU,分配相同的内存和网络即可,一般很快,几十秒即可完成。

在物理机宕机的时候,需要考虑一个问题,对于应用来说,这个时候是停机的,从而对于虚拟机中提供的服务,必须要做应用自拉起,不然,每次还需要手动启动服务,用手的操作总是让人不屑一顾的,赤裸裸的嫌弃。

没有风,整个风景都是黯然失色的,然而对于应用来说,运行在哪个物理机重要么,有的重要,有的不重要,当一个物理机上运行的虚拟机会进行争抢资源的时候,对于敏感的应用,会出现应用耗时增加,延迟增加的情况,从而有的时候,需要主动的迁移虚拟机。

从而,在进行迁移虚拟机的时候,还需要提供一种功能,指定物理机进行迁移,而不是依赖于调度算法进行迁移,而且,对于同一个应用必须分布在不同的物理机上,这样才能保证冗余。

冷迁移毫无意义,一点都不好玩,从而一般有难度的就是热迁移,所谓的live migration,就是主动进行迁移的时候,对业务的影响最少,只有少量的停机时间,从而大大提供客户服务满意度。

无缝热迁移,首先考虑迁移哪些东西,例如内存,磁盘数据,分布式存储,不考虑磁盘数据,集群中不考虑网络,在哪儿都能运行,从而就只有内存数据需要进行拷贝,热迁移的时候,总是使用预先内存拷贝的方式进行复制,选择一个好的机器,然后将内存复制过去,此时虚拟机还在提供服务,从而内存也会被写,从而会存在dirty pages,从而会在下次继续进行复制,当两者之间的差异足够小时,将原来的虚拟机进行暂停,也就是pause,然后全部复制过去,然后开机启动,从而就完成了热迁移,在整个过程中,由于停止服务的时间只有暂停的时间,从而对应用来说,是无损的,当然,也会出现几秒钟的无法连接的情况。

再考虑一种情况,你在这里热迁移,那边新创建的虚拟机又调度到整个上面了,从而需要在进行迁移的时候,锁定物理机,让调度算法不再将新的虚拟机调度上来,而且当使用分布式存储的时候,如果是计算和存储混部,那么需要考虑存储的容量是否支持迁移。

在下线一个存储资源的时候,总是需要考虑剩余的资源是否满足三副本的基本要求。

迁移失败了咋办,在迁移一次咯,反正无所谓,要么就是集群的资源不足,要么就是虚拟机的状态不对,解决了,然后再次迁移就好了。

暂停态,是个好状态,就是太不正经了,所谓的在容器的进程中,存在一个参数,

–live-restore ,也是热升级的一个参数,从而不会影响正在运行的容器。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  容器 虚拟机