摘要 本文是详细记录了作者自己架设调试使用集群服务器的过程全文内容翔实有很高的参考阶值在此我也代表全体Linux爱好者向他们这一无私奉献的精神表示感谢 作者Motorola Global Infrastructure Solutions Engineering Computing Ding Wei 摩托罗拉全球基础架构解决方案工程计算部 丁玮 北京蓝潮志诚网络有限责任公司(提供硬件支持) 杨波 正如你所看到的一样你的机器在绝大多数时间是空闲的如果你在Windows下用任务管理器或其他的Linux平台的工具(例如topxload)观察CPU你会看到CPU的使用率常见在~%事实上如果你有更多的计算机这种浪费会加剧在一个有台计算机的部门里CPU的空闲率是惊人的然而这些部门还是需要强大的服务器用来编译或模拟计算这样的情况还会加剧不止需要一台因为随着用户的增加即使是个CPU的服务器满负荷时也不能把任务交给另外的空闲服务器因为用户很少会改变习惯去登陆另外一台服务器如果能利用现有的计算资源把空闲的CPU利用起来或者能让服务器智能的迁移负荷就是你看下去的理由 集群的基本单位是单独的计算机称为节点(node)其可增长的特性称为延展性(Scale)也就是向集群中加入计算机集群没有严格的定义可以说就是许多利用高速联接的具有高速运算能力的具有单一用户界面的计算机组合这并不是集群的定义而是表面现象的描述集群中的节点需要硬件尽可能的一致不一致的硬件集群称为异构集群虽然这并不能改变集群的特性但是异构导致集群会花费额外的时间来处理由于异构带来的延迟另一方面这也是集群的优势任何其他的多CPU系统都是严格要求CPU是一致的集群就有足够的自由度增减节点不受类型的限制 本文选择MOSIX作为集群的方案并使用无盘节点架构集群并没有想象中那样复杂参考下面的步骤可以一步步的架构集群整个的方案并不是很昂贵而且便于扩展使用RedHat是因为在中国这是最有权威的版本不论是初学者还是专业工作者都可以在RedHat Linux中定制自己的版本使用终端服务器LTSP是因为结构简单便于快速扩展使用的硬件是可以改进的比如使用双CPU的主板和至强处理器这样单一机柜中处理器就密集到块CPU本例中可以使用块CPU除了CPU以外还可以使用千兆网卡或光纤网卡交换机可以使用光纤交换机内存总数可以达到GB但是随着硬件的升级整体价格就会过高而性能的提升并不是按比例的因此本例的配置是性价比较好的组合MOSIX是利用给内核源代码加补丁的办法增加内核的功能来达到内核级的集群支持通过编译后的内核启动的系统间类似SMP多处理器的系统从外面的角度看只有一台有很多处理器的庞大机器但是内部是用很多机器架构成的而MOSIX集群的特点是对用户透明原有的应用程序不需要修改代码即可以在集群中分布计算 有几种情况是不需要使用集群系统的使用类似网格计算的脚本就可以完成计算比如三维动画的渲染这类计算可以使用不同的节点不需要对称的硬件不需要一致的操作系统(需要应用具有支持不同操作系统的版本)只需要按照处理器来分割渲染的任务段在每个节点上运行相应的任务段然后合成所有节点的计算结果因为计算数据是离散的(结果的连续是视觉的连续)因此用类似网格计算的脚本也可以完成这类计算不需要使用集群也可以完成 下面本文将告诉你如何准备硬件和软机环境首先是规划你的计算环境 硬件环境 U标准机柜安装U的交换机台U机架式机箱 U的口MB交换机(不是集线器) Intel P GHz CPUGB DDRIntel D主板软驱NVIDIA显卡(能启动X Windows就可以)U机架式机箱CB /MB自适应网卡网关需要配置光驱GB硬盘和双网卡 类线按照A压米网线根 显示器键盘鼠标仅在安装时使用 软件环境和必要的安装包(除特殊说明外高版本不一定适用) Redhat CD 和CD安装光盘 dhcprcirpm是支持启动内核调用的DHCP版本 dhcpcdplirpm是DHCPD守护进程 mknbinoarchrpm是制作客户端启动内核的必要软件包 MOSIXtargz是原始的MOSIX文件最新的版本是 MOSKRNtargz是原始MOSIX内核文件最新的版本是 openmosixkernelopenmosixirpm是MOSIX分支版本的通用内核最新的版本是 openmosixkernelopenmosixirpm是MOSIX分支版本的新处理器内核最新的版本是 openmosixkernelsmpopenmosixirpm是MOSIX分支版本的多处理器内核最新的版本是 openmosixkernelopenmosixsrcrpm是MOSIX分支版本的源代码 openmosixtoolsirpm是MOSIX分支版本的客户端工具 ltsp_coreirpm是LTSP的核心文件 ltsp_kernelirpm是LTSP的内核 ltsp_floppydirpm是LTSP的软盘工具 ltsp_initrd_kititgz是LTSP的启动制作工具 linux_kerneltargz是需要编译的内核源码 网络配置环境 网关对外网卡配置子网掩码给内部网使用用于登录和提交进程 网关对内网卡配置子网掩码网关为给集群用于DHCP服务器NFS服务器LTSP服务器 网关对内网卡配置DHCP分配地址从到子网掩码都是C类 当以上条件都具备时可以开始架构MOSIX集群 安装所有硬件并能确保可以从光盘启动网关服务器系统节点可以使用软盘启动检查BIOS的启动设置并确认可以正确启动将所有节点和交换机安装到机柜上用网线连接交换机和各节点网关需要额外的网线连接到局域网因为可以称集群计算环境为计算场(Computing Farm)因此对应局域网称集群系统的网络为计算网络连接好电源后使用两套显示器和键盘鼠标分别连接一台节点机和网关服务器 安装RedHat 版本在具有两块网卡的网关服务器上分区使用自动分区(比较简单本文不讨论Linux其他问题)选择定制安装但不要安装所有的软件包除缺省的选择外需要额外选择软件开发和内核开发两组软件包安装时没有选择的软件包可以在系统正常启动后参考如何编译内核中的软件包来安装安装到网络配置时按照网络环境配置IP地址需要配置DNS的需要修改对外网卡的设置使用小写mosix为主机名安装完后需要验证网关服务器可以正常启动按照个人喜好来设定系统推荐使用文本模式图形模式资源消耗较大另外需要连接到RedHat网站升级有缺陷的软件包减少系统漏洞注意别把内核也升级了并不是因为本文的操作而是内核升级后系统很可能启动失败本文将自己编译内核升级完成后重启再次确认系统没有任何错误 安装MOSIX包(openmosix的安装是另外的分支)需要很多步骤注意操作步骤的准确性 A将所有下载的软件包上载到服务器的/usr/src/tmp目录下确认下载的软件包是完整的确认md的校验结果一致 su cd /usr/src/ makdir tmp md package_file_name B将RedHat CD放入到光驱参考以下操作确认编译内核需要的软件包已经存在 mount /dev/cdrom /mnt/cdrom cd /mnt/redhat/RPM rpm Uvh kernelheaders* rpm Uvh kernelsource* rpm Uvh kerneldoc* rpm Uvh dev* rpm Uvh make* rpm Uvh glibcdevel* rpm Uvh cpp* rpm Uvh ncursesdevel* rpm Uvh binutils* rpm Uvh gcc* rpm Uvh tftp* cd /usr/src umount /mnt/cdrom C安装需要的软件包展开所有的targz软件包 tar xvfz MOSIXtargz tar xvfz MOSKRNtargz tar xvfz linuxtargz D如果展开文件没有错误将各个软件展开目录移到正确的位置 mv MOSIX /usr/src/ mv MOSKRN /usr/src/ mv linux /usr/src/linux E为了避免以往MOSIX脚本的错误需要确认以下步骤 chmod goa+x /usr/src/MOSIX/inst/add_kernel_to_grub mkdir /usr/local/man F下面才是真正有趣和让人着迷的步骤首先要创建编译内核配置文件的目录这是个好习惯因为每次的编译配置不一定相同后面排错也会提到相关的问题 cd /usr/src mkdir configbackup |