一种效用计算的机群系统及其运行时环境管理方法转让专利

申请号 : CN200810114071.9

文献号 : CN101315618B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王磊詹剑锋邱必祝

申请人 : 中国科学院计算技术研究所

摘要 :

本发明公开了一种效用计算的机群系统及其运行时环境管理方法。该系统包括多个节点,所述节点包括一智能代理模块,用于检测机群系统配置、安装和卸载软件包、报告节点的运行状态和负载情况,并报告给机群系统的资源供应服务模块,配置服务模块,数据公告模块;所述资源供应服务模块,用于负责机群运行时环境管理和分配;所述配置服务模块,用于对机群系统的配置数据进行管理;所述数据公告模块,用于存储机群系统中节点动态信息。其能够满足效用计算运行时环境的构建需求并降低系统管理的复杂度、提高资源利用率。

权利要求 :

1.一种效用计算的机群系统,包括多个节点,其特征在于,每个所述节点包括一智能代理模块,用于检测机群系统配置、安装和卸载软件包、报告节点的运行状态和负载情况,并报告给机群系统的资源供应服务模块,配置服务模块,数据公告模块,事件服务模块,和FTP服务器,所述资源供应服务模块,用于创建所有者,为所述所有者指定对应软件包,接收构造效用计算运行时环境的请求,分析出所述所有者被分配的资源,将分配相关信息保存在所述配置服务模块,将所有者信息发送给所述智能代理模块,以将运行时环境所需的软件部署在相应的节点上;

所述配置服务模块,用于通过数据库对机群系统的配置数据进行管理,其提供对机群系统的配置数据进行访问的单一接口和机群系统的配置数据的永久存储;

所述数据公告模块,用于存储机群系统中节点的动态信息,保存和查询机群系统中节点的动态运行状态信息;

所述事件服务模块,用于为机群系统提供通信通道;

所述FTP服务器,用于为机群系统提供基于FTP协议的文件传输服务。

2.根据权利要求1所述的效用计算的机群系统,其特征在于,还包括管理图形界面,用于为用户提供图形化的管理。

3.根据权利要求1所述的效用计算的机群系统,其特征在于,所述智能代理模块检测的系统配置包括:主机名称、CPU型号、内存容量、硬盘容量、网卡信息、主机的IP地址。

4.根据权利要求1所述的效用计算的机群系统,其特征在于,所述配置服务模块的数据库表中存储的系统信息包括:节点编号、主机名称、CPU型号、内存容量、硬盘容量、网卡信息、主机的IP地址。

5.根据权利要求1所述的效用计算的机群系统,其特征在于,数据公告模块中,所述运行状态信息包括:CPU利用率,内存利用率,网络利用率。

6.一种效用计算的机群系统运行时环境管理方法,其特征在于,包括下列步骤:步骤A,运行机群系统,对机群系统中的智能代理模块,配置服务模块,数据公告模块,资源供应服务模块进行初始化;

步骤B,资源供应服务模块创建所有者,为所述所有者指定对应软件包,接收构造效用计算运行时环境的请求,分析出所述所有者被分配的资源,将分配相关信息保存在所述配置服务模块,将所有者信息发送给所述智能代理模块,以将运行时环境所需的软件部署在相应的节点上;

步骤C,运行时环境在其运行过程中,运行时环境的所有者动态地申请新节点加入运行时环境,或者动态地销毁运行时环境或其中的部分节点。

7.根据权利要求6所述的效用计算的机群系统运行时环境管理方法,其特征在于,所述步骤A中,所述智能代理模块初始化,包括下列步骤:步骤A11,所述智能代理模块启动后,检测节点的配置信息,包括:节点名称、节点的IP地址、节点的硬件配置等,并报告给所述配置服务模块;

步骤A12,所述配置服务模块将相应的信息存入配置数据库,所述配置服务模块写入配置数据库的系统信息包括:节点编号、主机名称、CPU型号、内存容量、硬盘容量、网卡信息、主机的IP地址。

8.根据权利要求6所述的效用计算的机群系统运行时环境管理方法,其特征在于,所述步骤A中,所述资源供应服务模块初始化,包括下列步骤:步骤A21,通过和所述配置服务模块交互得到机群系统的配置信息,包括:机群系统的节点总数、节点的硬件信息、节点的网络信息等;

步骤A22,读取所述配置服务模块得到机群运行时环境的所有者信息;并将机群中未分配运行环境的节点都归管理员所有;

步骤A23,所述资源供应服务模块和机群系统中的事件服务模块建立联系,获取机群系统事件的信息;

步骤A24,和所述数据公告模块建立联系,从而获取节点运行状态。

9.根据权利要求6所述的效用计算的机群系统运行时环境管理方法,其特征在于,所述步骤A中,还包括运行时环境的初始化,包括下列步骤:步骤A31,管理员在管理图形界面上创建运行时环境的所有者并指定运行时环境对应的软件包,并选择运行时环境包含的节点;

步骤A32,管理图形界面将运行时环境对应的软件包和节点的信息发送给所述资源供应服务模块;

步骤A33,管理图形界面将运行时环境的所有者信息通知给所述资源供应服务模块;

步骤A34,所述资源供应服务模块保存该运行时环境的所有者信息,并将该运行时环境的所有者信息和对应的软件包信息发送给所述配置服务模块;

步骤A35,所述配置服务模块将该运行时环境的所有者信息和对应的软件包信息保存至配置数据库中。

10.根据权利要求9所述的效用计算的机群系统运行时环境管理方法,其特征在于,所述步骤B包括下列步骤:步骤B11,管理员通过管理图形界面将指定名称的节点分配给运行时环境的所有者;

步骤B12,管理图形界面将分配信息通知给所述资源供应服务模块;

步骤B13,所述资源供应服务模块将节点状态置为“构建”,并保存至所述配置服务模块;

步骤B14,所述资源供应服务模块将运行时环境的所有者信息发送给节点的智能代理模块;

步骤B15,智能代理模块在相应节点上部署与运行时环境对应的软件包;

步骤B16,部署成功后,智能代理模块通过机群系统中的事件服务模块通知所述资源供应服务模块;

步骤B17,所述资源供应服务模块将相应节点状态置为“可用”,并将节点状态信息保存到所述配置服务模块;

步骤B18,所有分配的节点状态都成为“可用”后,运行时环境构造成功;

步骤B19,管理图形界面通过定期和所述资源供应服务模块联系获取到运行时环境可用的信息。

11.根据权利要求9所述的效用计算的机群系统运行时环境管理方法,其特征在于,所述步骤B包括下列步骤:步骤B21,管理员通过管理图形界面给运行时环境的所有者分配节点数目;

步骤B22,管理图形界面将分配信息通知给所述资源供应服务模块;

步骤B23,所述资源供应服务模块根据当前系统中节点的状态、负载信息,分析出要分配的节点;

步骤B24,所述资源供应服务模块将节点状态置为“构建”,并将节点状态信息保存到所述配置服务模块;

步骤B25,所述资源供应服务模块将运行时环境的所有者信息发送给节点的智能代理模块;

步骤B26,智能代理模块在相应节点上部署与效用计算运行时环境对应的软件包;

步骤B27,部署成功后,智能代理模块通过机群系统中的事件服务模块通知所述资源供应服务模块;

步骤B28,所述资源供应服务模块将节点状态置为“可用”,并将节点状态信息保存到所述配置服务模块;

步骤B29,所有分配的节点状态都成为“可用”后,效用计算运行时环境构造成功;

步骤B210,管理图形界面通过定期和资源供应服务模块联系,获取到效用计算运行时环境可用的信息。

12.根据权利要求9所述的效用计算的机群系统运行时环境管理方法,其特征在于,所述步骤C中,所述运行时环境的所有者申请新节点,包括下列步骤:步骤C11,效用计算运行时环境的所有者通过管理图形界面申请一定数目的节点,并将申请请求发送给所述资源供应服务模块;

步骤C12,所述资源供应服务模块收到申请的请求;

步骤C13,所述资源供应服务模块根据当前系统中节点的状态、负载信息,分析出要分配的节点;

步骤C14,所述资源供应服务模块将节点状态置为“构建”,并将节点状态信息保存至所述配置服务模块;

步骤C15,所述资源供应服务模块将运行时环境的所有者信息发送给节点的智能代理模块;

步骤C16,智能代理模块在相应节点上部署与运行时环境对应的软件包;

步骤C17,部署成功后,智能代理模块通过机群系统中的事件服务模块通知资源供应服务模块;

步骤C18,所述资源供应服务模块将节点状态置为“可用”,并将节点状态信息保存至所述配置服务模块;

步骤C19,所有分配的节点状态都成为“可用”后,效用计算运行时环境构造成功;

步骤C110,所述资源供应服务模块通过所述机群系统中的事件服务模块告知效用计算运行时环境申请的节点可用。

13.根据权利要求9所述的效用计算的机群系统运行时环境管理方法,其特征在于,所述步骤C中,运行时环境的所有者通过管理图形界面对其运行时环境进行动态销毁时,包括如下步骤:步骤C21,运行时环境的所有者通过管理图形界面删除其所对应的运行时环境;

步骤C22,管理图形界面将删除所述运行时环境的信息通知给所述资源供应服务模块;

步骤C23,所述资源供应服务模块将节点状态置为“销毁”,将运行时环境的所有者的信息删除,并将删除所述所有者的信息和节点状态信息通知给所述配置服务模块;

步骤C24,所述资源供应服务模块通知所述智能代理模块;

步骤C25,所述智能代理模块在相应节点上删除对应的效用计算运行时环境所需的软件;

步骤C26,删除成功后,所述智能代理模块通过机群系统中的事件服务模块通知资源供应服务模块;

步骤C27,所述资源供应服务模块通知所述配置服务模块,将节点状态置为“未使用”,节点状态变为“未使用”后,可以进行新的一次分配。

14.根据权利要求9所述的效用计算的机群系统运行时环境管理方法,其特征在于,所述步骤C中,运行时环境的所有者销毁运行时环境中的部分节点,包括如下步骤:步骤C31,效用计算运行时环境的所有者通过管理图形界面请求销毁一部分节点,并将请求发给所述资源供应服务模块;

步骤C32,所述资源供应服务模块收到销毁请求;

步骤C33,所述资源供应服务模块将对应的节点状态置为“销毁”,并将节点状态信息保存至配置服务模块;

步骤C34,所述资源供应服务模块通知效用计算运行时环境,告知销毁完成;

步骤C35,所述资源供应服务模块通知智能代理模块;

步骤C36,智能代理模块在相应节点上删除对应的运行时环境所需软件;

步骤C37,删除成功后,智能代理模块通过机群系统中的事件服务模块通知所述资源供应服务模块;

步骤C38,所述资源供应服务模块将删除节点的信息保存至所述配置服务模块,并将节点状态置为“未使用”,节点状态变为“未使用”后,可以进行新的一次分配。

说明书 :

技术领域

本发明涉及效用计算技术领域,特别是涉及一种效用计算的机群系统及其运行时环境管理方法。

背景技术

效用计算(Utility Computing)就是将服务器、网络、存储等资源整合,进行统一资源分配的计算系统。机群系统是进行效用计算的载体。
机群系统是一组计算机系统(节点)通过高性能网络或者局域网互联而形成的具有单一系统映像的高可用、高性能、高可扩展性的计算机系统。它的每个节点都是一个完整的计算系统,可以独立工作。
机群系统自问世以来,以其良好的可扩展性和富有竞争力的性能/价格比,迅速成为高性能计算的主流体系结构,同时机群也在因特网服务、数据库服务等商业领域得到广泛应用。
基于机群构建效用计算运行时环境,就是为效用计算用户提供机群中部署有运行时环境所需要软件包的一组节点。
基于机群构建效用计算运行时环境时,需要满足多个不同类型和相同类型不同身份使用者的需求,而目前机群对于运行时环境的构造都采用静态的方式,即管理员在节点上部署相应的软件包,然后分配给运行时环境的所有者,并且运行时环境在系统运行过程中不会动态的改变。现有的这种方式无法适应构建效用计算运行时环境的需求。

发明内容

本发明所要解决的问题是提供一种效用计算的机群系统及其运行时环境管理方法,其能够满足效用计算运行时环境的构建需求并降低系统管理的复杂度、提高资源利用率。
为实现本发明目的而提供的一种效用计算的机群系统,包括多个节点,所述节点包括一智能代理模块,用于检测机群系统配置、安装和卸载软件包、报告节点的运行状态和负载情况,并报告给机群系统的资源供应服务模块,配置服务模块,数据公告模块;
所述资源供应服务模块,用于负责机群运行时环境的管理和分配;
所述配置服务模块,用于通过数据库对机群系统的配置数据进行管理,其提供对机群系统的配置数据进行访问的单一接口和机群系统的配置数据的永久存储;
所述数据公告模块,用于存储机群系统中节点的动态信息,保存和查询机群系统中节点的动态运行状态信息。
所述的效用计算的机群系统,还包括:
事件服务模块,用于为机群系统提供通信通道;
FTP服务器,用于为机群系统提供基于FTP协议的文件传输服务。
所述的效用计算的机群系统,还包括管理图形界面,用于为用户提供图形化的管理。
所述智能代理模块检测的系统配置包括:主机名称、CPU型号、内存容量、硬盘容量、网卡信息、主机的IP地址。
所述配置服务模块的数据库表中存储的系统信息包括:节点编号、主机名称、CPU型号、内存容量、硬盘容量、网卡信息、主机的IP地址。
数据公告模块中,所述运行状态信息包括:CPU利用率,内存利用率,网络利用率。
为实现本发明目的还提供一种效用计算的机群系统运行时环境管理方法,包括下列步骤:
步骤A,运行机群系统,对机群系统中的智能代理模块,配置服务模块,数据公告模块,资源供应服务模块进行初始化;
步骤B,进行效用计算运行时环境的动态构造。
所述的效用计算的机群系统运行时环境管理方法,还包括下列步骤:
步骤C,运行时环境在其运行过程中,运行时环境的所有者动态地申请新节点加入运行时环境,或者动态地销毁运行时环境或其中的部分节点。
所述步骤A中,所述智能代理模块初始化,包括下列步骤:
步骤A11,所述智能代理模块启动后,检测节点的配置信息,包括:节点名称、节点的IP地址、节点的硬件配置等,并报告给所述配置服务模块;
步骤A12,所述配置服务模块将相应的信息存入配置数据库,所述配置服务模块写入配置数据库的系统信息包括:节点编号、主机名称、CPU型号、内存容量、硬盘容量、网卡信息、主机的IP地址。
所述步骤A中,所述资源供应服务模块初始化,包括下列步骤:
步骤A21,通过和所述配置服务模块交互得到机群系统的配置信息,包括:机群系统的节点总数、节点的硬件信息、节点的网络信息等;
步骤A22,读取所述配置服务模块得到机群运行时环境的所有者信息;并将机群中未分配运行环境的节点都归管理员所有;
步骤A23,所述资源供应服务模块和机群系统中的事件服务模块建立联系,获取机群系统事件的信息;
步骤A24,和所述数据公告模块建立联系,从而获取节点运行状态。
所述步骤A中,还包括运行时环境的初始化,包括下列步骤:
步骤A31,管理员在管理图形界面上创建运行时环境的所有者并指定运行时环境对应的软件包,并选择运行时环境包含的节点;
步骤A32,管理图形界面将运行时环境对应的软件包和节点的信息发送给所述资源供应服务模块;
步骤A33,管理图形界面将运行时环境的所有者信息通知给所述资源供应服务模块;
步骤A34,所述资源供应服务模块保存该运行时环境的所有者信息,并将该运行时环境的所有者信息和对应的软件包信息发送给所述配置服务模块;
步骤A35,所述配置服务模块将该运行时环境的所有者信息和对应的软件包信息保存至配置数据库中。
所述步骤B包括下列步骤:
步骤B11,管理员通过管理图形界面将指定名称的节点分配给运行时环境的所有者;
步骤B12,管理图形界面将分配信息通知给所述资源供应服务模块;
步骤B13,所述资源供应服务模块将节点状态置为“构建”,并保存至所述配置服务模块;
步骤B14,所述资源供应服务模块将运行时环境的所有者信息发送给节点的智能代理模块;
步骤B15,智能代理模块在相应节点上部署与运行时环境对应的软件包;
步骤B16,部署成功后,智能代理模块通过机群系统中的事件服务模块通知所述资源供应服务模块;
步骤B17,所述资源供应服务模块将相应节点状态置为“可用”,并将节点状态信息保存到所述配置服务模块;
步骤B18,所有分配的节点状态都成为“可用”后,运行时环境构造成功;
步骤B19,管理图形界面通过定期和所述资源供应服务模块联系获取到运行时环境可用的信息。
所述步骤B也可以包括下列步骤:
步骤B21,管理员通过管理图形界面给运行时环境的所有者分配节点数目;
步骤B22,管理图形界面将分配信息通知给所述资源供应服务模块;
步骤B23,所述资源供应服务模块根据当前系统中节点的状态、负载等信息,分析出要分配的节点;
步骤B24,所述资源供应服务模块将节点状态置为“构建”,并将节点状态信息保存到所述配置服务模块;
步骤B25,所述资源供应服务模块将运行时环境的所有者信息发送给节点的智能代理模块;
步骤B26,智能代理模块在相应节点上部署与效用计算运行时环境对应的软件包;
步骤B27,部署成功后,智能代理模块通过机群系统中的事件服务模块通知所述资源供应服务模块;
步骤B28,所述资源供应服务模块将节点状态置为“可用”,并将节点状态信息保存到所述配置服务模块;
步骤B29,所有分配的节点状态都成为“可用”后,效用计算运行时环境构造成功;
步骤B210,管理图形界面通过定期和资源供应服务模块联系,获取到效用计算运行时环境可用的信息。
所述步骤C中,所述运行时环境的所有者申请新节点,包括下列步骤:
步骤C11,效用计算运行时环境的所有者通过管理图形界面申请一定数目的节点,并将申请请求发送给所述资源供应服务模块;
步骤C12,所述资源供应服务模块收到申请的请求;
步骤C13,所述资源供应服务模块根据当前系统中节点的状态、负载等信息,分析出要分配的节点;
步骤C14,所述资源供应服务模块将节点状态置为“构建”,并将节点状态信息保存至所述配置服务模块;
步骤C15,所述资源供应服务模块将运行时环境的所有者信息发送给节点的智能代理模块;
步骤C16,智能代理模块在相应节点上部署与运行时环境对应的软件包;
步骤C17,部署成功后,智能代理模块通过机群系统中的事件服务模块通知资源供应服务模块;
步骤C18,所述资源供应服务模块将节点状态置为“可用”,并将节点状态信息保存至所述配置服务模块;
步骤C19,所有分配的节点状态都成为“可用”后,效用计算运行时环境构造成功;
步骤C110,所述资源供应服务模块通过所述机群系统中的事件服务模块告知效用计算运行时环境申请的节点可用。
所述步骤C中,运行时环境的所有者通过管理图形界面对其运行时环境进行动态销毁时,包括如下步骤:
步骤C21,运行时环境的所有者通过管理图形界面删除其所对应的运行时环境;
步骤C22,管理图形界面将信息通知给所述资源供应服务模块;
步骤C23,所述资源供应服务模块将节点状态置为“销毁”,将运行时环境的所有者的信息删除,并将删除所述所有者的信息和节点状态信息通知给所述配置服务模块;
步骤C24,所述资源供应服务模块通知所述智能代理模块;
步骤C25,所述智能代理模块在相应节点上删除对应的效用计算运行时环境所需的软件;
步骤C26,删除成功后,所述智能代理模块通过机群系统中的事件服务模块通知资源供应服务模块;
步骤C27,所述资源供应服务模块通知所述配置服务模块,并将节点状态置为“未使用”,节点状态变为“未使用”后,可以进行新的一次分配。
所述步骤C中,运行时环境的所有者销毁运行时环境中的部分节点,包括如下步骤:
步骤C31,效用计算运行时环境的所有者通过管理图形界面请求销毁一部分节点,并将请求发给所述资源供应服务模块;
步骤C32,所述资源供应服务模块收到销毁请求;
步骤C33,所述资源供应服务模块将对应的节点状态置为“销毁”,并将节点状态信息保存至配置服务模块;
步骤C34,所述资源供应服务模块通知效用计算运行时环境,告知销毁完成;
步骤C35,所述资源供应服务模块通知智能代理模块;
步骤C36,智能代理模块在相应节点上删除对应的运行时环境所需软件;
步骤C37,删除成功后,智能代理模块通过机群系统中的事件服务模块通知所述资源供应服务模块;
步骤C38,所述资源供应服务模块将信息保存至所述配置服务模块,并将节点状态置为“未使用”,节点状态变为“未使用”后,可以进行新的一次分配。
本发明的有益效果是:本发明的效用计算的机群系统及其运行时环境管理方法,其基于机群来动态构造效用计算运行时环境,能够动态构造机群效用计算运行时环境,从而满足效用计算运行时环境的构建需求并降低系统管理的复杂度、提高资源利用率。

附图说明

图1为本发明效用计算的机群系统结构示意图;
图2为本发明智能代理模块工作过程示意图;
图3为本发明配置服务模块工作过程示意图;
图4为本发明数据公告模块的工作过程示意图;
图5为本发明事件服务模块的工作过程示意图;
图6为本发明资源供应服务模块的工作过程示意图;
图7为本发明智能代理模块启动过程流程图;
图8为本发明资源供应服务模块的初始化流程图;
图9为效用计算运行时环境创建图形初始化流程图;
图10为节点上运行时环境的构造过程示意图;
图11为节点上通过智能代理模块动态构造运行时环境的流程图;
图12为效用计算运行时环境中角色关系示意图;
图13为运行时环境构造过程中,节点对应的状态关系示意图;
图14为本发明以指定节点名称方式进行运行时环境动态创建流程图;
图15为本发明以指定节点数目方式进行运行时环境动态创建流程图;
图16为本发明运行时环境拥有者动态申请节点的过程示意图;
图17为本发明在运行时环境中动态申请节点的流程图;
图18为本发明在运行时环境中动态销毁运行时环境的流程图;
图19为本发明在运行时环境中动态销毁节点的过程示意图;
图20为本发明在运行时环境中动态销毁节点的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种效用计算的机群系统及其运行时环境管理方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面详细说明本发明的效用计算的机群系统1,如图1所示,该机群系统1包括多个节点(计算机系统),其中,每个节点包括一智能代理模块11,用于检测机群系统配置、安装和卸载软件包、报告节点的运行状态和负载情况,并报告给机群系统的资源供应服务模块12,配置服务模块13,数据公告模块14。
所述的机群系统1,还包括资源供应服务模块12,用于负责机群运行时环境管理和分配,其是实现机群系统1运行时环境动态构造的主要装置;
配置服务模块13,用于通过数据库对机群系统1的配置数据进行管理,其提供对机群系统1的配置数据进行访问的单一接口和机群系统的配置数据的永久存储;
数据公告模块14,用于存储机群系统1中节点动态信息,其可以保存和查询机群系统1中节点的动态运行状态信息;
事件服务模块15,用于为机群系统1提供通信通道,其为机群系统1中其他装置提供基于事件的通信通道;
FTP服务器16,用于为机群系统提供基于FTP协议的文件传输服务;
管理图形界面17,用于为用户提供图形化的管理。
如图1所示,在机群每一个节点上安装一本地进程装置-智能代理模块11,智能代理模块11检测系统配置、安装和卸载软件包、报告节点的运行状态,并报告给机群系统的资源供应服务模块12,配置服务模块13,数据公告模块14。
智能代理模块11的工作过程如图2所示,智能代理模块11接收资源供应服务模块12的命令,执行软件包的自动安装和卸载,智能代理模块11通过FTP服务器16来下载所需的软件包,然后进行软件包的安装;智能代理模块11将安装、卸载的执行结果通过事件服务模块15报告给资源供应服务模块12;智能代理模块11定时向数据公告模块14报告节点的运行状态;智能代理模块11自动检测系统配置并通知给配置服务模块13。
智能代理模块11用脚本的方式,通过读取linux操作系统的proc文件和执行系统命令的方式来检测系统配置;检测的系统配置包括:主机名称、CPU型号、内存容量、硬盘容量、网卡信息、主机的IP地址等。
检测实现的关键源代码如下:
#!/bin/sh
IO_BANDWIDTH=100//预定义的磁盘读写带宽
NET1_BANDWIDTH=1000//预定义的网络1带宽
NET2_BANDWIDTH=100//预定义的网络2带宽
NET3_BANDWIDTH=100//预定义的网络3带宽
NET4_BANDWIDTH=100//预定义的网络4带宽,该程序可以处理系统中同时存
在4套网络的情况。
FILE_OUT=node.conf//侦测的输出文件
function get_hostname()//获取主机名称的函数
{
   echo″hostname=`hostname`″>$FILE_OUT
}
function get_cpuinfo()//获取CPU信息的函数
{
echo″cpu_num=`cat/proc/cpuinfo|tr-s′[\011]″′|grep′^processor:′|wc-1|tr-cd
′[0-9]′`″>>$FILE_OUT
SAVEIFS=$IFS
IFS=:
READ_FILE=/proc/cpuinfo
MATCH_NAME1=vendorid
MATCH_NAME2=model
MATCH_NAME3=modelname
MATCH_NAME4=cpuMHz
i=0
while read NAME  CONTENT
do
        NAME=`echo$NAME|tr-cd″[a-z]″″[A-Z]″`
        if[$NAME=$MATCH_NAME1];then
              echo″cpu_vendor=$CONTENT″>>$FILE_OUT
              let″i=i+1″
        fi
        if[$NAME=$MATCH_NAME2];then
              echo″cpu_modal_id=$CONTENT″>>$FILE_OUT
              let″i=i+1″
        fi
        if[$NAME=$MATCH_NAME3];then
              echo″cpu_modal_name=$CONTENT″>>$FILE_OUT
              let″i=i+1″
        fi
        if[$NAME=$MATCH_NAME4];then
              echo″$CONTENT″>ZZH_TEMP
              TEMP=$IFS
              IFS=.
              read CONTENT OTHER<ZZH_TEMP
              IFS=$TEMP
              echo″cpu_frequency=$CONTENT″>>$FILE_OUT
              let″i=i+1″
       fi
       if[$i-eq 4];then
            break;
       fi
done<$READ_FILE
IFS=$SAVEIFS
}
function get_mem()//获取内存容量的函数
{
i=0
READ_FILE=/proc/meminfo
NAME_MATCH=MemTotal:
while read NAME CONTENT OTHER
do
        if[$NAME=$NAME_MATCH];then
           CONTENT=`expr$CONTENT/1024`
           echo″memory=$CONTENT″>>$FILE_OUT
           break
        fi
done<$READ_FILE
}
function get_disk()//获取磁盘容量的函数
{
i=0
DISK_NUM=0;
DISK_SIZE=0
SAVEIF S=$IFS
/sbin/fdisk-1>TEMP_ZZH1
while read LINE
do
     if echo $LINE |grep″heads″>/dev/null;then
           IFS=,
        echo″$LINE″>TEMP_ZZH
        read HEAD SECTOR CYLINDER<TEMP_ZZH
      HEAD=`echo$HEAD|tr-cd″[0-9]″`
      SECTOR=`echo $SECTOR|tr-cd″[0-9]″`
      CYLINDER=`echo $CYLINDER|tr-cd″[0-9]″`
   disk[${DISK_NUM}]=`expr$HEAD\*$SECTOR\*$CYLINDER/2/1024`
   lett″DISK_NUM=$DISK_NUM+1″
  fi
done<TEMP_ZZH1
rm-fTEMP_ZZH1
#echo $DISK_NUM
while[$i-lt$DISK_NUM]
do
DISK_SIZE=`expr $DISK_SIZE+${disk[${i}]}`
let″i=$i+1″
done
echo″disk=$DISK_SIZE″>>$FILE_OUT
echo″io_bandwidth=$IO_BANDWIDTH″>>$FILE_OUT
rm-fTEMP_ZZH
IFS=$SAVEIFS
}
function get_os()//获取操作系统信息的函数
{
read OS_NAME TEMP OS_VERSION TEMP TEMP TEMP GCC_VERSION
VENDOR TEMP  </proc/version
GCC_VERSION=`echo $GCC_VERSION|tr-d″[()]″`
echo″os_type=$OS_NAME″>>$FILE_OUT
echo″os_version=$OS_VERSION″>>$FILE_OUT
echo″gcc_version=$GCC_VERSION″>>$FILE_OUT
VENDOR=`echo $VENDOR|tr-cd″[a-z]″″[A-Z]″`
if[″$VENDOR″=″″]
then
    echo″vendor is null″
    read OS_NAME TEMP OS_VERSION TEMP TEMP TEMP GCC_VERSION
TMEP VENDOR1 VENDOR2TEMP  </proc/version
  echo $VENDOR1
  echo $VENDOR2
     VENDOR1=`echo $VENDOR1|tr-cd″[a-z]″″[A-Z]″`
     VENDOR2=`echo $VENDOR2|tr-cd″[a-z]″″[A-Z]″`
     VENDOR=$VENDOR1$VENDOR2
fi
echo″os_vendor=$VENDOR″>>$FILE_OUT
}
function get_network()//获取网络信息的函数
{
SAVEIFS=$IFS
READ_FILE=/proc/net/dev
NAME_MATCH=lo
NET1=″″
NET2=″″
NET3=″″
NET4=″″
NET=(″″″″″″″″)
NET_NUM=0
INDEX=0
while read NAME OTHER
do
        if echo $NAME|grep $NAME_MATCH>/dev/null;then;
        else
            ifecho $NAME|grep″:″>tmp;then
                SAVEIFS=$IFS
                IFS=:
                read NAME  OTHER<tmp
                NAME=`echo$NAME|tr-d″[\040]″`
                NET[$NET_NUM]=$NAME
                echo″$NET_NUM::${NET[$NET_NUM]}″
                let″NET_NUM=$NET_NUM+1″
                IFS=$SAVEIFS
            fi
        fi
done<$READ_FILE
IFS=$SAVEIFS
/sbin/ifconfig>ifconfig.txt
while read NAME OTHER
do
   COUNTER=0
   while[$COUNTER-lt$NET_NUM]
      do
         if[-n $NAME]
         then
            if[${NET[$COUNTER]}=″$NAME″]
            then
               let″INDEX=$INDEX+1″
               echo″$OTHER″>TEMP_ZZH
               read TEMP TEMP TEMP MAC1<TEMP_ZZH
               echo″net${INDEX}_type=″$NAME>>TMP
               echo″mac${INDEX}=$MAC1″>>TMP
               read TEMP ADDR OHTER
               ip=`echo $ADDR|tr-d″[a-z]″″[A-Z]″″[\072]″`
               echo″ip${INDEX}=$ip″>>TMP
            fi
         fi
         COUNTER=`expr $COUNTER+1`
      done
done<ifconfig.txt
echo″net_num=${INDEX}″>>$FILE_OUT
cat TMP>>$FILE_OUT
rm-f TMP
IFS=$SAVEIFS
}
//通过调用上述函数获取信息,并写入node.conf文件中。
if[!-w node.conf];then
   touch node.conf
fi
#echo`hostname`>/home/zzh/node.conf
rm-f$FIEL_OUT
get_hostname
get_cpuinfo
get_mem
get_disk
get_os
get_network
#echo″detect ok!″
函数说明:
通过分别调用get_hostname、get_cpuinfo、get_mem、get_disk、get_os、get_network将侦测的结果写入node.conf文件中。其中:get_hostname为获取主机名称的函数;get_cpuinfo为获取CPU信息的函数;get_mem为获取内容容量的函数;get_disk为获取磁盘容量的函数;get_os为获取操作系统信息的函数;get_network为获取网卡信息、主机的IP地址信息的函数。
智能代理模块11通过调用linux的rpm命令来安装和卸载软件包。所述软件包为构造运行环境所必需的所有现有软件。智能代理模块11启动后,定时给数据公告模块14发送心跳消息,数据公告模块14通过心跳消息来判断智能代理模块11所在节点的运行状态。
用rpm命令实现安装和卸载的关键代码如下:
Agent::rpm_install(const char*file_name)//安装rpm包的函数
{
   string s=″sh#-c#`./rpm_agent.sh-i″;
   s+=file_name;
   s+=″*.rpm`″;
   ACE_DEBUG((LM_DEBUG,″%s\n″,s.c_str()));
   return rpm(s.c_str());
}
函数说明:
Agent::rpm_install通过接收安装包的名称作为参数,调用Agent::rpm实现安装操作。
Agent::rpm_uninstall(const char*file_name)//卸载rpm包的函数
{
   string s=″sh#-c#`./rpm_agent.sh-e″;
   s+=file_name;
    s+=″`″;
    ACE_DEBUG((LM_DEBUG,″%s\n″,s.c_str()));
    return rpm(s.c_str());//调用Agent::rpm
}
函数说明:
Agent::rpm_uninstall通过接收卸载包的名称作为参数,调用Agent::rpm实现安装操作。
int
Agent::rpm(const char*command)//执行rpm命令的函数
{
   string s=command;
   ACE_DEBUG((LM_DEBUG,″execute command%s\n″,s.c_str()));
   sendCommand(s.c_str());//调用sendCommand函数
   ifstream in;
   in.open(RPM_RESULT);
   if(!in.good())
   {
         cout<<″!!ERROR:can not open file″<<RPM_RESULT<<endl;
         exit(-1);
   }
   int result;
   in>>result;
   in.close();
   return result;
}
函数说明:
Agent::rpm通过接收执行的命令作为参数,调用sendCommand函数执行相关操作,并通过分析rpmresult文件来判断执行的结果。
sendCommand(const char*msg)//在程序中执行系统命令的处理函数
{
  int len;
  int index[128];
  char buf[1280];
    char argv[10][1280];
    char*p_arg[10];
    int i,j;
    pid_t pid;
    int status;
    strcpy(buf,msg);
    len=strlen(msg);
    buf[len]=0;
    /*translate command*/
    i=j=0;
    index[j]=0;
    while(buf[i]!=0)
    {
     while(buf[i]!=INTERVAL && bu[i]!=0)
      i++;
    if(buf[i]==INTERVAL)
    {
      buf[i]=0;
      i++;
      j++;
      index[j]=i;
    }
}
len=j+1;
for(i=0;i<len;i++)
   {
    strcpy(argv[i],&buf[index[i]]);
   printf(″argv:%s\n″,argv[i]);
     p_arg[i]=argv[i];
   }
p_arg[len]=NULL;
for(i=0;i<len+1;i++)
  printf(″p_arg[%d]=%s\n″,i,p_arg[i]);
fflush(stdout);
if((pid=fork())<0)
    {
        cout<<″fork error″<<endl;
        return-1;
    }
    else if(pid==0)
    {
       for(i=3;i<MAX_PROC;i++)
            close(i);
       if(execv(″/bin/sh″,p_arg)<0)
       {
            cout<<″execv error″<<endl;
            exit(-1);
        }
         cout<<″command executed successfullly″<<endl;
    }
    while((pid=waitpid(-1,&status,0))>0)
    {
    }
    return 1;
}
函数说明:
sendCommand是在程序中执行系统命令的处理函数。
rpm_agent.sh
#!/bin/sh
rpm$@>rpm_log 2>&1
echo$?>rpm_result
函数说明:
rpm_agent.sh是一个脚本文件,它执行rpm命令,并将结果写入rpm_result文件,供Agent::rpm函数读取。
配置服务模块13的工作过程如图3所示,配置服务模块13通过读取/写入数据库,获取/修改机群的系统信息,同时配置服务模块13可以响应对系统静态信息的操作请求。
配置服务模块13通过调用数据库的接口函数来实现读取/写入/获取/修改;数据库表中存储的系统信息包括:节点编号、主机名称、CPU型号、内存容量、硬盘容量、网卡信息、主机的IP地址等。在系统首次启动的时候会自动将数据库的表建好。
数据公告模块14的工作过程如图4所示,数据公告模块14收集部署在每个节点上的智能代理发送的节点运行状态信息,同时响应对于系统动态信息的查询请求。
本发明采用的是mysql数据库和他提供的客户端接口函数;主要实现函数为:
MYSQL*Db_Operation::do_connect(char*host_name,char*user_name,char
*password,char*db_name,unsigned int por_tnum,char*socket_name,unsigned int
flags)
{
     MYSQL*conn;/*pointer to connection handler*/
     conn=mysql_init(NULL);/*allocate,initialize connection handler*/
     if(conn==NULL)
        exit(-1);
     if(mysql_real_connect(conn,host_name,user_name,password,db_name,
     port_num,socket_name,flags)==NULL)
     {
         ACE_DEBUG((LM_DEBUG,″Error:mysql_real_connect failed\n″));
         exit(-1);
     }
     return(conn);/*connection is established*/
}
函数说明:
Db_Operation::do_connect函数用于通过调用mysql数据库的客户端接口函数mysql_init和mysql_real_connect实现与数据库建立连接。
void*
Db_Operation::do_disconnect(MYSQL*conn)
{
   mysql_close(conn);
   return 0;
}
函数说明:
Db_Operation::do_disconnect函数用于通过调用mysql数据库的客户端接口函数mysql_close实现和数据库断开连接。
int
Db_Operation::process_query(MYSQL*conn,char*query)
{
   conn=do_connect(def_host_name,def_user_name,def_password,
def_db_name,def_port_num,def_socket_name,0);
    if(conn==NULL)
    {
        cout<<″ERROR-98connection FAILED″<<endl;
        exit(-1);
        return-98;
     }
     if(mysql_query(conn,query)!=0)/*the query failed*/
     {
         handle_error(conn,″process_query()failed\n″);
         do_disconnect(conn);
         return-1;
     }
     do_disconnect(conn);
     return 0;
}
函数说明:
Db_Operation::process_query函数;通过Db_Operation::do_connect来建立和mysql数据库的连接,通过调用mysql数据库的客户端接口函数mysql_query实现对于数据库的操作,通过Db_Operation::do_disconnect来断开和mysql数据库的连接
数据公告模块14会在运行时,绑定一个多播地址,智能代理模块11通过向多播地址发送消息,获取到数据公告模块14的IP地址,定时向这个IP地址发送节点运行状态信息。运行状态信息包括但不限于:CPU利用率,内存利用率,网络利用率。智能代理模块11通过定时读取系统的proc目录下的stat文件、meminfo文件、/proc/net/dev文件,获取所述运行状态信息。
事件服务模块15的工作过程如图5所示,事件服务模块15为机群系统平台提供基于事件的通信通道,它支持事件消费者和事件提供者多对多的动态匹配,提供了一种松散耦合的调用关系,其中事件服务被用于传输系统状态改变的事件,如:节点宕机事件、节点启动事件、软件包安装完成事件。
事件服务模块15的实现是基于一个开放源码的系统-TAO的实时事件服务。它的多对多的动态匹配和松散耦合调用。都是TAO的实时事件服务提供的功能。传输系统状态改变的事件是通过定义TAO的实时事件服务的描述文件实现的。
资源供应服务模块12的工作过程如6所示,资源供应服务模块12定时从数据公告模块14读取系统的运行信息;通过注册事件服务的事件获取系统的事件;响应运行时环境的所有者的请求;通过智能代理模块在节点上加载运行时环境。
资源供应服务模块通过定时调用数据公告模块14的接口函数,来获取系统的运行信息。资源供应服务模块主要通过调用数据公告模块的接口函数query实现从数据公告模块获取信息。query接口函数的描述为:
query(serviceName.in(),query.getConstraints().in(),query.getSortRule().in(),policies,desired_props,HOW_MANY,query.getOfferSeq().out(),query.getOfferIterator().out(),limit_policies.out(),ACE_TRY_ENV);
其中的主要参数
输入参数:
serviceName.in():查询者的身份
query.getConstraints().in():查询项描述
query.getSortRule().in():查询项返回的顺序(升序、降序)
输出参数:
getOfferSeq().out():查询返回的所有数据内容
query.getOfferIterator().out():查询返回的数据项信息描述。
TAO的实时事件服务过程是一种现有的技术,因此,在本发明实施例中,不再一一详细描述。
下面详细说明本发明的效用计算的机群系统运行时环境管理方法,包括如下步骤:
步骤S100,运行机群系统,对机群系统中的智能代理模块,配置服务模块,数据公告模块,资源供应服务模块,以及管理图形界面进行初始化;
如图7所示,所述智能代理模块初始化包括下列过程:
智能代理模块启动后,检测节点的配置信息,包括:节点名称、节点的IP地址、节点的硬件配置等,并报告给配置服务模块;
配置服务模块将相应的信息存入配置数据库。
配置服务模块写入配置数据库的系统信息包括:节点编号、主机名称、CPU型号、内存容量、硬盘容量、网卡信息、主机的IP地址。作为一种可实施方式,智能代理模块伴随操作系统安装在节点上,并设置为开机时自动启动。
设置开机自动启动的过程为:在/etc/rc.d/rc.local文件中写入agent的启动命令。
如图8所示,资源供应服务模块初始化时,包括下列步骤:
首先通过和配置服务模块交互得到机群系统的配置信息,包括:机群系统的节点总数、节点的硬件信息、节点的网络信息等;
其次,读取配置服务模块得到机群运行时环境的所有者信息;并将机群中未分配运行环境的节点都归管理员所有;
然后通过将资源供应服务模块注册为事件服务模块中机群系统事件的消费者,实时获取机群系统事件的信息;
最后和数据公告模块建立联系,从而可以获取节点运行状态。
如图9所示,对运行时环境的进行初始化时,包括下列过程:
管理员在管理图形界面上创建运行时环境的所有者并指定运行时环境对应的软件包,并选择运行时环境包含的节点;
管理图形界面将运行时环境对应的软件包和节点的信息发送给资源供应服务模块;
管理图形界面将运行时环境的所有者信息通知给资源供应服务模块;
资源供应服务模块保存所有者信息,并将所有者信息和对应的软件包信息发送给配置服务模块;
配置服务模块将该运行时环境的所有者信息和对应的软件包信息保存至配置数据库中。
通过管理图形界面,管理员可以动态的构造运行时环境,在管理图形界面上创建运行时环境的所有者并指定运行时环境对应的软件包;
然后管理员选择运行时环境包含的节点,选择节点时,管理员可以直接指定节点名称,也可以指定运行时环境的节点数目;管理员确定节点和软件包后,管理图形界面将消息发给资源供应服务模块。
步骤S200,进行效用计算运行时环境的动态构造;
通过管理图形界面,管理员将构造效用计算运行时环境的请求发送给资源供应服务模块,资源供应服务模块进行分析后,先将相关信息保存在配置服务模块中实现信息的永久保存,随后资源供应服务模块通过智能代理模块,将运行时环境所需的软件部署在相应的节点上,智能代理在部署成功后通过事件服务模块通知资源供应服务模块,资源供应服务模块收到相应节点上智能代理部署成功的消息后,完成构造。
节点上效用计算运行时环境的构造就是要在节点上安装该节点所属运行时环境所对应的软件包。节点上运行时环境的构造是通过本节点的智能代理模块实现的,节点上运行时环境的构造过程如图10所示,节点上智能代理模块构造运行时环境的流程如图11所示。
节点上智能代理模块构造运行时环境时,资源供应服务模块将运行时环境的所有者信息发送给智能代理模块,智能代理模块接到消息后,根据所有者信息,通过查询配置服务模块,得到自己要安装的软件包;智能代理模块通过FTP服务器,下载相应的软件;智能代理模块在节点上安装下载的软件包;软件包安装完成后,智能代理模块通过事件服务模块通知资源供应服务模块。
智能代理模块的向数据公告模块报告节点的运行信息,同时响应资源供应服务模块的请求。
资源供应服务模块在进行环境的动态构造是基于所有者角色,每个运行时环境都有一个所有者,一个所有者对应一组软件包,要创建环境应先创建所有者,并指定其对应的软件包。资源供应服务模块中存在管理员角色和运行时环境所有者角色这2类角色,如图12所示,管理员角色可以有权利创建运行时环境所有者。
所述数据库中包括的字段有:“运行时环境所有者编号”、“运行时环境所有者名”、“运行时环境所有者优先级”、“运行时环境所有者类型”和“运行时环境所有者对应的rpm包名称”。
在运行时环境动态构造的情况下,节点对应的状态为:“未使用”、“构建”、“可用”、“销毁”。“未使用”表示节点属于任何一个已存在的运行时环境,可以被用作新环境的构造。“可用”表示节点已经成功的部署了运行时环境的软件包可用被使用者使用了。“构建”表示节点已经被指定了运行时环境,软件包在安装过程中。“销毁”表示节点在从运行时环境中销毁,但是还未完成。
它们之间的转换关系图如图13所示。
作为一种可实施方式,管理员通过管理图形界面进行运行时环境的动态构造时,可以有2种方式触发,选择指定节点名称方式或是选择指定节点数目方式:
21)选择指定节点名称方式进行运行时环境动态创建流程,如图14所示,包括如下步骤:
步骤S211,管理员通过管理图形界面将指定名称的节点分配给运行时环境的所有者;
步骤S212,管理图形界面将分配信息通知给资源供应服务模块;
步骤S213,资源供应服务模块将节点状态置为“构建”,并保存至配置服务模块;
步骤S214,资源供应服务模块将运行时环境的所有者信息发送给相应节点的智能代理模块;
步骤S215,智能代理模块在相应节点上部署与运行时环境对应的软件包;
步骤S216,部署成功后,智能代理模块通过事件服务模块通知资源分配服务模块;
步骤S217,资源供应服务模块将相应节点状态置为“可用”,并将节点状态信息保存到配置服务模块;
步骤S218,所有分配的节点状态都成为“可用”后,运行时环境构造成功;
步骤S219,管理图形界面通过定期和资源供应服务模块联系获取到运行时环境可用的信息。
22)选择指定节点数目方式进行运行时环境动态创建流程,如图15所示,包括如下步骤:
步骤S221,管理员通过管理图形界面给运行时环境的所有者分配节点数目;
步骤S222,管理图形界面将分配信息通知给资源供应服务模块;
步骤S223,资源供应服务模块根据当前系统中节点的状态、负载等信息,分析出要分配的节点;
步骤S224,资源供应服务模块将节点状态置为“构建”,并将节点状态信息保存到配置服务模块;
步骤S225,资源供应服务模块将运行时环境的所有者信息发送给相应节点的智能代理模块;
步骤S226,智能代理模块在相应节点上部署与效用计算运行时环境对应的软件包;
步骤S227,部署成功后,智能代理模块通过事件服务模块通知资源供应服务模块;
步骤S228,资源供应服务模块将节点状态置为“可用”,并将节点状态信息保存到配置服务模块;
步骤S229,所有分配的节点状态都成为“可用”后,效用计算运行时环境构造成功;
步骤S2210,管理图形界面通过定期和资源供应服务模块联系,获取到效用计算运行时环境可用的信息。
进一步地,运行时环境在运行过程中,运行时环境的拥有者可以动态的申请新节点加入运行时环境,也可以动态的销毁运行时环境中的节点。
步骤S300,运行时环境在其运行过程中,运行时环境的所有者动态地申请新节点加入运行时环境,或者动态地销毁运行时环境或其中的部分节点。
在运行时环境运行过程中,运行时环境的所有者可以动态的申请新节点加入运行时环境。运行时环境的所有者通过运行时环境的服务,或是通过管理界面实现和资源供应服务的交互,从而实现申请和销毁的操作。
运行时环境的所有者申请新节点的过程如图16所示,申请新节点的流程如图17所示,包括如下步骤:
步骤S311,效用计算运行时环境所有者通过管理图形界面申请一定数目的节点,并将申请请求发送给资源供应服务模块;
步骤S312,资源供应服务模块收到申请的请求;
步骤S313,资源供应服务模块根据当前系统中节点的状态、负载等信息,分析出要分配的节点;
步骤S314,资源供应服务模块将节点状态置为“构建”,并将节点状态信息保存至配置服务模块;
步骤S315,资源供应服务模块将运行时环境的所有者信息发送给相应节点的智能代理模块;
步骤S316,智能代理模块在相应节点上部署与运行时环境对应的软件包;
步骤S317,部署成功后,智能代理模块通过事件服务模块通知资源供应服务模块;
步骤S318,资源供应服务模块将节点状态置为“可用”,并将节点状态信息保存至配置服务模块;
步骤S319,所有分配的节点状态都成为“可用”后,效用计算运行时环境构造成功;
步骤S3110,资源供应服务模块通过事件服务模块告知效用计算运行时环境申请的节点可用。
运行时环境也可以动态的被销毁,运行时环境的所有者在图形界面上指定要销毁的运行时环境,运行时环境的所有者确定运行时环境后,图形界面将消息发给资源供应服务模块,资源供应服务模块分析后,先将相关信息从配置服务模块中删除,资源供应服务模块通过智能代理模块将运行时环境对应的软件包从对应的节点上删除。
运行时环境的所有者通过界面对其所对应的运行时环境销毁时,如图18所示,包括如下步骤:
步骤S321,通过管理图形界面删除运行时环境的所有者对应的运行环境;
步骤S322,管理图形界面将删除所述运行时环境的信息通知给资源供应服务模块;
步骤S323,资源供应服务模块将节点状态置为“销毁”,将运行时环境的所有者信息删除,并将删除所述所有者的信息和节点状态信息通知给所述配置服务模块;
步骤S324,资源供应服务模块通知智能代理模块;
步骤S325,智能代理模块在节点上删除对应的效用计算运行时环境所需的软件;
步骤S326,删除成功后,智能代理模块通过事件服务模块通知资源供应服务模块;
步骤S327,资源供应服务模块通知配置服务模块,并将节点状态置为“未使用”,节点状态变为“未使用”后,可以进行新的一次分配。
运行时环境的所有者销毁运行时环境中的部分节点过程如图19所示,销毁环境中的部分节点流程如图20所示,包括如下步骤:
步骤S331,效用计算运行时环境所有者通过管理图形界面请求销毁一部分节点,并将请求发给资源供应服务模块;
步骤S332,资源供应服务模块收到销毁请求;
步骤S333,资源供应服务模块将对应的节点状态置为“销毁”,并将节点状态信息保存至配置服务模块;
步骤S334,资源供应服务模块通知效用计算运行时环境,告知销毁完成;
步骤S335,资源供应服务模块通知智能代理模块;
步骤S336,智能代理模块在节点上删除对应的运行环境所需软件;
步骤S337,删除成功后,智能代理模块通过事件服务模块通知资源供应服务模块;
步骤S338,资源供应服务模块将删除节点的信息保存至配置服务模块,并将节点状态置为“未使用”,节点状态变为“未使用”后,可以进行新的一次分配。
本发明的效用计算的机群系统及其运行时环境管理方法,其基于机群来动态构造效用计算运行时环境,能够动态构造机群效用计算运行时环境,从而满足效用计算运行时环境的构建需求并降低系统管理的复杂度、提高资源利用率。
通过以上结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。