一种自动部署并检测虚拟机Web应用的方法及其系统与流程

文档序号:20917039发布日期:2020-05-29 13:40阅读:335来源:国知局
一种自动部署并检测虚拟机Web应用的方法及其系统与流程

本发明涉及虚拟机技术领域,特别涉及一种基于云管理平台的自动部署并检测虚拟机web应用的方法及其系统。



背景技术:

kvm(全称是kernel-basedvirtualmachine)是基于虚拟化扩展(intelvt或者amd-v)的x86硬件的开源的linux原生的全虚拟化解决方案。在kvm中,虚拟机被实现为常规的linux进程,由标准linux调度程序进行调度;虚拟机的每个虚拟cpu被实现为一个常规的linux线程,这使得kvm能够使用linux内核的已有功能。

guestfish是一套kvm虚拟机镜像管理的利器,提供一系列对镜像管理的工具,也提供对外的api。

socket又称"套接字",一组编程接口(api),介于传输层和应用层,向应用层提供统一的编程接口。

qemuguestagent,简称qga,是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu-ga,服务名称默认为qemu-guest-agent),其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial(默认首选方式)或者isa-serial。

cloud-init是一个开源工具,运行在虚拟机内部的一个非常驻服务,在开机启动时执行,执行完成立即退出,不会监听任何端口。cloud-init服务主要用于实现对虚拟机的初始化操作(例如,对dns,hostname,ip等信息的配置),以及执行一些用户在创建虚拟机时指定首次开机启动要执行的自定义脚本。

目前云平台上的大部分用户都需要将自己的web应用部署到虚拟机上,对于如何将web应用部署到虚拟机上,目前通常的做法都是需要用户自己进入虚拟机手动进行部署。这种手动部署的方式不仅繁琐还容易操作出错,而且,当用户需要部署大量虚拟机时,将需要耗费大量的时间。



技术实现要素:

本发明要解决的技术问题在于,提供一种自动部署并检测虚拟机web应用的方法及其系统,能够让用户无需手动进入虚拟机进行任何操作,简单高效用时短,且本发明针对kvm虚拟化平台所有操作系统都可以使用;本发明提高了用户对云主机的部署效率,并提升了云管理平台的用户体验。

为解决上述技术问题,本发明提供如下技术方案:一种自动部署并检测虚拟机web应用的方法,包括以下步骤:

s1、云管理平台连接宿主机的tcpsocket常驻程序,并对其发出调用请求命令;

s2、tcpsocket常驻程序从云管理平台的软件包仓库下载软件包到宿主机中;然后tcpsocket常驻程序再将软件包拷贝到虚拟机的存储盘上;tcpsocket常驻程序对宿主机的cloud-init程序进行配置并写入部署web服务命令;

s3、tcpsocket常驻程序对虚拟机进行开机;宿主机的cloud-init程序执行部署web服务命令,对存储盘上的软件包进行部署生成虚拟机的web应用,web应用启动后会监听指定的虚拟机socket端口,并生成socket监听文件。

进一步地,所述步骤s1前还包括步骤s0、用户将软件包上传到云管理平台的软件包仓库,云管理平台对宿主机创建虚拟机,虚拟机对web服务进行部署。

进一步地,所述步骤s3后还包括步骤s4、tcpsocket常驻程序连接宿主机的unixsocket文件,并对其发送检测命令;unixsocket文件控制虚拟机的qemuguestagent应用程序,去读取虚拟机的socket监听文件;

qemuguestagent应用程序读取socket监听文件内容并解码,然后检测其是否存在web服务监听的socket地址,若存在socket地址则判定虚拟机web服务部署完成并生成检测结果,否则为部署失败并生成检测结果。

进一步地,所述步骤s4后还包括步骤s5、qemuguestagent应用程序将检测结果反馈给unixsocket文件;tcpsocket常驻程序获取unixsocket文件的检测结果并发送给云管理平台。

本发明另一目的是提供一种自动部署并检测虚拟机web应用的系统,包括云管理平台和宿主机,所述云管理平台包括tcpsocket客户端和软件包仓库,所述宿主机包括虚拟机、tcpsocket常驻程序模块、cloud-init程序模块以及unixsocket文件模块;所述虚拟机包括qemuguestagent应用程序模块和socket监听文件模块;

所述云管理平台用于对所述宿主机创建虚拟机;

所述软件包仓库用于存储用户上传的软件包;

所述tcpsocket客户端用于连接并接受tcpsocket常驻程序模块的信息,并转发云管理平台的调用请求命令至所述tcpsocket常驻程序模块;

所述tcpsocket常驻程序模块用于下载所述软件包仓库的软件包到宿主机中,并对所述虚拟机进行开机;所述tcpsocket常驻程序模块还用于对所述cloud-init程序模块进行配置并写入部署web服务命令;

所述cloud-init程序模块用于执行部署web服务命令,对存储盘上的软件包进行部署生成虚拟机的web应用;

所述tcpsocket常驻程序模块还用于连接所述unixsocket文件模块,并对其发送检测命令;

所述unixsocket文件模块用于控制所述qemuguestagent应用程序模块去读取所述socket监听文件模块;

所述socket监听文件模块用于生成web应用监听虚拟机socket端口的socket监听文件;

所述qemuguestagent应用程序模块用于读取所述socket监听文件模块内容并解码,然后检测其是否存在web服务监听的socket地址,若存在socket地址则判定虚拟机web服务部署完成并生成检测结果,否则为部署失败并生成检测结果;

所述qemuguestagent应用程序模块还用于将检测结果反馈给所述unixsocket文件模块;

所述tcpsocket常驻程序还用于获取unixsocket文件模块的检测结果并发送给tcpsocket客户端,最后所述云管理平台用于获取检测结果并反馈给用户。

采用上述技术方案后,本发明至少具有如下有益效果:本发明云管理平台的用户无需手动进入虚拟机进行任何操作,就可以自动化部署web应用并保证了部署的可靠性,简单高效用时短,针对kvm虚拟化平台所有操作系统都可以使用;本发明实现了云管理平台自动化部署web应用并保证了部署的可靠性,提高用户对云主机的部署效率,提升了云管理平台的用户体验,为云管理平台实现面向应用的交付模式提供了一种自动部署并检测保障的方式。

附图说明

图1为本发明一种自动部署并检测虚拟机web应用的方法步骤流程图;

图2为本发明一种自动部署并检测虚拟机web应用的系统框架图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本申请作进一步详细说明。

本发明是通过利用kvm虚拟机镜像管理工具guestfish将软件包拷贝到linux虚拟机的镜像里,再通过配置cloudinit元数据的userdata控制虚拟机在第一次开机时安装软件和开启web服务,最后通过直接检查linux虚拟机内部文件的方式来检测socket监听从而实现在操作系统层面检测虚拟机web服务,实现了云管理平台自动化部署web应用并保证了部署的可靠性,提升了云管理平台的用户体验,为云管理平台实现面向应用的交付模式提供了一种自动部署并检测保障的方式。

实施例1

如图1所示,本实施例提供了一种基于云管理平台的自动部署并检测虚拟机web应用的方法,步骤具体如下:

s10、用户将web应用所需的软件包上传到云管理平台的软件包仓库,云管理平台对宿主机创建虚拟机,虚拟机对web服务进行填写需要部署的web服务;

s11、云管理平台连接宿主机的tcpsocket常驻程序,并对其发出调用请求命令;调用请求命令就是发起tcpsocket常驻程序开始进行web应用的部署过程;

s12、tcpsocket常驻程序使用wget从云管理平台的软件包仓库下载软件包到宿主机本地的software目录中;然后tcpsocket常驻程序使用命令/usr/local/libguestfs/runvirt-copy-in/software/*/再将软件包拷贝到虚拟机的存储盘(系统盘)上;

tcpsocket常驻程序对宿主机的cloud-init程序进行配置并写入部署web服务命令;其中,tcpsocket常驻程序将部署web服务的命令写到cloud-init程序的userdata上,并将cloud-init程序挂载到虚拟机;

s13、tcpsocket常驻程序对虚拟机进行开机;宿主机的cloud-init程序随开机启动执行配置在userdata的部署web服务命令,对存储盘上的软件包进行部署生成虚拟机的web应用;部署完成后,需要启动并运行web应用,然后web应用就会去监听某一个指定的虚拟机socket端口,并对其监听内容生成socket监听文件;

s14、tcpsocket常驻程序连接宿主机的unixsocket文件,并对其发送检测命令;unixsocket文件控制虚拟机的qemuguestagent应用程序,去读取虚拟机的socket监听文件;其中,所述unixsocket文件为org.qemu.guest_agent.0;

qemuguestagent应用程序读取socket监听文件内容并解码,然后检测其是否存在web服务监听的socket地址,若存在socket地址则判定虚拟机web服务部署完成并生成检测结果,否则为部署失败并生成检测结果;

s15、qemuguestagent应用程序将检测结果反馈给unixsocket文件;tcpsocket常驻程序获取unixsocket文件的检测结果并发送给云管理平台。

实施例2

本实施例是在实施例1方法的基础上,公开一种一种自动部署并检测虚拟机web应用的系统,如图2所示,包括云管理平台和宿主机,所述云管理平台包括tcpsocket客户端和软件包仓库,所述宿主机包括虚拟机、tcpsocket常驻程序模块、cloud-init程序模块以及unixsocket文件模块;所述虚拟机包括qemuguestagent应用程序模块和socket监听文件模块;

所述云管理平台用于对所述宿主机创建虚拟机;

所述软件包仓库用于存储用户上传的软件包;

所述tcpsocket客户端用于连接并接受tcpsocket常驻程序模块的信息,并转发云管理平台的调用请求命令至所述tcpsocket常驻程序模块;

所述tcpsocket常驻程序模块用于下载所述软件包仓库的软件包到宿主机中,并对所述虚拟机进行开机;所述tcpsocket常驻程序模块还用于对所述cloud-init程序模块进行配置并写入部署web服务命令;

所述cloud-init程序模块用于执行部署web服务命令,对存储盘上的软件包进行部署生成虚拟机的web应用;

所述tcpsocket常驻程序模块还用于连接所述unixsocket文件模块,并对其发送检测命令;

所述unixsocket文件模块用于控制所述qemuguestagent应用程序模块去读取所述socket监听文件模块;

所述socket监听文件模块用于生成web应用监听虚拟机socket端口的socket监听文件;

所述qemuguestagent应用程序模块用于读取所述socket监听文件模块内容并解码,然后检测其是否存在web服务监听的socket地址,若存在socket地址则判定虚拟机web服务部署完成并生成检测结果,否则为部署失败并生成检测结果;

所述qemuguestagent应用程序模块还用于将检测结果反馈给所述unixsocket文件模块;

所述tcpsocket常驻程序还用于获取unixsocket文件模块的检测结果并发送给tcpsocket客户端,最后所述云管理平台用于获取检测结果并反馈给用户。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解的是,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种等效的变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1