【Linux運維入門】PSSH-輕量集羣管理工具

服務器多了,原始操作就會出現弊端,假如同時給成百上千臺服務器執行一個命令,拷貝一個文件,殺一個進程等,就需要逐個連接服務器進行操作,累死運維小哥。有什麼簡化運維管理的工具呢?

可以編寫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 [email protected] -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 [email protected]
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 [email protected]
root@192.168.22.211's password: 
Now try logging into the machine, with "ssh '[email protected]'", and check in:

  .ssh/authorized_keys

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

在次連接遠程主機時,不用輸入密碼

[root@test .ssh]# ssh [email protected]
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等功能一個比一個強大。

環境加速成長,當只有一臺服務器時,手工操作其實也沒事,完全應付的過來;但是當服務器數量多了以後,就必要要考慮,怎麼才能提高效率,減少錯誤。選擇合適的工具能夠有立竿見影的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章