虚拟机集群的负载均衡方法、服务器及系统的制作方法

文档序号:7796922阅读:190来源:国知局
专利名称:虚拟机集群的负载均衡方法、服务器及系统的制作方法
技术领域
本发明涉及虚拟机集群领域,尤其是涉及一种虚拟机集群的负载均衡方法、服务器及系统。
背景技术
随着计算机技术的发展,尤其是网络技术的发展和利用,人们对计算机系统,特别是网络服务器提出了更高的要求,单纯的靠提高单个处理器的处理能力来提高服务器性能,正在变得越来越难。因此,计算机集群服务得到了广泛的应用。计算机集群简称集群, 是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。当所述集群是通过在服务器上模拟出的一台或多台虚拟机工作时,所述计算机集群为虚拟机集群。
负载均衡是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
LVS(Linux Virtual Server,Linux虚拟服务器)项目在Linux操作系统上提供了最常用的负载均衡软件。以基于虚拟机的LVS系统为例,LVS系统包含一个前端用以接收客户端发送的请求报文,进行任务分发的负载均衡器,和后端的服务器。在后端的服务器上有一组真正提供服务的虚拟机。在负载均衡器上配置有IP地址,为和负载均衡器通信, 在每个虚拟机上配置有唯一的IP地址。因为两端的IP地址不同,为使请求报文能被准确的接收和处理,现有的LVS系统采用网络地址转换(Network Address Translation,以下简称NAT)实现负载均衡,具体为客户端发送目的地址为负载均衡器地址的请求报文至负载均衡器;负载均衡器从提供真正服务的虚拟机中选定一台虚拟机并把请求报文的地址修改为选定的虚拟机的地址后发送至该虚拟机所在的服务器;虚拟机对请求报文进行处理获得应答报文,并通过所在的服务器将应答报文发送至负载均衡器;负载均衡器再将应答报文发送至客户端。
应用上述方法,在虚拟机集群中,应答报文需要从服务器发送至负载均衡器,再由负载均衡器转发给客户端,因此,通信路径长,通信效率不高。发明内容
本发明的目的在于提供一种虚拟机集群的负载均衡方法、服务器及系统,能够使应答报文从服务器直接发送至客户端,提高了通信效率。本发明提供了如下方案
—种虚拟机集群的负载均衡方法,应用在服务器中,所述方法包括
接收负载均衡器发来的第二请求报文;所述第二请求报文是所述负载均衡器接收到客户端发送的第一请求报文后,将所述第一请求报文的目的地址由所述负载均衡器的地址转换为所述服务器上一虚拟机的地址后生成的。
根据所述第二请求报文生成第一应答报文。
将所述第一应答报文的源地址由所述虚拟机的地址转换为所述负载均衡器的地址,生成第二应答报文。
将所述第二应答报文发送至所述客户端。
本发明还提供了一种服务器,所述服务器包括
源地址转换单元、发送单元和至少一个虚拟机。
所述虚拟机,用于根据接收的负载均衡器发来的第二请求报文生成第一应答报文;所述第二请求报文是所述负载均衡器接收到客户端发送的第一请求报文后,将所述第一请求报文的目的地址由所述负载均衡器的地址转换为所述虚拟机的地址后生成的。
所述源地址转换单元,用于将所述第一应答报文的源地址由所述虚拟机的地址转换为所述负载均衡器的地址,生成第二应答报文。
所述发送单元,用于将所述第二应答报文发送至所述客户端。
可选的,所述虚拟机的虚拟网卡桥接到虚拟网桥上,所述源地址转换单元连接所述虚拟网桥和所述服务器的物理网卡。
所述虚拟机将第一应答报文通过虚拟网桥发送到源地址转换单元。
所述发送单元通过服务器的物理网卡将所述第二应答报文发送至所述客户端。
可选的,所述虚拟机通过依次连接的虚拟网卡、虚拟网桥和物理网卡接收所述第二请求报文。
可选的,所述源地址转换单元包括防火墙。
本发明还提供了一种虚拟机集群系统,所述系统包括
负载均衡器和服务器。
所述负载均衡器,用于接收客户端发送的第一请求报文,并将所述第一请求报文的目的地址由所述负载均衡器的地址转换为所述服务器上一虚拟机的地址后生成第二请求报文。
所述服务器包括虚拟机,源地址转换单元和发送单元。
所述虚拟机,用于根据接收的所述第二请求报文生成第一应答报文。
所述源地址转换单元,用于将所述第一应答报文的源地址由所述虚拟机的地址转换为所述负载均衡器的地址,生成第二应答报文。
所述发送单元,用于将所述第二应答报文发送至所述客户端。
可选的,所述虚拟机的虚拟网卡桥接到虚拟网桥上,所述源地址转换单元连接所述虚拟网桥和所述服务器的物理网卡;
所述虚拟机将第一应答报文通过虚拟网桥发送到源地址转换单元;
所述发送单元通过服务器的物理网卡将所述第二应答报文发送至所述客户端。
可选的,所述源地址转换单元包括防火墙。
可选的,所述系统包括Linux虚拟服务器系统。
根据本发明提供的具体实施例,本发明公开了以下技术效果
本发明中,通过在服务器中进行应答报文的源地址转换,并直接将转换后的报文发送至客户端,解决了现有技术中服务器需将生成的应答报文发送至负载均衡器进行源地址转换,从而导致虚拟机集群系统通信效率低的问题。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1的流程图2是本发明实施例2的服务器结构图3是本发明中实施例2中服务器上各虚拟机和代理单元的连接图4是本发明中实施例3的系统结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
值得注意的是本发明实施例中所述的虚拟机,负载均衡器和客户端处在同一个子网范围内,所述的客户端是指所述子网范围内最后一个从外网接收请求报文的网络设备。
本发明实施例1提供了一种虚拟机集群的负载均衡方法,应用在服务器中,参见图1,该方法包括以下步骤
Si、接收负载均衡器发来的第二请求报文;所述第二请求报文是所述负载均衡器接收到客户端发送的第一请求报文后,将所述第一请求报文的目的地址由所述负载均衡器的地址转换为所述服务器上一虚拟机的地址后生成的。
在虚拟机集群系统中,前端是一个或多个负载均衡器,后端是一个或一组提供真实服务的服务器。更确切的说,后端是一组提供真实服务的在服务器上通过软件模拟出的虚拟机。具体的可以是在同一个服务器上模拟出多个虚拟机的,也可以在多个服务器上模拟出多个虚拟机。负载均衡器上配置有IP地址,为使负载均衡器和虚拟机通信,在每个虚拟机上配置有唯一的IP地址。
在负载均衡器中保存有后端所有虚拟机的IP地址,因此,在接收到目的地址为自身IP地址的第一请求报文后,负载均衡器会从后端选定一个虚拟机,并将该第一请求报文的目的地址修改为该虚拟机的地址,生成第二请求报文发送至该虚拟机。虚拟机看到接收的第二请求报文的地址与自身的IP地址相同,就会对其进行处理。在具体的选择过程中, 负载均衡器可以按照一定的规则选定虚拟机,比如根据后端虚拟机的负载情况。在本发明中,不对具体的选定过程做限制。
在本发明的具体实施例中,为保证请求报文被发送准确,负载均衡器还会根据后端虚拟机的变化情况对保存在其中的虚拟机的IP地址进行更新,以确保其保存的虚拟机的IP地址与后端的虚拟机相对应。
S2、根据所述第二请求报文生成第一应答报文。
接收到第二请求报文的虚拟机会进行处理并生成第一应答报文。例如根据第二请求报文中携带的数据和操作符,进行计算,并将计算结果携带在第一应答报文中。所述虚拟机根据报文的生成规则,该第一应答报文的目的地址和源地址与接收的第二请求报文的目的地址和源地址相反。即该第一应答报文的源地址为负载均衡器选定的虚拟机的IP地址, 目的地址为客户端的IP地址。
S3、将所述第一应答报文的源地址由所述虚拟机的地址转换为所述负载均衡器的地址,生成第二应答报文。
本发明中,通过在服务器中设置proxy (代理程序)或利用防火墙软件进行源地址转换。在proxy或防火墙软件中设置将接收到的报文的源地址转换为负载均衡器的IP地址。这样生成的第二应答报文的源地址就与第一请求报文的目的地址相同,可以被直接发回到客户端。
以proxy为例,可以将同一服务器上的虚拟机的虚拟网卡桥接到指定的虚拟网桥上,由proxy连接虚拟网桥和所在服务器的物理网卡,从而将各虚拟机上的应答报文发送至proxy进行源地址转换,并经过服务器的物理网卡发送至客户端。
需要注意的是,本发明中所说的proxy是服务器上的虚拟机外设置的,因为虚拟机内存储的是用户的数据,所以不能也不应该在虚拟机内设置proxy进行源地址的转换。
S4、将所述第二应答报文发送至所述客户端。
第二应答报文的地址在服务器中进行源地址转换后,其源地址为负载均衡器的IP 地址,在客户端看起来好像所有报文都是通过同一个IP地址即负载均衡器的IP地址进行发送和接收的。因此,客户端能够正确接收该应答报文。
综上所述,本发明通过在虚拟机所在的服务器中对应答报文进行源地址转换,使得应答报文能够不必发送至负载均衡器,再由负载均衡器发送至客户端,而是服务器直接将应答报文发送给客户端,因此,缩短了应答报文从服务器到客户端的发送路径,提高了系统的通信效率。
本发明实施例2还提供了一种服务器,参见图2,所述服务器包括
虚拟机21,源地址转换单元22和发送单元23。
所述虚拟机21,用于根据接收的负载均衡器发来的第二请求报文生成第一应答报文;所述第二请求报文是所述负载均衡器接收到客户端发送的第一请求报文后,将所述第一请求报文的目的地址由所述负载均衡器的地址转换为所述虚拟机21的地址后生成的。
所述的虚拟机21是在所述的服务器上通过软件模拟出来的,用于提供真实的服务。具体的可以在同一服务器上模拟出一个或多个虚拟机21。负载均衡器上配置有IP地址,为使负载均衡器和虚拟机通信,在每个虚拟机上配置有唯一的I P地址。
客户端首先会发送第一请求报文至负载均衡器,该第一请求报文的目的地址就是该负载均衡器的IP地址。负载均衡器接收该报文后并不对该报文做具体的处理,而是从后端服务器中选定一虚拟机21,并根据自身保存的后端虚拟机21的IP地址,将该报文的地址修改为该选定的虚拟机21的IP地址后,发送至该虚拟机21。虚拟机21接收的第二请求报文的地址与自身的IP地址相同,就会对其进行处理生成第一应答报文。根据报文的生成规则,该第一应答报文的源地址为该虚拟机的IP地址。
所述源地址转换单元22,用于将所述第一应答报文的源地址由所述虚拟机21的地址转换为所述负载均衡器的IP地址,生成第二应答报文。
具体的源地址转换单元22可以是代理单元或是防火墙。以代理单元为例,源地址转换单元与虚拟机的连接关系如图3所示,服务器上的虚拟机211,虚拟机212,虚拟机213 分别通过各自的虚拟网卡214,215,216以桥接的方式连接到指定的虚拟网桥M上,代理单元221连接所述的虚拟网桥M和所述服务器的物理网卡25。
所述虚拟机可以通过依次连接的虚拟网卡、虚拟网桥和物理网卡接收所述第二请求报文。所述虚拟机将第一应答报文通过虚拟网桥发送到源地址转换单元;所述发送单元通过服务器的物理网卡将所述第二应答报文发送至所述客户端。
在本发明的一个具体实施例中,当负载均衡器选定虚拟机211时,虚拟机211通过虚拟网卡214,虚拟网桥M将生成的应答报文发送至代理单元221进行源地址转换。
需要明确的是,本发明中的源地址转换单元22设置在虚拟机21外。因为虚拟机 21内存储的是用户的数据,所以不能也不应该在虚拟机内设置源地址转换单元22。
所述发送单元23,用于将所述第二应答报文发送至所述客户端。
经过源地址转换,发送单元23接收到的第二应答报文的源地址与第一请求报文的目的地址相同,因此可以直接发回到客户端。
综上所述,本发明提供的服务器通过在自身设置源地址转换单元,使得生成的应答报文无需再通过负载均衡器进行转发,缩短了报文的发送路径,提高了通信效率。
本发明实施例3还提供了一种虚拟机集群系统,参见图4,所述系统包括
负载均衡器31和服务器32。
该系统可以在前端设置一个或多个负载均衡器31。具体的可以根据报文的转发数量和后端服务器32的数量设置。所述的服务器32也可以是一个或一组,可以根据需要处理的报文数量进行设置。在本发明的实施例中,参见图4,包含多个服务器32。
所述负载均衡器31,用于接收客户端发送的第一请求报文,并将所述第一请求报文的目的地址由所述负载均衡器31的地址转换为所述服务器32上一虚拟机的地址后生成第二请求报文。
负载均衡器31上配置有IP地址,客户端发送的第一请求报文的目的地址为负载均衡器31的IP地址。负载均衡器31并不对该报文做实际处理,而是从后端服务器32上选定一台虚拟机,并根据自身存储的后端虚拟机的IP地址将该请求报文的地址修改为该选定虚拟机的地址后发送出去。
所述服务器32包括虚拟机321,源地址转换单元322和发送单元323。
在本发明的具体实施例中,参见图4,可在同一个服务器32上可以模拟多个虚拟机 321。
所述虚拟机321,用于根据接收的所述第二请求报文生成第一应答报文。
这些虚拟机321都拥有各自唯一的I P地址,用于与负载均衡器31通信。根据应答报文的生成规则,虚拟机生成的应答报文的源地址为该虚拟机的IP地址。
所述源地址转换单元322,用于将所述第一应答报文的源地址由所述虚拟机321 的地址转换为所述负载均衡器31的地址,生成第二应答报文。
具体的源地址转换单元322可以是代理单元或是防火墙。以代理单元为例,各虚拟机321可以通过各自的虚拟网卡桥接到指定的虚拟网桥上,由代理单元连接所述的虚拟网桥和所述服务器32的物理网卡。虚拟机321可以将第一应答报文通过虚拟网桥发送到源地址转换单元322上。
所述发送单元323,用于将所述第二应答报文发送至所述客户端。具体的可通过服务器的物理网卡将所述第二应答报文发送至所述客户端。
经过源地址转换后,发送单元323接收到的第二应答报文的源地址为负载均衡器的IP地址,因此,发送单元323可以直接将第二应答报文发回到客户端。
在本发明的具体实施例中,该虚拟机集群的创建过程如下
为负载均衡器分配I P地址;
在服务器上设置源地址转换单元并启动;
创建多个虚拟机,并将虚拟机的虚拟网卡绑定到虚拟网桥;
通过DHCP (Dynamic Host Configuration Protocol,动态主机设置协议)或修改虚拟机镜像配置文件的方式为虚拟机分配IP地址;
定义虚拟机集群系统,将虚拟机加入其中,并将虚拟机的IP地址保存到负载均衡器中;
启动虚拟机集群服务。
在具体的实施过程中,还可以在后端虚拟机发生变化时,根据该变化对保存在负载均衡器中的虚拟机IP地址进行更新。
在本发明的上述实施例中,所述的虚拟机集群系统可以为LVS系统。
需要说明的是,本发明的服务器和系统实施例与本发明方法实施例相对应,相关部分参照方法实施例即可,此处不再做详细介绍。
以上对本发明所提供的一种虚拟机集群的负载均衡方法、服务器和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种虚拟机集群的负载均衡方法,应用在服务器中,其特征在于,所述方法包括接收负载均衡器发来的第二请求报文;所述第二请求报文是所述负载均衡器接收到客户端发送的第一请求报文后,将所述第一请求报文的目的地址由所述负载均衡器的地址转换为所述服务器上一虚拟机的地址后生成的; 根据所述第二请求报文生成第一应答报文;将所述第一应答报文的源地址由所述虚拟机的地址转换为所述负载均衡器的地址,生成第二应答报文;将所述第二应答报文发送至所述客户端。
2.一种服务器,其特征在于,所述服务器包括 源地址转换单元、发送单元和至少一个虚拟机;所述虚拟机,用于根据接收的负载均衡器发来的第二请求报文生成第一应答报文;所述第二请求报文是所述负载均衡器接收到客户端发送的第一请求报文后,将所述第一请求报文的目的地址由所述负载均衡器的地址转换为所述虚拟机的地址后生成的;所述源地址转换单元,用于将所述第一应答报文的源地址由所述虚拟机的地址转换为所述负载均衡器的地址,生成第二应答报文;所述发送单元,用于将所述第二应答报文发送至所述客户端。
3.根据权利要求2所述的服务器,其特征在于,所述虚拟机的虚拟网卡桥接到虚拟网桥上,所述源地址转换单元连接所述虚拟网桥和所述服务器的物理网卡; 所述虚拟机将第一应答报文通过虚拟网桥发送到源地址转换单元; 所述发送单元通过服务器的物理网卡将所述第二应答报文发送至所述客户端。
4.根据权利要求2所述的服务器,其特征在于,所述虚拟机通过依次连接的虚拟网卡、 虚拟网桥和物理网卡接收所述第二请求报文。
5.根据权利要求2-4任一所述的服务器,其特征在于,所述源地址转换单元包括防火掉丄回ο
6.一种虚拟机集群系统,其特征在于,所述系统包括 负载均衡器和服务器;所述负载均衡器,用于接收客户端发送的第一请求报文,并将所述第一请求报文的目的地址由所述负载均衡器的地址转换为所述服务器上一虚拟机的地址后生成第二请求报文;所述服务器包括虚拟机,源地址转换单元和发送单元; 所述虚拟机,用于根据接收的所述第二请求报文生成第一应答报文; 所述源地址转换单元,用于将所述第一应答报文的源地址由所述虚拟机的地址转换为所述负载均衡器的地址,生成第二应答报文;所述发送单元,用于将所述第二应答报文发送至所述客户端。
7.根据权利要求6所述的系统,其特征在于,所述虚拟机的虚拟网卡桥接到虚拟网桥上,所述源地址转换单元连接所述虚拟网桥和所述服务器的物理网卡;所述虚拟机将第一应答报文通过虚拟网桥发送到源地址转换单元; 所述发送单元通过服务器的物理网卡将所述第二应答报文发送至所述客户端。
8.根据权利要求6或7所述的系统,其特征在于,所述源地址转换单元包括防火墙。
9.根据权利要求6或7所述的系统,其特征在于,所述系统包括Linux虚拟服务器系统。
全文摘要
本发明公开了一种虚拟机集群的负载均衡方法、服务器及系统。其中,所述方法包括接收负载均衡器发来的第二请求报文;根据所述第二请求报文生成第一应答报文;将所述第一应答报文的源地址由所述虚拟机的地址转换为所述负载均衡器的地址,生成第二应答报文;将所述第二应答报文发送至所述客户端。本发明通过在服务器中将虚拟机生成的应答报文进行源地址转换,使得应答报文能够不必发送至负载均衡器,再由负载均衡器发送至客户端,因此,缩短了应答报文从服务器到客户端的发送路径,提高了系统的通信效率。
文档编号H04L29/06GK102523302SQ20111044109
公开日2012年6月27日 申请日期2011年12月26日 优先权日2011年12月26日
发明者刘利锋, 杨强 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1