一、使用背景

   在大规模集群中,要实现对服务器的统一管理,比如监听网卡流量,统一给配置文件,kill进程,查看信息等操作时,可以有很多方法或工具来实现,可以使用脚本实现,可以使用诸如ansible之类的自动化管理工具;在这里,我们来说说pssh,这是一个python写的并行批量操作工具;诸如此类的工具还有 pdsh,mussh,cssh,dsh等。


二、使用前准备

   在使用pssh之前需要在集群中建立公钥机,具体方法在 --> 公钥机

   可在pssh官方网站获取http://www.theether.org/pssh/

   官网提供了3种安装方式,src,源码编译,以及rpm包,这里为了方便使用rpm安装,同时,使用pssh需要python环境。

[root@iie-test ~]# wget http://www.theether.org/pssh/pssh-1.2.2-1.i386.rpm
[root@iie-test ~]# yum install pssh-1.2.2-1.i386.rpm 
已加载插件:fastestmirror, langpacks
正在检查 pssh-1.2.2-1.i386.rpm: pssh-1.2.2-1.i386
pssh-1.2.2-1.i386.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 pssh.i386.0.1.2.2-1 将被 安装
--> 解决依赖关系完成

依赖关系解决

=====================================================================
 Package    架构       版本           源                        大小
=====================================================================
正在安装:
 pssh       i386       1.2.2-1        /pssh-1.2.2-1.i386        30 k

事务概要
=====================================================================
安装  1 软件包

总计:30 k
安装大小:30 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : pssh-1.2.2-1.i386                                1/1 
  验证中      : pssh-1.2.2-1.i386                                1/1 

已安装:
  pssh.i386 0:1.2.2-1                                                

完毕!

三、使用

    pssh有五个组件,分别是

    • Parallel ssh (pssh)

    • Parallel scp (pscp)

    • Parallel rsync (prsync)

    • Parallel nuke (pnuke)

    • Parallel slurp (pslurp)



    共有主要参数:

        -h iplist:必备参数,后跟主机列表

        -P:print,打印到屏幕

        -v:显示详细信息

        -o filename:后跟要输出到的文件

        -t n:超时时间

        -I:用户名

        -e filename:错误输出
        -p n :最大并行数量

    pssh:批量并行操作

    [root@iie-test ~]# pssh -h iplist.txt -t 3 -P "date"
    ""号中是要执行的命令,pssh因为是并行,速度超快,好用到谁用谁知道,实测1000台主机执行kill操作,2秒完成!

       

    pscp:并行复制操作

         -r:递归

    [root@iie-test ~]# pscp -h iplist.txt /root/test/rc.local /etc/rc.local
    这个是要将/root/test/rc.local复制给再iplist中的主机的/etc/rc.local。

      
    prsync:使用rsync协议从本地同步远程主机

         -a:存档

         -z:压缩

         -r:递归

    [root@iie-test ~]# prsync -h iplist.txt /root/test/conf /home/prog/p.conf

    pslurp:并行复制远端主机文件至本地,pscp的反方向

         -L localdir:指明本地目录

         -r:复制目录,递归

    [root@iie-test ~]# pslurp -h iplist.txt -L /home/data /etc/issue

    pnuke:并行kill进程

    [root@iie-test ~]# pnuke -h iplist.txt start