我有兴趣了解用于pipe理许多Linux机器的工具和技术。 (即部署和维护更新。)
我想到的一个方法是编写一个Bash脚本,将另一个脚本上传到服务器,然后按顺序为每个服务器执行脚本。 例如:
foreach server { connect to server and scp update_script.sh to ~/scripts ssh user@server -e "sh ~/scripts/update_script.h" }
而update_script将使用apt-get/aptitude或yum ,或者其他来更新服务器上的软件包。
有没有更好的方法来做这样的事情?
尝试傀儡
另一个出色的(真正优秀的)工具是Webmin,如果您将多个运行webmin的服务器(在webmin界面中)一起添加,您可以推送更新并查看其集群页面中的软件包configuration。
SystemImager是一个更适合于推出图像的替代scheme
ClusterSSH是你正在寻找的。 它提供了一种将命令广播到群集中的所有节点的方法。 把它想象成BashReduce sans Reduce。
别人已经提到了木偶。
同样,我可以推荐Cfengine。 学习曲线可能有点陡峭,但是一旦你掌握了它,那就太棒了。 我用它来pipe理大约50台服务器,如果没有它,我不相信我会相处。
试试Capistrano 。 它的工作方式就像上面的bash foreach循环一样,但是它基于Ruby而不是bash。 Capistrano用于操作任务(a la:将服务器置于维护模式,取消维护模式)
+1木偶。 这对于使系统处于已知状态的幂等操作非常合适。
检查一下Func在几台服务器上运行“东西”。 Google for“func redhat”
另外,如果你喜欢木偶,你应该看看厨师opscode点com。 它解决了一些木偶问题,configuration文件是用ruby代替DSL写的。 奥海也是一个更有意义的版本。 Bcfg2也是用python编写的另一个configurationpipe理工具。 它对于高安全性或审计很酷,因为每个包都可以被计入,所以如果在bcfg2之外添加了一些东西,它会标记一个警报。 它的缺点是configuration文件,他们自己用XML编写。
我有一堆链接,但我想新用户不能发布超链接。
如果您希望能够在Linux系统集群上并行运行命令,可能需要考虑下列其中一项:
作为configuration大型系统networking的一般方法 – 您可能希望使用已经提到的工具,如cfengine和puppet。
即使你的想法对我来说并不糟糕,我也不太了解脚本部署。 但是,如果您想在pipe理它们的过程中监视您的linux机器,我强烈build议Nagios完成此任务。
如果你想要处理比通常的默认任务更多的操作, Nagiosconfiguration(像任何Linux软件一样,有点麻烦),但是你的网站上有大量的文档 :nagios.sourceforge.net/docs/3_0/ toc.html
当然,它是免费的;)
一个团体有多大“多”? 正如前面提到的,如果Webmin能够满足您的需求,那么Webmin就不错 – 您可以运行任意命令,并使用https执行一些常见的pipe理任务(如同步本地用户)。 所以,你的开销比ssh方法less。 Webmin的集群工具对于“数十台”机器来说是好的; 我从来没有尝试过大型团体。 还有cfengine,它被提到 – 它可以用于小型到极大型机器(如在数千),因为它可以根据需要进行分层pipe理(一个master,一个sub-masters等)。 目前我正在使用这个来pipe理一个大约3500个不同风格的Unix机器的networking。 正如另一位海报所说,初期学习是一件痛苦的事情,但工作得很好。
如果你的系统是原生的,或者至less是相当同类的组,并且你没有太多(比如几百个),那么有好几个好的集群pipe理工具集。 奥斯卡项目有一些pipe理工具已经组装起来用于pipe理集群:http://svn.oscar.openclustergroup.org/trac/oscar,还有其他类似的项目,他们的名字逃避我(我可能会记得如我发布)。
简单来说,Linux杂志上讨论了几个paralell ssh工具:http://www.linux.com/archive/feature/151340。 与其他基于ssh的群集工具一样,当您尝试打开太多并发的ssh连接时,您仍然会遇到问题。 根据你的硬件,我的经验是,你可能想保持低于20-30同步ssh链接paralelism。
基本上,这里有很多预制解决scheme,而且还有许多本土解决scheme。 看看freshmeat.net和谷歌周围,你会发现几个。 或者滚动你自己的; 如果你只是做10-20台机器,解决可接受的问题并不是一个特别困难的挑战…… 🙂
我用cfenginepipe理〜150台Linux机器。 我必须每周less于一次地login到任何给定的机器,cfengine会完成剩下的工作。 添加用户,删除它们,安装软件包等