Scientific Journal of Information Engineering August 2012, Volume 3, Issue 4, PP.78-84
The Integrated Technology of Cluster System Longshui Cong Shengli Geophysical Research Institute, Dongying Shandong 257000, China Email: conglongshui.slyt@sinopec.com
Abstract This paper introduces the design of the clustered system as well as the development and realization of software on cluster deployment, in which the modules of system integration are elaborated; giving significant reference to the proper utilization of microcomputer clustered system. Keywords: Module Design; System Integration; Cluster
微机集群系统集成技术 丛龙水 胜利油田物探研究院,山东 东营 257000 摘
要:文章介绍了集群系统集成设计方案及集群部署软件的开发与实现,对系统集成的各个模块作了详细的设计与实
现,对微机集群系统的合理应用有很大的参考作用。 关键词:模块设计;系统集成;集群
前言 随着高性能计算的需求不断增长及集群技术的发展,集群的应用越来越广泛,规模越来越大。当集群的 规模达到一定的程度时,如何充分发挥集群资源的效益,为用户提供良好的应用环境是系统管理面临的最大 问题。首先,在集群系统[1]的生命周期中,需要经历集群的集成、应用系统的部署等,最终提供应用服务。 随着生产任务的不断变化,需要不断调整资源的配置,因此,集群资源管理的效率直接决定了集群资源的使 用效率。第二,生产效率的高低不仅仅取决于应用人员的水平,还需要高效灵活的应用支持技术,为用户提 供友好的使用环境。 集群系统集成要深入的分析 Linux 系统的安装原理,分析自动集成需要的资源,通过分析研究集群系统 的特点,设计集群集成需要的各种通用参数和配置参数并存储在数据库中,使用这些参数描述集群集成的需 求。分析安装操作系统时如何加载硬件的驱动程序,为了使集成系统具有广泛性,需要收集不同操作系统使 用的驱动程序,按照类别组织驱动程序,保证驱动程序的自动加载。研究操作系统的结构,总结它们的特点, 能够自动支持新发布的操作系统的集成。集群系统要共享网络资源,因此需要配置网络服务。在集群中运行 多种应用系统,不同应用系统需要的运行环境不尽相同,需要详细分析应用之间的系统需求差异。为了提高 集群系统的可用性、稳定性和统一性,需要研究集群集成的服务器[2]间的功能接替和数据同步。 集群系统集成系统,自动完成集群系统的初始集成、升级集成和维护集成,适用于多硬件平台、多版本 操作系统及主流地震资料处理软件的环境。用图形界面的方式输入集群集成需要的配置参数[3],对输入参数 进行检验,减少参数输入的错误,对某些参数实行智能化输入,尽可能减少手工输入参数。通过本系统可以 实现集群集成的自动化。
1 集群系统集成设计方案 1.1 系统目标 集群集成软件需要研究节点的定制与自动集成,包括初始集成、升级集成,维护集成。初始集成研究的 - 78 http://www.sjie.org/
是完成如何对新购置的集群的整体系统设计、系统安装和应用定制等。升级集成研究内容包括:应用软件升 级集成、系统升级集成等。维护集成将节点自动引导到系统的维护方式。研究涉及对节点的自动配置、自动 集成、自动系统整合等方面内容。对较大规模的集群,研究集群的分级管理结构、管理模式等方面内容,在 集成的过程中自动配置需要的各种网络服务。可以根据不同的应用环境设置节点的系统环境,在节点的操作 系统安装过程中不需要任何人工干预而自动完成。同时,为保证系统的可靠性和一致性,对出现故障的服务 器需要有其它的服务器接替它的功能,同时需要对服务器的配置文件进行实时的同步。
1.2 系统架构 集群集成系统可以分为三层:参数管理、服务器设置、集成管理。 集群1
集群2
节点 节点 节点
节点 节点 节点
区域服务器1
集群n 节点 节点 节点
集成管理
区域服务器2
区域服务器n
主控服务器 服务器设置
通用参数
参数管理
集群配置参数
图 1 系统架构图
1.2.1
集成流程
(1) 安装主控服务器的操作系统,建立软件需要的目录,设置必要的环境; (2) (应该先配置交换机,简单配置,保证主控服务器和数据库的连接)在主控服务器上通过界面将通 用参数和配置参数进行输入到数据库; (3) 在通用参数和配置参数[4]中需要的配置命令应该在调用前编写完成,并放在指定的位置(各种参数 的准备需要大量的时间,最好是建立工作表),将需要的驱动程序复制到指定的位置; (4) 参数的管理是本课题组提出需求,由数据库组设计数据的组织,界面组负责录入和编辑管理; (5) 在所有的参数和配置命令完成后,才能进行以后的操作(这只是原则上的。实际上,当你的功能模 块需要的参数达到时,就可以进行相应的试验); (6) 在主控服务器上运行初始化命令,设置软件的所有环境,配置主控服务器的需要的服务和资源; (7) 在主控服务器上配置交换机; (8) 建立安装从服务器需要的安装[5]资源; (9) 从内核映像管理中建立安装区域控制服务器需要的内核映像文件; (10) 从主控服务器上建立区域控制服务器的 kickstart 文件(它应该包含:网络服务配置、内核映像管理、 post 脚本等); (11) 根据区域控制服务器安装的要求,安装区域控制服务器; (12) 安装区域控制服务器完成后,进行手工同步各服务器之间的数据; (13) 安装完区域控制服务器后,可以在各服务器建立安装组需要的资源(最好在所管理的服务器上进行); - 79 http://www.sjie.org/
(14) 从内核映像管理中建立安装区域控制服务器需要的内核映像文件; (15) 建立需要的 kickstart 文件; (16) 按照节点的安装管理,进行节点的安装, (17) 节点安装完,搜集各节点的 ssh-key; (18) 最后配置各服务器[6]的功能接替功能和数据同步功能。 1.2.2
参数管理
将集群集成的参数分为和集群无关的通用参数(例如:操作系统信息、交换机信息等)、和现场有关的 集群配置参数[7](集群节点的硬件信息、集群的网络信息等)。所有的信息存储在数据库中,通过数据库接 口存取数据为集群集成服务。 在主控服务器上设置软件的运行环境,输入需要的参数,配置集群[8]集成需要的各种服务,完成主控服 务器的配置。 1.2.3
系统集成
通过主控服务器完成所有的区域服务器的安装集成,使用区域服务器分别对各自管理的节点进行集成。
1.3 系统功能模块图 操作系统信息管理 通用参数管理
驱动程序管理
节点BIOS设置
Kickstart模板管理
交换机设置
交换机信息管理
服务器配置信息 节点硬件信息 节点分级信息 mac地址信息
集 群 集 成 系 统
集群网络配置
集群配置管理
节点物理连接信息 DNS配置信息 系统环境设置 网络服务配置 系统介质拷贝 操作系统自动识别 服务器配置
建立安装资源
NIS配置信息 共享文件配置 NTP 配置信息 SSH配置信息 节点名字信息 Post 安装脚本
数据同步管理 口令信息 维护命令管理 服务器功能接替
内核映像管理 建立kickstart文件
系统集成 安装次级服务器 节点安装管理
图 2 系统功能模块结构图 - 80 http://www.sjie.org/
1.4 集群的分级集成 一个庞大的集群系统可能同时运行多种应用系统或者分为具有不同功能的节点,为了系统集成和管理的 安全和方便,对集群系统按照不同的应用或功能进行分组。我们设计了两级集成服务器—主控服务器和区域 控制[9]服务器。 主控服务器负责输入集群集成的所有配置参数,完成所有的区域服务器的安装。区域服务器负责管理的 集群的节点集成和维护,每个节点通过管理它的区域服务器进行安装和维护,保证了不同功能的集群的相对 独立性。另外,为了保证整个集群的全局的一致性和服务[10]的连续性,各服务器间互相进行检测。当某个服 务器出现故障时,它的所有功能被首先发现它异常的服务器接管它,并且是唯一的接管者。为了保证服务的 一致性,所有的服务器具有相同软件目录结构,并且各服务器的配置文件进行实时的同步,保证了功能接替 的正确性,而计算节点需要的修改也是自动完成的,不需要任何的手工操作。当故障服务器恢复正常后,自 动通知接管的服务器停止替代,并将所属的节点的配置自动的恢复。同时,由于全局的一致性,也保证了故 障服务器的快速恢复。
1.5 节点的安装方法 集群的集成首先是安装节点的操作系统,如何自动安装节点的操作系统是本项目的基础。因此我们对 Linux 的安装方法进行了深入研究。 Linux 的安装方法分为两类,一是本地安装,二是网络安装。本地安装又包括使用光盘安装和使用硬盘 的 ISO 映像文件安装。由于集群节点数量巨大,使用光盘安装工作量太大,使用硬盘的 ISO 映像文件安装不 仅工作量大而且会浪费大量存储空间[11]。网络安装可多节点并行安装,提高安装速度,它分为半自动和全自 动两种。半自动是指用 Linux 启动盘启动机器,从网络获取 RPM 安装包进行安装,在安装完成后必须人工 取出 Linux 启动盘,否则系统重复安装,无法达到自动安装。全自动安装是指被安装节点通过网络启动,再 从网络获取 RPM 安装包进行安装,这样大大减少了工作量,可实现无人值守的安装。
2 集群部署软件的开发与实现 2.1 接口设计 由于本项目的数据采用统一的数据库管理,集群集成软件使用的脚本语言无法进行数据库操作,因此需 要使用其它语言提供数据库操作[12]接口(我们使用 C 语言)。在脚本中调用数据库操作接口完成参数的读写。 详细的说明参见数据库课题组的接口设计。
2.2 界面设计 所有的参数管理均使用图形界面进行操作。根据集群集成的参数特性,总结了参数之间的关联关系,设 计了智能输入的方法,减少用户的输入操作。详细的说明参见图形界面的设计。
2.3 系统集成模块设计 2.3.1
网络内核映像管理
网络引导内核是使用 pxelinux+kickstart 方式网络安装节点操作系统时使用的 linux 启动内核映像文件, 一般保存在 redhat 操作系统盘第一张\images\pxeboot 目录下,文件名称 initrd.img,其中包含内核发布时主流 的硬件驱动程序。但是当安装节点的硬件配置比较新时,可能缺少必要的硬件驱动程序,就会造成硬件不能 识别,中断安装过程。 网络内核映像管理模块的主要功能就是为网络引导内核文件增加缺少的 scsi、网卡驱动程序。 在 pxelinux+kickstart 方式网络安装节点时,一般将安装资源(光盘或文件包)上的网络引导内核映像文件 - 81 http://www.sjie.org/
拷贝到/tftpboot/目录下的制定文件夹下,并命名为 install.gz。本项目制定文件夹的命名规则:slcms/$kernel/$arch/, 例如操作系统 redhat advance server 4 update 4 x86_64 架构的文件夹为:slcms/rhas44/ x86_64/。 网络内核映像管理的原理就是将网络映像文件 install.gz 拷贝到临时目录,使用解压缩工具解开文件,并 将解开的文件加载到临时目录,查询数据库获得本类节点的硬件信息(主要是 scsi、网卡信息),查看临时 目录中是否包含相应的节点硬件驱动程序,如果不包含则查询硬件驱动数据库获得相应的硬件驱动,并添加 到临时目录的 nodules.cgz 文件中,并在 pcitable、modules-info、modules.pcimap 中增加相应的模块信息,最 后将临时目录的所有文件在压缩成新的网络内核映像文件,覆盖原网络引导内核映像文件。 2.3.2
内核映像管理
安装 linux 系统的节点在硬件系统完成自检后,加载 linux 内核前,bootloader 会将存储介质中的系统启 动内核映像文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的系统启动内核映像 文件系统。系统内核映像系统最主要的功能是加载根文件系统存储介质的驱动模块。我们知道根文件系统可 以存储在包括 IDE、SCSI、USB 在内的多种介质上,如果将这些设备的驱动都编译进内核,内核会很庞大、 臃肿。因此系统内核映像文件主要包含其发布时主流的硬件设备驱动,当在较新硬件设备或专用硬件设备上 安装 linux 系统时会造成系统安装完毕后,系统启动过程中设备不能正常加载,无法进入系统。 内核映像管理模块的功能就是根据具体设备的硬件配置定制内核映像文件,实现系统的正常加载。 在系统安装完成后,系统启动内核映像文件保存在目录/boot 下,命名方式:initrd-$kernel.img,不同内 核有不同的文件。内核映像文件中包含各种硬件的驱动程序。如果内核映像文件[13]不包含必要的驱动程序, 则系统不能正常启动。因此如果等系统正常完成安装,并重新启动后,就已经无法再操作内核映像文件了。 内核映像管理的实现方法是在 linux 系统安装 kickstart 脚本中的后处理部分插入对内核管理模块的调用,来 实现内核映像文件中内核驱动的定制,从而使系统重新启动后能顺利进入系统。 系统内核映像文件是经过用 gzip -9 进行压缩过的 ramdisk 文件。因此,向文件中增加驱动文件,必须首 先解压缩内核映像文件到临时目录,然后查询数据库获得本类节点的硬件信息(主要是 scsi、网卡驱动), 根据硬件实际需要,检查临时目录的 lib 目录下是否包含相应的驱动,如果不包含则查询硬件驱动数据库获 得相应的硬件驱动,添加到 lib 目录,并配置 init 初始化脚本增加加载新硬件模块的命令,最后将临时目录的 所有文件在压缩成新的内核映像文件,覆盖原系统内核映像文件。 2.3.3
节点安装管理
节点安装管理模块主要实现节点的完整安装过程,主要包括节点主板 BIOS 的升级、优化,节点操作系 统的安装与配置。 节点主板 BIOS 的升级与优化需要硬件支持,如果硬件不支持模块自动跳过这一步,节点的电源管理需 要支持自动开关机,否则在安装过程中,会提示操作员手工开关机。 节点操作系统的安装与配置有多种方式,主要包括本地安装(包括光盘安装或硬盘安装)和网络安装(使 用 pxe 协议的多种安装方式)。微机集群规模庞大,在集群集成时采用本地安装的方式耗费人力物力巨大, 同时耗时巨大,显然是不适合的。因此集群集成往往采用网络安装的方式。处理解释系统多采用 linux 或类 linux 系统,因此选用 pxelinux+kickstart 的方式进行节点的安装与配置。配置一台安装服务器,在安装服务器 上配置好 tftp 服务、dhcp 服务、nfs 服务以及 pxelinux,并将共享目录使用 nfs 服务输出。节点安装使用 pxelinux+kickstart 的方式安装,安装服务器提供 dhcp 服务和安装资源,节点通过网卡使用 pxe 协议启动,从 安装服务器获得启动内核和内存映像文件,启动系统,然后获得 kickstart 配置文件,加载安装服务器提供的 NFS 安装介质,完成安装过程。 2.3.4
远程电源管理
微机集群规模庞大,单纯的手工电源管理耗时、耗力而且效率低下,远程电源管理可以实现集群节点的 - 82 http://www.sjie.org/
批量开关机,大大提高系统管理效率。 不同的微机集群结构不同,远程电源管理的方式也不同,我院微机集群[14]主要有两种电源管理方式:一 是 IBM 刀片集群的机柜管理模块集中管理的方式;一种是 verari 公司基于 BMC 的电源管理方式。 我们主要研究了 IBM 刀片集群的电源管理方式,并编程实现了 IBM HS21 集群的远程开关机。HS21 集 群的刀片柜装有管理模块,提供 web 界面,用户可以登录此界面对刀片柜管理的刀片进行管理,其中包含电 源管理。另外管理模块支持 telnet 接入,通过 telnet 实现刀片的管理。因此 HS21 集群的远程电源管理可以使 用 telnet 远程接入来控制电源的开关。 2.3.5
Kickstart 模板管理
安装组对应的 kickstart 模板文件存在,可以由用户自由选择对 kickstart 模板文件的修改,修改 kickstart 模板文件之前,用户可自由选择是否对原始 kickstart 模板文件进行备份; 安装组对应的 kickstart 模板文件不存在,但是标准模板文件存在,可以实现由标准模板文件创建该安装 组对应的模板文件。 在标准模板文件存在的前提下,程序自动根据标准模板文件创建 kickstart 模板文件,程序自动将数据库 中标准模板文件作为操作文件,最终完成对 kickstart 模板文件的新建工作,并且将该文件以磁盘以及数据库 的形式分别保存。 2.3.6
建立 kickstart 文件
当一个服务器替代另一个服务器时,要把 kickstart 文件中服务器的地址进行替换; 当停止一个服务器替代另一个服务器时,要把 kickstart 文件中服务器的地址替换成原来的服务器地址; 安装组对应的 kickstart 文件存在,可以由用户自由选择对 kickstart 文件的修改,修改 kickstart 文件之前, 用户可自由选择是否对原始 kickstart 文件进行备份; 安装组对应的 kickstart 文件不存在,但是安装组对应的模板文件存在,可以实现由模板文件创建新的 kickstart 文件; 安装组对应的 kickstart 文件和模板文件都不存在,标准模板文件存在,可以实现由标准模板文件创建该 安装组对应的模板文件,再由模板文件创建 kickstart 文件。 当脚本的参数为一个且参数是服务器名,执行程序后将该服务器名对应的所有安装组的 kickstart 文件中 服务器替换成当前运行节点。 当脚本的参数为两个且第二个参数为服务器名时,执行程序后能将所有被替换服务器的安装组的 kickstart 文件中原始服务器还原。 安装组对应的 kickstart 文件存在: 用户可以自由选择是否修改 kickstart 文件; 用户可以自由选择在修改 kickstart 文件之前是否对原始 kickstart 文件进行备份,程序自动将数据库中最 新版本的 kickstart 文件作为操作文件,最终完成对 kickstart 文件的修改工作,并且将该文件以磁盘以及数据 库的形式[15]分别保存。 安装组对应的 kickstart 文件不存在,该安装组对应的 kickstart 模板文件存在:程序自动从数据库中读出 最新版本的 kickstart 模板文件作为操作文件,完成对 kickstart 件的新建工作,最终将创建好的 kickstart 文件 以磁盘和数据库的形式分别保存; 2.3.7
MAC 地址收集
在大规模集群系统集成时,mac 地址是配置 DHCP 服务的所需要的必要条件之一。在节点数量较小的情 况下,可以对每个节点的启动过程进行监视来取得这个节点的 mac 地址。但是当节点的规模超过一定数量达 - 83 http://www.sjie.org/
到千台以上时,如何快速有效的取得这些节点的 mac 地址是研究的主要目的,通过对这些节点所连接的交换 机进行操作,取得所连端口的 mac 地址是研究的主要内容。 2.3.8
交换机设置
按照网络规划,对各个交换机进行基本信息配置。包括:设置交换机名称、为交换机配置管理 IP、为交 换机设置默认网关、为交换机配置 Trunk 端口。 调用交换机配置程序,完成交换机的其他配置。功能包括: 设置 vtp 参数、建立 vlan、端口划分、默认网关的设置等。
3 结论 软件开发完成后,在胜利油田物探研究院先后三次集成 IBM 集群、30 台 HP 工作站和 50 台 DELL 工作 站。虽然这三次的集成要求不尽相同,本系统都能够圆满的完成任务,实现了快速方便的集成,节约了大量 的时间,保证了设备尽快投入到生产中。同时提供了强大的管理功能,方便了系统的管理。对原有的集群系 统进行监视,解决了光纤驱动程序和操作系统的配套优化问题,解决了客户端在数据传输是宕机的现象;对 网卡的驱动进行了优化,缩短了作业的运行时间,提高了资源的利用率;对处理的使用的操作系统内和进行 了优化,保证了系统的稳定性。 集群系统集成研究成果投入使用后,极大地提高了集群系统的集成效率,方便了系统的日常管理和维护, 动态、直观的现实集群的运行状态,优化解决了生产中存在的问题,保障了生产运行。
REFERENCES [1]
袁立强,徐炜民. 高性能集群系统中资源负载量化的研究. 计算机科学,2004,31
[2]
张伟毅,于传松,孙功星,等. 一种新的集群监视系统(IF-Monitor)的设计和实现. 全国计算机在现代科学技术领域应用学术会 议论文集,20030908,327-332
[3]
张树东,曹元大,廖乐健,贺巧艳. 机群环境中基于信度模型的作业调度算法. 北京航空航天大学学报, 2004,(11), 1097-1100
[4]
周集良,彭小宁,王正华. 基于集群的负载平衡调度算法研究与实现. 计算机工程, 2005,(12), 108-110
[5]
李全枝,梁正友. 集群资源管理系统 PBS 及其应用. 微机发展, 2005,(04), 4-7
[6]
房友园,杨树强,贾焰,等. 基于 CORBA 的海量数据加载并行任务调度技术研究与实现. 计算机应用与软件, 2006,(10), 13-14
[7]
那罡. “超算中心”整合信息资源. 中国计算机用户, 2006,(03), 45
[8]
塔依尔•伊布拉音,张毅,许涛. 大规模集群系统管理应用研究. 石油工业计算机应用,2008-06-20
[9]
文玲,赵书贵,陆育峰. PC-CLUSTER 系统在地球物理勘探领域中的应用. 石油天然气学报, 2005,(S1), 196-198
[10] 姚树新,陈华. PC CLUSTER 地震资料处理系统集成与应用. 工程地球物理学报, 2005,(06), 466-471 [11] 赵改善. 集群计算机系统资源动态监控的实现和应用. 中国地球物理.2003——中国地球物理学会第十九届年会论文集 [12] 邢晶,马捷. 机群文件系统元数据访问行为分析与优化研究. 2006 年全国高性能计算学术会议(HPC 2006)论文集 [13] 秦军,古志民,孟丹. PCMD 在机群管理系统中的应用及其改进. 计算机工程与科学,2004-04-30 [14] 杨晓云,马永利,齐丽萍. 应用并行和集群技术提高地震处理性能. 第十八届中国(天津)2004IT、网络、信息技术、电子、仪 器仪表创新学术会议论文汇编 [15] 金正操,侯紫峰,杜晓黎. 机群系统中对硬件监控方法的研究与实现. 计算机工程, 2006,(01), 229-231
【作者简介】 丛龙水(1964-),男,汉族,学士学位,中国石化胜利油田物探研究院高级工程师,主要研究领域为石油 行业作业调度算法及云计算在石油领域的应用研究,1981 年-1985 年天津大学电子计算机专业。 Email: conglongshui.slyt@sinopec.com
- 84 http://www.sjie.org/