【发明内容】
本发明所要解决的技术问题是提供一种用于提供网络服务的虚拟机系统,以实现利用虚拟机对外提供高可靠的网络服务的目的。
本发明为解决技术问题而采用的技术方案是提供一种用于提供网络服务的虚拟机系统,包括:第一物理机、第二物理机以及第一物理交换机;所述第一物理机包括第一物理网卡,所述第二物理机包括第二物理网卡,其中所述第一物理网卡及所述第二物理网卡均连接至所述第一物理交换机;所述第一物理机包括第一虚拟交换机,所述第一虚拟交换机连接至所述第一物理网卡,并且,所述第一物理机还包括第一虚拟机及第一虚拟网卡,其中所述第一虚拟机通过所述第一虚拟网卡连接至所述第一虚拟交换机;所述第二物理机包括第二虚拟交换机,所述第二虚拟交换机连接至所述第二物理网卡,并且,所述第二物理机还包括第二虚拟机及第二虚拟网卡,其中所述第二虚拟机通过所述第二虚拟网卡连接至所述第二虚拟交换机;所述第一虚拟机及所述第二虚拟机均包含IP设置装置、服务提供装置及心跳检测装置,其中所述IP设置装置用于为所处的虚拟机设置外部IP地址且所述外部IP地址在同一时刻只能被设置在一台虚拟机上,所述服务提供装置用于在所处的虚拟机具有所述外部IP地址时,为外部访问用户提供网络服务,所述第一虚拟机的心跳检测装置与所述第二虚拟机的心跳检测装置用于相互之间进行通讯,以确定当前具有所述外部IP地址的虚拟机运行是否异常,如果是,则触发当前不具有所述外部IP地址的虚拟机上的所述IP设置装置运行。
根据本发明之一优选实施例,所述第一虚拟交换机、所述第一虚拟机及所述第一虚拟网卡,是由所述第一物理机上安装的第一虚拟机管理器创建的。
根据本发明之一优选实施例,所述第二虚拟交换机、所述第二虚拟机及所述第二虚拟网卡,是由所述第二物理机上安装的第二虚拟机管理器创建的。
根据本发明之一优选实施例,所述第一虚拟机的服务提供装置与所述第二虚拟机的服务提供装置为外部访问用户提供相同的网络服务。
根据本发明之一优选实施例,所述系统在初始运行时刻触发所述第一虚拟机的IP设置装置运行。
根据本发明之一优选实施例,所述第一虚拟机的心跳检测装置与所述第二虚拟机的心跳检测装置相互之间进行通讯的方式包括:所述第二虚拟机的心跳检测装置与所述第一虚拟机的心跳检测装置根据预先配置的内部IP地址对建立连接通道;所述第二虚拟机的心跳检测装置通过所述连接通道向所述第一虚拟机的心跳检测装置发送心跳包;所述第一虚拟机的心跳检测装置接收到所述心跳包后,通过所述连接通道将所述心跳包向所述第二虚拟机的心跳检测装置进行返回。
根据本发明之一优选实施例,所述第二虚拟机的心跳检测装置在设定时间长度内未收到返回的所述心跳包时,确定所述第一虚拟机运行异常。
根据本发明之一优选实施例,所述系统还包括:第二物理交换机,并且
所述第一物理机还包括第三物理网卡,所述第二物理机还包括第四物理网卡,所述第三物理网卡及所述第四物理网卡均连接至所述第二物理交换机;以及,所述第一虚拟交换机还连接至第三物理网卡,所述第二虚拟交换机还连接至第四物理网卡。
根据本发明之一优选实施例,所述第一物理机还包括第三虚拟机及第三虚拟网卡,其中所述第三虚拟机通过所述第三虚拟网卡连接至所述第一虚拟交换机。
根据本发明之一优选实施例,所述第二物理机还包括第四虚拟机及第四虚拟网卡,其中所述第四虚拟机通过所述第四虚拟网卡连接至所述第二虚拟交换机。
根据本发明之一优选实施例,所述网络服务至少包括以下一种:电子邮件服务、网页服务或文件存取服务。
由以上技术方案可以看出,本发明通过在局域网内,利用物理交换机及两台物理机构建物理网络,并在两台物理机上分别设置一台虚拟机以搭建虚拟网络的方式,可以在两台虚拟机之间实现心跳检测,这样就可以对正在对外提供服务的虚拟机的运行状况进行监控。又通过在两台虚拟机上设置一个共有的IP地址,并由心跳检测触发其中未对外提供服务的虚拟机上的IP地址被激活的方式,能够很好地实现虚拟机系统对外提供网络服务的高可靠性。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
请参考图1,图1为本发明中用于提供网络服务的虚拟机系统的实施例一的结构示意框图。
如图1所示,在本实施例中,所述虚拟机系统包括:物理机101、物理机102和物理交换机103。
物理机101上装有物理网卡104,物理机102上装有物理网卡105,且物理网卡104和物理网卡105均连接至物理交换机103。
在物理机101上装有虚拟机管理器(Virtual Machine Monitor,VMM)106,通过虚拟机管理器106,可以在物理机101上基于物理网卡104创建虚拟交换机107,这样,虚拟交换机107就会连接至物理网卡104。现有技术的虚拟机管理器已经提供了基于物理网卡创建虚拟交换机的功能,因此创建过程不再详述。
通过虚拟机管理器106,还可以在物理机101上创建虚拟机108及虚拟网卡109,并且将虚拟机108通过虚拟网卡109连接至虚拟交换机107。现有技术的虚拟机管理器已经提供了创建虚拟机及虚拟网卡的功能,因此创建过程不再详述。
在物理机102上装有虚拟机管理器110,通过虚拟机管理器110,可以在物理机102上基于物理网卡105创建虚拟交换机111,这样,虚拟交换机111就会连接至物理网卡105。
通过虚拟机管理器110,还可以在物理机102上创建虚拟机112及虚拟网卡113,并且将虚拟机112通过虚拟网卡113连接至虚拟交换机111。
请参考图2,其中图2是本发明中虚拟机108和虚拟机112的实施例的结构示意框图。如图2所示,虚拟机108包括IP设置装置1081、服务提供装置1082及心跳检测装置1083,虚拟机112包括IP设置装置1121、服务提供装置1122及心跳检测装置1123。
IP设置装置1081用于在虚拟机108上设置外部IP地址,该外部IP地址是外部用户(如图1所示的公共网络中的用户)访问虚拟机108时,对虚拟机108进行寻址依据。IP设置装置1121也用于在虚拟机112上设置外部IP地址,值得注意的是,IP设置装置1121在虚拟机112上设置的外部IP地址与IP设置装置1081在虚拟机108上设置的外部IP地址是相同的,但是,在同一时刻,这个相同的外部IP地址只能被设置在虚拟机108或虚拟机112中的一台上,也就是说,一旦IP设置装置1081或IP设置装置1121中的一个在所处的虚拟机上设置了外部IP地址,则在触发条件满足前,IP设置装置1081或IP设置装置1121中的另一个就无法在所处的虚拟机上设置这个相同的外部IP地址。例如,可供虚拟机108或虚拟机112使用的外部IP地址为“192.168.1.106”,假设IP设置装置1081先为虚拟机108设置了“192.168.1.106”,则在触发条件满足前,IP设置装置1121无法为虚拟机112设置“192.168.1.106”。作为一种实施方式,IP设置装置1081和IP设置装置1121可通过执行脚本实现。上述触发条件,将在后面进行介绍。
服务提供装置1082,用于在虚拟机108具有外部IP地址时,为外部访问用户提供网络服务。服务提供装置1122,用于在虚拟机112具有外部IP地址时,为外部访问用户提供网络服务。作为一种优选的实施方式,服务提供装置1082和服务提供装置1122提供的网络服务是相同的,这样,当本发明中的一台提供网络服务的虚拟机出现故障时,由于另一台虚拟机提供完全相同的网络服务,外部的访问用户就不会对故障有察觉,保证了良好的用户体验。服务提供装置1082和服务提供装置1122提供的网络服务,可以是电子邮件服务、网页服务或文件存取服务中的任意一种或多种。
心跳检测装置1083和心跳检测装置1123,用于相互之间进行通讯,以确定当前具有外部IP地址的虚拟机运行是否异常,如果是,则触发当前不具有外部IP地址的虚拟机上的IP设置装置运行。这里,当前具有外部IP地址的虚拟机运行异常就是前面所述的触发条件。下面以一个具体的实施例说明上述过程。
在这个实施例中,本发明的虚拟机系统在初始运行时刻触发了IP设置装置1081运行。此后,由于虚拟机108被设置了外部IP地址,服务提供装置1082就可以向外部访问用户提供网络服务。也就是说,外部访问用户输入这个外部IP地址,就可以获取到虚拟机108提供的网络服务了。
IP设置装置1081运行后,心跳检测装置1083和心跳检测装置1123之间就会进行通讯,具体地包括:
步骤S1:心跳检测装置1123与心跳检测装置1083根据预先配置的内部IP地址对建立连接通道。
步骤S2:心跳检测装置1123通过上述连接通道向心跳检测装置1083发送心跳包。
步骤S3:心跳检测装置1083接收到上述心跳包后,通过上述连接通道将上述心跳包向心跳检测装置1123进行返回。
内部IP地址是各虚拟机在本发明的系统所处的内部网络中进行通讯时相互之间进行寻址的依据。例如心跳检测装置1123的配置文件中指定虚拟机112的内部IP地址为“192.168.1.102”,与该地址配对的内部IP地址为“192.168.1.104”,在心跳检测装置1083的配置文件中指定虚拟机108的内部IP地址为“192.168.1.104”,与该地址配对的内部IP地址为“192.168.1.102”,即“192.168.1.102”与“192.168.1.104”是内部IP地址对,这样,步骤S1就可以根据配置文件建立这两个配对的内部IP地址之间的连接通道。
步骤S2中的心跳包可以是现有技术中的心跳协议中发送的数据包,如果虚拟机108处于正常的工作状态,则步骤S3中,心跳检测装置1083接收到上述心跳包后就会正常地将心跳包返回,这样,心跳检测装置1123就可以知道虚拟机108的工作正常。但是,如果虚拟机108出现了故障,或者是虚拟机所处的物理机101出现了故障,则心跳检测装置1123就无法正常收到心跳检测装置1083返回的心跳包了。因此,如果心跳检测装置1123在设定时间长度内未收到返回的心跳包时,可以确定虚拟机108运行异常。
在步骤S2中,心跳检测装置1123向心跳检测装置1083发送心跳包可以是按照设定的间隔不断进行的。例如发送心跳包A,隔1秒发送心跳包B,再隔一秒发送心跳包C,而心跳检测装置1083接收到哪个心跳包,就返回哪个心跳包,由于网络传输的原因,心跳检测装置1123接收到返回的心跳包的顺序也可能是心跳包B、心跳包A,心跳包C,只要相同的包从心跳检测装置1123发送至返回的时长未超过设定时间长度,就可以认为虚拟机108是正常运行的。实际上,一旦虚拟机108发生故障,则一定存在收到最后一个心跳包后,很长时间内无法收到任何心跳包的情况,从而导致上述确定虚拟机108运行异常的条件得到满足。
通过前面的介绍可以看出,本发明构建了一个物理网络,并且在这个物理网络的两台物理机上分别创建了一台虚拟机,这样,创建的这两台虚拟机之间就可以利用物理网络建立心跳线,从而实现在一台虚拟机发生故障时,启动另一台虚拟机对外提供服务,达到利用虚拟机实现高可靠系统的目的。
请参考图3,图3为本发明中用于提供网络服务的虚拟机系统的实施例二的结构示意框图。
如图3所示,在本实施例中,所述虚拟机系统与实施例一相比,进一步还包括物理交换机114,并且,物理机101进一步还包括物理网卡115,物理机102还包括物理网卡116。其中,物理网卡115和物理网卡116均连接至物理交换机114。
由于本实施例中,物理机101多了物理网卡115,物理机102多了物理网卡116,因此,本实施例中,虚拟交换机107还连接至物理网卡115,虚拟交换机111还连接至物理网卡116。这只需要在虚拟机管理器106创建虚拟交换机107时,指定物理网卡104和物理网卡115,虚拟机管理器110创建虚拟交换机111时,指定物理网卡105和物理网卡116即可。
通过图3所示的实施例,本发明的虚拟机系统可以更好地实现高可靠性。在本发明的虚拟机系统正常工作的情况下,物理交换机103和物理交换机114能起到负载均衡的作用,但是如果物理交换机103或物理交换机114中一台发生了故障,或者是物理机101和物理机102上的一个物理网卡发生了故障,本发明的虚拟机系统,也仍然能够保证数据的正常传输。
图3中可以看出,虚拟机管理器106还可以在物理机101上创建虚拟机117及虚拟网卡118,并将虚拟机117通过虚拟网卡118连接至虚拟交换机107。以这样的方式,物理机101上可以有多台虚拟机,每台虚拟机均可租赁给虚拟机的使用用户,虚拟机的使用用户利用租赁的虚拟机可以对外提供网络服务,向访问用户提供各种网络服务。
同样的道理,虚拟机管理器110也可以再在物理机102上创建虚拟机119及虚拟网卡120,并将虚拟机119通过虚拟网卡120连接至虚拟交换机111。虚拟机117和虚拟机119可以像虚拟机108和虚拟机112那样拥有类似的结构,从而构成高可靠系统,也可以各自独立,分别对外提供不同的网络服务。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。