首页 » 自动化运维 » 正文

pdsh集群管理软件

当我们管理数以十计或者更多的集群系统时,往往需要在每台机器上执行同样的命令,或者拷贝同样的文件,这时,我们可以使用pdsh,在使用之前我们需要设置无密码登录目标系统,这方面的内容请参考http://www.lmyw.net.cn/?p=847

pdsh

简介

pdsh的全称是parallel distributed shell,与pssh类似,pdsh可并行执行对远程目标主机的操作,在有批量执行命令或分发任务的运维需求时,使用这个命令可达到事半功倍的效果。同时,pdsh还支持交互模式,当要执行的命令不确定时,可直接进入pdsh命令行,非常方便。

pdsh应用场景

pdsh的应用场景基本上与pssh相同,都用于大批量服务器的配置、部署、文件复制等运维操作。在使用pdsh时,仍需要配置本地主机和远程主机间的单向ssh信任。另外,pdsh还附带了pdcp命令,此命令可以将本地文件批量复制到远程的多台主机上,这在大规模的文件分发环境下是非常有用的。pdsh可以通过多种方式在远程主机上运行命令,默认是rsh方式,另外也支持ssh、mrsh、qsh、mqsh、krb4、xcpu等多种rcmd模块,这个可以在运行命令时通过参数指定。

必须在管理节点和每台目标机器上都安装pdsh软件包。pdsh可以在指定的一组机器上执行同一个命令。

pdsh安装

本文隐藏内容 登陆 后才可以浏览

pdsh测试

本文隐藏内容 登陆 后才可以浏览

将本地文件批量复制到远程主机

本文隐藏内容 登陆 后才可以浏览

pdsh的语法介绍

安装pdsh完成后,通过执行“pdsh �h”和“pdcp �h”即可得到两个命令的完整用法,由于两个命令的参数大同小异,因此这里以pdsh命令为主介绍一些常用的参数及含义。下表是pdsh常用的参数及其含义。

-w host,host 指定远程主机,可以指定多个,每个主机用逗号隔开,host可以是主机名也可以是IP地址。此参数非常灵活,常用的形式有:

pdsh -w ssh:user001,ssh:user002,ssh:user003 “date”

此命令用来查看user001、user002、user003主机上的时间,其中ssh表示在远程主机上执行命令的形式,默认是rsh。

pdsh -w ssh:user00[1-10] “date”

此命令用于在user001到user0010上执行date命令。

pdsh -w ssh:user0[10-31],/1$/ “uptime”

此命令在选择远程主机时使用了正则表达式,表示在user010到user031中选择以1结尾的主机名,即在user011、user021、user031上执行uptime命令

-R 指定使用rcmd的模块名,默认是rsh。如果要选择ssh,可以通过如下方式指定:

pdsh -R ssh -w user00[1-10] “date”

-l 指定在远程主机上使用的用户名称。例如:

pdsh -R ssh -l opsuser -w user00[1-9] “date”

-x 此参数用来排除某些或某个主机,例如:

pdsh -R ssh -l opsuser -w user00[1-9] -x user005,user007 “date”

-t 指定连接远程主机的超时时间,以秒为单位,默认是10秒,可以通过此参数修改默认值,例如:pdsh -R ssh -w slave000[1-9] -t 15 “date”

-u 设置远程命令执行的超时时间,以秒为单位,以ssh方式连接时,默认时间为无限

-f 设置同时连接到远程主机的个数

-N 此参数用来关闭远程主机所返回结果中的主机名显示

-a 通过此参数可以指定所有的远程主机,设置此参数后,pdsh默认会查看/etc/machines文件中的主机列表,要改变此路径,在编译pdsh时通过“–with-machines”参数指定即可

-g 此参数用来指定一组远程主机,在编译pdsh时可以通过“–with-dshgroups”参数来激活此选项,默认可以将一组主机列表写入一个文件中并放到本地主机的~/.dsh/group或/etc/dsh/group目录下,这样就可以通过“-g”参数调用了。例如:pdsh -R ssh -g userhosts “date”,其中“userhosts”是一个主机列表文件,可以将此文件放在~/.dsh/group或/etc/dsh/group目录下

-X 此参数用来排除指定组内的所有主机,经常与“-a”参数一起使用。例如:

pdsh -R ssh -a -X userhosts “date”

-q 此参数可以列出pdsh执行时的一些配置信息

-V 此参数可以查看软件的版本信息以及可用的模块信息