1.简述
pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的。使用是必须在各个服务器上配置好密钥认证访问。其实在自动化部署工具世界里有不少的出名的家伙,比如puppet、chef、ansible、slatstack等等以及本文要介绍的pssh。
2.平台信息
假设我们的有两台主机并且都能连接网络,因为等下要下载pssh的安装包,拿本次搭建环境的信息为例,主机系统都为Centos7.1,如下:
IP | 主机名 | 备注 |
---|---|---|
10.63.39.38 | lijiaze-master | 本地主机(或者说控制端) |
10.63.39.39 | lijiaze-node | 远程主机(或者说受控端) |
3.部署流程
3.1 下载pssh的安装包
# 在/home目录下新建一个目录用来存放pssh软件压缩包,并进入该该目录。
# mkdir -p /home/pssh
# 下载v2.3.1版本的pssh软件压缩包
# cd /home/pssh
# wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz
3.2 安装pssh
# 解压安装包
# tar -zxvf pssh-2.3.1.tar.gz
# 进入软件包pssh-2.3.1目录
# cd pssh-2.3.1
# 安装pssh
# python setup.py install
这样就安装完pssh,so easy!下面我们再来测试一下能不能用!
4.简单测试
想要对远程主机进行控制,必须要将本地主机的密钥传到远程主机上。所以首先生成本地主机的密钥,然后传送到远程主机上。
# 本地主机生成密钥(注意中途不需要输入任何东西,一路按回车键即可)
# ssh-keygen
# 将刚刚生成的密钥传送到远程主机(这时输入yes以及10.63.39.38这台主机的root用户的密码即可)
# ssh-copy-id -i root@10.63.39.38
经过了上面的操作,我们就可以对远程主机进行操作了,当远程主机很多时,比如我们公司产品上线前进行测试时,有几百台主机要进行控制,这时我就会将这些主机IP弄成一个txt文本,当然,一台也是可以的!所以为了方便,在这里统一用文本形式。
# 新建一个txt文本,并将10.63.39.39这个IP号添加到这个文本里
# touch lijiaze.txt
# echo 10.63.39.39 >> lijiaze.txt
这样我们就可以使用pssh对远程主机进行控制了!pssh有五个常用的命令,下面分别一一简述。
# 1 pssh 多主机上并行执行命令,比如我要查看一下远程主机root目录下有那些文件,就可以用下面的命令
# pssh -h lijiaze.txt -i 'ls -al'
# 2 pscp 把文件并行地复制到多个主机上,比如在我的root目录下有一个lijiaze.tar.gz的压缩包要传到远程主机的/home/lijiaze目录下,就可以使用下面的命令
# pscp -h lijiaze.txt /root/lijiaze.tar.gz /home/lijiaze
# 3 pslurp 从多台远程机器拷贝文件到本地,和pscp刚好相反。比如在远程主机的root目录下有一个lijiaze.sh脚本要传回本地主机/home/lijiaze目录下,就可以使用下面的命令
# pslurp -r -h lijiaze.txt /root/lijiaze.sh /home/lijiaze /home/lijiaze
# 4 pnuke 并行在远程主机杀进程,比如在远程主机有一个docker服务,我想把它给终止掉,就可以使用下面的命令
# pnuke -h lijiaze.txt docker
# 5 prsync 使用rsync协议从本地计算机同步到远程主机,这个很少用到,至少我还没用过多少次,所以有需要的请自行看帮助文档。