Linux界如今好像处在疯狂地热衷于集群概念之中。几乎就在几个月以前,惟一的解决方案还只能是本身编写集群
软件以达到较高的实用性。固然在科学集群方面,还可使用Beowulf或者传送消息的集群库(例如 PVM)。但除了早先的这些解决方案,Linux在专有和商业集群的方面上是大大落后的。
但如今的发展看起来使人欣慰了不少。SGI的Failsafe已基本移植;Linux High Availability(高效性Linux)计划已经启动;Red Hat 推出了Piranha集群软件;等等。
同时还出现了一些可行的科学集群解决方案,其中最值得推荐的是Mosix。Mosix使用的是单一系统图形(SSI)集群器。SSI集群器之因此受到欢迎是由于它们给用户的感受像是在一台巨型计算机上工做,而不是一群单个的节点。用户能够登陆到Mosix集群器上的任何一个节点,并启动集群器中任何节点上运行的程序,只要内核中的集群软件认为这些程序是能够运行的。若是用户运行的DNS是正确的,他们只需telnet到cluster.mynet.com,DNS的循环功能会让他们随机地登陆到某个节点及其分支程序上,而后再分支,分支。
装配Mosix集群器
有些Mosix集群器能够达到世界上前50种性能最强的的超级计算机的水平。若是有足够多闲置的计算机设备的话,就能够考虑本身动手组装一个Mosix集群器。
例如,在以下硬件上安装Mosix内核:
3台双CPU计算机,主频从500MHz到933MHz,内存总和为1.5GB左右。
8台单CPU计算机,主频从MMX266MHz到933MHz,内存总和为1.8GB。
而
存储空间,用了Network Appliance F720,约有120GB的磁盘空间,并使文件系统对全部计算机为可读。很是重要的一点是,全部机器都必须有统一的用户ID和群组ID,不然访问数据时就可能会出现问题。
这些机器经过100/1000Mbit的网络链接起来,中心安置一个光学转换器。
在这个设计中采用的是用 Network Appliance 存储
服务器来实现中心存储的方案,全部集群器节点都围绕其中。有些节点用的是1000Mbit 的网卡,有些用的是较旧的100Mbit。Mosix 会测得每一个节点之间的等待时间,并在某个节点上负载太高决定将它的程序转移到其余节点时考虑这个因素。这里使用的网卡是Phobos公司的产品,转换器用的是Nbase公司的。
从上述网
站
下载两个RPM,并用“rpm -install xxx.rpm”命令进行安装。其中一个RPM是给2.2.16内核的,其中带有全部编译好的 Mosix扩展。另外一个则是为监测集群器所用的一套Mosix用户空间命令而备的。
从新启动各节点进入Mosix内核,此时,工做就已接近尾声了,最后要作的就只是让每一个节点知道其余节点的位置。要作到这点,编辑一个映射文件/etc/mosix.map,在文件中指定全部其余的节点和它们的IP地址,这与/etc/hosts文件类似。
检测一下是否全部节点都能互相看到彼此,运行“mon”监测程序。它将显示全部工做节点的图表和各自的负载水平、内存消耗,及其余信息。
mon监测程序的运行界面
启动集群器
如今就实践一下吧,能够试着建立一个进程,如distributed.net所说的dnetc RC5破程序。而后再加几个其余的进程。此时看一下“mon”程序会发现你的计算机的负载很高,而其余则仍很低。但很快,你节点上的负载量会逐渐下降,而其余节点则相应上升,由于你机子上的一些进程被转移到了其余更佳的节点上了。Mosix会自动调节转移的时间和节点位置,而无需用户对此进行控制。
为了对这个新集群器的强大性能有个具体的概念,笔者在集群器以外的Linux上写了一组脚本,在某个节点上启动程序并测定该集群器的运行状况。这些程序由质数运算器、互动式空程序,及共享的内存使用进程组成。
当节点在集群器(双CPU PIII 933-MHz,768MB RAM)以外时,该机器最高达到20个质数运算器、40个互动式任务,以及大约30个共享内存进程。运行了这些程序后,几乎连登陆都不能运行,不再能添加额外的负载了。
而在集群器中的状况就大为不一样了,在最大的节点上能够运行450个以上的质数运算器、数百个shell和大约210个共享内存任务(内存参考模式规定,共享内存程序不能转移到其余节点。)
若是在单个的计算机上要完成这些任务,不知道须要多高的配置,但至少不会低于Sun E6000或HP V2000大型机的水平,它们的价格达十万美圆之巨。而如今全部这些硬件只须要不到2万美圆,是Linux使咱们作到了这一点。
在多个节点上建立单一图形集群器只有在程序被转移到另外节点时仍能看到其设备和文件时才是有意义的。Mosix无需中央存储器就能作到这一点,具体状况如何呢?
当一个进程转移到集群器中的另外一个节点时,它的代码存根仍保留在原来的节点上。每当须要输入/输出时,该进程会将请求发送到最初节点的代码存根上,然后代码存根在本地进行输入/输出处理并返回结果。
固然,这会加大输入/输出密集的程序的负担。为减小这种网络活动,提升整个输入/输出的效率,Mosix开发人员开始将
全局文件系统(Global File System,GFS)移植到Mosix集群器中。
全局文件系统是Linux的共享盘集群器文件系统。GFS支持客户机故障时的日志和恢复。GFS集群器节点经过Fibre Channel或共享的SCSI 设备物理共享共同的存储器。看起来,文件系统在每一个节点上都像是本地机上的,GFS使文件访问在集群器中保持同步。GFS是彻底对称的,也就是说,全部节点都是均等的,没有哪一个服务器会是瓶颈或出现任何故障。GFS在维护全部Unix文件系统时使用读/写缓冲。
可是,GFS也存在着一个缺点,它只能运行在较新的SCSI控制器上,而不能在之前的产品上运行。不过对于装备了新设备而且确实有集群必要的用户来讲,GFS是很是好的解决方案。
Mosix GFS执行的时间还不长,但性能确实很好。想一想家里要是有这么个功能强大的巨型机该是多么好的感受。那么,若是你有好几台装了Linux的闲置机器,又想搞个大型机玩玩的话,就试试Mosix吧。
欲对Mosix有一个全面的了解,请访问网站:http://www.mosix.org/。html