首页 / 云资源的调度方法及调度器

云资源的调度方法及调度器有效专利 发明

技术领域

[0001] 本发明涉及云计算技术领域,特别涉及一种云资源的调度方法及调度器。

相关背景技术

[0002] 目前,随着云计算产业的不断发展,云环境中的云资源的规模越来越大。云资源的调度效率关系着云资源是否能被高效的利用。之前,一般通过基于中心式的调度方式来实现云资源的调度,即所有的云资源都由一台或几台放置在同一物理区域的服务器处理。
[0003] 但是,随着云计算技术的发展,现在的云环境的用户的数量和云资源的数量都比较庞大。因此,同一时间内云资源的调度请求也越来越多,这使得中心式的调度系统在服务器上占据的整体资源较高,短时间内无法完成调度请求的处理,造成整个云环境的调度效率比较慢,甚至在请求突发时可能出现服务出错、系统崩溃的极端情况,对整个云环境的高可用性造成很大威胁。而且,现在越来越多的用户开始使用混合云环境,而中心式的调度方式仅支持在一个云环境下的云资源的调度,无法实现云环境之间的调度,所以并不适用于混合云环境。所以,显然中心式的调度系统已经不能满足当前的云环境的调度需求了。

具体实施方式

[0069] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0070] 本发明的一个实施例中,混合云环境由一个或多个公有云环境、私有云环境组合而成。在混合云环境中,数据和应用程序可在私有云环境和公有云环境之间迁移。例如,如图1所示,云环境1和云环境2组成一个混合云环境,云环境1和云环境2,可以是私有云环境,也可以是公有云环境,还可以本身就是一个混合云环境。
[0071] 图1展示的混合云环境,云环境1和云环境2均可以由多个可用域组成,每个可用域中包括有多个宿主机,将每个可用域中的宿主机按一定的策略分为多个小组。其中,所述可用域又称为可用区,指的是组成云环境的拥有独立电力、网络等基础设施的物理区域,也可以简单的理解为组成云环境的机房。将云环境分为多个可用域,可以提高了云环境的容灾能力,当一个可用域内出现故障后,不会影响到其他的可用域的正常使用。并且,可用域之间可以直接将通过运营商网络或专线相互连接,参见图1,可用域1、可用域2以及可用域3之间所连接的粗实线表示的就是可用域之间的连接关系。所述宿主机则主要用于承载虚拟机等云资源。
[0072] 可选地,将每个可用域中的宿主机按一定的策略分为多个小组,具体可以是:将可用域下的不属于同一物理位置、不属于同一电力设备、不属于同一网络设备下的宿主机编为一组。这样可以保证可用域下的小组也具备一定的容灾能力,在电力或网络等条件出现问题时,不至于整组都受到影响。
[0073] 还需要说明的是,在混合云环境中的每个云环境中,配置有云资源管理器,也可以称之为顶级调度器。参见图1,云环境1中,顶级调度器101预先部署在云环境1下的可用域1中,主要用于负责所在云环境1下的调度任务以及所述云环境1和云环境2的调度任务。
[0074] 并且,在每一个云环境下的顶级调度器可以配置为多个,如图1中所示,在云环境1中配置有3个顶级调度器101。多个顶级调度器组成服务器集群,配合完成该级别负责的调度任务。具体的,图1中,由虚线展示了云环境1和云环境2之间的邻居关系。
[0075] 在两个云环境之间,虚线表示的是这两个云计算环境的云资源管理器的邻居关系。通过云计算环境之间的邻居关系,各云计算环境可以相互连接相互感知并且实现互操作。
[0076] 一般情况下,在混合云环境下的每一个云环境的部署过程中,管理员会在该云环境中,确定出该云环境下的顶级调度器。并且,确定出的顶级调度器一般是位于同一个可用域中,并且可以位于一个可用域中的同一小组内或者不同小组内。
[0077] 在每一个云环境下的每一个可用域中,还需要配置有域级调度器。每个可用域的域级调度器由顶级调度器从每个可用域内的宿主机中选举得到,即在每个可用域内的宿主机中选举出某个宿主机作为该可用域的域级调度器。也就是说,作为域级调度器的宿主机兼具普通宿主机的功能和调度器的功能。
[0078] 并且,为了提高调度器的可用性,对每个可用域中的域级调度器可以做主备结构,即在每个可用域的宿主机中选举出两个宿主机分别作为可用域的主用域级调度器和备用域级调度器。其中,所述备用域级调度器为所述主用域级调度器的备用的调度器,调度任务主要由主用域级调度器负责,备用域级调度器在主用调度器出现故障或其他无法使用的情况下,替换主用域级调度器,成为该可用域新的主用域级调度器。
[0079] 参见图1,云环境1中,可用域2以及可用域3都设置有主用域级调度器102和备用域级调度器103。主要用于相应的可用域下的调度任务。其中,所述可用域下的调度任务具体可以包括可用域下宿主机间的调度任务以及顶级调度器101分发到可用域中的调度器任务。
[0080] 需要说明的是,在每一个可用域中都配置有域级调度器,所以图1中,云环境1的可用域1中同样也配置有主用域级调度器和备用域级调度器。
[0081] 具体的,顶级调度器为可用域范围内的宿主机选举域级调度器,如图2所示,包括:
[0082] S201、顶级调度器向可用域范围内的所有宿主机广播选举请求。
[0083] 其中,所述选举请求用于向所述可用域范围内的所有宿主机请求状态报告。
[0084] S202、可用域范围内的每一个宿主机,均生成自身的状态报告。
[0085] 其中,所述状态报告包括宿主机的属性信息。可选地,所述宿主机的属性信息可以包括宿主机的IP地址、计算能力、所在范围的标识、优先级、可用资源量等属性信息。
[0086] S203、可用域范围内的每一个宿主机,向顶级调度器上传自身的状态报告。
[0087] 其中,宿主机在接收到所述选举请求并生成自身的状态报告后,将自身的状态报告发送给顶级调度器。顶级调度器接收到可用域范围内的每一台宿主机发送的状态报告后,执行步骤S204。
[0088] S204、顶级调度器根据所述状态报告,按照预设选举规则,从可用域范围内的宿主机中选举出可用域的域级调度器。
[0089] 需要说明的是,当对域级调度器进行主备结构时,顶级调度器从可用域内的所有宿主机中选举出两台宿主机分别作为该可用域的主用域级调度器和备用域级调度器。其中,主用域级调度器和备用域级调度器可以同时选举出来。当然也可以依次进行选举,例如先选举出主用调度器,再选举出备用调度器。
[0090] 可选地,顶级调度器可以利用宿主机的状态报告中包含的所在范围的标识,同时选举出所有或多个可用域的域级调度器。其中,所在范围的标识可以包括所在可用域的标识以及所在小组的标识。当然,也可以依次选举出每个可用域的域级调度器。
[0091] 具体的,所述状态报告具体包括宿主机的优先级、宿主机的可用资源量、以及宿主机的IP地址,所述步骤S204具体为:
[0092] 顶级调度器比较可用域范围内的所有宿主机的优先级,优先选举优先级高的宿主机作为可用域的域级调度器;若比较出所述宿主机的优先级相同,则比较优先级相同的宿主机的可用资源量,选举可用资源量较大的宿主机作为可用域的域级调度器;若比较出宿主机的可用资源量相同,则比较可用资源量相同的宿主机的IP地址,选举IP地址较小的宿主机作为可用域的域级调度器。
[0093] 也就是说,预设的选举规则为:比较宿主机的优先级,优先选择优先级高的宿主机作为调度器,在宿主机的优先级出现相同时,比较宿主机的可用资源量,选择优先级相同的宿主机中,可用资源量较大的宿主机作为调度器,在宿主机的优先级和可用资源量都相同时,比较宿主机的IP地址,从优先级和可用资源量的宿主机中选择IP地址小的宿主机作为调度器。
[0094] 具体的,当对调度器做主备结构时,同样先比较宿主机的优先级,优先选择优先级高的宿主机作为主用调度器或备用调度器;在宿主机的优先级出现相同时,则考虑宿主机的可用资源量,比较宿主机的可用资源量,选择优先级相同的宿主机中,可用资源量较大的宿主机作为主用调度或备用调度器;在宿主机的优先级和可用资源量都相同时,最后考虑宿主机的IP地址比较宿主机的IP地址,从优先级和可用资源量的宿主机中选择IP地址小的宿主机作为调度器。其中,可以优先确定主用调度器。当然,主用调度器和备用调度器也可以分开选举,即先根据预设的选举规则,选举出主用调度器,再根据预设的选举规则选举出备用调度器。
[0095] 其中,在执行步骤S204选举出下一级别的调度器后,执行步骤S205。
[0096] S205、顶级调度器将选举结果告知给可用域范围内的所有宿主机。
[0097] 还需说明的是,所选举出来的每个域级调度器与每个顶级调度器之间都建立有邻居关系。如图1所示,域级调度器与顶级调度器连接的实线,表示的是域级调度器与顶级调度器的邻居关系。通过域级调度器和顶级调度器之间的邻居关系,两者可以相互连接相互感知并且实现互操作。
[0098] 在每个可用域下的每个小组中,还需要配置有组级调度器。每个小组的组级调度器由所在可用域的域级调度器从每个小组的宿主机中选举得到,即在每个小组内的宿主中选举出某个宿主机作为该小组的组级调度器,该宿主机兼具普通宿主机的功能和调度器的功能。
[0099] 同理,为了提高调度器的可用性,对每个小组的组级调度器可以做主备结构,即在每个小组的宿主机中选举出主用组级调度器和备用组级调度器。其中,所述备用组级调度器为所述主用组级调度器的备用的调度器,调度任务主要由主用组级调度器负责,备用域级调度器在主用调度器出现故障或其他无法正常使用的情况下,替换主用组级调度器,成为该小组的新的主用组级调度器。
[0100] 参见图1,云环境1中,可用域2以及可用域3都设置有主用组级调度器102和备用组级调度器103。主要用于相应的小组范围内的调度任务。其中,所述小组范围内的调度任务具体可以包括小组范围下的宿主机间的调度任务以及所在可用域的域级调度器分发到小组中的调度器任务。
[0101] 需要说明的是,每个可用域中的宿主机都被分为了多个小组,所以可用域1、可用域2和可用域3同样都包含有多个主用组级调度器和备用主机调度器。
[0102] 具体的,域级调度器为可用域下的小组范围内的宿主机选举组级调度器,如图3所示,包括:
[0103] S301、域级调度器向小组范围内的所有宿主机广播选举请求。
[0104] 其中,所述选举请求用于向小组范围内的所有宿主机请求状态报告。
[0105] S302、小组范围内的每一个宿主机,均生成自身的状态报告。
[0106] 其中,所述状态报告包括宿主机的属性信息。可选地,所述宿主机的属性信息可以是包括宿主机的IP地址、计算能力、所在范围的标识、优先级、可用资源量等属性信息。
[0107] S303、小组范围内的每一个宿主机,向域级调度器上传自身的状态报告。
[0108] 其中,宿主机在接收到所述选举请求并生成自身的状态报告后,将自身的状态报告发送给域级调度器。域级调度器接收到小组范围内的每一台宿主机发送的状态报告后,然后执行步骤S302。
[0109] S304、域级调度器根据所述状态报告,按照预设选举规则,从小组范围内的宿主机中选举出小组的组级调度器。
[0110] 需要说明的是,当对组级调度器做主备结构时,域级调度器从小组内的所有宿主机中选举出两台宿主机分别作为该小组的主用组级调度器和备用组级调度器。同样,主用组级调度器和备用组级调度器可以同时选举出来,当然也可以依次进行选举。
[0111] 同理,域级调度器可以利用宿主机的状态报告中包含的所在范围的标识,同时选举出所在可用域下的所有或多个小组的组级调度器。其中,所在范围的标识可以包括所在可用域的标识以及所在小组的标识。
[0112] 还需要说明的是,作为域级调度器的宿主机同样会被分在可用域下的其中一个小组中,所以作为域级调度器的宿主机同样有可能被选举为组级调度器,及域级调度器和组级调度器为同一台宿主机。当然,为了避免一台宿主机出现问题而同时影响两个级别的调度器的使用,通常作为域级调度器的宿主机可以不再参见组级调度器的选举,从而保证域级调度器与组级调度器分别为两台不同的宿主机。
[0113] 具体的,所述状态报告具体包括宿主机的优先级、宿主机的可用资源量、以及宿主机的IP地址,所述步骤S304具体为:
[0114] 域级调度器比较小组范围内的所有宿主机的优先级,优先选举优先级高的宿主机作为小组的组级调度器;若比较出所述宿主机的优先级相同,则比较优先级相同的宿主机的可用资源量,选举可用资源量较大的宿主机作为小组的组级调度器;若比较出宿主机的可用资源量相同,则比较可用资源量相同的宿主机的IP地址,选举IP地址较小的宿主机作为小组的组级调度器。
[0115] 其中,在执行步骤S304选举出下一级别的调度器后,执行步骤S305。
[0116] S305、域级调度器将选举结果告知给小组范围内的所有宿主机。
[0117] 还需要说明的是,所选举出来的每个组级调度器与所在可用域的每个域级调度器之间都建立有邻居关系。如图1所示,可用域2中的组级调度器与域级调度器所连接的实线,表示的是组级调度器与域级调度器的邻居关系。通过组级调度器和域级调度器之间的邻居关系,两者可以相互连接相互感知并且实现互操作。
[0118] 由上述内容可知:在一个云环境中的顶级调度器或者域级调度器,可以为下一级别范围内的宿主机选举出下一级别的调度器。具体的,选举方法如图4所示,包括:
[0119] S401、调度器向下一级别范围内的所有宿主机广播选举请求。
[0120] 其中,所述选举请求用于向所述下一级别范围内的所有宿主机请求状态报告,所述状态报告包括宿主机的属性信息。
[0121] 可选地,所述宿主机的属性信息可以是包括宿主机的IP地址、计算能力、所在范围的标识、优先级、可用资源量等属性信息。并且,所述所在范围的标识可以包括所在可用域的标识和所在小组的标识。需要说明的是,每个可用域的标识和每个小组的标识都是唯一的。
[0122] 需要说明的是,所述调度器在接收到所述下一级别范围内的宿主机的状态报告后,执行步骤S402。
[0123] S402、调度器根据所述状态报告,按照预设选举规则,从所述下一级范围内的宿主机中选举出下一级别的调度器。
[0124] 其中,所述预设选举规则可以是云环境的管理员,根据实际的需求而预设设置的选举规则,以保证调度器按照选举规则能选举出下一级别的调度器。
[0125] 可选地,本发明的另一实施例中,所述状态报告具体包括宿主机的优先级、宿主机的可用资源量、以及宿主机的IP地址,所述步骤S402的一种实施方式,如图5所示,具体包括:
[0126] S501、所述调度器比较所述下一级范围内的所有宿主机的优先级,优先选举优先级高的宿主机作为所述下一级别的调度器。
[0127] 需要说明的是,所有宿主机在部署云环境之初都有一个默认优先级,云环境的管理员可以根据每台宿主机的具体情况,对宿主机的优先级进行更改,从而实现人为干预调度器的选举。其中,宿主机的优先级表示宿主机成为调度器的可能性,优先级越高,越有可能成为调度器。例如:假设宿主机的优先级的最大值为255,云环境下的所有宿主机的默认优先级为128,管理员可以根据实际的需求对宿主机的优先级进行修改,例如将年代较新或计算能力比较强的宿主机的优先级调高,以便其在调度器的选举中更容易被选中。同理,对于年代比较久远的或计算能力比较差的宿主机,则将其优先级调度,甚至可以将太差的宿主机的优先级调为0,表示该宿主机放弃选举的资格。
[0128] 由于宿主机的优先级由多个因素来确定,并且能人为进行干预,所以优先考虑优先级高的宿主机作为调度器,更能保证所选举出的宿主机的更加的合理。
[0129] 可选地,比较所述下一级范围内的所有宿主机的优先级,优先选举优先级高的宿主机作为所述下一级别的调度器,可以是将下一级范围内的所有宿主机的优先级从高到低进行排序,得到排序结果,然后从排序结果中选择优先级最高的两台宿主机作为下一级别的主用调度器和备用调度器。当然,这只是其中一种可选的方法,其他同样通过比较宿主机的优先级来选举调度器的方式,同样属于本发明的范畴。例如,利用淘汰制,将宿主机两两比较优先级,淘汰优先级低的宿主机,最终得到优先级最高的宿主机作为下一级别的调度器。
[0130] 还需要说明的是,所述调度器若比较出所述宿主机的优先级相同,则执行步骤S502。
[0131] S502、所述调度器比较优先级相同的宿主机的可用资源量,选举可用资源量较大的宿主机作为所述下一级别的调度器。
[0132] 也就是说,在宿主机的优先级出现相同时,优选考虑优先级相同的宿主机中可用资源量较大的宿主机作为下一级别的调度器。
[0133] 宿主机的可用资源量越大,说明宿主机的承载能力越大,选举可用资源量大的宿主机来同时兼具普通宿主机的功能和调度器的功能,也就更加的合理。
[0134] 需要说明的是,所述调度器若比较出宿主机的可用资源量相同,则执行步骤S503。
[0135] S503、所述调度器比较可用资源量相同的宿主机的IP地址,选举IP地址较小的宿主机作为所述下一级别的调度器。
[0136] 也就是说,调度器比较出宿主机的优先级和可用资源量都相同时,从优先级和可用资源量的宿主机中选择IP地址小的宿主机作为调度器。
[0137] 由于每个宿主机的IP地址是唯一的,所以不会出现相同的情况,从而能保证调度器最终能选举出下一级别的调度器。因为,之前已经对宿主机的优先级和可用资源量进行了比较,筛选掉了优先级较低的和可用资源量较小的宿主机,所以对于宿主机的对比已经比较充分,已经能保证作为下一级别的调度器的宿主机是下一级别的所有宿主机中最适合的宿主机,此时通过比较IP地址,以最终确定下一级别的调度器。当然,这只是其中的一种可选的方法,也可以是选择IP地址较大的作为调度器,或通过比较宿主机的其他唯一的属性的方式来最终确定调度器,这都属于本发明的保护范畴。
[0138] 需要说明的是,执行步骤S402选举出下一级别的调度器后,所述调度器执行步骤S403。
[0139] S403、调度器将选举结果告知给所述下一级别范围内的所有宿主机。
[0140] 其中,所述选举结果可以包括被选举为下一级别的调度器的宿主机的IP地址等信息。
[0141] 还需要说明的是,在云环境中分别配置每一级别的调度器之后,还需要建立上下两个级别的调度器之间的邻居关系。具体的,建立宿主机与组级调度器之间、组级调度器与域级调度器之间、域级调度器和顶级调度器、顶级调度器与其他云计算环境的顶级调度器之间的邻居关系。
[0142] 可选地,在本发明的另一个实施例中,云环境中的上下两个级别的调度器之间的邻居关系形成后,云环境中的上一级别的调度器还可以接收下一级别的调度器发送的下一级别对应范围中的可用资源报告;并向上一级别的调度器发送本级别所对应范围中的可用资源报告。
[0143] 具体的,本实施例中,云环境中的调度器之间建立邻居关系以及向上一级别的调度器发送可用资管报告的方法,如图6所示,包括:
[0144] S601、各宿主机与所在小组的组级调度器建立邻居关系,并发送自身的可用资源量报告。
[0145] 也就是说,当上一级的调度器为组级调度器时,下一级别的调度器可以视为所在小组范围内的各个宿主机,即此时的下一级别的调度器并非真正意义上的调度器。各宿主机与所在组的组级调度器建立邻居关系后,并将自身的可用资源量报告发送给组级调度器,即组级调度器接收宿主机发送的可用资源量报告。
[0146] 需要说明的是,在对组级调度器作了主备结构时,各宿主机与所在组的主用组级调度器和备用组级调度器都建立邻居关系。
[0147] S602、各组级调度器与所在可用域的域级调度器建立邻居关系,并发送本组的可用资源量报告。
[0148] 需要说明的是,步骤S602也可以理解为域级调度器与所在可用域的各个组级调度器建立邻居关系,并接收组级调度器发送的本组的可用资源量报告。
[0149] 具体的,各组的主用组级调度器和备用调度器都分别与所在可用域的主用域级调度器和备用域级调度器建立邻居关系,并发送本组总的可用资源量的报告。
[0150] S603、各域级调度与所在云环境的各顶级调度器建立邻居关系,并发送本可用域的可用资源量报告。
[0151] 需要说明的是,步骤S603也可以理解为顶级调度器与各个可用域的域级调度器建立邻居关系,并接收域级调度器发送的本可用域的可用资源量报告。
[0152] 具体的,各可用域的主用域级调度和备用域级调度器都分别与所在云环境的每一个顶级调度器建立邻居关系,并发送本可用域的总的可用资源量的报告。
[0153] S604、各顶级调度器与其他云环境中的顶级调度器建立邻居关系。
[0154] 也就是说,当下一级别的调度器为顶级调度器,则上一级别的调度器为其他云环境中的顶级调度器,即可以将其他云环境中的顶级调度器视为本云环境的顶级调度器的上一级别的调度器,但该上一级别的调度并不属于本云环境。
[0155] 需要说明的是,通常所述顶级调度器所在的云环境与其他云环境属于同一混合云环境,通过顶级调度器之间建立的邻居关系,可以实现在不同云环境间进行云资源的调度。
[0156] 需要说明的是,在云环境中的上一级别的调度器与下一级别的调度器之间建立邻居关系后,还需要时刻监测各个调度器的状态,以维护好建立的邻居关系。具体的,维护宿主机与组级调度器之间、组级调度器与域级调度器之间、域级调度器和顶级调度器、顶级调度器与其他云计算环境的顶级调度器之间的邻居关系。
[0157] 可选地,在本发明另一实施例,某一级别的调度器维护自身与所述上一级别的调度器、所述下一级别的调度器的邻居关系的方式,包括:
[0158] 所述调度器间隔第一间隔时间接收所述下一级别的调度器发送的自身的心跳报告,并间隔第二间隔时间向所述上一级别的调度器发送自身的心跳报告。
[0159] 其中,若所述调度器在预设时间内未收到所述下一级别的调度器发送的自身的心跳报告,则将相应的下一级别的调度器的状态标记为故障。
[0160] 也就是说,本发明实施例采用周期性发送心跳报告的机制,监测着调度器的状态,从而维护建立的邻居关系。
[0161] 可选地,所述第一间隔时间和第二间隔时间可以是同一时间,通常为一分钟。也就是说,所述调度器可以在同一时间接受下一级别的调度器发送的心跳报告和向上一级别的调度器发送心跳报告。当然,也可以理解为下一级别的调度器向所述调度器发送心跳报告的同时,所述调度器向上一级别的调度器发送心跳报告。当然,所述第一间隔时间和第二间隔时间也可以是不同时间。
[0162] 首先需要说明的是,本发明实施例中,若所述调度器为组级调度器,则所述下一级别的调度器为所述组级调度器所负责范围内的所有宿主机;若所述调度器为顶级调度器,所述上一级调度器为其他云环境的顶级调度器。
[0163] 具体的,所述调度器维护自身与所述上一级别的调度器、所述下一级别的调度器的邻居关系的方式,可以是:各宿主机每隔一段时间向与其建立有邻居关系的组级调度器发送自身的心跳报告;组级调度器每隔一段时间向与其建立有邻居关系的域级调度器发送自身的心跳报告;域级调度器每个一段时间向与其建立有邻居关系的顶级调度器发送自身的心跳报告;所述顶级调度器向与其建立有邻居关系的其他云环境的顶级调度器发送自身的心跳报告。
[0164] 其中,调度器在预设时间内,通常为两分钟内,未收到下一级别的调度器发送的自身的心跳报告,则说明下一级别可能出现了故障,无法发送心跳报告。此时,上一级别的调度器将相应的下一级别的调度器的状态标记为故障。
[0165] 可选地,若所述下一级别调度器包括主用调度器和备用调度器,且出现故障的所述下一级别调度器为该级别的主用调度器,则将该级别的备用调度器切换为该级别的主用调度器,并从该级别范围内的宿主机中重新选举该级别的备用调度器。当然,若出现故障的所述下一别的调度器为备用调度器,则直接从该级别范围内的宿主机中选举该级别的备用调度器。当然,一个级别的主用调度器和备用调度同时出现故障时,则需要重新选举该级别的主用调度器和备用调度器。
[0166] 还需要说明的是,在顶级调度器出现故障时,由与其建立有邻居关系的其他云环境的顶级调度器将出现故障的所述调度器的状态标记为故障。
[0167] 在建立邻居关系后,除了需要上一级别的调度与下一级别的调度器之间的邻居关系外,各级别的调度器还需要维护自身级别范围下的可用资源量的状态。
[0168] 可选地,本发明另一实施例中,某一级别的调度器维护自身范围下的可用资源量的状态的方法,包括:
[0169] 所述调度器在自身级别范围内的可用资源量发生变化时,被触发向上一级别的调度器发送状态变化报告。
[0170] 其中,所述状态变化报告包括变化资源的类型和变化量。
[0171] 需要说明的是,因为组级调度需要维护所在小组内的可用资源量的状态,所以,本发明实施例中,各个宿主机在自身的可用资源量发送变化时,也会被触发向所在小组的组级调度器发送状态变化报告。但是,顶级调度器在自身级别范围下的可用资源量发生变化时,不用向其他云环境的调度器发送状态变化报告。
[0172] 在现有技术中,中心式调度系统中的每一个调度器需要维护云环境中的所有宿主机的可用资源,这使得在可用资源量大的时候,造成调度器的负载压力过大。并且,现有技术中,是采用宿主机定时向各个调度器发送自身的可用资源状态来实现可用资源的维护,对可用资源的维护不具有实时性。而本发明中的各个调度器只负责自身级别的范围的宿主机的可用资源的维护,所以调度器的负载压力相对较小。并且,采用触发机制和增量报告的方式维护可用资源,从而保证在可用资源发生变化的第一时间得到可用资源的变化情况,对可用资源的维护具有实时性。
[0173] 还需要说明的是,在云环境的每一级别范围内,还配置有消息队列服务集群。其中,所述消息队列服务集群由多台部署了消息队列服务的服务器构成,主要作为所在级别范围的各个调度器与其所在级别范围内的宿主机、下一级别的调度器的通信媒介。
[0174] 某一级别的调度系统,如图7所示,由处在该级别范围内的消息队列服务集群701与该级别范围内的调度器702共同构成。具体的,消息队列服务集群与所有的顶级调度器共同构成顶级调度系统,与所有的域级调度器共同构成域级调度系统,与所有的组级调度器共同构成组级调度系统。因此,某一级别的调度系统内的所有请求、报告等消息都将先发送给消息队列服务集群,在由消息队列服务集群发送给指定的调度器、宿主机或云资源管理器处理。
[0175] 基于上述的云资源调度系统,本发明实施例提供的云资源调度方法,应用于某一级别的调度器,如图8所示,包括:
[0176] S801、所述调度器接收调度请求。
[0177] 其中,其中,所述调度请求包括:所述调度器所属云环境内的调度任务的请求,以及所述调度器所属云环境和其他云环境间的调度任务的请求。
[0178] 也就是说,调度器接收到的调度请求可以是调度器所述云环境内的宿主机之间进行云资源调度时发起的请求,也可以是调度器所述云环境下的宿主机与其他云环境下的宿主机之间进行云资源调度时发起的请求。可见,本发明实施例提供的调度方法可以支持在不同云环境之间进行云资源的调度任务,也就是可以满足混合云环境对于跨云环境的调度的需求。具体的,不同云环境间的顶级调度器之间建立有邻居关系,所以由顶级调度器接收所述云环境与其他云环境间的调度任务的调度请求,并负责相应的调度任务。
[0179] 需要说明的是,所述调度请求由云环境的用户或管理者所发起的,主要包括虚拟机的迁移和创建的调度器请求。所以,本发明实施例主要以虚拟的迁移和创建为例。当然,还可以包括其他的云资源的调度请求,例如,容器、存储卷的调度以及用户提交的任务等调度器请求。同理,其他云资源的调度可参见虚拟的调度器请求的执行过程。
[0180] 具体的,由消息队列服务集群接收其他云环境或上一级别的调度器发送的调度请求,或者用户发起的所属级别范围内的调度请求,并将所述调度请求发送给所属级别的调度系统的所述调度器。
[0181] S802、所述调度器解析所述调度请求,得到所述调度请求对应的任务类型。
[0182] 其中,若所述调度请求对应的任务类型属于所述调度器对应级别下的调度任务,则执行步骤S803,若所述调度请求对应的任务类型属于所述调度器的下一级别下的调度任务,则执行步骤S804。
[0183] S803、所述调度器在所述调度器对应级别下的宿主机中,响应所述调度请求。
[0184] 其中,顶级调度器对应级别下的宿主机为整个云环境下的宿主机;域级调度器对应级别下的宿主机为所属可用域下的所有宿主机;组级调度器对应级别下的宿主机为所属小组下的所有宿主机。
[0185] S804、所述调度器向下一级别的调度器发送所述调度请求。
[0186] 其中,若所述调度器为组级调度器,则所述下一级别的调度器为所述组级调度器所属小组范围下的宿主机。
[0187] 需要说明的是,所述调度请求对应的任务类型属于所述调度器对应级别下的调度任务,可以简单的理解为所述调度任务需要由所述调度器来负责进行。同样,所述调度请求对应的任务类型属于所述调度器的下一级别下的调度任务,则可以简单的理解为所述调度任务不由所述调度器负责进行,该调度任务具体由所述调度器的下一级别的调度器,或下下一级别的调度器负责进行。
[0188] 还需要说明的是,根据所述任务类型还可以得到所述调度请求是所述调度器所属云环境内的调度任务的请求,还是所述调度器所属云环境和其他云环境间的调度任务的请求。
[0189] 其中,若所述调度请求为本云环境和其他云环境间的调度任务的请求,则所述调度器为顶级调度器,且所述调度请求对应的任务类型属于顶级调度对应级别下的调度任务,即由顶级调度器在所属云环境下的宿主机中,响应所述调度请求。
[0190] 若所述调度请求是属于所述调度器所属云环境内的调度任务的请求,则所述调度器可以是顶级调度器、域级调度器以及组级调度器中的任意一个。具体的,此时调度器判断所述调度请求对应的任务类型是否属于所述调度器对应级别下的调度任务,若判断出所述调度请求对应的任务类型属于所述调度器对应级别下的调度任务,则说明该调度任务由所述调度器负责,此时所述调度器在所述调度器对应级别下的宿主机中。若所述调度请求对应的任务类型属于所述调度器的下一级别下的调度任务,则说明调度任务具体由下一级别的调度器来负责,或下下级别的调度器来负责,所以,此时调度器需要将调度请求下发到下一级别。
[0191] 也就是说,所述调度器在接收到所述调度请求后可以直接利用一定的调度策略,根据所在级别范围内的可用资源量的详情,处理调度请求。例如,根据调度请求,将虚拟机迁移到所在级别范围内的宿主机上。或者,将调度器请求分发到下一级别的调度器上。
[0192] 可选地,本发明的另一实施例中,所述调度器为顶级调度器,所述步骤S802中,所述调度器在所述调度器对应级别下的宿主机中,响应所述调度请求的一种实施方式,具体包括:
[0193] 所述顶级调度器在对应的云环境下的不同可用域下的宿主机中执行虚拟机的迁移请求对应的操作。
[0194] 也就是说,若云环境的用户或管理员发起的所述调度请求为,在调度器所属云环境下的不同可用域下的宿主机间进行虚拟机的迁移的请求,则所述调度请求对应的任务类型属于顶级调度器对应级别下的调度任务,需要由顶级调度器来负责。即云环境下不同可用域下的宿主机间的迁移请求,属于顶级调度器负责的范畴。
[0195] 具体的,顶级调度器可以根据调度请求将虚拟机的迁出请求,通过消息队列服务集群发送给需要迁出虚拟机的可用域中的宿主机,以让宿主机完成虚拟机的迁出;将虚拟机的迁入请求,通过消息队列服务集群发送给另一可用域中的需要迁入虚拟的宿主机,以让宿主机完成虚拟机的迁入。
[0196] 所述步骤S802中,所述调度器在所述调度器对应级别下的宿主机中,响应所述调度请求的另一种实施方式,包括:
[0197] 所述顶级调度器在对应的云环境下,执行其他云环境下的顶级调度器发送的虚拟机的迁入请求或者迁出请求对应的操作。
[0198] 也就是说,若所述调度所属的云环境或其他云环境的用户或管理员发起的所述调度请求,为在调度器所属云环境下的宿主机与其他云环境的宿主机间进行虚拟机的迁移的请求,则所述调度请求对应的任务类型属于顶级调度器对应级别下的调度任务,需要由顶级调度器来负责。即不同云环境下的宿主机间的虚拟机的迁移请求,属于云环境下的顶级调度器负责的范畴。
[0199] 具体的,所述顶级调度器通过消息队列服务集群,给所在云环境下的相应的宿主机发送相应的迁入或迁出请求,以让所在云环境下的宿主机完成相应的虚拟机的迁入或迁出。
[0200] 所述步骤S802中,所述调度器向下一级别的调度器发送所述调度请求的一种实施方式,包括:
[0201] 所述顶级调度器向对应的云环境下的特定域级调度器发送虚拟机的创建请求;其中,所述特定域级调度器与所述虚拟机的创建请求相对应。
[0202] 需要说明的是,所述特定域级调度器为所述虚拟机的创建请求中,要求虚拟机所要创建在的可用域的域级调度器。也就是说,要求在所述特定域级调度器所在的可用域中创建所述虚拟机。
[0203] 对于调度器所属云环境的用户发起的创建虚拟机的调度请求,最后都会经由云环境下的组级调度处理。也就是说,所述调度请求对应的任务类型不属于顶级调度器对应级别下的调度任务,所以顶级调度器需要将调度请求发送到下一级别的特定的域级调度器上。
[0204] 具体的,所述顶级调度器将虚拟机的创建请求,经由消息队列服务集群分发到特定的域级调度器上,由所述特定的域级调度器再对调度请求进行处理。
[0205] 可选地,本发明的另一实施例中,所述调度器为域级调度器,所述步骤S802中,所述调度器在所述调度器对应级别下的宿主机中,响应所述调度请求的一种实施方式,具体包括:
[0206] 所述域级调度器在对应的可用域下的不同小组范围下的宿主机中执行虚拟机的迁移请求对应的操作。
[0207] 也就是说,若所述调度所属的云环境的用户或管理员发起的所述调度请求,为在调度器所属云环境下的某一可用域下的不同小组的宿主机间进行虚拟机的迁移的请求,则所述调度请求对应的任务类型属于该可用域的域级调度器对应级别下的调度任务,需要由该可用域的域级调度器来负责。即云环境下的某一可用域下的不同小组间的宿主机的虚拟机的迁移请求,属于该可用域的域级调度器负责的范畴。
[0208] 具体的,相应可用域的域级调度器可以根据调度请求将虚拟机的迁出请求,经由消息队列服务集群发送给需要迁出虚拟机的小组中的宿主机,以让宿主机完成虚拟机的迁出;将虚拟机的迁入请求,经由消息队列服务集群发送给另一个小组的需要迁入虚拟的宿主机,以让宿主机完成宿主机的迁入。
[0209] 所述步骤S802中,所述调度器向下一级别的调度器发送所述调度请求的一种实施方式,包括:
[0210] 所述域级调度器向对应的可用域下的组级调度器发送虚拟机的创建请求。
[0211] 也就是说,顶级调度下发的域级调度器的虚拟机的创建请求的调度器请求,所对应的任务类型属于域级调度器的下一级别下的调度任务,即属于组级调度对应级别下的调度任务,所以域级调度器需要将调度任务发送到下一级别的特定的组级调度器上。
[0212] 具体的,所调度请求为顶级调度器分发到可用域的虚拟机的创建请求,所述可用域的域级调度器,可根据所述可用域的各个小组的可用资源量,将请求分发到可用域下的其中一个组级调度器上,或者根据调度请求下发到特定的组级调度器上,由所述组级调度器再对调度请求进行处理。
[0213] 可选地,本发明的另一实施例中,所述调度器为组级调度器,所述步骤S802中,所述调度器在所述调度器对应级别下的宿主机中,响应所述调度请求的一种实施方式,具体包括:
[0214] 所述组级调度器在对应的小组范围下的宿主机中执行虚拟机的迁移请求对应的操作。
[0215] 也就是说,若所述调度器所属的云环境的用户或管理员发起的所述调度请求,为在同一小组下的宿主机间进行虚拟机的迁移,则所述调度请求对应的任务类型属于该小组的组级调度器对应级别下的调度任务,需要由该小组的组级调度器来负责。即云环境下的同一小组下的宿主机间的虚拟机的迁移请求,属于该小组的组级调度器负责的范畴。
[0216] 具体的,相应的小组的组级调度器可以根据调度请求,将虚拟机的迁出请求,经由消息队列服务集群发送给需要迁出虚拟机的宿主机,以让宿主机完成虚拟机的迁出;将虚拟机的迁入请求,经由消息队列服务集群发送给需要迁入虚拟的宿主机,以让宿主机完成宿主机的迁入。
[0217] 所述步骤S802中,所述调度器在所述调度器对应级别下的宿主机中,响应所述调度请求的另一种实施方式,包括:
[0218] 所述组级调度器在对应的小组范围下的宿主机中执行虚拟机的创建请求对应的操作。
[0219] 也就是说,所述调度请求为虚拟机调度创建请求,且所述调度器为组级调度器时,则所述调度请求对应的任务类型属于该组级调度器对应级别下的调度任务。所以,虚拟机的创建请求最终交由所述组级调度器负责。
[0220] 具体的,所述小组的组级调度器,可根据所述小组下的各个宿主机的可用资源量,将域级调度器下发的虚拟机的创建请求,在小组范围内的宿主机中,执行虚拟机的创建请求对应的操作,最终完成虚拟机的创建。
[0221] 本发明提供的云资源的调度方法,通过每一级别调度接收调度请求后,解析调度请求,得到所述调度请求对应的任务类型;若所述调度请求对应的任务类型属于所述调度器对应级别下的调度任务,则所述调度器在所述调度器对应级别下的宿主机中,响应所述调度请求;若所述调度请求对应的任务类型属于所述调度器的下一级别下的调度任务,则所述调度器向下一级别的调度器发送所述调度请求。也就是说,每一级别的调度器只负责相应级别下的调度任务,不再是负责整个云环境的调度任务。从而将调度请求根据所在的级别范围,分别由相应的级别的调度器来处理,避免调度器的负载过高,保证了云资源的调度的效率。并且,所述调度请求可以是所述调度器所属云环境和其他云环境间的调度任务的请求。所以,可以实现不同云环境之间的调度任务,从而满足混合云环境的跨云环境的调度需要。
[0222] 本发明另一实施例提供的一种调度器,如图9所示,包括:
[0223] 接收模块901,用于接收调度请求;其中,所述调度请求为其他云环境或上一级别的调度器发送的调度请求。
[0224] 具体的,接收模块901的具体工作过程,可对应参见上述方法实施例中的步骤S801,此处不再赘述。
[0225] 调度模块902,用于解析所述调度请求,得到所述调度请求对应的任务类型;若所述调度请求对应的任务类型属于所述调度器对应级别下的调度任务,则所述调度器在所述调度器对应级别下的宿主机中,响应所述调度请求;若所述调度请求对应的任务类型属于所述调度器的下一级别下的调度任务,则所述调度器向下一级别的调度器发送所述调度请求。
[0226] 具体的,调度模块902的具体工作过程,可对应参见上述方法实施例中的步骤S802,此处不再赘述。
[0227] 可选地,本发明另一实施例中,所述调度器为顶级调度器,调度模块902执行在所述调度器对应级别下的宿主机中,响应所述调度请求时,用于在对应的云环境下的不同可用域下的宿主机中执行虚拟机的迁移请求对应的操作。或者,用于在对应的云环境下,执行其他云环境下的顶级调度器发送的虚拟机的迁入请求或者迁出请求对应的操作。
[0228] 调度模块902执行所述调度器向下一级别的调度器发送所述调度请求时,用于:向对应的云环境下的特定域级调度器发送虚拟机的创建请求;其中,所述域定组级调度器与所述虚拟机的创建请求相对应。
[0229] 具体的,调度模块具体的工作过程,可对应参见上述方法实施例中的调度器为顶级调度器时,步骤S802的一种实施方式,此处不再赘述。
[0230] 可选地,本发明另一实施例中,调度模块902为域级调度器,所述调度模块执行在所述调度器对应级别下的宿主机中,响应所述调度请求,用于在云环境下对应的可用域下的不同小组范围下的宿主机中执行虚拟机的迁移请求对应的操作。
[0231] 调度模块902执行向下一级别的调度器发送所述调度请求时,用于:向云环境下对应的可用域下的组级调度器发送虚拟机的创建请求。
[0232] 具体的,调度模块具体的工作过程,可对应参见上述方法实施例中的调度器为域级调度器时,步骤S802的一种实施方式,此处不再赘述。
[0233] 可选地,本发明另一实施例中,所述调度器为组级调度器,调度模块902执行在所述调度器对应级别下的宿主机中,响应所述调度请求时,用于在云环境下的对应的可用域下的对应的小组范围下的宿主机中执行虚拟机的迁移请求对应的操作。或者,用于所述组级调度器在对应的小组范围下的宿主机中执行虚拟机的创建请求对应的操作。
[0234] 具体的,调度模块具体的工作过程,可对应参见上述方法实施例中的调度器为组级调度器时,步骤S802的一种实施方式,此处不再赘述。
[0235] 可选地,本发明另一实施例中,所述调度器为顶级调度器或域级调度器;其中,所述调度器还包括选举模块,用于为下一级别范围内的宿主机选举下一级别的调度器;其中:
[0236] 所述选举模块执行为下一级别范围内的宿主机选举下一级别的调度器时,用于向下一级别范围内的所有宿主机广播选举请求;其中,所述选举请求用于向所述下一级别范围内的所有宿主机请求状态报告,所述状态报告包括宿主机的属性信息;根据所述状态报告,按照预设选举规则,从所述下一级范围内的宿主机中选举出下一级别的调度器;将选举结果通告给所述下一级别范围内的所有宿主机。
[0237] 具体的,选举模块的具体工作过程,可对应参见上述方法实施例中的步骤S401~S403,此处不再赘述。
[0238] 可选地,本发明另一实施例中,所述状态报告包括宿主机的优先级、宿主机的可用资源量、以及宿主机的IP地址;其中:所述选举模块执行根据所述状态报告,按照预设选举规则,从所述下一级范围内的宿主机中选举出下一级别的调度器时,用于:
[0239] 比较所述下一级范围内的所有宿主机的优先级,优先选举优先级高的宿主机作为所述下一级别的调度器;若比较出所述宿主机的优先级相同,则比较优先级相同的宿主机的可用资源量,选举可用资源量较大的宿主机作为所述下一级别的调度器;若比较出所述宿主机的可用资源量相同,则比较可用资源量相同的宿主机的IP地址,选举IP地址较小的宿主机作为所述下一级别的调度器。
[0240] 可选地,本发明另一实施例中,还包括:
[0241] 状态模块,用于与上一级别的调度器建立邻居关系,并接收所述下一级别的调度器发送的下一级别对应范围中的可用资源报告;以及,与下一调度器或本级别对应范围内的宿主机建立邻居关系,并向所述上一级别发送本级别所对应范围中的可用资源报告。
[0242] 具体的,选举模块的具体工作过程,可对应参见上述方法实施例中的步骤S601~S604,此处不再赘述。
[0243] 可选地,本发明另一实施例中,所述状态模块,还用于间隔第一间隔时间接收所述下一级别的调度器发送的自身的心跳报告,并间隔第二间隔时间向所述上一级别的调度器发送自身的心跳报告。将在预设时间内,未收心跳报告的所述下一级别的调度器的状态标记为故障。
[0244] 可选地,本发明另一实施例中,所述状态模块,还用于在自身级别范围内的可用资源量发生变化时,向上一级别的调度器发送状态变化报告;其中,所述状态变化报告包括变化资源的类型和变化量。
[0245] 本发明提供的调度器,只负责其相应级别下的调度任务,而不再是负责整个云环境的调度任务。从而将调度请求根据所在的级别范围,分别由相应的级别的调度器来处理,避免调度器的负载过高,保证了云资源的调度的效率。并且,所述调度请求可以是所述调度器所属云环境和其他云环境间的调度任务的请求。所以,通过本发明实施例提供的调度,还可以实现不同云环境之间的调度任务,从而满足混合云环境的跨云环境的调度需要。
[0246] 专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页 第1页 第2页 第3页