UNIX: 高效管理大量计算机
云在根本上是由硬件和软件组成的,这些组件需要经常细心地维护。出现故障的硬件需要修理或更换;软件需要应用补丁、更新和升级;必须根据需求和潜在的安全威胁提前配置系统。应用程序开发人员可能觉得计算云很方便、很灵活,但是云管理员要应对艰巨的任务。
不只是云的管理有这些问题。LAN(小型服务器群)和计算集群也有同样的系统管理难题。在管理大量计算机时,Secure Shell (ssh)、scp
和 sftp
等常用工具用起来非常麻烦。本期 对话 UNIX 讨论从命令行有效地管理大量计算机的技术,先从少量系统开始,然后扩大规模。
?
例如,命令 mssh.sh "example.com joe@sample.com" "uptime -a">
在两台主机(example.com 和 sample.com)上运行 uptime -a
。计算机名列表放在引号中以组成一个参数,由于同样的原因,命令也放在引号中。每个计算机名必须符合 ssh 要求的模式 — 如果远程用户名与本地用户名相同,那么使用 hostname
;如果远程用户名与本地用户名不同,那么使用 username@hostname
。运行 mssh.sh "example.com joe@sample.com" "uptime -a">
会产生这样的结果:
?
这个脚本很原始,但是可以通过扩展它包含其他特性,比如用可调的超时设置防止在主机停机时出现长时间延迟(ssh -o
选项),用指定的目录捕捉输出。实际上,有许多按这种方式构建的软件包,可以简化分布式系统管理。其中之一是 Distributed Shell (dsh)。
此任务名为 search_libs
。它连接 www.capify.org 并运行命令 ls -x1 /usr/lib | grep -i xml
。Capistrano 通过角色 支持计算机组,还提供许多其他特性。通过 cap
命令启动任务,比如 cap search_libs
。Ruby 和 Rails 开发人员广泛采用 Capistrano 把代码部署到服务器,但是对于自动执行大多数分布式系统管理任务,它也是非常好的工具。一些教程解释了如何结合使用 Capistrano 与 Java? 语言、Perl、Python 和其他编程语言,以及如何结合使用 Capistrano 与 Drupal and Expression Engine 等应用程序引擎。如果与源代码控制系统结合使用,Capistrano 的效果最好,但这不是必需的。可以通过 put
操作分发二进制代码。
还可以研究 Oak Ridge National Laboratory (ORNL) 的 Cluster Command and Control (C3) 和 pdsh 等计算集群工具。C3 操作 ORNL 的大规模计算集群,它提供大量命令行工具,可以减少操作和管理集群所需的时间和精力,提高系统管理员的生产力。pdsh shell 在许多方面与 pssh 相似,但是还可以管理系统映像。
回页首
用很少的时间管理大量计算机
使用 dsh 和 pssh 等工具能够节省时间并减少错误。可以在大量系统上运行相同的命令,几乎马上会看到组合的结果。通过清单把相似的计算机集中在一起可以降低遗漏的风险。Puppet 和 Capistrano 可以把经常重复执行的任务捕捉到脚本中。如果管理的计算机比较多,自动化就是关键。总之,如果采用适当的工具,计算云的管理也不难。
<!-- CMA ID: 594350 --><!-- Site ID: 10 --><!-- XSLT stylesheet used to transform this file: dw-document-html-6.0.xsl -->?
参考资料
学习
对话 UNIX:阅读本系列中的其他部分。rsync
和基于 rsync
协议的各种实用程序。 获得产品和技术
dsh:这个 shell 可以并行地在许多计算机上执行 shell 命令。