本发明涉及虚拟化系统升级领域,具体涉及一种基于虚拟机自动迁移的虚拟化系统升级方法及装置。
背景技术:
如今随着虚拟化技术的日益成熟,在服务器管理领域虚拟化产品成为日益重要的管理工具,并且随着技术的更新或者业务功能的不断演化,虚拟化产品版本也随之不断更新,如何在不同版本的虚拟化产品之间进行平滑升级就显得尤为重要。
目前产品支持升级过程中处理在线运行的虚拟机方式有:手动关闭、自动关闭、自动迁移。其中自动迁移是指由于用户要求升级过程中不能中断业务性强的虚拟机,特设置对在线运行虚拟机的处理方式,虚拟机会先热迁移到别的未升级的主机,然后等主机升级生效后再迁回。但目前自动迁移的支持的前提是在升级包中不包含虚拟机运行所需的核心软件(底层服务)的更新包,即升级到的高版本和当前版本的核心软件未变更,虚拟机可在高低版本间来回迁移。高低版本核心软件变更对虚拟机的启动和迁移不支持的情况下对实现虚拟机业务不停机升级支持的不理想:如果虚拟机热迁移至目的主机失败,导致被升级的主机有运行的虚拟机,无法继续升级或升级失败;对于底层核心软件的变更导致两个高低版本的虚拟机运行或迁移不兼容,也会导致无法继续升级或升级失败;升级方式导致仅支持单主机不停机虚拟机升级,不支持批量主机升级。
技术实现要素:
为解决上述问题,本发明提供一种基于虚拟机自动迁移的虚拟化系统升级方法及装置,可解决因底层服务版本不同导致虚拟机迁移失败的问题,进而支持批量主机升级。
本发明的技术方案是:一种基于虚拟机自动迁移的虚拟化系统升级方法,包括以下步骤:
s0,将升级包中底层服务变更相关文件打包为底层升级包,升级包中其他文件打包为版本升级包;
s1,依据底层升级包对集群中所有待升级子节点的底层服务进行升级;
s2,所有待升级子节点的底层服务升级完成后,依据版本升级包依次对各个待升级子节点的虚拟化系统进行升级;其中各待升级子节点虚拟化系统进行升级时,自动将其上的可迁移虚拟机迁移到集群中满足迁移条件的其他任一子节点上。
进一步地,每个待升级子节点虚拟化系统升级完成后,自动重启。
进一步地,各待升级子节点虚拟化系统进行升级时,自动将其上的可迁移虚拟机迁移到集群中满足迁移条件的其他任一子节点上,具体为:
检测集群中其他子节点上的可用资源;其他子节点包括待升级子节点、已升级子节点和无需升级子节点;
根据可用资源选出待迁入子节点;
将该待升级子节点上的可迁移虚拟机迁移到待迁入子节点上。
进一步地,集群中包括管理节点和多个子节点,各个子节点分别与管理节点连接;
该方法中在管理节点上将升级包中底层服务变更相关文件打包为底层升级包,将升级包中其他文件打包为版本升级包;由管理节点将底层升级包和版本升级包下发至各待升级子节点。
进一步地,该方法还包括:
对集群中所有待升级子节点的底层服务进行升级前,依据底层升级包对管理节点的底层服务进行升级。
进一步地,该方法还包括:
对各个待升级子节点的虚拟化系统进行升级前,依据版本升级包对管理节点的虚拟化系统进行升级。
进一步地,待升级子节点进行虚拟化系统升级前,查找非必须运行虚拟机,将非必须运行虚拟机关闭。
本发明的技术方案还包括一种基于虚拟机自动迁移的虚拟化系统升级装置,包括,
升级包处理模块:将升级包中底层服务变更相关文件打包为底层升级包,升级包中其他文件打包为版本升级包;
底层服务升级模块:依据底层升级包对集群中所有待升级子节点的底层服务进行升级;
虚拟化系统升级模块:所有待升级子节点的底层服务升级完成后,依据版本升级包依次对各个待升级子节点的虚拟化系统进行升级;其中各待升级子节点虚拟化系统进行升级时,自动将其上的可迁移虚拟机迁移到集群中满足迁移条件的其他任一子节点上。
进一步地,虚拟化系统升级模块对每个待升级子节点虚拟化系统升级完成后,使其自动重启。
进一步地,集群中包括管理节点和多个子节点,各个子节点分别与管理节点连接;
升级包处理模块配置于管理节点,升级包处理模块将底层升级包和版本升级包下发至各待升级子节点;
底层服务升级模块先依据底层升级包对管理节点的底层服务进行升级,管理节点升级完成后,再依据底层升级包对各个服务器节点的底层服务进行升级;
虚拟化系统升级模块先依据版本升级包对管理节点的虚拟化系统进行升级,管理节点的虚拟化系统升级完成后,再依次依据版本升级包对各个服务器节点的虚拟化系统进行升级。
本发明提供的一种基于虚拟机自动迁移的虚拟化系统升级方法及装置,首先将升级包分为底层升级包和版本升级包,升级执行时,先依据底层升级包将所有待升级子节点的底层服务进行升级,再依据版本升级包对各待升级子节点进行系统升级,因所有待升级子节点的底层服务已预先升级,虚拟机迁出迁回时底层服务是不变的,因此系统升级时,可随意将虚拟机迁移到满足迁移条件的其他任一子节点(包括待升级子节点、已升级子节点和无需升级子节点)上,而不会出现迁移失败的情况,进而支持批量节点的升级,且升级过程不影响客户业务虚拟机,满足客户需求,提高产品易用性。
附图说明
图1是本发明具体实施例一方法流程示意图。
图2是本发明具体实施例三结构示意框图。
具体实施方式
下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。
实施例一
如图1所示,本实施例提供一种虚拟化系统跨版本平滑升级方法,包括以下步骤:
s0,将升级包中底层服务变更相关文件打包为底层升级包,升级包中其他文件打包为版本升级包;
s1,依据底层升级包对集群中所有待升级子节点的底层服务进行升级;
s2,所有待升级子节点的底层服务升级完成后,依据版本升级包依次对各个待升级子节点的虚拟化系统进行升级;其中各待升级子节点虚拟化系统进行升级时,自动将其上的可迁移虚拟机迁移到集群中满足迁移条件的其他任一子节点上。
本方法将升级包分为底层升级包和版本升级包分别打包,进行升级时,先依据底层升级包将所有待升级子节点的底层服务进行升级,再依据版本升级包对各待升级子节点进行系统升级,因所有待升级子节点的底层服务已预先升级,虚拟机迁出迁回时底层服务是不变的,因此系统升级时,可随意将虚拟机迁移到集群中满足迁移条件的其他任一子节点(包括待升级子节点、已升级子节点和无需升级子节点)上,而不会出现迁移失败的情况,从而支持批量升级。
其中,每个待升级子节点虚拟化系统升级完成后,自动重启。重启后,改已升级的子节点变为可用,若该子节点满足迁移条件,之后其他子节点升级时,可将虚拟机迁移到该子节点上。
本实施例中,步骤s2中,各待升级子节点虚拟化系统进行升级时,自动将其上的可迁移虚拟机迁移到集群中满足迁移条件的其他任一子节点上,具体为:
s2-1,检测集群中其他子节点上的可用资源;其他子节点包括待升级子节点、已升级子节点和无需升级子节点;
s2-2,根据可用资源选出待迁入子节点;
s2-3,将该待升级子节点上的可迁移虚拟机迁移到待迁入子节点上。
即根据可用资源(比如内存占用情况、cpu占用情况等)找出可迁入的子节点,具体的,可将可用资源最多的子节点作为待迁入子节点。需要说明的是,已升级过的子节点重启后,其上的可用资源一般较多,通常可将虚拟机迁移到已升级子节点上,提高升级效率。
另外需要说明的是,集群中包括多个子节点,本方法支持批量升级,即一次可升级多个子节点,具体一次升级的数量可根据需要随意设置,最终可经过多次升级将所有子节点进行升级。比如集群中有5个子节点,该次升级3个,那么剩余2个即为该次无需升级的子节点。可再进行一次升级,将剩余2个批量升级。
集群中包括管理节点和多个子节点,各个子节点分别与管理节点连接。
本实施例具体在管理节点上将升级包中底层服务变更相关文件打包为底层升级包,将升级包中其他文件打包为版本升级包;由管理节点将底层升级包和版本升级包下发至各待升级子节点,以完成待升级子节点的升级。
实施例二
与实施例一不同的是,本实施例同时将管理节点进行升级。具体的,对集群中所有待升级子节点的底层服务进行升级前,依据底层升级包对管理节点的底层服务进行升级。对各个待升级子节点的虚拟化系统进行升级前,依据版本升级包对管理节点的虚拟化系统进行升级。
为进一步对本发明进行说明,以下结合该实施例,基于本发明原理提供一具体实施方式。
(一)升级包处理阶段
将升级包中底层服务变更相关文件打包为底层升级包,升级包中其他文件打包为版本升级包。
具体地,集群中包括管理节点和多个子节点,在管理节点上通过ansible运维工具准备好跨版本所需要的升级文件,底层服务变更的文件打包成hotfix包,其它文件打包成upgrade包。而后由管理节点将hotfix包和upgrade包下发到各个子节点,以完成后续升级操作。
(二)升级阶段
执行升级程序时,先将管理节点的升级不影响虚拟机的运行,所以本实施方式先升级管理节点,再升级各子节点。
升级过程具体包括以下步骤:
ss1,依据底层升级包对管理节点的底层服务进行升级;
ss2,管理节点升级完成后,依据底层升级包对各个子节点的底层服务进行升级;
需要说明的是,各个子节点进行底层服务升级时,可单个子节点依次进行升级,也可批量同时进行升级。底层服务升级完成后,无需重启节点。
ss3,依据版本升级包对管理节点的虚拟化系统进行升级;
需要说明的是,管理节点的虚拟化系统升级完成后,无需重启管理节点。管理节点的升级对虚拟机无影响。
ss4,管理节点的虚拟化系统升级完成后,依次依据版本升级包对各个子节点的虚拟化系统进行升级;
管理节点的虚拟化系统升级完成后,会推送子节点与管理节点版本不一致告警,此时,可遍历集群中所有子节点,找到未进行升级的子节点,并依据一定规则(比如可用资源情况等)对未升级子节点排序。先对第一个子节点依据版本升级包进行虚拟化系统升级,升级完成后,再对第二个子节点进行虚拟化系统升级,以此类推,实现串行滚动升级。
子节点虚拟化系统进行升级时,自动将其上的可迁移虚拟机迁移到满足迁移条件的其他子节点上,比如迁移到可用资源最多的子节点上。因已预先对所有子节点的底层服务进行升级,所以可避免虚拟机迁移不成功而导致的升级失败。
每个子节点虚拟化系统升级完成后,自动重启。重启后,子节点为可用状态,可使其他子节点的虚拟机迁移到该子节点上。且减少运维人员每次升级后手动重启节点的耗时,提高运维效率。
另外,子节点进行虚拟化系统升级前,查找非必须运行虚拟机,将非必须运行虚拟机关闭,确保必须运行的虚拟机后续自动迁移有充足的资源。需要说明的是,也可在虚拟化系统升级过程中,选择自动关闭非必须运行虚拟机。
实施例三
如图2所示,基于实施例一和二,本实施例提供一种基于虚拟机自动迁移的虚拟化系统升级装置,包括以下功能模块,实现虚拟化系统的批量升级。
升级包处理模块101:将升级包中底层服务变更相关文件打包为底层升级包,升级包中其他文件打包为版本升级包;
底层服务升级模块102:依据底层升级包对集群中所有待升级子节点的底层服务进行升级;
虚拟化系统升级模块103:所有待升级子节点的底层服务升级完成后,依据版本升级包依次对各个待升级子节点的虚拟化系统进行升级;其中各待升级子节点虚拟化系统进行升级时,自动将其上的可迁移虚拟机迁移到集群中满足迁移条件的其他任一子节点上。
集群中包括管理节点和多个子节点,各个子节点分别与管理节点连接。
优选地,本实施例的底层服务升级模块102先依据底层升级包对管理节点的底层服务进行升级,管理节点升级完成后,再依据底层升级包对各个子节点的底层服务进行升级。
虚拟化系统升级模块103先依据版本升级包对管理节点的虚拟化系统进行升级,管理节点的虚拟化系统升级完成后,再依次依据版本升级包对各个子节点的虚拟化系统进行升级。
管理节点的升级不影响虚拟机的运行,所以底层服务升级模块102和虚拟化系统升级模块103均先升级管理节点,再升级各子节点。
虚拟化系统升级模块103在子节点虚拟化系统进行升级时,自动将其上的可迁移虚拟机迁移到集群中满足迁移条件的其他任一子节点上;每个子节点虚拟化系统升级完成后,自动重启,使升级完后的子节点可作为接收虚拟机迁入的子节点。
虚拟化系统升级模块103在每个子节点进行虚拟化系统升级前,查找待升级子节点上的非必须运行虚拟机,并将非必须运行虚拟机关闭,确保必须运行的虚拟机后续自动迁移有充足的资源。
以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。