发明内容
基于此,有必要针对上述问题,提供一种能避免多实例冲突的应用发布方法和装置。
一种应用发布方法,该方法包括:
接收客户端发送的虚拟机登录请求,根据该虚拟机登录请求获取请求的虚拟机标识;
根据请求的虚拟机标识查找对应的容器标识,容器标识唯一对应一个虚拟机标识;
根据请求的虚拟机标识启动对应的虚拟机,并根据对应的容器标识将对应的容器关联到虚拟机上,容器中运行有一个或多个应用;
将启动的虚拟机的信息返回给客户端。
在其中一个实施例中,在将启动的虚拟机的信息返回给客户端的步骤之后,还包括:
接收客户端发送的应用访问请求;
根据应用访问请求调用容器中的应用。
在其中一个实施例中,该方法还包括:
当容器中的应用请求访问互联网数据时,通过隧道技术将互联网数据访问请求封装成数据包发送给虚拟机;
通过虚拟机将数据包的源IP地址由容器的IP地址修改成虚拟机IP地址后,根据虚拟机IP地址将互联网数据访问请求发给审计设备。
在其中一个实施例中,该方法还包括:
当容器中的应用请求访问容器的磁盘时,通过挂钩技术将磁盘访问请求重定向到虚拟机的数据盘上。
在其中一个实施例中,该方法还包括:
获取容器新增请求,容器新增请求中携带新增的容器标识和与新增的容器标识对应的虚拟机标识;
根据容器新增请求新增容器,新增的容器中运行有一个或多个应用,并存储新增的容器标识与对应的虚拟机标识的对应关系。
一种应用发布装置,该装置包括:
登录请求获取模块,用于接收客户端发送的虚拟机登录请求,根据该虚拟机登录请求中获取请求的虚拟机标识;
查找模块,用于根据请求的虚拟机标识查找对应的容器标识,容器标识唯一对应一个虚拟机标识;
关联模块,用于根据请求的虚拟机标识启动对应的虚拟机,并根据对应的容器标识将对应的容器关联到虚拟机上,容器中运行有一个或多个应用;将启动的虚拟机的信息返回给客户端。
在其中一个实施例中,该装置还包括:
接收模块,用于接收客户端发送的应用访问请求;
调用模块,用于根据应用访问请求调用容器中的应用。
在其中一个实施例中,该装置还包括:
应用请求处理模块,用于当容器中的应用请求访问互联网数据时,通过隧道技术将互联网数据访问请求封装成数据包发送给虚拟机;
修改模块,用于通过虚拟机将数据包的源IP地址由容器的IP地址修改成虚拟机IP地址后,根据虚拟机IP地址将互联网数据访问请求发给审计设备。
在其中一个实施例中,应用请求处理模块还用于当容器中的应用请求访问容器的磁盘时,通过挂钩技术将磁盘访问请求重定向到虚拟机的数据盘上。
在其中一个实施例中,该装置还包括:
容器新增模块,用于获取容器新增请求,容器新增请求中携带新增的容器标识和与新增的容器标识对应的虚拟机标识;根据容器新增请求新增容器,新增的容器中运行有一个或多个应用,并存储新增的容器标识与对应的虚拟机标识的对应关系。
上述应用发布方法和装置,通过虚拟机标识与容器标识之间的对应关系,将对应的容器关联到用户请求的虚拟机上,即将容器中的应用发布到虚拟机上,使用户通过客户端登录虚拟机后能够通过虚拟机使用容器中的应用,容器唯一对应一个虚拟机。而且容器具有隔离的特性,不同容器中的应用不会访问同一份文件,从而避免了传统方法中多用户使用相同应用访问同一文件时造成多实例冲突的情形。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种应用发布方法,包括如下步骤:
步骤102,接收客户端发送的虚拟机登录请求,根据该虚拟机登录请求中获取请求的虚拟机标识。
本实施例中,虚拟机(VirtualMachine),指通过软件模拟的具有完整硬系统功能的、运行在一个服务器中的完整计算机系统,即运行在服务器上的虚拟化的PC,可供客户端接入。
客户端,指接入使用虚拟机的客户端,用于接收并显示来自虚拟机的图像,可以是PC或瘦客户机等形态。可以理解,只要具备接入虚拟机、接收并显示来自虚拟机图像功能的客户端都可以是本发明实施例中的客户端。
本实施例中,用户通过客户端向服务器发送虚拟机登录请求,服务器根据该虚拟机登录请求获取请求的虚拟机标识。
在一个实施例中,用户通过客户端向服务器发送虚拟机登录请求,服务器中预先存储了用户与虚拟机之间的对应关系。服务器根据该对应关系查找该用户对应哪些虚拟机,并将查找到的对应的虚拟机返回给客户端。进一步,用户通过客户端选择请求登录的虚拟机并发出登录操作指令,客户端获取该请求的虚拟机标识,并将该请求的虚拟机标识发送给服务器。可以理解,同一用户可对应一个或多个虚拟机。
在另一个实施例中,客户端界面显示了虚拟机图标,用户可以直接点击该虚拟机图标发出登录该虚拟机的指令,客户端获取请求登录的虚拟机标识,向服务器发送虚拟机登录请求,该虚拟机登录请求中携带请求的虚拟机标识。
在一个实施例中,客户端向服务器发送的虚拟机登录请求中还携带有登录密码,服务器验证登录密码是否正确,若是,则进入步骤104,若否,则返回密码错误提示信息给客户端。
步骤104,根据请求的虚拟机标识查找对应的容器标识,容器标识唯一对应一个虚拟机标识。
本实施例中,容器,是将应用隔离发布的最小组成单元,在容器中运行有一个或多个应用,通过应用发布技术可以将容器中的应用发布到虚拟机中进行使用。
具体的,服务器中预先存储有虚拟机标识与容器标识的对应关系,其中一个容器标识唯一对应一个虚拟机标识,即同一个容器只能关联到唯一对应的虚拟机上。服务器在接收虚拟机登录请求后,根据预先存储的虚拟机标识与容器标识的对应关系查找与获取的请求的虚拟机标识对应的容器标识。
进一步,查找到的与请求的虚拟机标识对应的容器标识可以有一个或多个。
步骤106,根据请求的虚拟机标识启动对应的虚拟机,并根据对应的容器标识将对应的容器关联到请求的虚拟机上,容器中运行有一个或多个应用。
本实施例中,服务器根据请求的虚拟机标识启动对应的虚拟机,在该请求的虚拟机启动完成之后,根据对应的容器标识将对应的容器关联到请求的虚拟机上。容器中运行有一个或多个应用,该将对应的容器关联到请求的虚拟机上的操作,实现了容器中运行的一个或多个应用可以在该请求的虚拟机上使用,即完成将容器中的应用发布到该虚拟机上的操作。
进一步,当查找到的与请求的虚拟机标识对应的容器标识有多个时,可以将多个容器标识对应的多个容器关联到请求的虚拟机上。可以理解,多个容器中可以分别运行不同的应用。比如容器A中运行应用A,容器B中运行应用B和应用C。
基于上文所述,同一容器只能关联到唯一的虚拟机上。那么针对不同用户都要使用同一应用的情况,比如用户A和用户B都要使用应用X,用户A登录到虚拟机a,用户B登录到虚拟机b,那么就可以在容器1中运行应用X,在容器2中也运行应用X,其中容器1唯一关联到虚拟机a上,容器2唯一关联到虚拟机b上,那么用户A和用户B就可以分别通过虚拟机a和虚拟机b调用不同容器中的应用X进行操作。基于容器间的隔离性,容器1和容器2中运行的应用X相互之间是隔离的,不会访问同一文件。
步骤108,将启动的虚拟机的信息返回给客户端。
在完成将对应的容器关联到请求的虚拟机上之后,服务器会将启动的虚拟机的信息返回给客户端。具体的,返回的虚拟机的信息包含请求的虚拟机信息已启动的通知以及启动的虚拟机上关联的容器中的应用的相关信息。客户端接收返回的信息后可以实现登录虚拟机,并使用该请求的虚拟机以及该虚拟机关联的容器中的应用。
可以理解,容器及虚拟机可以是分别运行在不同的服务器上,也可以是容器及虚拟机共用同一个服务器,还可以是容器运行在虚拟机上,本实施例对容器与虚拟机的运行位置不作具体限定。
本实施例中,通过虚拟机标识与容器标识的对应关系,将对应的容器关联到用户请求的虚拟机上,即将容器中的应用发布到虚拟机上,使用户通过客户端登录到虚拟机后能够通过虚拟机使用容器中的应用,容器唯一对应一个虚拟机。而且容器具有隔离的特性,不同容器中的应用不会访问同一份文件,从而避免了传统方法中多用户使用相同应用访问同一文件时造成多实例冲突的情形。
进一步,用户可以通过上述应用发布方法分别登录多个虚拟机,在多个虚拟机之间进行切换操作。
在一个实施例中,提供了一种应用发布方法的拓扑图,如图2所示,控制器22对客户端24、虚拟机262以及容器282进行管理,同时,控制器22管理用户与虚拟机262、虚拟机262与容器282的对应关系。虚拟机262运行在虚拟化服务器26上,容器282运行在容器服务器28中,应用2822运行在容器282中。
具体的,用户通过客户端24向控制器22发出虚拟机登录请求,控制器22根据该虚拟机登录请求获取请求的虚拟机标识,控制器22根据虚拟机标识向虚拟化服务器26请求客户端24所请求的虚拟机262,并向虚拟化服务器26发送与请求的虚拟机262对应的容器标识,虚拟化服务器26启动所请求的虚拟机262,所请求的虚拟机262启动后根据获取的容器标识向容器服务器28请求将对应的容器282关联到该虚拟机上,容器服务器28将对应的容器282关联到所请求的虚拟机262上,即将容器282上运行的应用2822映射到虚拟机262中,从而实现了将容器中的应用2822发布到虚拟机262上,虚拟化服务器26将启动的虚拟机的信息返回给客户端24,使客户端24能够连接到请求的虚拟机262上,并使用虚拟机262及与虚拟机262关联的容器282上的应用2822。本实施例中,控制器22中存储的对应关系中,容器282唯一对应一个虚拟机262。
如图3所示,在一个实施例中,提供了一种应用发布方法,该方法可应用于图2所示的拓扑图中,具体包括:
步骤302,控制器接收客户端发送的虚拟机登录请求,根据该虚拟机登录请求获取请求的虚拟机标识。
本实施例中,用户通过客户端向控制器发送虚拟机登录请求,控制器根据该虚拟机登录请求获取请求的虚拟机标识。
在一个实施例中,用户通过客户端向控制器发送虚拟机登录请求,控制器中预先存储了用户与虚拟机之间的对应关系,控制器根据该对应关系查找该用户对应哪些虚拟机,并将查找到的对应的虚拟机返回给客户端。进一步,用户通过客户端选择请求登录的虚拟机并发出登录操作指令,客户端获取请求登录的虚拟机标识,并将该请求的虚拟机标识发送给服务器。可以理解,同一用户可以对应一个或多个虚拟机。
在另一个实施例中,客户端界面显示了虚拟机图标,用户可直接点击该虚拟机图标发出登录该虚拟机的指令,客户端获取请求登录的虚拟机标识,向控制器发送虚拟机登录请求,该虚拟机登录请求中携带请求的虚拟机标识。
进一步,客户端向控制器发送的登录该虚拟机的请求中还携带有登录密码,控制器验证该登录密码是否正确,若是,则进入步骤204,若否,则返回密码错误提示信息给客户端。
步骤304,控制器根据请求的虚拟机标识查找对应的容器标识,容器标识唯一对应一个虚拟机标识。
控制器中存储有虚拟机标识与容器标识的对应关系,其中一个容器标识唯一对应一个虚拟机标识。控制器根据该对应关系,查找对应的容器标识。
步骤306,控制器向虚拟化服务器发送虚拟机请求,该虚拟机请求中携带请求的虚拟机标识和与请求的虚拟机标识对应的容器标识。
步骤308,虚拟化服务器根据请求的虚拟机标识启动对应的虚拟机。
步骤310,启动的虚拟机向容器服务器发送关联请求,该关联请求中携带与虚拟机标识对应的容器标识。
步骤312,容器服务器根据对应的容器标识将对应的容器关联到请求的虚拟机上,容器中运行有一个或多个应用。
本实施例中,容器中运行有一个或多个应用,容器服务器将对应的容器关联到所请求的虚拟机上,即将容器上运行的应用映射到虚拟机中,从而实现了将容器中的应用发布到虚拟机上。
步骤314,虚拟化服务器将请求的虚拟机信息返回给客户端。
本实施例中,返回的虚拟机的信息包含请求的虚拟机信息已启动的通知以及启动的虚拟机上关联的容器中的应用的相关信息。客户端接收返回的信息后可以实现登录虚拟机,并使用该请求的虚拟机以及该虚拟机关联的容器中的应用。
如图4所示,在一个实施例中,该应用发布方法还包括以下步骤:
步骤402,接收客户端发送的应用访问请求。
本实施例中,在完成客户端登录所请求的虚拟机之后,客户端可以使用该请求的虚拟机以及该虚拟机关联的容器中的应用。客户端向虚拟机发送应用访问请求,具体的,客户端可以通过点击虚拟机桌面上显示的应用图标对虚拟机发送应用访问请求。
步骤404,根据应用访问请求调用容器中的应用。
虚拟机接收客户端发送的应用访问请求之后,会调用对应容器上的应用,通过容器中的应用来完成客户端的发出的各种操作指令。在这种情况下,调用的容器上的应用的与使用安装在虚拟机中的应用的效果一样。
如图5所示,在一个实施例中,该应用发布方法还可以实现应用访问互联网数据,具体包括以下步骤:
步骤502,当容器中的应用请求访问互联网数据时,通过隧道技术将互联网数据访问请求封装成数据包发送给虚拟机。
本实施例中,客户端通过调用容器中的应用进行相关操作,当应用请求访问需要审计的互联网数据时,由于每个容器支持独立的IP地址,所以互联网数据访问请求中的源IP地址就是该容器的IP地址。该容器通过隧道技术将该互联网数据访问请求封装成数据包,发送给对应的虚拟机。
进一步,容器与虚拟机已经预先设置好对应的隧道协议,容器与虚拟机之间建立的隧道可以是应用请求访问互联网数据之前已经建立,该实施例中,可以是虚拟机发起隧道建立请求,也可以是容器发起的隧道建立请求。
此外,虚拟机与容器之间建立的隧道也可以是当应用需要访问互联网数据时,根据容器与虚拟机之间预设的对应的隧道协议,容器向虚拟机发送互联网数据访问请求时建立的,即容器在传送互联网数据访问请求给虚拟机的同时,根据两者之间预设的隧道协议建立隧道,通过隧道对互联网数据访问请求封装成数据包,发送给虚拟机。
步骤504,通过虚拟机将数据包的源IP地址由容器的IP地址修改成虚拟机IP地址后,根据虚拟机IP地址将互联网数据访问请求发给审计设备。
本实施例中,虚拟机接收容器通过隧道发送过来的封装数据包,该封装数据包的源IP地址是容器的IP地址,虚拟机会将数据包的源IP地址由容器的IP地址修改为虚拟机的IP地址,然后再根据虚拟机IP地址将互联网数据访问请求发送给审计设备。
审计设备,指针对用户的互联网行为提供有效的行为审计、内容审计、行为报警、行为控制及相关审计功能的一种设备,是企业对用户访问互联网行为进行审计的一种安全审计设备。从管理层面提供互联网的有效监督,预防、制止数据泄密。满足用户对互联网行为审计备案及安全保护措施的要求,提供完整的上网记录,便于信息追踪、系统安全管理和风险防范。
审计设备审计源IP地址修改为虚拟机的IP地址之后的互联网数据访问请求时,根据源IP地址是虚拟机的IP地址就可以获知是哪台虚拟机发出的互联网数据访问请求。从而实现对互联网访问行为的安全审计。
进一步,审计设备对互联网数据访问请求审计之后,将互联网数据访问请求发送给互联网,以实现应用对互联网数据的访问。
本实施例中,利用了容器支持独立IP的特性,通过隧道技术将互联网数据访问请求封装成数据包发送给虚拟机,虚拟机将数据包源IP地址由容器的IP地址修改为虚拟机的IP地址之后再将该互联网数据访问请求发送给审计设备,因此审计设备可以根据源IP地址获知是哪台虚拟机发出的互联网数据访问请求,从而实现了对互联网访问行为的安全审计。
在一个实施例中,该应用发布方法还包括:当容器中的应用请求访问容器的磁盘时,通过挂钩技术将磁盘访问请求重定向到虚拟机的数据盘上的步骤。
本实施例中,当调用的容器中的应用有访问磁盘的行为时,比如应用有读写操作时就会访问磁盘,那么原本应该访问的是容器所在的磁盘。本实施例中,容器中的控件通过挂钩的方式,比如对读写文件或磁盘的函数进行拦截,将目的磁盘或目录替换为其他地方的磁盘上,即实现将应用的磁盘访问请求由访问对应的容器的磁盘重定向到其他地方的磁盘上。进一步,可以将应用的磁盘访问请求由访问对应的容器的磁盘重定向到访问虚拟机的数据盘。
本实施例中,在远程应用请求访问容器的磁盘时,通过挂钩的方式将磁盘访问请求重定向到虚拟机自身使用的存储磁盘中,实现了应用访问时如同在虚拟机上操作一样的效果,实现了应用访问的一体化。
如图6所示,在一个实施例中,该应用发布方法还可以新增容器,具体包括以下步骤:
步骤602,获取容器新增请求,容器新增请求中携带新增的容器标识和与新增的容器标识对应的虚拟机标识。
步骤604,根据容器新增请求新增容器,该新增的容器中运行有一个或多个应用,并存储新增的容器标识与对应的虚拟机标识的对应关系。
本实施例中,当有新的应用需要发布时,可以在服务器中新增容器,将新的应用运行于新增的容器中。具体的,服务器获取容器新增请求,该容器新增请求中携带新增的容器标识,同时还携带与该新增的容器标识对应的虚拟机标识,即该新增的容器要对应发布到的虚拟机的标识。服务器根据容器新增请求将新增的容器进行存储,该新增的容器中运行有一个或多个应用。同时,服务器会将新增的容器标识与对应的虚拟机标识的对应关系进行存储。
结合图2所示的拓扑图,可以理解,本实施例中的服务器可以是容器服务器。
由于容器具有轻量级虚拟化的特点,通过容器的动态扩容实现新增应用,相较于传统的远程应用发布技术通过对应用服务器的操作来实现新增应用来说,更节省成本。
如图7所示,在一个实施例中,还提供一种应用发布装置,该装置包括:
登录请求获取模块702,用于接收客户端发送的虚拟机登录请求,根据该虚拟机登录请求获取请求的虚拟机标识。
查找模块704,用于根据请求的虚拟机标识查找对应的容器标识,容器标识唯一对应一个虚拟机标识。
关联模块706,用于根据请求的虚拟机标识启动对应的虚拟机,并根据对应的容器标识将对应的容器关联到虚拟机上,容器中运行有一个或多个应用;将启动的虚拟机的信息返回给客户端。
如图8所示,在一个实施例中,该装置还包括:
接收模块708,用于接收客户端发送的应用访问请求。
调用模块710,用于根据应用访问请求调用容器中的应用。
如图9所示,在一个实施例中,该装置还包括:
应用请求处理模块712,用于当容器中的应用请求访问互联网数据时,通过隧道技术将互联网数据访问请求封装成数据包发送给虚拟机。
修改模块714,用于通过虚拟机将数据包的源IP地址由容器的IP地址修改成虚拟机IP地址后,根据虚拟机IP地址将互联网数据访问请求发给审计设备。
在一个实施例中,应用请求处理模块712还用于当容器中的应用请求访问容器的磁盘时,通过挂钩技术将磁盘访问请求重定向到虚拟机的数据盘上。
如图10所示,在一个实施例中,该装置还包括:
容器新增模块716,用于获取容器新增请求,容器新增请求中携带新增的容器标识和与新增的容器标识对应的虚拟机标识;根据容器新增请求新增容器,新增的容器中运行有一个或多个应用,并存储新增的容器标识与对应的虚拟机标识的对应关系。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。