您的位置:首页 > 运维架构 > Shell

Linux运维利器之ClusterShell

2016-07-07 14:50 435 查看


Linux运维利器之ClusterShell

发表于2011-11-12

如果你有若干台数据库服务器,突然你想知道它们当前的即时负载情况,你会怎么办?挨个登录上去uptime一下?感觉有点傻,写个shell?浪费时间,直接用ClusterShell吧!


ClusterShell的安装与配置

ClusterShell的安装很Easy,如果使用APT或YUM包管理方式的话,基本就是一条命令的事儿,我就不说了,这里说一下如何从源代码安装,需要在源代码目录执行如下命令:
shell> python setup.py install


为了使用的方便,还需要拷贝配置文件到指定目录:
shell> mkdir /etc/clustershell
shell> cp conf/* /etc/clustershell


接着配置我们要管理的节点,假设我们配置了一个db组,包含db_[1-3]三个节点:
shell> cat /etc/clustershell/groups
db: db_1 db_2 db_3


准备就绪,顺着文章开头的例子说:查询所有数据库服务器当前的负载情况:
shell> clush -b -g db "uptime"


注:前提是需要在被操作服务器上设置免密码登录,如果不清楚,请看下面的内容。


番外篇:如何配置服务器免密码登录?

如果没有事先生成ssh密匙的话,需要先生成:
shell> ssh-keygen


可选操作:为了方便,我们可以给需要登录的服务器起一个可读性更好的别名,如果你做了类似的操作,那么后面的<USER>@<SERVER>都可以换成对应的<HOST>:
shell> cat ~/.ssh/config
Host db_1
Hostname <SERVER>
User <USER>
Port <PORT>

Host db_2
Hostname <SERVER>
User <USER>
Port <PORT>

Host db_3
Hostname <SERVER>
User <USER>
Port <PORT>


然后把生成的公钥添加到需要登录的服务器指定位置:
shell> cat ~/.ssh/id_rsa.pub | ssh <USER>@<SERVER> "cat - >> ~/.ssh/authorized_keys"


如果你和我一样总记不清如何正确拼写authorized_keys,可以接着学一下ssh-copy-id的用法,这个命令可以让操作更简单点:
shell> ssh-copy-id -i ~/.ssh/id_rsa.pub "<USER>@<SERVER>"


注:每配置好一台免密码登录的服务器,最好手动实际操作一下,因为第一次连接会要求手动确认是否保存信息到~/.ssh/known_hosts文件。



有的网友会说,监控服务器负载可以用Munin之类的工具。不错确实如此,不过Munin之类的工具无法给你一个及时数据,另外,ClusterShell并不局限在查询负载的功能上,跟上不同的命令,就可以查询不同的数据,而在Munin之类的工具里,如果你想监控某个数据,必须有对应的插件才行。ClusterShell是不可或缺的Linux运维利器!

此条目由老王发表在Technical分类目录,并贴了Linux标签。将固定链接加入收藏夹。


《LINUX运维利器之CLUSTERSHELL》上有12条评论

halfbloodrock在2011-11-1302:09:30说道:

我们线上的服务器是solaris的,不给装工具,只能写shell

for i in `cat servers`

do

ssh $i “uptime”

done

回复 ↓

张星在2015-05-2020:35:14说道:

for i in `cat servers`

do

ssh $i “uptime” &

done

tontinme在2011-11-1310:45:01说道:

不知道有没有什么并发执行的工具或方法,for循环是顺序执行机器列表的,如果机器多了的话会很慢

回复 ↓

老王在2011-11-1310:58:49说道:

ClusterShell就是并发执行的,参见文档介绍:ClusterShell allows for running commands in parallel on very large Linux clusters using present remote shell facilities on your cluster like SSH.

fcicq在2011-11-1321:12:18说道:

why not gnu parallel?

回复 ↓

神仙2011-11-1409:21:49说道:

比起 dsh 来如何

回复 ↓

michael在2011-11-1409:52:30说道:

为什么不用omnitty呢??

回复 ↓

Pingback引用通告: flykobe的技术与生活杂谈
» Blog Archive » 使用clustershell上线代码,并管理服务器

老王在2011-11-1522:29:03说道:

感谢大家反馈,可怜我截至目前只实际用过ClusterShell,至于大家提到的软件,我大概看了看,感觉各有千秋,GNU Parallel强大但也复杂;DSH简单易用;OmniTTY操作上稍显繁琐。

回复 ↓

im@sorry.com在2011-11-1811:25:29说道:

好像还有个pssh .

另外collectl可以监控多台 http://collectl-utils.sourceforge.net/colmux.html

回复 ↓

winneryong在2011-12-2720:02:58说道:

用Fabric好了啊,比这个简单啊

回复 ↓

bugbeta2012-02-1712:18:53说道:

Fabric是不错,不过不支持并行执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: