【Linux运维入门】PSSH-轻量集群管理工具

原创 2016年05月31日 18:02:48

服务器多了,原始操作就会出现弊端,假如同时给成百上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,就需要逐个连接服务器进行操作,累死运维小哥。有什么简化运维管理的工具呢?

可以编写shell脚本使用for循环,但是这样做一方面不确定操作是否成功,另一方面for循环语句性能不好,因为命令是同步执行的。那有什么效率高,且使用方便的工具呢?这类工具已经有很多了,比如 pdsh,mussh,cssh,dsh等还有这里提到的pssh:

pssh是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh,个人认为相对pdsh更为简便。


安装pssh

pssh安装还是非常简单的,前提需要Python环境的支持。

#下载安装包
wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz

#解压
tar -zxvf pssh-2.3.1.tar.gz
cd pssh-2.3.1

#安装
python setup.py install


介绍pssh命令,参数

参数:
   -h 执行命令的远程主机列表  或者 -H user@ip:port  文件内容格式[user@]host[:port]
   -l 远程机器的用户名
   -P 执行时输出执行信息
   -p 一次最大允许多少连接
   -o 输出内容重定向到一个文件
   -e 执行错误重定向到一个文件
   -t 设置命令执行的超时时间
   -A 提示输入密码并且把密码传递给ssh
   -O 设置ssh参数的具体配置,参照ssh_config配置文件
   -x 传递多个SSH 命令,多个命令用空格分开,用引号括起来
   -X 同-x 但是一次只能传递一个命令
   -i 显示标准输出和标准错误在每台host执行完毕后
命令:
    pscp     传输文件到多个hosts,类似scp
    pslurp   从多台远程机器拷贝文件到本地
    pnuke    并行在远程主机杀进程
    prsync   使用rsync协议从本地计算机同步到远程主机


远程控制服务器

远程控制服务器有两种模式:登录模式和命令模式

登录模式:将会登录到远程服务器的终端

命令模式:只会远程执行命令,返回结果,不会登录。
如下所示:

[root@test pssh]# pssh -H root@192.168.22.211 -A -P  date
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
192.168.22.211: 20160323日 星期三 14:56:24 CST
[1] 14:56:25 [SUCCESS] root@192.168.22.211

-A:提示输入密码,-P:返回执行结果


建立安全连接

操作的时候每次都要输入密码,服务器数量多的话操作很麻烦,所以要用到ssh安全连接,将本地加密的安全密钥文件,拷贝到远程服务器上。建立一个单向信任的连接,放到 .ssh文件夹中,下面测试将在22.210服务器上进行。

ssh-keygen 创建公钥和密钥,使用数字签名RSA

[root@test pssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
55:6c:23:2a:2b:9b:21:b7:6f:73:02:b7:49:7c:fb:43 root@test.master
The key's randomart image is:
+--[ RSA 2048]----+
|           ..    |
|          ..+    |
|         ..o .   |
|      . ..       |
|     . oS        |
|  . = = . E      |
|   o X + o       |
|    + * o .      |
|     o.+ ...     |
+-----------------+

查看是否创建

[root@test pssh]# cd /root/.ssh/
[root@test .ssh]# ls
id_rsa  id_rsa.pub  known_hosts

将公钥复制到远程主机上

[root@test .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.22.211
root@192.168.22.211's password: 
Now try logging into the machine, with "ssh 'root@192.168.22.211'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

在次连接远程主机时,不用输入密码

[root@test .ssh]# ssh root@192.168.22.211
Last failed login: Wed Mar 23 14:49:56 CST 2016 from 192.168.22.210 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Mar 23 14:47:37 2016 from 192.168.22.210
[root@adminjc ~]# 


PSSH小试

编写Host文件

[root@test .ssh]# vim HostList

插入内容:格式为:用户名+@+主机ip+:端口号,端口号默认为22,可不写。其他端口号要写明

root@192.168.22.211
root@192.168.22.212
root@192.168.22.213
root@192.168.22.214

以上写的就是要远程控制的主机列表

PSSH批量执行命令,并行命令的执行。

pssh -h HostList -P "command" 

""里面可以输入命令串

例如:

在从节点建立新目录/home/slave/test

pssh -h HostList -P "mkdir /home/slave/test"

执行日志命令,返回各服务器时间

[root@test .ssh]# pssh -h HostList -P date
192.168.22.212: 20160323日 星期三 16:30:43 CST
[1] 16:30:43 [SUCCESS] root@192.168.22.212
192.168.22.211: 20160323日 星期三 16:30:43 CST
192.168.22.214: 20160323日 星期三 16:30:44 CST
[2] 16:30:43 [SUCCESS] root@192.168.22.211
[3] 16:30:43 [SUCCESS] root@192.168.22.214
192.168.22.213: 20160323日 星期三 16:30:44 CST
[4] 16:30:44 [SUCCESS] root@192.168.22.213
[root@test .ssh]# 

-p选项指定同时执行的线程数

[root@test .ssh]# pssh -h HostList -p 2  -P date

pscp命令,批量复制文件到远程主机

pscp是远程拷贝文件,如从主节点将文件分发到所有从节点

[root@test .ssh]# vim psshtest
[root@test .ssh]# pscp -h HostList  -r psshtest  /usr/local/
[1] 16:40:26 [SUCCESS] root@192.168.22.211
[2] 16:40:26 [SUCCESS] root@192.168.22.213
[3] 16:40:26 [SUCCESS] root@192.168.22.214
[4] 16:40:26 [SUCCESS] root@192.168.22.212
[root@test .ssh]# 


小结

pssh就介绍到这,集群管理工具有很多,比如后面要说的SaltStack,puppet,func等功能一个比一个强大。

环境加速成长,当只有一台服务器时,手工操作其实也没事,完全应付的过来;但是当服务器数量多了以后,就必要要考虑,怎么才能提高效率,减少错误。选择合适的工具能够有立竿见影的效果。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

并行运维工具pssh的安装及实战应用

pssh全称是parallel-ssh,是一个Python编写的可以并发在多台服务器上批量执行命令的工具, 它支持文件并行复制、远程并行执行命令、杀掉远程主机上的进程等。 前提:使用pssh工具包...

Linux系统之工具篇(二)集群管理软件clustershell

一、简介 实验室机房有大概百台的服务器需要管理,加上需要搭建Hadoop以及Spark集群等,因此,一个轻量级的集群管理软件就显得非常有必要了。经过一段时间的了解以及尝试,最终选择了clustersh...

docker使用阿里云Docker镜像库加速(修订版)

本人专属加速器地址:https://pee6w651.mirror.aliyuncs.comubuntu安装或升级Docker请安装1.6.0以上版本的Docker。 您可以通过阿里云的镜像仓库下载...
  • bwlab
  • bwlab
  • 2016-01-19 14:23
  • 72221

Linux上Elasticsearch5版本集群管理工具head安装

原文地址:http://blog.csdn.net/qq942477618/article/details/53637817 1、下载head插件源码 https://github.com/m...

linux集群批量管理工具parallel-ssh(pssh)的安装与使用

使用pssh的动力源自实验室的测试项目,需要搭建一个200余台机器的集群,前期是32台机器的小集群,hadoop软件列表中的第一个。 起初我自认为装个hadoop集群,改改配置文件,重复32次就完事儿...

使用PSSH批量操作Linux服务器

转载自http://www.cnblogs.com/lurenjiashuo/p/pssh.html 简介 服务器多了,有一个问题就是如何批量快速操作多台服务器,在网上搜到了PSSH工...

Linux 集群管理工具Clustershell,pssh

在集群的现在,管理成千上万的Linux机子成为了一个难题,不能再使用一台一台登录主机去进行管理了,工作量无疑是非常巨大的,这里我们可以借助`Clustershell`与`pssh`管理,它原理是自动登...

linux系统之工具篇(三)集群管理工具Nmap

yum install nmap

elasticsearch集群管理工具head插件

elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es 插件安装方法1: 1.elasticsea...

ElasticSearch(二):集群管理工具elasticsearch-head

elasticsearch-head是一个用来浏览、与Elastic Search集群进行交互的web前端展示插件。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)