技术新讯 > 计算推算,计数设备的制造及其应用技术 > qga插件更新方法及装置、介质、设备与流程  >  正文

qga插件更新方法及装置、介质、设备与流程

  • 国知局
  • 2024-09-11 14:58:43

本发明涉及程序处理,尤其是涉及一种qga插件更新方法及装置、介质、设备。

背景技术:

1、在基于开源的云计算管理平台项目openstack的云平台上运行云服务器时,许多原本需要进入云服务器内部执行的常用操作,例如在线修改密码、获取运行监控等,可借助安装在云服务器内部的qga插件实现,具体通过在外部控制端调用qga命令的方式执行,省去了登陆云服务器来执行的繁琐操作。其中,qga插件即qemu-guest-agent插件,是在虚拟机中运行的守护进程,可以用来管理应用程序,执行宿主机发出的命令,然后返回信息。

2、由于qga插件可能存在需求增加、漏洞修复等因素,因此qga插件本身存在更新需求。目前采用定时更新的方式对各个云服务器中的qga插件进行更新,这种更新方式在大批量更新场景中导致下载源压力过大的问题。

技术实现思路

1、针对以上至少一个技术问题,本发明实施例提供一种qga插件更新方法及装置、介质、设备。

2、根据第一方面,本发明实施例提供的qga插件更新方法由外部控制程序执行,所述方法包括:

3、初始化第一累计值为0,并设置所述第一累计值对应的第一上限值;

4、向各个云服务器的qga插件逐个发送更新指令,且在向每一个云服务器的qga插件成功发送所述更新指令后将该云服务器的状态设置为下载,记录该云服务器进入下载状态的时间,并将所述第一累计值加1;其中,所述qga插件在接收到所述更新指令后从下载源下载升级包,并在完成下载后安装所述升级包;

5、检测处于下载状态的各个云服务器是否完成下载,将完成下载的云服务器的状态由下载修改为更新,且每当有一个云服务器的状态由下载变为其它状态时,将所述第一累计值减1;

6、在所述第一累计值达到所述第一上限值时,停止向剩余的云服务器的qga插件发送所述更新指令,直到所述第一累计值小于所述第一上限值时再恢复向剩余的云服务器的qga插件发送更新指令的操作;

7、若向所有云服务器发送所述更新指令的工作完成,且已有云服务器进入更新状态,则检测各个云服务器中qga插件的当前版本,并将当前版本为最新版本的云服务器的状态修改为更新成功。

8、在一个实施例中,所述初始化第一累计值为0,并设置所述第一累计值对应的第一上限值之前,所述方法还包括:

9、获取各个云服务器中的qga插件的状态信息和当前版本;

10、根据各个云服务器中qga插件的状态信息和当前版本,筛选满足第一条件的云服务器,并将满足所述第一条件的云服务器的状态设置为开始;其中,所述第一条件为所述云服务器的qga插件的当前版本为非最新版本且所述当前版本支持更新,且所述云服务器的qga插件的状态信息为正常;

11、对应的,所述向各个云服务器的qga插件逐个发送更新指令,包括:向满足所述第一条件的各个云服务器的qga插件逐个发送所述更新指令;且相邻两次发送所述更新指令的时间间隔达到第一预设时长。

12、在一个实施例中,所述检测处于下载状态的各个云服务器是否完成下载,包括:

13、获取线程共享虚机id列表;

14、根据所述线程共享虚机id列表中的每一个虚机id地址,检测对应的云服务器是否关闭qga服务,若一个云服务器关闭所述qga服务,则确定该云服务器完成下载。

15、在一个实施例中,所述qga插件还用于:获取自身所在区域的信息,根据自身所在区域的信息生成所在区域对应的镜像仓库地址,并利用该镜像仓库地址对所述qga插件的原镜像仓库地址进行更新。

16、在一个实施例中,本发明实施例提供的方法还包括:

17、若一个云服务器进入下载状态的时间与当前时间之间的时间间隔达到下载超时上限,则将该云服务器的状态修改为更新。

18、在一个实施例中,本发明实施例提供的方法还包括:

19、在检测各个云服务器中qga插件的当前版本后,若未从一个云服务器中获取到qga插件的当前版本,或者该云服务器进入到下载状态的时间到当前时间之间的时间间隔超出更新超时上限,则将该云服务器的状态修改为更新失败;若该云服务器进入到下载状态的时间到当前时间之间的时间间隔未超出所述更新超时上限,则将该云服务器放入到下一轮获取qga插件的当前版本的工作中。

20、在一个实施例中,本发明实施例提供的方法还包括:

21、设置总体超时时长;

22、若一个云服务器的状态为除了更新成功和更新失败之外的其它状态,且向该云服务器成功发送指令的时间到当前时间之间的时间间隔超过所述总体超时时长,则将该云服务器的状态修改为更新失败。

23、根据第二方面,本发明实施例提供的qga插件更新装置部署在外部控制程序上,所述装置包括:

24、第一设置模块,用于初始化第一累计值为0,并设置所述第一累计值对应的第一上限值;

25、指令发送模块,用于向各个云服务器的qga插件逐个发送更新指令,且在向每一个云服务器的qga插件成功发送所述更新指令后将该云服务器的状态设置为下载,记录该云服务器进入下载状态的时间,并将所述第一累计值加1;其中,所述qga插件在接收到所述更新指令后从下载源下载升级包,并在完成下载后安装所述升级包;

26、第一检测模块,用于检测处于下载状态的各个云服务器是否完成下载,将完成下载的云服务器的状态由下载修改为更新,且每当有一个云服务器的状态由下载变为其它状态时,将所述第一累计值减1;

27、累计处理模块,用于在所述第一累计值达到所述第一上限值时,停止向剩余的云服务器的qga插件发送所述更新指令,直到所述第一累计值小于所述第一上限值时再恢复向剩余的云服务器的qga插件发送更新指令的操作;

28、第二检测模块,用于若向所有云服务器发送所述更新指令的工作完成,且已有云服务器进入更新状态,则检测各个云服务器中qga插件的当前版本,并将当前版本为最新版本的云服务器的状态修改为更新成功。

29、根据第三方面,本发明实施例提供计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行实现第一方面提供的方法。

30、根据第四方面,本发明实施例提供的计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面提供的方法。

31、本发明实施例提供的qga插件更新方法及装置、介质、设备,外部控制程序会向各个云服务器的qga插件逐个发送更新指令,且在向每一个云服务器的qga插件成功发送所述更新指令后,将该云服务器的状态设置为下载,将所述第一累计值加1,每当有一个云服务器的状态由下载变为其它状态时,将所述第一累计值减1,实现对第一累计值的更新。在所述第一累计值达到所述第一上限值时,停止向剩余的云服务器的qga插件发送所述更新指令,直到所述第一累计值小于所述第一上限值时再恢复向剩余的云服务器的qga插件发送更新指令的操作,可见通过第一累计值和第一上限值的控制,使得同时在下载状态的云服务器的数量不会过多,从而避免下载源的压力过大。而且,若向所有云服务器发送所述更新指令的工作完成,且已有云服务器进入更新状态,则检测各个云服务器中qga插件的当前版本,并将当前版本为最新版本的云服务器的状态修改为更新成功。可见,不必登录到云服务器内部进行繁琐操作来获得更新结果,简单方便。

本文地址:https://www.jishuxx.com/zhuanli/20240911/292751.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。