pdsh-让集群管理更轻松自如

I. 简介

当我们管理数以十计或者更多的集群系统时,往往需要在每台机器上执行同样的命令,或者拷贝同样的文件,这时,我们就可以考虑使用三个小工具,分别是pdshClusterSSHmussh。这三样工具,功能强大,用法简单,为我们平时的集群管理工作提供了强大的支持。不过今天要讲的是第一个工具:pdsh。这也是我最喜欢和最常用的工具。

PDSH(Parallel Distributed SHell) 可以并行的执行对目标机器的操作,它采用滑动窗口机制,当目标机器数不能填满窗口时,master主机(发出操作命令的机器)可以并行的对目标执行操作,当窗口满时,对剩余的目标机器的操作会等到窗口有空时才会调度填入窗口。当pdsh接收到SIGINT(CTRL+C)中断时,会显示当前运行的连接的状态。一秒内的第二次SIGINT将会结束pdsh线程。等待的线程是指那些还没被初始化,或正在和目标主机连接中的线程。这些线会在相距SIGINT一秒内的ctrl+z所取消。如果没有指定pdsh的command,则pdsh 以交互的方式运行。

II. 基本用法

  1. pdsh [options] ... command   
  2.     方括号中用来指定目标主机及其它参数,command 用来指定在目标主机上所要执行的命令。   
  3.     值得注意的是,使用pdsh 时,master该机必须用所要连接目标主机的用户具有无密码访问的权限,且连接时亦不询问yes 或no才可以对目标主机操作成功,具体无密码访问方法可以查阅其它资料。   
  4.   
  5.     所有的参数可以通过pdsh --help来查看,下面简要介绍一下其中的常用参数  
  6.   
  7. -w TARGET, .....   
  8.     TARGET用来指示目标主机或目标的过滤条件,该参数不可和-a,-g同时使用,TARGET可以直接使用主机名或主机名列表,如:   
  9.     pdsh -w node1,node2,node3 date(命令中不含引号,此处只是用来和文字加以隔离,下同)   
  10.     此命令用来查看node1,node2,node3上的时间。   
  11.   
  12.     可以对目标主机指定范围,如:   
  13.     pdsh -w node[1-10] date  
  14.     在node1到node10上执行date命令。   
  15.   
  16.     如果目标主机名前有“-”,则表示将此主机从目标中排除,如:   
  17.     pdsh -w node[1-10] -node5 date  
  18.     此命令的目标主机为node1至node4,node6至node10。   
  19.   
  20.     如果目标前为“^”,则用来指示包含目标主机的文件,文件中每行一个该机名。如:   
  21.     pdsh -w /home/oralce/namelist date  
  22.   
  23.     如果以“-”开始,后跟“/”,则表示用来选择目标主机的正则表达式,如   
  24.     pdsh -w host[0-20],/0$/ ...   
  25.     表示host0-host20中选择以0结尾的主机名。   
  26.   
  27.     此外,目标主机前还可以加连接模块名及连接的用户名。如:   
  28.     pdsh -w ssh:oracle@node[1-10] date  
  29.     表示使用ssh连接目标该机的oracle用户。   
  30.   
  31. -x host,host,....   
  32.     用来将主机排除在目标主机之外,一般和-a,-g连用。“^”,“/”,“-”用法与上相同,不再说明。   
  33.   
  34. -l user  
  35.     这个选项用来指定以user连接到目标主机上。   
  36.   
  37. -t seconds   
  38.     用来设置连接的超时时间,以秒为单位。默认为10秒。   
  39.   
  40. -u seconds   
  41.     用来设置远程命令执行的超时时间,以秒为单位,以ssh 连接 时,默认时间为无限。   
  42.   
  43. -f number   
  44.     用来设置同时连接的目标主机的个数,   
  45.   
  46. -N   
  47.     用来关闭目标主机所返回值前的主机名显示。   
  48.   
  49. -g groupname   
  50.     指定目标主机的组名   
  51.   
  52. -X groupname   
  53.     用来将组名内的主机从目标主机中排除。   
  54.   
  55. -V   
  56.     用来显示当前pdsh的版本信息及所加载的模块信息。   
  57.   
  58. -L   
  59.     用来显示当块所有加载的模块信息。  

III. 安装和示例

安装很简单,和其他Linux下的软件安装一样,三个步骤:

  1. wget http://cdnetworks-kr-2.dl.sourceforge.net/project/pdsh/pdsh/pdsh-2.26/pdsh-2.26.tar.bz2   
  2. tar jxvf pdsh-2.26.tar.bz2   
  3. cd pdsh-2.26   
  4. ./configure --prefix=[path]   
  5. make   
  6. make install  

下面举一个简单的例子,比如你有v2-v6这5台机器,用户名为admin,主控机为v1,事先已经打通从v1-v[2-6]的ssh通道,现在你想要在v2-v6五台机器上面查询下load情况(比如执行uptime命令),用pdsh就显得各位轻松:

  1. [root]@[Fck_with_U]v1:[~]->>/usr/local/pdsh/bin/pdsh -d -R exec -w admin@v[2-6] ssh -x %h "uptime"                        
  2. v6:  11:24:46 up 43 days,  1:16,  0 users,  load average: 2.98, 2.05, 2.25   
  3. v2:  11:24:46 up 43 days, 15:48,  1 user,  load average: 6.93, 7.43, 9.72   
  4. v5:  11:24:46 up 1 day, 17:26,  0 users,  load average: 0.00, 0.01, 0.00   
  5. v3:  11:24:46 up 43 days, 19 min,  2 users,  load average: 6.49, 7.03, 6.36   
  6. v4:  11:24:46 up 43 days, 34 min,  0 users,  load average: 1.29, 1.58, 1.98   
  7. Connect time:  Avg: 0 sec, Min: 0 sec,  Max: 0 sec   
  8. Command time:  Avg: 1 sec, Min: 1 sec,  Max: 1 sec   
  9. Failures:      0  

从结果来看,可以很清晰的看到各台机器的load情况,并且给出了各项时间,和失败的个数,并且我们注意到,v2-v6的次序是打乱的,这也从另一个侧面表明了“parallel”的概念,即是并行的。

IV. 补充

pdsh安装后,在bin目录下还有其他几个工具,如pdcp,pdcp可以用来将某结点上的文件复制到其它目标结点上,此命令对于大规模系统上程序的发布很有用。

pdsh的帮助页:http://linux.die.net/man/1/pdsh

提供下下载地址:

Mussh和ClusterSSH的下载地址也提供下:ClusterSSHMussh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值