CN116010017A - 一种交互方法、计算机设备和计算机存储介质 - Google Patents
一种交互方法、计算机设备和计算机存储介质 Download PDFInfo
- Publication number
- CN116010017A CN116010017A CN202111235627.1A CN202111235627A CN116010017A CN 116010017 A CN116010017 A CN 116010017A CN 202111235627 A CN202111235627 A CN 202111235627A CN 116010017 A CN116010017 A CN 116010017A
- Authority
- CN
- China
- Prior art keywords
- server
- container
- ovs
- client request
- libvirt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种交互方法,该方法应用于具有宿主机操作系统的计算机设备中,其中,宿主机操作系统上承载有虚拟机,容器和服务端,包括:容器根据接收到OpenStack平台发送的虚拟化操作,访问宿主操作系统,宿主机操作系统将挂载的服务端的相关文件返回给容器,容器根据服务端的相关文件生成客户端请求,并将客户端请求发送至服务端,服务端响应客户端请求以完成虚拟化操作。本发明实施例还同时公开了一种计算机设备和计算机存储介质,保证了容器与宿主机中的服务端的相关文件的一致性,从而提高了容器与服务端之间交互的可靠性。
Description
技术领域
本发明涉及虚拟化计算节点的容器化技术,尤其涉及一种交互方法、计算机设备和计算机存储介质。
背景技术
目前,Docker是一种容器管理服务,可以将服务跑在容器内部,与宿主机系统隔离,提升服务通用性,Libvirt是虚拟化管理服务,用于创建管理虚拟机。Openvswitch(OVS)是虚拟网络管理服务,管理虚拟机网络配置、流表等信息。OpenStack是开源虚拟化平台,其计算节点部署服务为Nova-Compute,用于创建管理虚拟机,分别与Libvirt和Openvswitch服务交互。
然而,现有的虚拟化节点管理(Nova-Compute)与Libvirt交互方式易受防火墙影响,增加开销并降低稳定性,而且若容器与宿主机的libvirt版本存在差异,可能会导致交互异常;Nova-Compute与OVS的交互,容器内部需要安装OVS,若容器与宿主机的OVS版本存在差异,同样会导致交互异常;由此可以看出,现有的容器与Libvirt和Openvswitch服务交互的方式存在可靠性较差的技术问题。
发明内容
有鉴于此,本发明提供一种交互方法、计算机设备和计算机存储介质,以解决现有技术中存在的容器与Libvirt和Openvswitch服务交互的可靠性较差的技术问题。
本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种交互方法,所述方法应用于具有宿主机操作系统的计算机设备中,其中,所述宿主机操作系统上承载有虚拟机,容器和服务端,包括:
所述容器根据接收到OpenStack平台发送的虚拟化操作,访问所述宿主操作系统;其中,所述虚拟化操作包括针对所述虚拟机的操作和针对所述虚拟机的虚拟网络的操作;
所述宿主机操作系统将挂载的所述服务端的相关文件返回给所述容器;
所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端;
所述服务端响应所述客户端请求以完成所述虚拟化操作。
在上述方法中,所述宿主机操作系统将挂载的所述服务端的相关文件返回给所述容器,包括:
当所述虚拟化操作为针对所述虚拟机的操作时,所述宿主机操作系统将Libvirt服务端的相关文件返回给所述容器;
当所述虚拟化操作为针对所述虚拟机的虚拟网络的操作时,所述宿主机操作系统将OVS服务端的相关文件返回给所述容器。
在上述方法中,所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端,包括:
当所述虚拟化操作为针对所述虚拟机的操作时,所述容器利用预设的虚拟化接口,将所述Libvirt服务端的相关文件中的运行库文件封装成Libvirt客户端请求;
所述容器将所述Libvirt客户端请求发送至所述Libvirt服务端。
在上述方法中,所述容器将所述Libvirt客户端请求发送至所述Libvirt服务端,包括:
所述容器基于所述Libvirt服务端的相关文件中的进程文件,将所述Libvirt客户端请求通过本地socket的通信方式,发送至所述Libvirt服务端。
在上述方法中,所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端,包括:
当所述虚拟化操作为针对所述虚拟机的虚拟网络的操作时,所述容器根据所述OVS服务端的相关文件中的执行文件生成所述OVS客户端请求;
所述容器将所述OVS客户端请求发送至所述OVS服务端。
在上述方法中,所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端,包括:
当所述虚拟化操作为针对所述虚拟机的虚拟网络的操作,且所述容器启动共享PID机制时,所述容器根据所述OVS服务端的相关文件中的执行文件生成所述OVS客户端请求中的所请求的操作;
所述容器根据所述OVS服务端的相关文件中的OVS PID文件生成所述OVS客户端请求中的进程号;
所述容器将所述OVS客户端请求发送至所述OVS服务端。
在上述方法中,所述容器将所述OVS客户端请求发送至所述OVS服务端,包括:
所述容器根据所述OVS服务端的相关文件中的运行文件,将所述OVS客户端请求通过本地socket的通信方式,发送至所述OVS服务端。
第二方面,本发明提供了一种计算机设备,所述计算机设备具有宿主机操作系统,所述宿主机操作系统上承载有虚拟机、容器和服务端;其中,
所述容器用于根据接收到OpenStack平台发送的虚拟化操作,访问所述宿主操作系统;其中,所述虚拟化操作包括针对所述虚拟机的操作和针对所述虚拟机的虚拟网络的操作;
所述宿主机操作系统用于将挂载的所述服务端的相关文件返回给所述容器;
所述容器用于根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端;
所述服务端用于响应所述客户端请求以完成所述虚拟化操作。
在上述设备中,所述宿主机操作系统将挂载的所述服务端的相关文件返回给所述容器中,包括:
当所述虚拟化操作为针对所述虚拟机的操作时,所述宿主机操作系统将Libvirt服务端的相关文件返回给所述容器;
当所述虚拟化操作为针对所述虚拟机的虚拟网络的操作时,所述宿主机操作系统将OVS服务端的相关文件返回给所述容器。
在上述设备中,所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端中,包括:
当所述虚拟化操作为针对所述虚拟机的操作时,所述容器利用预设的虚拟化接口,将所述Libvirt服务端的相关文件中的运行库文件封装成Libvirt客户端请求;
所述容器将所述Libvirt客户端请求发送至所述Libvirt服务端。
在上述设备中,所述容器将所述Libvirt客户端请求发送至所述Libvirt服务端中,包括:
所述容器基于所述Libvirt服务端的相关文件中的进程文件,将所述Libvirt客户端请求通过本地socket的通信方式,发送至所述Libvirt服务端。
在上述设备中,所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端中,包括:
当所述虚拟化操作为针对所述虚拟机的虚拟网络的操作时,所述容器根据所述OVS服务端的相关文件中的执行文件生成所述OVS客户端请求;
所述容器将所述OVS客户端请求发送至所述OVS服务端。
在上述设备中,所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端中,包括:
当所述虚拟化操作为针对所述虚拟机的虚拟网络的操作,且所述容器启动共享PID机制时,所述容器根据所述OVS服务端的相关文件中的执行文件生成所述OVS客户端请求中的所请求的操作;
所述容器根据所述OVS服务端的相关文件中的OVS PID文件生成所述OVS客户端请求中的进程号;
所述容器将所述OVS客户端请求发送至所述OVS服务端。
在上述设备中,所述容器将所述OVS客户端请求发送至所述OVS服务端中,包括:
所述容器根据所述OVS服务端的相关文件中的运行文件,将所述OVS客户端请求通过本地socket的通信方式,发送至所述OVS服务端。
第三方面,本发明实施例还提供了一种计算机设备,包括:处理器以及存储有所述处理器可执行指令的存储介质,所述存储介质通过通信总线依赖所述处理器执行操作,当所述指令被所述处理器执行时,执行上述一个或多个实施例所述交互方法。
第四方面,本发明实施例提供了一种计算机存储介质,存储有可执行指令,当所述可执行指令被一个或多个处理器执行的时候,所述处理器执行上述一个或多个实施例所述交互方法。
本发明所提供的一种交互方法、计算机设备和计算机存储介质,该方法应用于具有宿主机操作系统的计算机设备中,宿主机操作系统上承载有虚拟机,容器和服务端,包括:容器根据接收到OpenStack平台发送的虚拟化操作,访问宿主操作系统;其中,虚拟化操作包括针对虚拟机的操作和针对虚拟机的虚拟网络的操作,宿主机操作系统将挂载的服务端的相关文件返回给容器,容器根据服务端的相关文件生成客户端请求,并将客户端请求发送至服务端,服务端响应客户端请求以完成虚拟化操作;也就是说,在本发明实施例中,通过挂载技术,使得容器可以通过访问宿主机操作系统得到服务端的相关文件,再利用服务端的相关文件生成客户端请求,并将客户端请求发送至服务端以实现OpenStack平台发送的虚拟化操作,这样,避免了容器与宿主机中服务端的相关文件由于版本不同所引起的容器与服务端的交互异常,利用挂载技术保证了容器与宿主机中的服务端的相关文件的一致性,从而提高了容器与服务端之间交互的可靠性。
附图说明
图1为本发明实施例中的一种可选的交互方法的流程示意图;
图2为本申请实施例提供的一种可选的计算机设备的实例的结构示意图;
图3为本申请实施例提供的一种可选的交互方法的实例的流程示意图;
图4a为相关技术中容器与Libvirt服务端的交互的流程示意图;
图4b为本申请实施例提供的一种容器与Libvirt服务端的交互的实例的流程示意图;
图5a为相关技术中容器与OVS服务端的交互的流程示意图;
图5b为本申请实施例提供的一种容器与OVS服务端的交互的实例的流程示意图;
图6为本发明实施例提供的一种可选的计算机设备的结构示意图;
图7为本发明实施例提供的另一种可选的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例一
本发明实施例提供一种交互方法,该方法应用于具有宿主机操作系统的计算机设备,其中,宿主机操作系统上承载有虚拟机,容器和服务端,图1为本发明实施例中的一种可选的交互方法的流程示意图,如图1所示,该交互方法可以包括:
S101:容器根据接收到OpenStack平台发送的虚拟化操作,访问宿主操作系统;
目前,针对容器与Libvirt的交互采用传输控制协议(TCP,Transmission ControlProtocol)远程连接的方式,然而该方式会引入TCP传输,易受防火墙影响,增加开销并降低稳定性,并且,容器与宿主机的Libvirt版本存在差异时,可能会导致交互异常;另外,针对容器与OVS的交互中,预先在容器中安装OVS,若容器与宿主机的OVS版本存在差异时,同样会导致交互异常,并且该方法只针对社区OVS方案,如果是OVS-数据开发平台及工具(DPDK,Data Plane Development Kit)方案,此方案无法实现管理。
为了提高容器与Libvirt和OVS之间交互的可靠性,本申请实施例提供一种交互方法,该交互方法应用于计算机设备,该计算机设备作为宿主机,该宿主局操作系统上承载有虚拟机,并且该宿主机上还承载有容器和服务端,该服务端包括Libvirt服务端和OVS服务端。
其中,上述容器可以包括容器操作系统,Nova-compute服务,Libvirt客户端(Client)和OVS客户端(Client),负责虚拟机生命周期管理;上述Libvirt服务端为通用虚拟化组件,包括Libvirtd(Libvirt守护进程),qemu(模拟器)和基于内核的虚拟机(KVM,Kernel-based Virtual Machine)内核组成,负责KVM虚拟化管理;上述OVS服务端为通用虚拟网络组件,包括ovsdb-server(OVS数据库服务),ovs-vswitchd(OVS控制服务)以及OVS内核模块,负责虚拟网络配置;上述容器通过上述计算机设备的Docker进行管理,上述Libvirt服务端和OVS服务端通过计算机设备的systemd进行管理。
首先,该宿主机设置于OpenStack平台中,容器作为该平台中的一个计算节点,接收来自OpenStack平台发送的虚拟化操作,其中,虚拟化操作包括针对虚拟机的操作和针对虚拟机的虚拟网络的操作;也就是说,OpenStack平台发送的有可能是针对虚拟机的操作,也有可能是针对虚拟机的虚拟网络的操作,这里,本申请实施例对此不作具体限定。
具体来说,容器在接收到虚拟化操作之后,由于利用挂载技术,容器可以通过访问宿主机操作系统得到服务端的相关文件,所以,这里,在接收到虚拟化操作,根据虚拟化操作访问宿主机操作系统。
S102:宿主机操作系统将挂载的服务端的相关文件返回给容器;
具体来说,由于不同的虚拟化操作是针对不同服务端的交互,所以,针对不同的虚拟化操作,宿主机操作系统返回给容器的相关文件是不同的,为了得到服务端的相关文件,在一种可选的实施例中,S102可以包括:
当虚拟化操作为针对虚拟机的操作时,宿主机操作系统将Libvirt服务端的相关文件返回给容器;
当虚拟化操作为针对虚拟机的虚拟网络的操作时,宿主机操作系统将OVS服务端的相关文件返回给容器。
也就是说,当虚拟化操作为针对虚拟机的操作时,容器需要与Libvirt服务端进行交互以实现对虚拟机的管理,所以,容器访问宿主机操作系统,宿主机操作系统将Libvit服务端的相关文件返回给容器,需要说明的是,通过Docker启动容器,挂载在宿主机操作系统的目录如下表1-表3所示:
| /etc/passwd | 系统用户(包括libvirt、qemu、nova) |
| /etc/group | 用户组信息 |
| /etc/shadow | 用户密码信息 |
| /etc/gshadow | 用户组密码信息 |
表1
| /var/run/libvirt | Libvirt-sock相关进程文件 |
表2
| /lib64/libvirt.so.0 | Libvirt动态库 |
| /lib64/libvirt-qemu.so.0 | Libvirt/Qemu动态库 |
表3
也就是说,表1为用户相关文件,作用:挂载宿主机操作系统的用户文件给nova-compute容器,使nova-compute容器内暴露libvirt、qemu、nova的用户、密码、用户组,及对应的权限关系;表2为进程文件,作用:挂载宿主机虚拟化运行目录给容器,使容器内暴露libvirt-sock进程文件;表3为运行库文件,作用:挂载宿主机虚拟化运行库文件给容器,使容器内暴露libvirt.so文件。
由于通过挂载技术,那么当虚拟化操作为针对虚拟机的操作时,容器可以通过访问宿主机操作系统获取到Libvirt服务端的相关文件,其中,Libvirt服务端的相关文件可以包括上述表1-表3中的文件。
另外,当虚拟化操作为针对虚拟机的操作时,容器需要与OVS服务端进行交互以实现对虚拟机的虚拟网络的管理,所以,容器访问宿主机操作系统,宿主机操作系统将OVS服务端的相关文件返回给容器,需要说明的是,通过Docker启动容器,挂载在宿主机操作系统的目录如下表4-表6所示:
| /var/run/openvswitch/db.sock | ovs运行目录sock文件 |
| /var/run/openvswitch/ovsdb-server.ctl | ovs运行目录sock文件 |
| /var/run/openvswitch/ovs-vswitchd.ctl | ovs运行目录sock文件 |
表4
| /var/run/openvswitch/ovsdb-server.pid | ovs pid文件 |
| /var/run/openvswitch/ov-vswitchd.pid | ovs pid文件 |
表5
| /bin/ovs-vsctl | ovs所需执行文件 |
| /bin/ovs-appctl | ovs-dpdk所需执行文件 |
| /bin/ovs-dpctl | ovs-dpdk所需执行文件 |
表6
也就是说,表4为ovs相关目录,作用:挂载宿主机ovs运行目录给容器,使容器内暴露db.sock、ovsdb-server.ctl、ovs-vswitchd.ctl进程文件;表2为ovs pid文件,作用:挂载宿主机ovs pid文件给容器,使容器内暴露ovsdb-server.pid、ovs-vswitchd.pid两个pid文件,并共享宿主机pid;表3为ovs执行文件,作用:挂载宿主机ovs执行文件,即nova-compute服务依赖的/bin/ovs-vsctl、/bin/ovs-appctl、/bin/ovs-dpctl执行文件给容器。
由于通过挂载技术,那么当虚拟化操作为针对虚拟机的虚拟网络的操作时,容器可以通过访问宿主机操作系统获取到OVS服务端的相关文件,其中,OVS服务端的相关文件可以包括上述表4-表6中的文件。
S103:容器根据服务端的相关文件生成客户端请求,并将客户端请求发送至服务端;
通过S102得到服务端的相关文件之后,容器就可以根据服务端的相关文件生成客户端请求,并将客户端请求发送至服务端,这里由于不同的虚拟化操作获取到的相关文件是不同的,不同的相关文件生成客户端请求的方式也是不同的,所以,为了实现容器根据服务端的相关文件生成客户端请求,这里还是根据虚拟化操作的具体类型来分两种情况说明。
针对虚拟机的操作,在一种可选的实施例中,S103可以包括:
当虚拟化操作为针对虚拟机的操作时,容器利用预设的虚拟化接口,将Libvirt服务端的相关文件中的运行库文件封装成Libvirt客户端请求;
容器将Libvirt客户端请求发送至Libvirt服务端。
也就是说,当虚拟化操作为针对虚拟机的操作时,那么容器得到的是Libvirt服务端的相关文件,其中,Libvirt服务端的相关文件包括用户相关文件,进程文件和运行库文件,容器利用预设的虚拟化接口将运行库文件封装成Libvirt客户端请求,该虚拟化接口一般为libvirt-python接口,这样便生成了Libvirt客户端请求,并将Libvirt客户端请求发送至Libvirt服务端。
需要说明的是,这里,容器将Libvirt客户端请求发送至Libvirt服务端的方式可以采用TCP协议的方式,还可以采用其他通信方式,这里,本申请实施例对此不作具体限定。
为了减小开销并提高稳定性,在一种可选的实施例中,容器将Libvirt客户端请求发送至Libvirt服务端,包括:
容器基于Libvirt服务端的相关文件中的进程文件,将Libvirt客户端请求通过本地socket的通信方式,发送至Libvirt服务端。
具体来说,Libvirt服务端的相关文件中包括进程文件,在实际应用中,进程文件为Libvirt-sock,那么,基于Libvirt-sock,容器可以通过本地socket的通信方式将Libvirt客户端请求发送至Libvirt服务端,这样,能够减少性能开销,提升稳定性。
针对虚拟机的虚拟网络的操作,在一种可选的实施例中,S103可以包括:
当虚拟化操作为针对虚拟机的虚拟网络的操作时,容器根据OVS服务端的相关文件中的执行文件生成OVS客户端请求;
容器将OVS客户端请求发送至OVS服务端。
也就是说,当虚拟化操作为针对虚拟机的虚拟网络的操作时,那么容器得到的是OVS服务端的相关文件,其中,OVS服务端的相关文件包括OVS进程控制符(PID,ProcessIdentifier)文件,运行文件和执行文件,容器利用OVS服务端的相关文件的执行文件生成了Libvirt客户端请求,并将Libvirt客户端请求发送至Libvirt服务端。
这里,需要分两种情况来进行说明,第一种情况是OVS服务端的相关文件中的执行文件为ovs-vsctl,另一种情况是OVS服务端的相关文件中的执行文件为ovs-appctl和ovs-dpctl,针对第一种情况来说,容器根据执行文件生成OVS客户端请求,然后发送至OVS服务端即可,针对另一种情况来说,在一种可选的实施例中,S103可以包括:
当虚拟化操作为针对虚拟机的虚拟网络的操作,且容器启动共享PID机制时,容器根据OVS服务端的相关文件中的执行文件生成OVS客户端请求中的所请求的操作;
容器根据OVS服务端的相关文件中的OVS PID文件生成OVS客户端请求中的进程号;
容器将OVS客户端请求发送至OVS服务端。
也就是说,当虚拟化操作为针对虚拟机的虚拟网络的操作时,容器驱动PID机制,这样,容器可以通过挂载技术获取到OVS PID文件,通过执行文件生成OVS客户端请求中所请求的操作,通过OVS PID文件生成OVS客户端请求的进程号,这样,便生成了OVS客户端请求,并将客户端请求发送至OVS服务端。
另外,在一种可选的实施例中,容器将OVS客户端请求发送至OVS服务端,包括:
容器根据OVS服务端的相关文件中的运行文件,将OVS客户端请求通过本地socket的通信方式,发送至OVS服务端。
由于在OVS服务端的运行文件中还包括运行文件,在实际应用中,该运行文件为OVS运行目录sock文件,所以,容器通过本地socket的通信方式,将OVS客户端请求发送至OVS服务端。
S104:服务端响应客户端请求以完成虚拟化操作。
具体来说,当客户端请求为Libvirt客户端请求时,该Libvirt客户端请求可以为针对虚拟机的创建操作,删除操作,修改操作和查找操作,服务端根据Libvirt客户端请求执行相应操作已完成虚拟化操作。
当客户端请求为OVS客户端请求时,该OVS客户端请求可以为针对虚拟机的虚拟网络的网口(port)操作,即对虚拟交换机的网络的创建操作,删除操作,修改操作和查找操作,对虚拟网络的限流操作和对虚拟网络的流表操作执行相应操作已完成虚拟化操作。
下面举实例来对上述一个或多个实施例中所述的交互方法进行描述。
图2为本申请实施例提供的一种可选的计算机设备的实例的结构示意图,如图2所示,该系统由四大模块组成:
其中,模块一是运行于计算服务器上的宿主机操作系统,同时作为虚拟化节点承载虚拟机;模块二是Nova-compute容器,由容器操作系统、Nova-compute服务、LibvirtClient、OVS Client组成,负责虚拟机生命周期管理;模块三是Libvirt Server/Qemu,为通用虚拟化组件,有libvirtd、qemu、KVM内核组成,负责KVM虚拟化管理;模块四是OVSServer,为通用虚拟网络组件,由ovsdb-sever、ovs-vswitchd及OVS内核模块组成,负责虚拟网络配置。
模块之间的交互关系如下:
1.模块二、三、四都承载在模块一上,其中,模块二通过模块一上的Docker进行管理,三、四通过模块一的systemd进行管理。
2.模块二通过Docker挂载模块一的系统用户目录,同步用户信息,进而作为启动模块二Nova-compute服务的基础。
3.模块二通过Nova-compute服务的通用逻辑发起对模块三libvirt server及模块四ovs server的访问。
4.当模块二发起对模块三的访问时,通过Docker挂载模块三Libvirt server的运行库及运行目录信息,进而通过Libvirt Client从容器中直接访问模块三libvirt Server进程,实现跨容器通信访问。
5.当模块二发起对模块四的访问时,通过Docker挂载模块四OVS Server的运行库及运行目录信息,进而通过OVS Client从容器中直接访问模块三OVS Server进程,实现跨容器通信访问。
图3为本申请实施例提供的一种可选的交互方法的实例的流程示意图,如图3所示,该交互方法可以包括:
S301:OpenStack平台向容器化计算节点发起虚拟化操作;
S302:当虚拟化操作为虚拟机操作时,通过调用Libvirt接口将虚拟机操作发送至Libvirt/qemu服务端;
S303:当虚拟化操作为虚拟网络操作时,通过调用OVS接口将虚拟机操作发送至OVS服务端;
S304:将操作qemu进程发送至虚拟机;
S305:将操作OVS port端口发送至虚拟机;
最后,虚拟机响应接收到的操作即可。
图4a为相关技术中容器与Libvirt服务端的交互的流程示意图,如图4a所示,Nova-compute接收到虚拟机操作之后,调用libvirt-python接口封装libvirt-libs库文件得到客户端请求,将客户端请求通过TCP访问端口,以实现宿主机中的Libvirt服务。
图4b为本申请实施例提供的一种容器与Libvirt服务端的交互的实例的流程示意图,如图4b所示,启动容器后,Nova-compute容器与Libvirt server交互流程:
Nova用户服务通过libvirt-python接口调用libvirt-so库文件作为Client来访问Libvirt-sock进程,最终实现访问宿主机libvirtd服务,实现云主机管理,具体流程为:
1.Nova-compute容器内接受用户动作请求(OpenStack通用流程发送的),调用内部driver驱动。
2.driver驱动选择libvirt-python接口(系统默认虚拟化接口),发起虚拟机生命周期动作;
其中,发起时调用会再加libvirt.so动态库,此时容器内部已挂载libvirt.so和libvirtd.sock,请求会使用本地socket交互方式取代TCP方式,成功发起交互。
3.容器外Libvirt Server(libvirtd服务进程)根据请求事件操作qemu进程,管理虚拟机(Libvirt通用流程)。
图5a为相关技术中容器与OVS服务端的交互的流程示意图,如图5a所示,Nova-compute接收到虚拟机操作之后,由于Nova-compute中安装有OVS,可以直接获取到ovs-vsctl和db.sock文件,根据ovs-vsctl生成客户端请求,通过本地socket通信方式访问,以实现宿主机中的ovsdb-server服务。
图5b为本申请实施例提供的一种容器与OVS服务端的交互的实例的流程示意图,如图5b所示,重新启动容器后,Nova-compute容器与OVS server交互流程:
Nova-Compute容器启动共享PID模式,Nova用户服务通过调用ovs-vsctl执行文件、访问sock进程、最终实现访问宿主机ovsdb-server服务,实现通用OVS云主机网络配置。具体流程为:
1.Nova-compute容器内接受用户虚机网络相关动作请求(OpenStack通用流程发送的),调用内部ovs-ctl命令。
2.容器已挂载宿主机ovs-ctl执行文件,成功发起ovs-ctl port操作。
3.操作使用本地socket交互方式,由于容器已挂载db.sock,成功发起交互。
4.容器外OVS Server根据请求交互请求修改port配置信息。
另外,由于共享PID机制,此时Nova-Compute容器也能和OVS-DPDK进行交互,Nova用户服务通过调用ovs-vsctl/ovs-appctl/ovs-dpctl执行文件,从获取PID文件获取进程号、访问sock进程、最终实现访问宿主机ovs-vswitchd及ovsdb-server服务,具体流程为:
1.Nova-compute容器内接受用户虚机网络相关动作请求(OpenStack通用流程),调用内部ovs-ctl命令(port操作)、ovs-appctl(限流(qos)操作)、ovs-dpctl(流表操作)。
2.容器已挂载宿主机ovs-ctl执行文件,成功发起port操作。
3.容器已挂载宿主机ovs-appctl执行文件,成功发起qos操作。
4.容器已挂载宿主机ovs-dpctl执行文件,成功发起流表操作。
5.由于容器已共享PID文件,可以查询ovs-vswitchd及ovsdb-server的PID,得到进程号。
6.通过容器共享主机PID机制,成功查找到对应得进程及sock文件(ovs-appctl及ovs-dpctl命令执行会查找进程pid),成功发起交互。
7.容器外OVS Server(ovsdb-sever、ovs-vswitchd服务)根据请求交互进行ovs-dpdk port的配置、qos修改及流表设置。
本实例中,基于运行库挂载和本地socket通信的Libvirt交互方式,增强稳定性与兼容性,避免TCP传输开销,基于PID跨系统调用的OVS交互方式,在容器内挂载宿主机OVS多个可执行文件,实现对接OVS-DPDK,并保障全平台通用性。
也就是说,Libvirt使用本地通信取代TCP通信,能够减少性能开销,提升稳定性;基于运行库挂载实现调用,提升容器内外Libvirt的版本兼容性;同于容器共享PID及挂载OVS PID文件,实现对接OVS-DPDK;在容器内挂载宿主机OVS可执行文件,提升容器内外OVS的版本兼容性。
本发明所提供的一种交互方法,该方法应用于具有宿主机操作系统的计算机设备中,宿主机操作系统上承载有虚拟机,容器和服务端,包括:容器根据接收到OpenStack平台发送的虚拟化操作,访问宿主操作系统;其中,虚拟化操作包括针对虚拟机的操作和针对虚拟机的虚拟网络的操作,宿主机操作系统将挂载的服务端的相关文件返回给容器,容器根据所述服务端的相关文件生成客户端请求,并将客户端请求发送至服务端,服务端响应客户端请求以完成虚拟化操作;也就是说,在本发明实施例中,通过挂载技术,使得容器可以通过访问宿主机操作系统得到服务端的相关文件,再利用服务端的相关文件生成客户端请求,并将客户端请求发送至服务端以实现OpenStack平台发送的虚拟化操作,这样,避免了容器与宿主机中服务端的相关文件由于版本不同所引起的容器与服务端的交互异常,利用挂载技术保证了容器与宿主机中的服务端的相关文件的一致性,从而提高了容器与服务端之间交互的可靠性。
实施例二
基于同一发明构思,本发发明实施例还提供一种计算机设备,图6为本发明实施例提供的一种可选的计算机设备的结构示意图,如图6所示,该计算机设备600具有宿主机操作系统,该宿主机操作系统上承载有虚拟机61、容器62和服务端63;其中,
容器62用于根据接收到OpenStack平台发送的虚拟化操作,访问宿主操作系统;其中,虚拟化操作包括针对虚拟机61的操作和针对虚拟机61的虚拟网络的操作;
宿主机操作系统用于将挂载的服务端63的相关文件返回给容器63;
容器62用于根据服务端63的相关文件生成客户端请求,并将客户端请求发送至服务端63;
服务端63用于响应客户端请求以完成虚拟化操作。
在一种可选的实施例中,容器62根据服务端63的相关文件生成客户端请求,并将客户端请求发送至服务端63中,包括:
当虚拟化操作为针对虚拟机61的操作时,容器62利用预设的虚拟化接口,将Libvirt服务端的相关文件中的运行库文件封装成Libvirt客户端请求;
容器62将Libvirt客户端请求发送至Libvirt服务端。
在一种可选的实施例中,容器62将Libvirt客户端请求发送至Libvirt服务端中,包括:
容器62基于Libvirt服务端的相关文件中的进程文件,将Libvirt客户端请求通过本地socket的通信方式,发送至Libvirt服务端。
在一种可选的实施例中,容器62根据服务端63的相关文件生成客户端请求,并将客户端请求发送至服务端63中,包括:
当虚拟化操作为针对虚拟机61的虚拟网络的操作时,容器62根据OVS服务端的相关文件中的执行文件生成OVS客户端请求;
容器62将OVS客户端请求发送至OVS服务端。
在一种可选的实施例中,容器62根据服务端63的相关文件生成客户端请求,并将客户端请求发送至服务端63中,包括:
当虚拟化操作为针对虚拟机61的虚拟网络的操作,且容器62启动共享PID机制时,容器62根据OVS服务端的相关文件中的执行文件生成OVS客户端请求中的所请求的操作;
容器62根据OVS服务端的相关文件中的OVS PID文件生成OVS客户端请求中的进程号;
容器62将OVS客户端请求发送至OVS服务端。
在一种可选的实施例中,容器62将OVS客户端请求发送至OVS服务端中,包括:
容器62根据OVS服务端的相关文件中的运行文件,将OVS客户端请求通过本地socket的通信方式,发送至OVS服务端。
在实际应用中,上述虚拟机61、容器62和服务端63可由位于计算机设备600上的处理器实现,具体为中央处理器(Central Processing Unit,CPU)、微处理器(Microprocessor Unit,MPU)、数字信号处理器(Digital Signal Processing,DSP)或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。
图7为本发明实施例提供的另一种可选的计算机设备的结构示意图,如图7所示,本发明实施例提供了一种计算机设备700,包括:
处理器71以及存储有所述处理器71可执行指令的存储介质72,所述存储介质72通过通信总线73依赖所述处理器71执行操作,当所述指令被所述处理器71执行时,执行上述实施例一所述交互方法。
需要说明的是,实际应用时,终端中的各个组件通过通信总线73耦合在一起。可理解,通信总线73用于实现这些组件之间的连接通信。通信总线73除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为通信总线73。
本发明实施例提供了一种计算机存储介质,存储有可执行指令,当所述可执行指令被一个或多个处理器执行的时候,所述处理器执行实施例一所述的交互方法。
其中,计算机可读存储介质可以是磁性随机存取存储器(ferromagnetic randomaccess memory,FRAM)、只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种交互方法,其特征在于,所述方法应用于具有宿主机操作系统的计算机设备中,其中,所述宿主机操作系统上承载有虚拟机,容器和服务端,包括:
所述容器根据接收到OpenStack平台发送的虚拟化操作,访问所述宿主操作系统;其中,所述虚拟化操作包括针对所述虚拟机的操作和针对所述虚拟机的虚拟网络的操作;
所述宿主机操作系统将挂载的所述服务端的相关文件返回给所述容器;
所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端;
所述服务端响应所述客户端请求以完成所述虚拟化操作。
2.根据权利要求1所述的方法,其特征在于,所述宿主机操作系统将挂载的所述服务端的相关文件返回给所述容器,包括:
当所述虚拟化操作为针对所述虚拟机的操作时,所述宿主机操作系统将Libvirt服务端的相关文件返回给所述容器;
当所述虚拟化操作为针对所述虚拟机的虚拟网络的操作时,所述宿主机操作系统将OVS服务端的相关文件返回给所述容器。
3.根据权利要求2所述的方法,其特征在于,所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端,包括:
当所述虚拟化操作为针对所述虚拟机的操作时,所述容器利用预设的虚拟化接口,将所述Libvirt服务端的相关文件中的运行库文件封装成Libvirt客户端请求;
所述容器将所述Libvirt客户端请求发送至所述Libvirt服务端。
4.根据权利要求3所述的方法,其特征在于,所述容器将所述Libvirt客户端请求发送至所述Libvirt服务端,包括:
所述容器基于所述Libvirt服务端的相关文件中的进程文件,将所述Libvirt客户端请求通过本地socket的通信方式,发送至所述Libvirt服务端。
5.根据权利要求2所述的方法,其特征在于,所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端,包括:
当所述虚拟化操作为针对所述虚拟机的虚拟网络的操作时,所述容器根据所述OVS服务端的相关文件中的执行文件生成所述OVS客户端请求;
所述容器将所述OVS客户端请求发送至所述OVS服务端。
6.根据权利要求2所述的方法,其特征在于,所述容器根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端,包括:
当所述虚拟化操作为针对所述虚拟机的虚拟网络的操作,且所述容器启动共享PID机制时,所述容器根据所述OVS服务端的相关文件中的执行文件生成所述OVS客户端请求中的所请求的操作;
所述容器根据所述OVS服务端的相关文件中的OVSPID文件生成所述OVS客户端请求中的进程号;
所述容器将所述OVS客户端请求发送至所述OVS服务端。
7.根据权利要求5或6所述的方法,其特征在于,所述容器将所述OVS客户端请求发送至所述OVS服务端,包括:
所述容器根据所述OVS服务端的相关文件中的运行文件,将所述OVS客户端请求通过本地socket的通信方式,发送至所述OVS服务端。
8.一种计算机设备,其特征在于,所述计算机设备具有宿主机操作系统,所述宿主机操作系统上承载有虚拟机、容器和服务端;其中,
所述容器用于根据接收到OpenStack平台发送的虚拟化操作,访问所述宿主操作系统;其中,所述虚拟化操作包括针对所述虚拟机的操作和针对所述虚拟机的虚拟网络的操作;
所述宿主机操作系统用于将挂载的所述服务端的相关文件返回给所述容器;
所述容器用于根据所述服务端的相关文件生成客户端请求,并将所述客户端请求发送至所述服务端;
所述服务端用于响应所述客户端请求以完成所述虚拟化操作。
9.一种计算机设备,其特征在于,包括:
处理器以及存储有所述处理器可执行指令的存储介质,所述存储介质通过通信总线依赖所述处理器执行操作,当所述指令被所述处理器执行时,执行上述的权利要求1至7任一项所述的交互方法。
10.一种计算机存储介质,其特征在于,存储有可执行指令,当所述可执行指令被一个或多个处理器执行的时候,所述处理器执行所述的权利要求1至7任一项所述的交互方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111235627.1A CN116010017A (zh) | 2021-10-22 | 2021-10-22 | 一种交互方法、计算机设备和计算机存储介质 |
| PCT/CN2022/119793 WO2023065922A1 (zh) | 2021-10-22 | 2022-09-20 | 一种交互方法、计算机设备和计算机存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111235627.1A CN116010017A (zh) | 2021-10-22 | 2021-10-22 | 一种交互方法、计算机设备和计算机存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN116010017A true CN116010017A (zh) | 2023-04-25 |
Family
ID=86030462
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202111235627.1A Pending CN116010017A (zh) | 2021-10-22 | 2021-10-22 | 一种交互方法、计算机设备和计算机存储介质 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN116010017A (zh) |
| WO (1) | WO2023065922A1 (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119806742A (zh) * | 2024-12-20 | 2025-04-11 | 北京百度网讯科技有限公司 | 裸金属实例的管控方法、装置、设备以及存储介质 |
| CN119806744A (zh) * | 2024-12-20 | 2025-04-11 | 北京百度网讯科技有限公司 | 虚拟机管控方法、装置、电子设备及存储介质 |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119728433B (zh) * | 2024-12-03 | 2025-11-11 | 天翼云科技有限公司 | 一种cuttlefish云手机管理方法及装置 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8468521B2 (en) * | 2007-10-26 | 2013-06-18 | Netapp, Inc. | System and method for utilizing a virtualized compute cluster as an execution engine for a virtual machine of a storage system cluster |
| CN103677962B (zh) * | 2013-12-20 | 2016-12-28 | 上海电机学院 | 基于虚拟化技术的桌面交付设备的实现系统及方法 |
| CN106775953A (zh) * | 2016-12-30 | 2017-05-31 | 北京中电普华信息技术有限公司 | 实现OpenStack高可用的方法与系统 |
| CN106803796B (zh) * | 2017-03-05 | 2020-07-03 | 北京工业大学 | 基于云平台的多租户网络拓扑重构方法 |
-
2021
- 2021-10-22 CN CN202111235627.1A patent/CN116010017A/zh active Pending
-
2022
- 2022-09-20 WO PCT/CN2022/119793 patent/WO2023065922A1/zh not_active Ceased
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119806742A (zh) * | 2024-12-20 | 2025-04-11 | 北京百度网讯科技有限公司 | 裸金属实例的管控方法、装置、设备以及存储介质 |
| CN119806744A (zh) * | 2024-12-20 | 2025-04-11 | 北京百度网讯科技有限公司 | 虚拟机管控方法、装置、电子设备及存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2023065922A1 (zh) | 2023-04-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11146620B2 (en) | Systems and methods for instantiating services on top of services | |
| US11294735B2 (en) | Method and apparatus for accessing desktop cloud virtual machine, and desktop cloud controller | |
| US8443365B2 (en) | Methods and systems to clone a virtual machine instance | |
| JP7016964B2 (ja) | マルチテナントコンテナプラットフォーム上でアプリケーションを実行するためのシステム及び方法 | |
| US11210132B2 (en) | Virtual machine migration in virtualization environment having different virtualization systems | |
| WO2023065922A1 (zh) | 一种交互方法、计算机设备和计算机存储介质 | |
| US11102278B2 (en) | Method for managing a software-defined data center implementing redundant cloud management stacks with duplicate API calls processed in parallel | |
| US11221866B2 (en) | Accelerator loading method, system, and apparatus | |
| JP2019528005A (ja) | クラウドコンピューティングシステムにおいて仮想マシンが物理サーバにアクセスするための方法、装置、およびシステム | |
| US8875132B2 (en) | Method and apparatus for implementing virtual proxy to support heterogeneous systems management | |
| US10411957B2 (en) | Method and device for integrating multiple virtual desktop architectures | |
| US10754675B2 (en) | Identifying entities in a virtualization environment | |
| US11829792B1 (en) | In-place live migration of compute instances for efficient host domain patching | |
| EP3794807A1 (en) | Apparatuses and methods for zero touch computing node initialization | |
| CN113438295A (zh) | 容器组地址分配方法、装置、设备及存储介质 | |
| US20140067864A1 (en) | File access for applications deployed in a cloud environment | |
| CN114996750B (zh) | 数据共享方法以及装置 | |
| US10747567B2 (en) | Cluster check services for computing clusters | |
| KR20230100304A (ko) | 가상 데스크톱 기반의 하이브리드 가상 서비스 제공 시스템, 관리 장치 및 제공 방법 | |
| CN108762891A (zh) | 一种云平台资源调度方法和装置 | |
| US11055115B1 (en) | Virtual machine conversion in distributed system of remote desktops | |
| CN115016862A (zh) | 基于Kubernetes集群的软件启动方法、装置、服务器及存储介质 | |
| CN117075925B (zh) | libvirt管控面卸载方法、装置、设备及介质 | |
| CN112835595B (zh) | 一种小核架构上运行aix系统的方法、装置、设备及介质 | |
| CN117272285B (zh) | 一种基于Kubernetes的Unikernel运行方法及装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |