天天看點

如何批量管理叢集系統

當我們管理數以百計或者更多的叢集系統時,往往需要在每台機器上執行同樣的指令,或者拷貝同樣的檔案,這時,我們就可以考慮使用三個小工具,分别是pdsh、ClusterSSH和mussh。

在Fedora系統上,我們可以直接通過yum安裝這三個軟體。如果你使用的是centos,那麼你可以添加Fedora的源,而通過yum來安裝,非常友善.

Centos系統添加fedora源可以參考:

<a href="http://pizibaidu.blog.51cto.com/1361909/1318791" target="_blank">http://pizibaidu.blog.51cto.com/1361909/1318791</a>

安裝:

yum install clusterssh pdsh pdsh-rcmd-ssh pdsh-rcmd-rsh mussh

如果是其他Linux系統,也可以到下列站點下載下傳,

<a href="http://clusterssh.sourceforge.net/" target="_blank">http://clusterssh.sourceforge.net</a>

<a href="http://sourceforge.net/projects/pdsh" target="_blank">http://sourceforge.net/projects/pdsh</a>

<a href="http://www.sourceforge.net/projects/mussh" target="_blank">http://www.sourceforge.net/projects/mussh</a>

重點來了:

無論是clusterssh還是pdsh或mussh,我們都應該相應的設定無密碼登入目标系統,這方面的内容,有很多介紹,本文不再提及。

一、pdsh首先介紹一下pdsh,首先必須在管理節點和每台目标機器上都安裝pdsh軟體包。pdsh可以在指定的一組機器上執行同一個指令。例如需要管理下列機器,機器名分别為node1,node2,node3,node4,node5

指令格式如下:

pdsh -w [SSH OR RSH]:username@node[1,2-4,5][COMMAND]

例如希望以hadoop使用者的身份,在每台機器上執行hostname指令,使用ssh方法進行連接配接,則結果如下:

[hadoop@node1 root]$ pdsh -w ssh:hadoop@node[1-3] hostname

node3: node3

node2: node2

node1: node1

這樣可以非常清楚的看到每台機器上執行的結果。

另外一些時候,我們可以希望在每台機器上執行一組也許不确定的指令,這時我們可以省略[COMMAND]部分,用法如下:

[hadoop@node1 root]$ pdsh -w ssh:hadoop@node[1-3]

pdsh&gt; hostname

pdsh&gt; date

node3: 2013年 11月 02日星期六 10:13:40 CST

node2: 2013年 11月 02日星期六 10:13:40 CST

node1: 2013年 11月 02日星期六 10:13:40 CST

pdsh&gt; exit

[hadoop@node1root]$

pdsh軟體包還自帶了pdcp指令,可以将檔案拷貝到一組機器上,用法如下:

pdcp -w [SSH OR RSH]:[username@node[1,2-4,5]SOURCE_FILE DESTINATION

想将檔案1.txt拷貝到上述機器的/tmp目錄當中,可執行下列指令:

pdcp -w ssh:hadoop@node[1-4] 1.txt /tmp

如果要拷貝的是目錄,則需使用-r參數,例如将目錄test拷貝到/tmp,執行指令如下:

pdcp -r -w ssh:hadoop@node[1-4] test /tmp

二、ClusterSSHclusterssh是另外一個叢集管理軟體,可以同時打開多個視窗進行操作。例如最簡單的用法可能如下:

cssh root@node1root@node2 root@node3

不過當管理數以十計或數以百計機器的時候,在指令行就很難添加如此衆多的機器名了。這時的辦法是使用一個配置檔案進行管理。首先生成一個配置檔案,指令為:

cssh -u &gt; ~/.csshrc

這個~/.csshrc檔案裡可以定義如幹個組,例如在此檔案結尾處添加

clusters=ibm hp dell

ibm=root@node211 root@node232root@node233 root@node234 root@node240

hp=root@hp211 root@hp232 root@hp233root@hp234 root@hp240

dell=root@dell211 root@dell232 root@dell233 root@dell234 root@dell240

這樣就可以使用cssh hp或cssh ibm來連接配接指定的群組了。clusterssh的不便之處在于,管理機器越多,則打開的視窗越多,如果螢幕太小,就非常難受了。

<a href="http://blog.51cto.com/attachment/201311/024030849.jpg" target="_blank"></a>

三、musshmussh也是Fedora系統自帶的一款管理多主機的ssh軟體,和上述兩種軟體類似,可以互為補充。

mussh可以讓你把本地的腳本,在多台ssh目的機器上執行。格式如下

mussh [OPTIONS] &lt;-h host.. | -Hhostfile&gt; [-c cmd] [-C scriptfile]

例如想在多個機器上執行hostname指令,可以執行如下指令:

[hadoop@node1 root]$ mussh -h hadoop@node1 hadoop@node2 hadoop@node3 -chostname

hadoop@node1:node1

hadoop@node2:node2

hadoop@node3:node3

如果想執行本地腳本test.sh,可以執行如下指令:

[hadoop@node1 root]$ mussh -h hadoop@node1 hadoop@node2 hadoop@node3 –C test.sh#注意區分大小寫

另外還可以通過建立檔案的方式,使得指令執行時更為簡化,例如在server.txt中寫入:

hadoop@node1

hadoop@node2

hadoop@node3

[hadoop@node1 test]$ mussh -H server.txt -c hostname

[hadoop@node1test]$

<a href="http://blog.51cto.com/attachment/201311/024032470.jpg" target="_blank"></a>

個人覺得上面的三個工具,在批量配置叢集時非常有用.

本文轉自pizibaidu 51CTO部落格,原文連結:http://blog.51cto.com/pizibaidu/1318867,如需轉載請自行聯系原作者

繼續閱讀