Cluster SSH 是一个可以用来通过SSH协议同时管理多台远程计算机的工具。它非常适合用来快速配置一个集群中的所有运行相同服务和具备相同配置的计算机节点。现在有大量的开源管理工具,都可以实现这样的管理,比如dsh、SUSE Manager等。下面是用ClusterSSH管理多台Linux服务器的具体过程。
如果你是一名Linux系统管理员,那你每天一定会和许许多多的机器打交道,因为你要定期监测和维护这些机器,如一批Web服务器,如果你要同时在多台机器上敲入相同的命令,你可能会通过SSH登录,然后逐台敲入,如果使用ClusterSSH,可以为你节省不少类似的工作时间。
ClusterSSH是用Tk/Perl包装XTerm和SSH后形成的新工具,就其本身而言,它可以运行在任何兼容POSIX的操作系统上,我曾经在Linux,Solaris和Mac OS X上运行过它,它需要Perl库Tk(在Debian或Ubuntu上就是perl-tk)和X11::Protocol(在Debian或Ubuntu上就是libx11-protocol-perl),此外,xterm和OpenSSH是必不可少的。
安装
在Debian或Ubuntu上安装ClusterSSH是相当简单的,只需要敲入sudo apt-get install clusterssh就可以安装好,至于依赖包你也不必担心,一切都会为你装好的,它也提供了适合Fedora的rpm包,在FreeBSD上可通过port系统安装,还为Mac OS X准备了MacPort版本,因此你可以在你的苹果电脑上安装ClusterSSH,当然,如果你是极客,也可以下载源代码自己编译。
配置
可以通过ClusterSSH的全局配置文件/etc/clusters,或用户home目录下的.csshrc文件来配置它,我喜欢用户级的配置方式,这样同一个系统中的不同用户可以根据自己的喜好进行配置,ClusterSSH定义了一个“cluster”机器组,你可以通过一个界面来控制这个组中的所有机器,在配置文件的顶端“clusters”部分,你可以详尽地列出你的集群,然后用独立的段落来描述每个集群。
例如,假设我有两个集群,每个集群由两台机器组成,“Cluster1”由“Test1”和“Test2”两台机器组成,“Cluster2”由“Test3”和“Test4”两台机器组成,~.csshrc(或/etc/clusters)配置文件的内容看起来应该是:
clusters = cluster1 cluster2 cluster1 = test1 test2 cluster2 = test3 test4
你也可以创建中间集群(包含其它集群的集群),如果你想创建一个名叫“all”的集群包含所有的机器,有两种实现手段,首先,你可以创建一个包含所有机器的集群,如:
clusters = cluster1 cluster2 all cluster1 = test1 test2 cluster2 = test3 test4 all = test1 test2 test3 test4
但我更喜欢的方法是使用一个包含其它集群的中间集群:
clusters = cluster1 cluster2 all cluster1 = test1 test2 cluster2 = test3 test4 all = cluster1 cluster2
图 1:启动中的 ClusterSSH
通过调用包含cluster1和cluster2的“all”集群,这些集群发生的任何变化都能自动捕捉到,因此你不必更新“all”定义,当.csshrc文件变得很大时,此举可以帮你节省大量的时间。
使用ClusterSSH
ClusterSSH的使用方法和SSH类似,只需要运行cssh –l <用户名> <集群名>就可以启动ClusterSSH,并以你输入的用户名登录到集群,在下图中,你可以看到我已经登录到“cluster1”集群,窗口标题为“CSSH[2]”的小窗口是ClusterSSH的控制台窗口,在它里面敲入的任何命令都会回显在集群中的所有机器上,在这个例子中是“Test1”和“Test2”,必要时,你也可以登录到.csshrc文件中未列举的机器,使用的命令是cssh –l <用户名> <机器名1> <机器名2> <机器名3>。
如果我想向终端发送点什么,只需要点击目标Xterm,切换焦点,输入想要的内容即可。ClusterSSH提供了许多有用的菜单项,在管理混合型机器环境时特别有效,如下图所示,在ClusterSSH控制台的“Hosts”菜单中,有许多方便的选项可以调节。
“Retile Windows”选项只有当你手动调整了窗口大小或移动了位置时才会显示,如果你想添加其它机器或集群到运行中的ClusterSSH会话中,“Add Host(s) or Cluster(s)”就派上用场了。最后,你将会在“Hosts”菜单的底部看到每个主机的列表,通过主机名前的复选框,你可以选择ClusterSSH控制台在那台机器上执行,如果你想排除某台主机,这个功能特别管用。最后我想介绍的是位于“Send”菜单下的“Hostname”选项,它可以在命令行中回显每台机器的主机名,相信你一定会用得着。
图 2: 调整大小窗口
使用ClusterSSH时需小心
和许多UNIX工具一样,如果你不小心使用ClusterSSH,它也可能会犯下可怕的错误,我就曾看到过因Apache配置文件文字输入和排版的一个小失误,导致全部Web服务器当掉的事故,因为ClusterSSH老老实实地传播了错误,特别是用特权用户操作ClusterSSH时更应该小心,一个小小的错误可能会引起巨大的损失,请谨记,在按下回车键之前,一定要仔细检查你所做的一切。
小结
ClusterSSH不是配置管理系统的代替品,也不能代替管理多台机器时的最佳实践,但如果你需要在这些常用工具箱或程序之外做一些事情,或你在执行一些标准性工作,ClusterSSH是不可缺少的,当你需要在多台机器上重复执行相同的任务时,它可以为你节省大量的时间,但和任何强大的工具一样,如果使用不当,也会带来许多危险。