计算化学公社

标题: 10台以下的服务器都不建议做集群 [打印本页]

作者
Author:
ChaosChiao    时间: 2021-2-4 10:44
标题: 10台以下的服务器都不建议做集群
就我个人使用体会,集群的构建,管理,维护都及其麻烦,我个人及其不建议只有几台机器的情况下构建集群。
集群的优点:
自动分配任务
统一管理,一次安装,同时使用
并行计算,获得更强的加速能力

缺点
1。安装管理非常麻烦
2。集群最好配置一样,如果你今年买一台,明年买一台,过几年再买一台,配置,环境都相差甚远,容易有问题
3。部分软件安装起来很麻烦,与单台节点安装有区别
4。后期维护很麻烦,如果不是集群,一台坏了就坏了,换一台就行了,集群就很烦,你修完还需要保持环境与其他一样。
5。并行效果远达不到预期,现在的机器核数都很高,动辄40+,这已经够了。如果想要跨节点并行,万兆网是最基本的,最好IB,这又是一大笔钱。有多少任务需要数百个核心并行?况且大部分软件并行效率极低。核数越多越低。
6。风险太大,所有数据都在一起存放,一旦坏了都有问题。而且磁盘阵列价格不便宜。如果是分开用,坏了也就是一部分,只需要节点内有个raid卡做备份就行了。

总之,集群管理真是糟透了,如果就是想使用pbs等快捷提交调度作业,完全是得不偿失。

作者
Author:
biogon    时间: 2021-2-4 10:47
确实,不过搞作业调度系统还是很方便的,不用搞那么多硬件上的东西
作者
Author:
snljty    时间: 2021-2-4 11:03
如果电脑都是我自己的...保证完全按照这个建议搞
作者
Author:
abin    时间: 2021-2-4 11:56
本帖最后由 abin 于 2021-2-4 12:18 编辑

安装管理非常麻烦。 ============
因为可定制的环节太多,当然十分麻烦的。 依据不同的应用场景,可以做不同的定制。
基本上,大体框架相似,具体实施根据应用场景会有差异。
基于这个原因,仅有一点点单机Linux系统使用经验,是难以安装集群系统的。

管理方面,划定好调度策略后,基本是一劳永逸了。
我这边有多套集群,基本无需“管理”操作,一切都是自动化的。
唯一的管理操作,就是给新学生添加ID而已。当然也是自动化,仅需提供用户ID,然后复制粘贴输出,电邮发给用户就可以了。
脚本都是我自己写的,创建用户后,屏幕直接输出ID、初始密码、用户手册连接等信息,直接拷贝电邮发送。

总结,安装的确麻烦,不过,管理方面,的确是一劳永逸。

集群最好配置都一样
============
不同的应用场景,不太一样。
如果你的计算,是高通量筛选之类的任务,比如一下子搞2000多个计算,每一个都是一个CPU核心。
这种场景,PBS队列是最佳的选择。
如果应用场景,需要一个计算,一下子搞好多核心来做,最好保证处理器硬件都一样呀,否则木桶原理,这点还是要明确的。

后期维护方面
=========
硬件出现问题,无论是单机还是多机器,都一样死翘翘。
集群中,如果配置得当,管控节点故障,依旧能全集群调度工作正常。
比如,
管控节点硬件方面采用RAID1保证系统盘稳固;
采用系统 和 软件独立硬盘部署;软件分区故障,停机更换软件分区,仅需10分钟搞定。
硬件不坏的情形下,整个系统的稳定性,取决于搭建时候采用的策略。

至于你提到的保持环境一样的问题,我认为,你应该是缺少相应的技能。
最简单的方案是,系统,软件,数据采用物理分离的硬盘,采用硬件克隆方案。

并行效率方面
========
集群方面,并没有保证一定是提供高性能并行支持。
能否支持高性能并行计算,首先要硬件支持,其次是软件支持。
多节点并行计算,需要通过网络交换数据,网络不好,那还玩什么?
所以,并行效率的高低,和是否做成集群没关系,主要依赖于硬件以及软件本身。

数据安全问题
========
无论是单机,还是集群模式,
数据堆放在一个阵列中,的确都存在问题。
单机,数据也是自己放自己的,如没有备份,硬件挂了,数据也没有;
集群模式,数据阵列挂了,数据基本完蛋。
存储阵列需要额外支出,可能理解错了。

无论是单机还是集群模式,咨询我机器配置的朋友,
我都会问对方,如果预算可以上调1000元,建议加一个额外的硬盘,
我可以提供增量备份方案,
全自动进行, 如果原始数据100GB规模,我可以每6小时备份一次,
保留30天的历史文件,需要的备份空间大概是120GB。如需此方案,可以联系 hpc4you@163.com
虽然,硬盘挂了,不是大概率事件,但是一旦发生了,就只能哭了,多备份不是坏事。

无论哪种情形, 如果机器多,并且出现硬件不稳定的事情,都会很闹心的。
网路方面
=====
如果目的是要实现 高性能多节点并行计算,可以根据预算选择网络组件。
IB网络,成本大概5万以上;万兆光纤大概是十分一的价格,根据接口数量,大概是两千到五千之间。

我的观点是,
对于单机作业模式的场景,
推荐采用集群调度的模式来处理多台机器:
一丁点好处是,无需多次部署软件;无需在多台机器之间来回找数据,硬件成本上,可以节省存储空间的钱。
根据我多年的使用经验,
如无硬件故障,Linux上,无论是单机,还是集群模式,一旦配置完毕,基本上一劳永逸了。
如果没有做到一劳永逸,你肯定是哪里搞的不对的。
对于不采用IB网络的集群,
大多目的,都是为了方便使用,而并非多节点并行。   




作者
Author:
lcq845402558    时间: 2021-2-4 12:22
自己用怎么折腾都行。很多人一起用集群比较简单。
作者
Author:
liyuanhe211    时间: 2021-2-4 12:26
本帖最后由 liyuanhe211 于 2021-2-4 12:31 编辑

不太同意,如果一个人用,这么说没有问题。如果公用,即使只有两三个人,即使不做跨节点运行,连到一起建成集群做个简单的排队系统在管理上还是有很多优势。统一提交任务、自动化的排队、统一查看资源使用、任务完成提醒之类,做一次能省很多事情。

某课题组的机器排任务全靠抢+自觉,乌烟瘴气乱七八糟,其中有比较机智的人还去自己实现“监测某进程结束后自动运行自己的任务”、“登陆后自动检查有无正在运行的任务”之类的功能,等于把队列系统的功能重新实现了一遍,纯属浪费时间,还导致不会这个操作的人总是抢不到机器。

统一存储省事更多,否则文件拖来拖去,到要用的时候还不知道在哪台机器上,要个文件扒翻半天。统一存储能以更低的成本实现更高的数据安全性。

安装不是问题,安装有一定的学习成本,但是一旦学会(至少只用基本功能的时候)配置并不复杂。


作者
Author:
pwzhou    时间: 2021-2-4 15:00
专业的事情让专业的人去做,国内大部分课题组都是让学生去学习维护,毕业之后又得重新找人,经常青黄不接,水平参差不齐,自然会有各种各样的问题,得出这样的结论在所难免。但是实际上集群的安装和维护并没有多复杂,我管理集群十几年了,几十台服务器部署一个集群也就一两天的事情(从安装系统开始到应用软件全部部署完成),而这样的集群至少可以保证5年内稳定运行,基本不需要额外的付出,新增节点也是分分钟就加进来。
作者
Author:
abin    时间: 2021-2-4 16:36
pwzhou 发表于 2021-2-4 15:00
专业的事情让专业的人去做,国内大部分课题组都是让学生去学习维护,毕业之后又得重新找人,经常青黄不接, ...

向大佬致敬。

我仅有十二年的集群使用、管理和运维经验。
主要设计计算化学方面的计算。

楼上说的对,
集群架构的原理一旦掌握,基本手到擒来。
作者
Author:
wuzhiyi    时间: 2021-2-6 07:00
abin 发表于 2021-2-4 16:36
向大佬致敬。

我仅有十二年的集群使用、管理和运维经验。

大佬厉害 我只有单机linux使用经验 之前的人走了 老板想让我接管集群
想问一下有啥推荐的学习资料?
作者
Author:
abin    时间: 2021-2-6 16:15
wuzhiyi 发表于 2021-2-6 07:00
大佬厉害 我只有单机linux使用经验 之前的人走了 老板想让我接管集群
想问一下有啥推荐的学习资料?

我提供了很多资料,
去B站搜索abbottcn就可以白嫖了……

或者google openHPC。


以下是我无偿共享资料的总结,
如果你不想去B站自己找的话。

计算模拟工作站、集群相关

计算模拟工作站Linux安装分区方案推荐
https://www.bilibili.com/video/BV11Z4y1M7xZ/

王建:私有计算集群的搭建和课题组计算资源管
https://www.cailiaoren.com/m_vinfo.php?id=172&vid=1524

Microwulf: A Personal, Portable Beowulf Cluster
https://sites.calvin.edu/adams/research/microwulf/

读写对比 国家超算和私有集群
https://www.bilibili.com/video/BV1UZ4y1H793
作者
Author:
abin    时间: 2021-2-6 16:18
wuzhiyi 发表于 2021-2-6 07:00
大佬厉害 我只有单机linux使用经验 之前的人走了 老板想让我接管集群
想问一下有啥推荐的学习资料?

如果你的机器可以至少单向访问互联网,
比如你的服务器,
指令可以ping到百度,

我就可以提供集群搭建和运维支持,有偿。
只要有网络就可以,
无需现场操作。
如有需要,可以联系我。
联系方式看签名。
作者
Author:
啦啦黑还黑    时间: 2021-2-7 19:59
这些缺点除了第2点,其他的都是因为技术不行才有的烦恼。
作者
Author:
ChaosChiao    时间: 2021-2-10 23:14
abin 发表于 2021-2-4 11:56
安装管理非常麻烦。 ============
因为可定制的环节太多,当然十分麻烦的。 依据不同的应用场景,可以做不 ...

你说的集群这些优点,必须要大规模才显示出来,我帖子说的就是10台以下,为什么要集群呢?一共几台机器,还要管理,存储,架构?何必呢?按学生类型分配即可,各用各的机器。无脑上集群,纯粹是为了集群而集群。
作者
Author:
ChaosChiao    时间: 2021-2-10 23:19
liyuanhe211 发表于 2021-2-4 12:26
不太同意,如果一个人用,这么说没有问题。如果公用,即使只有两三个人,即使不做跨节点运行,连到一起建成 ...

没有集群还搞排队这是课题组管理者智商问题,跟集群与否毫无关系。
如果是集群,那我给你一个人数个作业的权限。
如果不是集群,按照计算需求分配固定机器即可。
无非一个软分配,一个硬件分配。这都能搞得乌烟瘴气,说明老板水平太次。
作者
Author:
abin    时间: 2021-2-11 07:19
ChaosChiao 发表于 2021-2-10 23:14
你说的集群这些优点,必须要大规模才显示出来,我帖子说的就是10台以下,为什么要集群呢?一共几台机器, ...

期望你可以找到最佳的高效率使用方案。

或许你已经找到了适用于自己应用场景的无脑方案。

其他方面,我持保留意见。
作者
Author:
liyuanhe211    时间: 2021-2-15 16:32
本帖最后由 liyuanhe211 于 2021-2-15 16:51 编辑
ChaosChiao 发表于 2021-2-10 23:19
没有集群还搞排队这是课题组管理者智商问题,跟集群与否毫无关系。
如果是集群,那我给你一个人数个作业 ...

分配固定机器策略的使用效率显然低于集群+排队系统、浪费显著。关于固定作业数量的策略,考虑到每个作业消耗资源显著不同,不论是固定每日作业总数量、或者是固定作业的并发数量都会在有些使用场景下非常低效。相对来说,固定作业总时间的策略相对合理一点,但是在没有排队系统自动限制的前提下难以实施,或者说需要消耗很多人的精力才能实施(不论是管理者还是使用者)。
完好的策略接近于“若使用者A当日机时小于某阈值,使用者A可提交任务;若高于某阈值,其他使用者可优先提交任务,但如果其他人没人用,则A可继续使用;但若A只做运行时间少于10分钟的测试性任务,可以先让它用一会儿;白天、夜晚机时的使用率不同,可以分开管理;使用者A在计算机α,β上的优先级比B高,但是在计算机γ上的优先级比B低;...... etc”,实现这些规则之后又等于手写了一个排队系统。

这些策略也都不能解决凌晨两三点-早晨时段的大量机时被浪费。

即使你认为存在所有人自觉、所有人能记得自己今天使用了多少机时、每个人运行每个任务前查看每台机器有没有任务在跑的情况,单是自动实现前述任务(在凌晨三点)结束后自动运行我的任务、自动列出空闲机器并将任务分配到其上、不必在各个机器间做文件管理并重复占用存储空间等功能,就足以抵偿配置集群和排队系统的时间消耗。在后期维护上,根据使用经验,搭好之后,管理集群的时间消耗和上述优势相比数量级不同,可忽略。

作者
Author:
abin    时间: 2021-2-16 07:37
也许最大的误解或者理解偏差,
源自于中文排队二字。

无论是单机工作站,还是多机器集群模式中,
所谓的排队系统,
基本功能仅仅是保证,
计算任务‘按票入座’,
可以理解为,实际上有48个核心,
一个任务要了4个核心,
那就给四个紧挨着的核心,
其他核心不允许动,用户的计算仅在这四个核心上运行。

也会出现等待状态。
比如,把所有核心比作飞机上的座位,
实际的任务比喻为买票坐飞机去送快递。
飞机上座率比较高的时候,
一次性预定十个挨着的座位,
可能会没票,票务公司告诉你等待,等下一个航班再试试。
而另一个客户,任务量小,
仅仅需要一个座位,很容易要到座位的。

所谓的胖节点,可以理解为头等舱。

排队,仅仅是规范所有核心按照顺序被依次使用。
调度排队系统,
仅仅像一个票务系统一样,
如果用户数量不足十人,
且访问查询量,
远低于每秒钟100次,
排队系统根本不占用什么资源的。

对于常见的应用场景,
比如给一个学生一个工作站,普通双路机器,
56核心。
学生规划为,每个计算用28核心。
可能有三五个计算,同时开展。
如果是采用mpirun来处理的,
那么发现某一个计算搞错了,如何去干掉这个错误计算,
而又不影响其他计算呢?
对于普通用户,难度是很大的。
pkill不行,会干死其他计算的。
kill PID,你需要记录多个编号的,操作是否边界,不评价。

如果用了所谓队列管理,
可以通过作业名和一个数字编号,
既可以轻松锁定计算任务。

不久前,课题组一个新来的学生,
主动要求,能否给她单独使用的工作站,
配备队列系统,以方便使用vasp。
虽然,她的导师,也是我的同事,
和楼主一样的想法,
工作站,就你一个人用,
搞一个排队系统,脑子是不是进水了?
我这里的几套集群,当然有队列系统。
不过实际操作发现,
用了队列模式后,
用户仅需按照进度,把想要计算的东西,
直接队列提交即可。
按照预估的时间,去查看计算结果,
分析数据即可。

当然也可以设定为,计算完毕后,
邮件提醒,短信提醒,
或者微信推送。

排队系统,
就如同票务代理公司,
你告诉我,我这次任务,
需要十个票,
票务公司就不停的轮询多家航空,
有没有票?
而不是,由自己,亲自不停地,
逐个航空公司去查询。

以上描述,仅仅代表我自己认知。
不评价其他任何内容。
作者
Author:
123qwertybobo    时间: 2021-2-16 20:17
只要是人就想摸鱼,比如有些学生,特别是低年级的学生刚入门,那真的是纯粹摸鱼,而且硕士马上就毕业了。你能指望他们干啥呢?一般管理者都是重度使用者,课题组尤其如此。所以哪怕是10台,我感觉还是要想办法搞集群。当你手上只有弓箭的时候,你至多会想杀个野猪玩玩。但当你手上有枪的时候,你就会想毒打森林之王。算力亦如是。想法多一点,以后牛皮才有的吹,况且你的试错成本很低好不好。。。
作者
Author:
alwens    时间: 2021-2-17 11:26
刚弄了一套,管理节点一台,剩下5台配置基本上都不同,感觉还是这样方便,要不一台台的折腾死。

统一管理还是方便。
作者
Author:
abin    时间: 2021-2-17 12:51
alwens 发表于 2021-2-17 11:26
刚弄了一套,管理节点一台,剩下5台配置基本上都不同,感觉还是这样方便,要不一台台的折腾死。

统一管 ...

管理节点亦可承担计算任务,
可以根据负载,
预留几个核心承担调度和读写负载。

如果集群调度很简单,
可以预留一个核心或者不预留核心,
所有的核心都用来做计算。

具体要根据读写压力和实际配置,酌情处理。
作者
Author:
ulosggs    时间: 2021-2-17 20:12
只要超过一台,都应该做成集群管理。
作者
Author:
cheviax    时间: 2021-3-4 09:43
abin 发表于 2021-2-4 11:56
安装管理非常麻烦。 ============
因为可定制的环节太多,当然十分麻烦的。 依据不同的应用场景,可以做不 ...

做高通量筛选的话集群主要是操作方便些,不弄集群其实也一样跑
作者
Author:
hxd_yi    时间: 2021-3-4 11:39
abin 发表于 2021-2-4 11:56
安装管理非常麻烦。 ============
因为可定制的环节太多,当然十分麻烦的。 依据不同的应用场景,可以做不 ...

集群还有一个好处,机柜放在单独的房间,隔离噪音源,提升科研环境体验。
作者
Author:
hxd_yi    时间: 2021-3-4 12:35
其实还应该考虑到人均,如果刚好人均一台多一点,那么集群看起来确实没什么必要。但是有一个问题,就算只有两三台,办公室也会很吵,除非你上水冷,而集群可以放在单独的房间,隔离噪音。每年都有新增机器,硬件配置不一致确实看起来挺麻烦,主要还是队列抢占的问题,大家都想用最新的机器,软件环境一般可以批量配置,问题不大。最后决定还是看你能忍受噪音还是折腾机器了。多人共用一台的情况,每个人都要分配账号,这样可以分隔不同的使用习惯,各自折腾各自的,互不影响。
作者
Author:
abin    时间: 2021-3-10 11:56
如果计算不能在当天工作日完成,
有队列的模式,
可以有效利用晚间睡觉的时间来处理非交互式计算任务。

这种情形下,也许5个人,四台机器就可以了。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3