當咱們管理數以十計或者更多的集羣系統時,每每須要在每臺機器上執行一樣的命令,或者拷貝一樣的文件,這時,咱們就能夠考慮使用三個小工具,分別是pdsh、ClusterSSH和mussh。
在Fedora系統上,咱們能夠直接經過yum安裝這三個軟件。
yum install clusterssh pdsh pdsh-rcmd-ssh pdsh-rcmd-rsh mussh
若是是其餘Linux系統,也能夠到http://clusterssh.sourceforge.net 、http://sourceforge.net/projects/pdsh和http://www.sourceforge.net/projects/mussh下載相應的軟件。
不管是clusterssh仍是pdsh或mussh,咱們都應該相應的設置無密碼登陸目標系統,這方面的內容,有不少介紹,本文再也不說起。
1、pdsh 首先介紹一下pdsh,首先必須在管理節點和每臺目標機器上都安裝pdsh軟件包。pdsh能夠在指定的一組機器上執行同一個命令。例如須要管理下列機器,機器名分別爲node211,node232,node233,node234,node240。
命令格式以下:
pdsh -w [SSH_OR_RSH]:USERNAME@node[211,232-234,240] [COMMAND]
其中大寫的部分應該被實際內容所取代。例如但願以maluyao用戶的身份,在每臺機器上執行hostname命令,使用ssh方法進行鏈接,則結果以下:
[tt@node111 ~]$ pdsh -w ssh:maluyao@node[211,232-234,240] hostname
node240: node240.hn.org
node233: node233.hn.org
node234: node234.hn.org
node232: node232.hn.org
node211: node211.hn.org
這樣能夠很是清楚的看到每臺機器上執行的結果。
另一些時候,咱們能夠但願在每臺機器上執行一組也許不肯定的命令,這時咱們能夠省略[COMMAND]部分,用法以下:
[tt@node111 ~]$ pdsh -w ssh:maluyao@node[211,232-234,240]
pdsh> hostname
node240: node240.hn.org
node234: node234.hn.org
node233: node233.hn.org
node232: node232.hn.org
node211: node211.hn.org
pdsh> date
node234: Mon Oct 27 14:59:37 CST 2008
node240: Mon Oct 27 14:59:37 CST 2008
node232: Mon Oct 27 14:59:37 CST 2008
node233: Mon Oct 27 14:59:37 CST 2008
node211: Mon Oct 27 14:59:38 CST 2008
pdsh> exit
pdsh軟件包還自帶了pdcp命令,能夠將文件拷貝到一組機器上,用法以下:
pdsh -w [SSH_OR_RSH]:[USERNAME]@node[211,232-234,240] SOURCE_FILE DESTINATION
想將文件x.org拷貝到上述機器的/home/maluyao/當中,可執行下列命令:
pdcp -w ssh:maluyao@node[211,232-234,240] x.org /home/maluyao/
若是要拷貝的是目錄,則需使用-r參數,例如將目錄abc拷貝到/home/maluyao,執行命令以下:
pdcp -r -w ssh:maluyao@node[211,232-234,240] abc /home/maluyao/
2、ClusterSSHclusterssh是另一個集羣管理軟件,能夠同時打開多個窗口進行操做。例如最簡單的用法可能以下:
cssh root@node211 root@node232 root@node234
不過當管理數以十計或數以百計機器的時候,在命令行就很難添加如此衆多的機器名了。這時的辦法是使用一個配置文件進行管理。首先生成一個配置文件,命令爲:
cssh -u > ~/.csshrc
這個~/.csshrc文件裏能夠定義如干個組,例如在此文件結尾處添加
clusters=ibm hp inspur
ibm=root@node211 root@node232 root@node233 root@node234 root@node240
hp=root@hp211 root@hp232 root@hp233 root@hp234 root@hp240
inspur=root@inspur211 root@inspur232 root@inspur233 root@inspur234 root@inspur240
這樣就可使用cssh hp 或cssh ibm來鏈接指定的羣組了。clusterssh的不便之處在於,管理機器越多,則打開的窗口越多,若是屏幕過小,就很是難受了。
3、musshmussh也是Fedora系統自帶的一款管理多主機的ssh軟件,和上述兩種軟件相似,能夠互爲補充。
mussh可讓你把本地的腳本,在多臺ssh目的機器上執行。格式以下
mussh [OPTIONS] <-h host.. | -H hostfile> [-c cmd] [-C scriptfile]
例如想在多個機器上執行hostname命令,能夠執行以下命令:
[tt@node111 ~]$ mussh -h root@node211 root@node212 -c hostname
root@node211: node211.hn.org
root@node212: node212.hn.org
若是想執行本地腳本test.sh,能夠執行以下命令:
[tt@node111 ~]$ mussh -h root@node211 root@node212 -C test.sh
另外還能夠經過創建hostfile的方式,使得命令執行時更爲簡化,例如在hostfile01.txt中寫入:
[email=root@node211]root@node211[/email] [email=root@node212]root@node212[/email]
[tt@node111 ~]$ mussh -H hostfile01.txt -c hostname
root@node211: node211.hn.org
root@node212: node212.hn.org
筆者平常負責管理不到兩百臺Linux系統,配合一些監控軟件,感受有上述幾個管理工具,基本就足夠了。徹底沒有必要使用商業管理軟件。
css