虚拟机负载均衡系统、节点及方法
技术领域
本发明涉及计算机领域,特别涉及一种虚拟机负载均衡系统、节点及方法。
背景技术
虚拟机是一种通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,在云计算领域应用非常广泛。虚拟化技术可以更加有效地整合物理服务器,以虚拟机的方式提供资源,实现了资源的共享和有效利用。但由于各虚拟机负载的动态变化以及各物理服务器资源的差异,会导致各物理服务器上的负载失衡。因此,如何均衡不同物理服务器的负载,维持高效的资源利用率,是基于虚拟化架构的云计算的一个关键问题。
现有的虚拟机负载均衡系统中,设置有一个虚拟机调度器,用于管理各物理服务器上的所有虚拟机。该虚拟机调度器收集各虚拟机的负载情况以及各物理服务器的资源信息,定期根据收集到的各虚拟机的负载情况以及各物理服务器的资源信息,计算新的合适的虚拟机与物理服务器的对应关系,即调度计划,并根据计算出的调度计划对各虚拟机进行迁移,以实现虚拟机负载均衡。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
首先,现有的虚拟机负载均衡系统,只设置一个虚拟机调度器,若该虚拟机调度器发生故障,则整个系统将陷入崩溃,系统容错性低;其次,受限于该虚拟机调度器的处理能力,系统的规模有限且扩展性不高。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种虚拟机负载均衡系统、节点及方法。所述技术方案如下:
一方面,提供了一种虚拟机负载均衡系统,所述系统包括:至少两个主节点,其中,每个主节点本地连接有0至多个从节点,每个所述节点对应有一台物理服务器和0至多个虚拟机;
所述从节点,用于获取自身的状态信息,并将所述自身的状态信息发送给本地连接的主节点,其中所述状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
所述主节点,用于接收本地连接的从节点发送的状态信息,获取自身的状态信息,并根据所述从节点发送的状态信息和自身的状态信息生成本地调度计划;
所述主节点,还用于统计所述本地调度计划之外的未调度的多余负载信息和/或剩余资源信息,获取其他主节点的未调度的多余负载信息和/或剩余资源信息,并根据所述其他主节点的未调度的多余负载信息和/或剩余资源信息以及本地的未调度的多余负载信息和/或剩余资源信息生成远程调度计划;
所述主节点,用于根据所述本地调度计划和/或所述远程调度计划进行虚拟机迁移,以实现虚拟机负载均衡。
另一方面,提供了一种主节点,所述主节点包括:第一生成模块、第二生成模块和负载均衡模块;
所述第一生成模块,用于根据本地连接的从节点的状态信息和自身的状态信息生成本地调度计划,其中所述状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
所述第二生成模块,用于统计所述本地调度计划之外的未调度的多余负载信息和/或剩余资源信息,获取其他主节点的未调度的多余负载信息和/或剩余资源信息,并根据所述其他主节点的未调度的多余负载信息和/或剩余资源信息以及本地的未调度的多余负载信息和/或剩余资源信息生成远程调度计划;
所述负载均衡模块,用于根据所述本地调度计划和/或所述远程调度计划进行虚拟机迁移,以实现虚拟机负载均衡。
再一方面,提供了一种从节点,所述从节点包括:获取模块、发送模块、接收模块和负载均衡模块;
所述获取模块,用于获取自身的状态信息,其中所述状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
所述发送模块,用于向本地连接的主节点发送所述获取模块获取的自身的状态信息。
所述接收模块,用于接收所述本地连接的主节点根据本地调度计划和/或远程调度计划发送的调度指令,其中,所述本地调度计划为所述主节点根据接收到的本地连接的从节点发送的状态信息和所述主节点自身的状态信息生成,所述远程调度计划为所述主节点根据其他主节点的剩余资源信息以及所述主节点本地的未调度的多余负载信息和/或剩余资源信息生成;
所述负载均衡模块,用于根据所述接收模块接收到的调度指令进行虚拟机迁移。
又一方面,提供了一种负载均衡方法,所述方法包括:
根据本地连接的从节点的状态信息和自身的状态信息生成本地调度计划,其中所述状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
统计所述本地调度计划之外的未调度的多余负载信息和/或剩余资源信息,获取其他主节点的未调度的多余负载信息和/或剩余资源信息,并根据所述其他主节点的未调度的多余负载信息和/或剩余资源信息以及本地的未调度的多余负载信息和/或剩余资源信息生成远程调度计划;
根据所述本地调度计划和/或所述远程调度计划对各物理服务器上的虚拟机进行迁移,以实现虚拟机负载均衡。
又一方面,提供了一种负载均衡方法,所述方法包括:
获取自身的状态信息,其中所述状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
向本地连接的主节点发送所述获取模块获取的自身的状态信息。
接收本地连接的主节点根据本地调度计划和/或远程调度计划发送的调度指令,其中,所述本地调度计划为所述主节点根据接收到的本地连接的从节点发送的状态信息和所述主节点自身的状态信息生成,所述远程调度计划为所述主节点根据其他主节点的剩余资源信息以及所述主节点本地的未调度的多余负载信息和/或剩余资源信息生成;
根据所述调度指令进行虚拟机迁移。
本发明实施例提供的技术方案带来的有益效果是:
通过设置多个主节点,每个主节点连接0至多个从节点,由主节点根据各主节点以及与其本地连接的从节点的状态信息生成本地调度计划和/或远程调度计划,并根据生成的本地调度计划和/或远程调度计划进行虚拟机的迁移,以实现虚拟机负载均衡,达到了提高系统容错性、提高系统规模和扩展性的目的。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的虚拟机负载均衡系统的系统构成图;
图2是本发明实施例一提供的主节点的结构方框图;
图3是本发明实施例一提供的从节点的结构方框图;
图4是本发明实施例二提供的主节点的装置结构图;
图5是本发明实施例三提供的从节点的装置结构图;
图6是本发明实施例四提供的虚拟机负载均衡方法的方法流程图;
图7是本发明实施例五提供的虚拟机负载均衡方法的方法流程图;
图8是本发明实施例五提供的虚拟机负载均衡方法的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
请参见图1,其示出了本发明实施例一提供的虚拟机负载均衡系统的系统构成图,该虚拟机管理系统可以在云计算平台中对各物理服务器上的虚拟机进行负载均衡,其中,节点为一个虚拟机管理器,每个虚拟机管理器对应一台物理服务器。该虚拟机负载均衡系统可以包括:至少两个主节点,其中,每个主节点本地连接有0至多个从节点(主节点10对应连接从节点1001~1003),另外,每个节点对应有一台物理服务器和0至多个虚拟机;其中,主节点的个数可以根据系统规模灵活设定。
从节点1001,用于获取自身的状态信息,并将自身的状态信息发送给本地连接的主节点10,其中状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
物理服务器由CPU和物理内存等硬件组成,物理服务器资源可以包括CPU处理能力、内存大小以及各物理服务器之间的网络带宽等,物理服务器资源信息可以是该物理服务器资源利用率等信息;另外,虚拟机负载信息可以是某个虚拟机运行时的资源占用量。
若从节点1001对应的物理服务器上没有正在运行的虚拟机,则状态信息中的虚拟机负载信息为空。
从节点1001定期收集自身对应的物理服务器资源信息和虚拟机负载信息。其中,物理服务器资源信息为静态信息,从节点1001只要获取一次即可;而虚拟机负载信息为动态信息,随着时间变化而变化,因此,从节点1001需要定期获取,比如,每隔3分钟获取一次虚拟机负载信息。同样的,从节点1001将获取的自身状态信息发送给本地连接的主节点10时,第一次需要发送获取的物理服务器资源信息和虚拟机负载信息,之后每次只需要发送获取的虚拟机负载信息即可。
具体的,获取自身的状态信息的方法可以有多种,在实际应用中,从节点1001可以定期获取自身的状态信息(第一次获取物理服务器资源信息和虚拟机负载信息,之后每次只需要定期获取虚拟机负载信息),当需要向主节点发送状态信息时,将定期获取的多个自身的状态信息做一次平均值(由于物理服务器资源信息为静态,所以只需要对收集的虚拟机负载信息做平均),将该平均值作为当前自身的状态信息,或者,可以根据定期获取的多个自身的状态信息做一次预测(根据定期获取的对虚拟机负载信息的大致走势预测当前自身的虚拟机负载信息),将该预测值作为当前的自身的状态信息,再或者,可以将最近一次获取的自身的状态信息(具体为第一次获取的物理服务器资源信息和最近一次获取的虚拟机负载信息)作为当前的自身的状态信息。
主节点10,用于接收本地连接的从节点发送的状态信息,获取自身的状态信息,并根据从节点发送的状态信息和自身的状态信息生成本地调度计划;
主节点10接收本地连接的三个从节点1001~1003发送的状态信息,并获取自身的状态信息(主节点10获取自身状态信息的方法和从节点1001相同),根据接收到的从节点1001~1003的状态信息以及自身的状态信息,计算本地新的合适的虚拟机与物理服务器的对应关系,即生成本地调度计划。其中,本地调度计划为主节点10及其本地连接的从节点1001~1003之间的虚拟机迁移计划。
主节点10,还用于统计本地调度计划之外的未调度的多余负载信息和/或剩余资源信息,获取其他主节点的未调度的多余负载信息和/或剩余资源信息,并根据其他主节点的未调度的多余负载信息和/或剩余资源信息以及本地的未调度的多余负载信息和/或剩余资源信息生成远程调度计划;
具体的,主节点10还统计本地调度计划之外的未调度的多余负载信息和/或剩余资源信息,其中未调度的多余负载信息可以是主节点10和本地连接的从节点1001~1003上处于本地调度计划之外的虚拟机负载,剩余资源信息可以是主节点10和本地连接的从节点1001~1003所对应的物理服务器在按照本地调度计划调度之后预计剩余的物理处理能力。
其他主节点也同样统计各自本地调度计划之外的未调度的多余负载信息和/或剩余资源信息并将统计结果发送给主节点10,主节点10根据接收到的其他主节点的未调度的多余负载信息和/或剩余资源信息以及本地的未调度的多余负载信息和/或剩余资源信息生成本地的远程调度计划。
同样的,主节点10也需要将本地统计的本地调度计划之外的未调度的多余负载信息和/或剩余资源信息发送给其他主节点,以便其他主节点生成各自的远程调度计划。
主节点10,用于根据生成的本地调度计划和/或远程调度计划对各物理服务器上的虚拟机进行负载均衡。
其中,虚拟机负载均衡是通过虚拟机在各物理服务器上的迁移来实现的。
具体的,可以根据生成的本地调度计划在主节点10和从节点1001~1003对应的物理服务器之间进行虚拟机迁移;根据生成的远程调度计划将主节点10或从节点1001~1003对应的物理服务器上的虚拟机迁移到其他主节点或与其他主节点相连的从节点所对应的物理服务器上,和/或,根据生成的远程调度计划将其他主节点或与其他主节点相连的从节点所对应的物理服务器上的虚拟机迁移到主节点10或从节点1001~1003对应的物理服务器上。
请结合参考图2,其示出了本发明实施例一提供的主节点的结构方框图。该主节点10包括:第一生成模块101、第二生成模块102和负载均衡模块103;
第一生成模块101,用于根据本地连接的从节点的状态信息和自身的状态信息生成本地调度计划;
其中,第一生成模块101接收本地连接的从节点发送的状态信息,并获取自身的状态信息,根据从节点发送的状态信息和自身的状态信息生成本地调度计划。
第一生成模块101可以按照预定的调度策略生成本地调度计划,具体比如,预先为每个物理服务器设置一个资源利用率阈值,当某个物理服务器上的资源利用率超过80%,则预定将该物理服务器上的部分虚拟机迁移到其他资源利用率较低的物理服务器上,或者,用该物理服务器上负载较高的虚拟机交换其他资源利用率低于80%的物理服务器上负载较低的虚拟机,可以按照虚拟机迁移尽可能少的原则来生成本地调度计划。
第二生成模块102,用于统计第一生成模块101生成的本地调度计划之外的未调度的多余负载信息和/或剩余资源信息,获取其他主节点的未调度的多余负载信息和/或剩余资源信息,并根据其他主节点的未调度的多余负载信息和/或剩余资源信息以及本地的未调度的多余负载信息和/或剩余资源信息生成远程调度计划;
具体的,第二生成模块102统计第一生成模块101生成的本地调度计划之外的未调度的多余负载信息和/或剩余资源信息;
当统计有未调度的多余负载时,第二生成模块102获取其他主节点的剩余资源信息;根据本地的未调度的多余负载信息和其他主节点的剩余资源信息向其他主节点发送资源请求;并接收其他主节点根据资源请求返回的资源分配信息;
和/或,
当统计有剩余资源时,第二生成模块102向其他主节点发送本地的剩余资源信息;接收其他主节点根据本地的剩余资源信息发送的资源请求;根据接收到的资源请求生成资源分配信息;并将生成的资源分配信息发送给其他主节点;
具体例如,主节点A向其他主节点发送本地的剩余资源信息,主节点B接收到该主节点A的剩余资源信息后,根据该主节点B本地的未调度的多余负载信息和该主节点A的剩余资源信息向主机点A发送资源请求(比如,请求将主节点B或主节点B连接的从节点所对应的物理服务器上未调度的虚拟机迁移到主节点A或主节点A连接的从节点所对应的物理服务器上,或者,请求将主节点B或主节点B连接的从节点所对应的物理服务器上负载较大的虚拟机与主节点A或主节点A连接的从节点所对应的物理服务器上负载较小的虚拟机交换),若主节点A上被请求的资源可分配,则同意主节点B的请求,生成相应的资源分配信息并发送给主节点B。
需要说明的是,对于相同的预计剩余的资源,主节点A可能会接收到两份以上的资源请求,为了避免冲突,主节点A可以按照接收到资源请求的先后顺序,优先对先接收到的资源请求返回资源分配信息,对于其余的资源请求,可以返回分配失败信息,通知相应的其他主节点重新请求。
另外,主节点A生成资源分配信息后,会更新本地的剩余资源信息,并将更新后的剩余资源信息发送给其他主节点。
最后,第二生成模块102根据接收到的资源分配信息和/或生成的资源分配信息生成远程调度计划。
第二生成模块可以将接收到的其他主节点发送的资源分配信息以及生成的向其他主节点发送的资源分配信息直接作为远程调度计划,也可以做相应处理后生成一定格式的调度计划,对此,本实施例不作具体限定。
负载均衡模块103,用于根据第一生成模块101生成的本地调度计划和/或第二生成模块102生成的远程调度计划进行虚拟机迁移,以实现虚拟机负载均衡。
具体的,负载均衡模块103根据本地调度计划和/或远程调度计划进行虚拟机迁移;
负载均衡模块103还根据本地调度计划和/或远程调度计划向本地连接的从节点发送调度指令,以便从节点根据调度指令进行虚拟机迁移。
请继续结合参考图3,其示出了本发明实施例一提供的从节点的结构方框图。该从节点1001可以包括:获取模块1001a、发送模块1001b、接收模块1001c、负载均衡模块1001d以及重连模块1001e;
获取模块1001a,用于获取自身的状态信息;
发送模块1001b,用于向本地连接的主节点发送获取模块1001a获取的自身的状态信息。
接收模块1001c,用于接收本地连接的主节点根据本地调度计划和/或远程调度计划发送的调度指令;
负载均衡模块1001d,用于根据接收模块1001c接收到的调度指令进行虚拟机迁移。
重连模块1001e,用于当与本地连接的主节点断开连接时,通过广播的方式选择其他可连接的主节点并建立连接。
由于本发明实施例一提供的负载均衡系统包含有多个主节点,当一个主节点发生故障时,其他主节点仍然可以继续进行负载均衡,从而提高系统容错性,同时为了避免主节点故障从而导致与该主节点相连的从节点无法进行虚拟机负载均衡的问题,从节点1001还包括重连模块1001e,用于当从节点1001与本地连接的主节点断开连接时,通过广播的方式查找其他可连接的主节点,并选择其中一个建立连接。
由于一个主节点的处理能力有限,当连接的从节点过多时,可能会影响主节点的处理能力,本实施例提供的系统,可以设置多个主节点,每个主节点分别管理一部分从节点,同时还可以通过设置更多主节点来扩展系统的规模,相对于现有技术中由一个集中式调度器管理所有从节点而言,系统规模和可扩展性都大大增加。
综上所述,本发明实施例一提供虚拟机负载均衡系统,通过设置多个主节点,每个主节点连接0至多个从节点,由主节点根据各主节点以及与其本地连接的从节点的状态信息生成本地调度计划和/或远程调度计划,并根据生成的本地调度计划和/或远程调度计划进行虚拟机的迁移,以实现虚拟机负载均衡,达到了提高系统容错性、提高系统规模和扩展性的目的。
实施例二
为了对上述实施例一提供的虚拟机负载均衡系统中的主节点做更详细的描述,请参见图4,其示出了本发明实施例二提供的一种主节点的装置结构图。该主节点可以应用于如权利要求1所述的虚拟机负载均衡系统中,该主节点本地连接有0至多个从节点。该主节点可以应用于一个基于云计算的虚拟机负载均衡系统。该主节点20可以包括:第一生成模块201、第二生成模块202和负载均衡模块203;
第一生成模块201,用于根据本地连接的从节点的状态信息和自身的状态信息生成本地调度计划,其中状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
第二生成模块202,用于统计第一生成模块201生成的本地调度计划之外的未调度的多余负载信息和/或剩余资源信息,获取其他主节点的未调度的多余负载信息和/或剩余资源信息,并根据其他主节点的未调度的多余负载信息和/或剩余资源信息以及本地的未调度的多余负载信息和/或剩余资源信息生成远程调度计划;
负载均衡模块203,用于根据第一生成模块201生成的本地调度计划和/或第二生成模块202生成的远程调度计划进行虚拟机迁移,以实现虚拟机负载均衡。
其中,第一生成模块201,具体包括:第一接收单元201a、第一获取单元201b和第一生成单元201c;
第一接收单元201a,用于接收本地连接的从节点发送的状态信息;
第一获取单元201b,用于获取自身的状态信息;
状态信息包括物理服务器资源信息和虚拟机负载信息。第一获取单元201b定期收集自身对应的物理服务器资源信息和虚拟机负载信息。其中,物理服务器资源信息为静态信息,第一获取单元201b只要获取一次即可;而虚拟机负载信息为动态信息,随着时间变化而变化,因此,第一获取单元201b需要定期获取,比如,每隔3分钟获取一次虚拟机负载信息。
具体的,第一获取单元201b获取自身的状态信息的方法可以有多种,在实际应用中,第一获取单元201b可以定期获取自身的状态信息(第一次获取物理服务器资源信息和虚拟机负载信息,之后每次只需要定期获取虚拟机负载信息),当需要生成调度计划时,将定期获取的多个自身的状态信息做一次平均值(由于物理服务器资源信息为静态,所以只需要对收集的虚拟机负载信息做平均),将该平均值作为当前自身的状态信息,或者,可以根据定期获取的多个自身的状态信息做一次预测(根据定期获取的对虚拟机负载信息的大致走势预测当前自身的虚拟机负载信息),将该预测值作为当前的自身的状态信息,再或者,可以将最近一次获取的自身的状态信息(具体为第一次获取的物理服务器资源信息和/或最近一次获取的虚拟机负载信息)作为当前的自身的状态信息。
第一生成单元201c,用于根据第一接收单元201a接收到的本地连接的从节点发送的状态信息和第一获取单元201b获取的自身的状态信息生成本地调度计划。
第一生成单元201c可以按照预定的调度策略生成本地调度计划,具体比如,预先为每台物理服务器设置一个资源利用率阈值,当某台物理服务器上的资源利用率超过80%,则预定将该物理服务器上的部分虚拟机迁移到其他资源利用率较低的物理服务器上,或者,用该物理服务器上负载较高的虚拟机交换其他资源利用率低于80%的物理服务器上负载较低的虚拟机,可以按照虚拟机迁移尽可能少的原则来生成本地调度计划。
其中,第二生成模块202,具体包括:统计单元202a、第二获取单元202b、第二发送单元202c、第二接收单元202d、第三发送单元202e、第三接收单元202f、资源分配单元202g、第四发送单元202h和第二生成单元202i;
统计单元202a,用于统计本地调度计划之外的未调度的多余负载信息和/或剩余资源信息;
具体的,本地调度计划之外的剩余资源信息可以是本地各物理服务器在按照本地调度计划进行调度之后的预计剩余的资源;本地调度计划之外的未调度的多余负载信息可以是本地各物理服务器上按照本地调度计划进行调度之后预计多余的虚拟机负载,需要说明的是,该预计剩余的资源和/或预计多余的虚拟机负载依然是在预设的资源利用率阈值的基础上进行统计的。
第二获取单元202b,用于当统计单元202a统计有未调度的多余负载时,获取其他主节点的剩余资源信息;
当统计有预计未调度的多余的虚拟机负载时,需要将预计未调度的多余的虚拟机负载迁移到其他主节点或与其他主节点相连的从节点对应的物理服务器上,此时,需要获取其他主节点的剩余资源信息。
第二发送单元202c,用于根据统计单元202a统计的本地的未调度的多余负载信息和第二获取单元202b获取的其他主节点的剩余资源信息向其他主节点发送资源请求;
具体的,第二发送单元202c可以根据本地的预计未调度的多余的虚拟机负载以及接收到的其他主节点的预计剩余的资源,向其他主节点请求将某一本地未调度的多余的虚拟机迁移到其他主节点或其主节点对应的某一物理服务器上,或者向其他主节点请求将某一本地负载较高的虚拟机与其他主节点或其主节点连接的某一物理服务器上的负载较低的虚拟机做交换,这样的请求可以被称为资源请求。
第二接收单元202d,用于接收其他主节点根据第二发送单元202c发送的资源请求返回的资源分配信息;
若其他主节点接收并通过第二发送单元202c发送的资源请求,则向该主节点返回预定接收该虚拟机的资源分配信息。
第三发送单元202e,用于当统计单元202a统计有剩余资源时,向其他主节点发送本地的剩余资源信息;
当统计有预计剩余的资源信息时,可以接收其他主节点的未调度的多余的虚拟机负载,此时,第三发送单元202e需要向其他主节点发送本地的剩余资源信息。
第三接收单元202f,用于接收其他主节点根据第三发送单元202e发送的本地的剩余资源信息发送的资源请求;
资源分配单元202g,用于根据第三接收单元202f接收到的资源请求生成资源分配信息;
需要说明的是,对于相同的预计剩余的资源,第三接收单元202f可能会接收到两份以上的资源请求,为了避免冲突,资源分配单元202g可以按照接收到资源请求的先后顺序,优先对先接收到的资源请求返回资源分配信息,对于其余的资源请求,可以返回分配失败信息,通知相应的其他主节点重新请求。
另外,资源分配单元202g生成资源分配信息后,统计单元更新本地的剩余资源信息,并由第三发送单元202e将更新后的剩余资源信息发送给其他主节点。
第四发送单元202h,用于将资源分配单元202g生成的资源分配信息发送给其他主节点;
第二生成单元202i,用于根据第二接收单元202d接收到的资源分配信息和/或资源分配单元202g生成的资源分配信息生成远程调度计划。
第二生成单元202i可以根据接收到的资源分配信息和主节点自身生成的资源分配信息预定将本地未调度的多余的虚拟机迁移到其他主节点或其他主节点对应的物理服务器上或者预定接收其他主节点未调度的多余的虚拟机的远程调度计划。
其中,负载均衡模块203,具体包括:负载均衡单元203a和第五发送单元203b;
负载均衡单元203a,用于根据第一生成模块201生成的本地调度计划和/或第二生成模块202生成的远程调度计划进行虚拟机迁移;
第五发送单元203b,用于根据第一生成模块201生成的本地调度计划和/或第二生成模块202生成的远程调度计划向本地连接的从节点发送调度指令,以便从节点根据该调度指令进行虚拟机迁移。
作为上述方案的优选,在负载均衡模块203进行虚拟机迁移之前,主节点还可以同其他主节点交换各自生成的本地调度计划和/或远程调度计划,以便通过对比各自的调度计划来判断是否会有调度冲突,若有调度冲突,则可以重新调整各自的调度计划,直至各主节点之间的调度计划没有冲突。另外,各主节点互相保存其他主节点的远程调度计划,还可以在进行虚拟机迁移时,合理安排迁移时间和迁移顺序,提高远程调度的效率。
综上所述,本发明实施例二提供的主节点,通过根据本地连接的从节点的状态信息和自身的状态信息生成本地调度计划,根据本地的未调度的多余负载信息和/或剩余资源信息以及其他主节点的未调度的多余负载信息和/或剩余资源信息生成远程调度计划,并根据生成的本地调度计划和/或远程调度计划进行虚拟机迁移,以实现虚拟机负载均衡,达到了提高系统容错性、提高系统的规模和扩展性的目的。
实施例三
为了对实施例一提供的负载均衡系统中的从节点做进一步描述,请参见图5,其示出了本发明实施例三提供的从节点的装置结构图,该从节点可以应用于一个基于云计算的虚拟机负载均衡系统。该从节点1002可以包括:获取模块1002a、发送模块1002b、接收模块1002c和负载均衡模块1002d;
获取模块1002a,用于获取自身的状态信息,其中状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
其中,物理服务器资源信息为静态信息,获取模块1002a只要获取一次即可;而虚拟机负载信息为动态信息,随着时间变化而变化,因此,获取模块1002a需要定期获取,比如,每隔3分钟获取一次虚拟机负载信息。
具体的,获取自身的状态信息的方法可以有多种,在实际应用中,获取模块1002a可以定期获取自身的状态信息(第一次获取物理服务器资源信息和虚拟机负载信息,之后每次只需要定期获取虚拟机负载信息),当需要向主节点发送状态信息时,将定期获取的多个自身的状态信息做一次平均值(由于物理服务器资源信息为静态,所以只需要对收集的虚拟机负载信息做平均),将该平均值作为当前自身的状态信息,或者,可以根据定期获取的多个自身的状态信息做一次预测(由于物理服务器资源信息为静态,所以只需要对收集的虚拟机负载信息做平均),将该预测值作为当前的自身的状态信息,再或者,可以将最近一次获取的自身的状态信息(具体为第一次获取的物理服务器资源信息和/或最近一次获取的虚拟机负载信息)作为当前的自身的状态信息。
发送模块1002b,用于向本地连接的主节点发送获取模块1002a获取的自身的状态信息。
同样的,发送模块1002b将获取的自身状态信息发送给本地连接的主节点时,第一次需要发送获取的物理服务器资源信息和虚拟机负载信息,之后每次只需要发送获取的虚拟机负载信息即可。
接收模块1002c,用于接收本地连接的主节点根据本地调度计划和/或远程调度计划发送的调度指令,其中,本地调度计划为主节点根据接收到的本地连接的从节点发送的状态信息和主节点自身的状态信息生成,远程调度计划为主节点根据其他主节点的剩余资源信息以及主节点本地的未调度的多余负载信息和/或剩余资源信息生成;
负载均衡模块1002d,用于根据接收模块1002c接收到的调度指令进行虚拟机迁移。
另外,从节点1002还包括:
重连模块1002e,用于当与本地连接的主节点断开连接时,通过广播的方式查询其他可连接的主节点,并与查询到的主节点中的一个建立连接。
为了避免主节点故障从而导致与该主节点相连的从节点无法进行虚拟机负载均衡的问题,从节点1002还包括重连模块1002e,用于当从节点1002与本地连接的主节点断开连接时,通过广播的方式查找其他可连接的主节点,并选择其中一个建立连接。
综上所述,本发明实施例三提供的从节点,通过获取自身的状态信息并发送给主节点,以便主节点根据各节点状态信息生成本地调度计划和/或远程调度计划,同时,当从节点与本地连接的主节点断开连接时,通过广播的方式查询其他可连接的主节点并建立连接,达到提高系统容错性的目的。
实施例四
对应上述实施例一提供的虚拟机负载均衡系统,请参见图6,其示出了本发明实施例四提供的虚拟机负载均衡方法的方法流程图,该方法可以应用于在一个基于云计算的系统中进行虚拟机负载均衡。该方法可以包括:
步骤301,根据本地连接的从节点的状态信息和自身的状态信息生成本地调度计划,其中状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
其中,主节点接收本地连接的从节点的状态信息并获取自身的状态信息,根据本地连接的从节点的状态信息和自身的状态信息生成本地调度计划。另外,物理服务器资源信息可以包括物理服务器的总处理能力和已使用的处理能力,
步骤302,统计本地调度计划之外的未调度的多余负载信息和/或剩余资源信息,获取其他主节点的未调度的多余负载信息和/或剩余资源信息,并根据其他主节点的未调度的多余负载信息和/或剩余资源信息以及本地的未调度的多余负载信息和/或剩余资源信息生成远程调度计划;
步骤303,根据本地调度计划和/或远程调度计划对各物理服务器上的虚拟机进行迁移,以实现虚拟机负载均衡。
其中,虚拟机负载的均衡是通过在不同物理服务器之间迁移虚拟机来实现的。
综上所述,本发明实施例四提供的虚拟机负载均衡方法,通过设置多个主节点,每个主节点连接0至多个从节点,由主节点根据各主节点以及与其本地连接的从节点的状态信息生成本地调度计划和/或远程调度计划,并根据生成的本地调度计划和/或远程调度计划进行虚拟机的迁移,以实现虚拟机负载均衡,达到了提高系统容错性、提高系统规模和扩展性的目的。
实施例五
为了对上述实施例四提供的方法做进一步描述,请参见图7,其示出了本发明实施例五提供的一种虚拟机负载均衡方法的方法流程图,该方法可以应用于在一个基于云计算的系统中进行虚拟机负载均衡。该虚拟机负载均衡方法可以包括:
步骤401,主节点接收本地连接的从节点发送的状态信息并获取自身的状态信息;
状态信息包括物理服务器资源信息和虚拟机负载信息。主节点定期收集自身对应的物理服务器资源信息和虚拟机负载信息。其中,物理服务器资源信息为静态信息,主节点只要获取一次即可;而虚拟机负载信息为动态信息,随着时间变化而变化,因此,主节点需要定期获取,比如,每隔3分钟获取一次虚拟机负载信息。
主节点获取自身的状态信息的方法可以有多种,在实际应用中,主节点可以定期获取自身的状态信息(第一次获取物理服务器资源信息和虚拟机负载信息,之后每次只需要定期获取虚拟机负载信息),当需要生成本地调度计划时,将定期获取的多个自身的状态信息做一次平均值(由于物理服务器资源信息为静态,所以只需要对收集的虚拟机负载信息做平均),将该平均值作为当前自身的状态信息,或者,可以根据定期获取的多个自身的状态信息做一次预测(根据定期获取的对虚拟机负载信息的大致走势预测当前自身的虚拟机负载信息),将该预测值作为当前的自身的状态信息,再或者,可以将最近一次获取的自身的状态信息(具体为第一次获取的物理服务器资源信息和/或最近一次获取的虚拟机负载信息)作为当前的自身的状态信息。
步骤402,主节点根据从节点发送的状态信息和自身的状态信息生成本地调度计划;
主节点可以按照预定的调度策略生成本地调度计划,具体比如,预先为每个物理服务器设置一个资源利用率阈值,当某个物理服务器上的资源利用率超过80%,则预定将该物理服务器上的部分虚拟机迁移到其他资源利用率较低的物理服务器上,或者,用该物理服务器上负载较高的虚拟机交换其他资源利用率低于80%的物理服务器上负载较低的虚拟机,可以按照虚拟机迁移尽可能少的原则来生成本地调度计划。
步骤403,主节点统计本地调度计划之外的未调度的多余负载信息和/或剩余资源信息,当统计有未调度的多余负载时,进入步骤404,当统计有剩余资源时,进入步骤407;
步骤404,主节点获取其他主节点的剩余资源信息;
步骤405,主节点根据本地的未调度的多余负载信息和其他主节点的剩余资源信息向其他主节点发送资源请求;
步骤406,主节点接收其他主节点根据资源请求返回的资源分配信息;
步骤407,主节点向其他主节点发送本地的剩余资源信息,并接收其他主节点根据本地的剩余资源信息发送的资源请求;
步骤408,主节点根据接收到的资源请求生成资源分配信息,并将生成的资源分配信息发送给其他主节点;
步骤409,主节点根据接收到的资源分配信息和/或生成的资源分配信息生成远程调度计划。
步骤410,主节点根据本地调度计划和/或远程调度计划进行虚拟机迁移;
步骤411,主节点根据本地调度计划和/或远程调度计划向本地连接的从节点发送调度指令,以便本地连接的从节点根据该调度指令进行虚拟机迁移。
由于一个主节点的处理能力有限,当连接的从节点过多时,可能会影响主节点的处理能力,本实施例提供的方法,可以设置多个主节点,每个主节点分别管理一部分从节点,同时还可以通过设置更多主节点来扩展系统的规模,相对于现有技术中由一个集中式调度器管理所有从节点而言,系统规模和可扩展性都大大增加。
综上所述,本发明实施例五提供的虚拟机负载均衡方法,主节点通过根据本地连接的从节点的状态信息和自身的状态信息生成本地调度计划,根据本地的未调度的多余负载信息和/或剩余资源信息以及其他主节点的未调度的多余负载信息和/或剩余资源信息生成远程调度计划,并根据生成的本地调度计划和/或远程调度计划进行虚拟机迁移,以实现虚拟机负载均衡,达到了提高系统容错性、提高系统的规模和扩展性的目的。
实施例六
对应于上述实施例一提供的虚拟机负载均衡系统以及上述实施例三提供的从节点,请参见图8,其示出了本发明实施例六提供的虚拟机负载均衡方法的方法流程图,该方法可以应用于在一个基于云计算的系统中进行虚拟机负载均衡。该虚拟机负载均衡方法可以包括:
步骤501,从节点获取自身的状态信息,其中状态信息至少包括:对应的物理服务器资源信息和虚拟机负载信息;
从节点定期收集自身对应的物理服务器资源信息和虚拟机负载信息。其中,物理服务器资源信息为静态信息,从节点只要获取一次即可;而虚拟机负载信息为动态信息,随着时间变化而变化,因此,从节点需要定期获取,比如,每隔3分钟获取一次虚拟机负载信息。
具体的,获取自身的状态信息的方法可以有多种,在实际应用中,从节点可以定期获取自身的状态信息(第一次获取物理服务器资源信息和虚拟机负载信息,之后每次只需要定期获取虚拟机负载信息),当需要向主节点发送状态信息时,将定期获取的多个自身的状态信息做一次平均值(由于物理服务器资源信息为静态,所以只需要对收集的虚拟机负载信息做平均),将该平均值作为当前自身的状态信息,或者,可以根据定期获取的多个自身的状态信息做一次预测(根据定期获取的对虚拟机负载信息的大致走势预测当前自身的虚拟机负载信息),将该预测值作为当前的自身的状态信息,再或者,可以将最近一次获取的自身的状态信息(具体为第一次获取的物理服务器资源信息和/或最近一次获取的虚拟机负载信息)作为当前的自身的状态信息。
步骤502,从节点向本地连接的主节点发送获取的自身的状态信息。
同样的,从节点将获取的自身状态信息发送给本地连接的主节点时,第一次需要发送获取的物理服务器资源信息和虚拟机负载信息,之后每次只需要发送获取的虚拟机负载信息即可。
步骤503,从节点接收本地连接的主节点根据本地调度计划和/或远程调度计划发送的调度指令,其中,本地调度计划为主节点根据接收到的本地连接的从节点发送的状态信息和主节点自身的状态信息生成,远程调度计划为主节点根据其他主节点的剩余资源信息以及主节点本地的未调度的多余负载信息和/或剩余资源信息生成;
步骤504,从节点根据该调度指令进行虚拟机迁移。
优选的,当与本地连接的主节点断开连接时,通过广播的方式搜寻查询可连接的主节点,并与查询到的主节点中的一个建立连接。
综上所述,本发明实施例六提供的虚拟机负载均衡方法,从节点通过获取自身的状态信息并发送给主节点,以便主节点根据各节点状态信息生成本地调度计划和/或远程调度计划,同时,当从节点与本地连接的主节点断开连接时,通过广播的方式查询其他可连接的主节点并建立连接,达到提高系统容错性的目的。
需要说明的是:上述实施例提供的虚拟机负载均衡系统中的主节点和从节点在进行虚拟机负载均衡时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将主节点和从节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的主节点和从节点与虚拟机负载均衡方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。