Cluster ssh (cssh)是一個(gè)實(shí)用程序,它允許你從一個(gè)管理控制臺(tái)通過(guò)ssh管理多個(gè)服務(wù)器。它最初的設(shè)計(jì)是為了與組成HPC(高性能計(jì)算)集群的多個(gè)節(jié)點(diǎn)一起工作。這些節(jié)點(diǎn)通常配置相同,因此需要在每個(gè)節(jié)點(diǎn)上運(yùn)行相同的管理命令。使用Cluster ssh允許管理員在一個(gè)控制臺(tái)中鍵入一個(gè)命令,并將其復(fù)制到許多系統(tǒng)上。
作為一個(gè)SysAdmin,這個(gè)工具可以大大節(jié)省時(shí)間。在本文中,我們將討論如何安裝、配置和使用Cluster ssh。
如何安裝Cluster ssh
Cluster ssh的安裝非常簡(jiǎn)單,并且在大多數(shù)Linux發(fā)行版上都可以使用。使用您的軟件包管理器使安裝變得簡(jiǎn)單和快速。
Fedora安裝Cluster ssh
sudo dnf install clusterssh -y
sudo yum install clusterssh -y
sudo apt-get install clusterssh
如何配置Cluster ssh
HPC集群管理員經(jīng)常會(huì)有非常復(fù)雜的配置,涉及多個(gè)不同的文件、標(biāo)簽和選項(xiàng)。這樣復(fù)雜的配置不在本文的討論范圍內(nèi)(見(jiàn)資源部分)。
Cluster ssh可以通過(guò)它的全局配置文件,或者用戶特定的配置文件進(jìn)行配置。這兩個(gè)文件使用相同的格式,唯一的區(qū)別是一個(gè)影響所有用戶,另一個(gè)是特定于一個(gè)用戶。在本教程中,我們將對(duì)用戶配置進(jìn)行全部修改。
為了保證本文的精確性,我們將重點(diǎn)介紹最常用的配置,以便讓您快速上手和運(yùn)行。
全局配置文件
有三個(gè)全局配置文件。其中兩個(gè)更像是映射文件(如/etc/hosts或/etc/auto.master),而不是實(shí)際的配置文件。
/etc/clusters – 包含一個(gè)標(biāo)簽(群集名稱)和映射到指定標(biāo)簽的主機(jī)的列表。
/etc/tags – 與 /etc/clusters 的邏輯相反。這允許您指定一個(gè)主機(jī)作為多個(gè)標(biāo)記(群集)的成員。
/etc/csshrc – 此文件包含默認(rèn)配置覆蓋。
用戶特定的配置文件: /etc/csshrc – 這個(gè)文件包含默認(rèn)的配置覆蓋。
還有三個(gè)用戶特定的文件直接映射到全局文件。
$HOME/.clusterssh/clusters – 用戶特定版本的/etc/clusters。
$HOME/.clusterssh/tags – 用戶特定版本的/etc/tags。
$HOME/.clusterssh/config – 用戶對(duì)/etc/csshrc的特定版本。
配置群集文件
/etc/clusters (全局) 或 $HOME/.clusterssh/clusters (用戶專用)
群集文件的格式只是一個(gè)標(biāo)簽(群集名稱),后面是所述群集中的主機(jī)名稱,每個(gè)名稱之間用空格隔開(kāi)。
舉個(gè)例子,比如說(shuō)我們有六臺(tái)服務(wù)器,其中兩臺(tái)是開(kāi)發(fā)服務(wù)器,四臺(tái)是生產(chǎn)服務(wù)器。兩臺(tái)是開(kāi)發(fā)服務(wù)器,四臺(tái)是生產(chǎn)服務(wù)器。我們可以指定標(biāo)簽 “dev”,然后列出開(kāi)發(fā)服務(wù)器。然后對(duì)生產(chǎn)服務(wù)器進(jìn)行同樣的操作。
下面是一個(gè)例子集群文件。
# Development servers
dev savona@centosdev savona@fenrir
# Production Servers
prod savona@putorweb1 savona@putorweb2 savona@putorweb3 savona@putorweb4
注意:添加用戶名(user@host)是可選的。你可以在命令行中指定用戶名。如果你的用戶名在所有系統(tǒng)上都是一樣的,你可以完全排除它。
現(xiàn)在我們已經(jīng)創(chuàng)建了Cluster文件,我們只需使用標(biāo)簽為列出的兩臺(tái)開(kāi)發(fā)服務(wù)器打開(kāi)終端即可。
[savona@putor ~]$ cssh dev
上面的命令將打開(kāi)兩個(gè)XTerm窗口,每個(gè)開(kāi)發(fā)服務(wù)器在dev標(biāo)簽后列出一個(gè)。
配置標(biāo)簽文件
/etc/tags (全局) 或 $HOME/.clusterssh/tags (用戶專用)
如上所述,標(biāo)簽文件使用簇文件的相反格式。在標(biāo)簽文件中,您有一個(gè)主機(jī),后面跟著一個(gè)或多個(gè)標(biāo)簽,每個(gè)標(biāo)簽之間用空格分隔。這允許對(duì)集群進(jìn)行更精細(xì)的控制。
在這個(gè)例子中,假設(shè)我們想按服務(wù)器的操作系統(tǒng)和位置來(lái)分組。我們可以用一個(gè)主機(jī)開(kāi)始行,然后列出該主機(jī)應(yīng)該關(guān)聯(lián)的標(biāo)簽(Cluster)。這樣,我們就可以輕松地指定一個(gè)主機(jī)為多個(gè)標(biāo)記(Cluster)的成員。
下面是一個(gè)按操作系統(tǒng)和位置來(lái)劃分主機(jī)的例子。
savona@putorweb1 centos phila
savona@putorweb2 redhat denver
savona@putorweb3 redhat phila
savona@putorweb4 centos denver
我們有效地讓主機(jī)putorweb1成為兩個(gè)集群的成員。一個(gè)叫 centos,另一個(gè)叫 phila。現(xiàn)在我們可以通過(guò)這樣的標(biāo)簽連接到數(shù)據(jù)中心的所有主機(jī)。
[savona@putor ~]$ cssh phila
Opening to: savona@putorweb1 savona@putorweb3
同樣,我們也可以使用 centos 標(biāo)簽連接到所有的 centos 系統(tǒng)。
Opening to: savona@putorweb1 savona@putorweb4
集群ssh配置文件
/etc/csshrc (全局)或$HOME/.clusterssh/config (用戶專用)
主配置文件提供了一種覆蓋程序默認(rèn)行為的方法,其格式與其他配置文件類似,每行一個(gè)選項(xiàng)和值。其格式與其他配置文件類似,每行一個(gè)選項(xiàng)和值。下面是一個(gè)配置文件的例子。
# Close terminal window after 3 seconds
auto_close = 3
# Set initial console position
console_position = +0+200
# Hide console menu
hide_menu = 1
有關(guān)選項(xiàng)的完整列表,請(qǐng)參見(jiàn)資源部分的man頁(yè)面。
Cluster ssh的基本用法
使用Cluster SHH很簡(jiǎn)單,完全可以不用配置。
如您在上面的屏幕快照中所見(jiàn),我們通過(guò)運(yùn)行以下命令登錄了兩臺(tái)服務(wù)器:
cssh savona@fenrir savona@centosdev
也可以這樣縮短:
cssh -l savona fenrir centosdev
然后,Cluster ssh打開(kāi)兩個(gè)XTerm窗口,對(duì)于作為參數(shù)提供的每個(gè)主機(jī),一個(gè)窗口。它還打開(kāi)了一個(gè)管理控制臺(tái),您可以在其中輸入將在XTerm窗口中重復(fù)的命令。
如果您只想在特定主機(jī)中輸入內(nèi)容,就像單擊該窗口一樣簡(jiǎn)單。您可以單擊返回管理控制臺(tái)以繼續(xù)將擊鍵發(fā)送到所有終端窗口。
使用標(biāo)簽連接到服務(wù)器組
我們已經(jīng)在配置部分談到了使用標(biāo)簽(集群名稱)。要連接到集群文件或標(biāo)簽文件中定義的系統(tǒng),只需調(diào)用cssh和標(biāo)簽名稱。
[ savona @ putor?] $ cssh prod
注意:使用前,必須在集群文件或標(biāo)簽文件中配置標(biāo)簽。(請(qǐng)參閱上面的配置Cluster ssh)
Cluster ssh的管理控制臺(tái)
管理控制臺(tái)頂部有幾個(gè)菜單項(xiàng)。它們具有一些有用的選項(xiàng),可以提高您的Cluster ssh效率。
在文件菜單中,您將找到顯示歷史記錄。目的很明顯,但位置卻不顯眼。這將放下一個(gè)小窗口,并向您顯示鍵入命令的歷史記錄。
“主機(jī)”菜單提供諸如“重新平鋪窗口”之類的選項(xiàng),如果您移動(dòng),添加或刪除了主機(jī),它們將重新平鋪窗口。它還具有使某些窗口(或會(huì)話)處于活動(dòng)狀態(tài)或非活動(dòng)狀態(tài)的選項(xiàng)。在此菜單的最底部,還列出了當(dāng)前打開(kāi)的主機(jī),您可以將它們切換為活動(dòng)或不活動(dòng)。將主機(jī)設(shè)置為非活動(dòng)狀態(tài)可保持會(huì)話打開(kāi),但是您在管理控制臺(tái)中鍵入的任何內(nèi)容都不會(huì)發(fā)送到該會(huì)話。
使用“發(fā)送”菜單可以發(fā)送諸如遠(yuǎn)程主機(jī)名,用戶名,隨機(jī)數(shù)等之類的內(nèi)容。這些項(xiàng)目在每個(gè)會(huì)話中可能有所不同,因此可以簡(jiǎn)化此操作。(可選)可以通過(guò)添加$HOME/.clusterssh/send_menu文件來(lái)更改此菜單。
您可以使用命令行選項(xiàng)進(jìn)一步個(gè)性化您的連接。以下是一些受歡迎的選項(xiàng):
根據(jù)主機(jī)指定用戶
您可以使用-l(–username)選項(xiàng)指定要使用的用戶。
cssh -l username host1
當(dāng)您要使用不同的用戶帳戶快速連接到多個(gè)系統(tǒng)時(shí),這非常方便。簡(jiǎn)單地多次提供基本的ssh語(yǔ)法[用戶名] @ [主機(jī)],如下所示:
cssh savona@putorius ninja@putordb dax@defiant
注意:某些群集或標(biāo)記文件配置可能會(huì)破壞此功能。如果它沒(méi)有按預(yù)期工作,請(qǐng)檢查您的文件。
登錄后運(yùn)行命令
您可以使用-a(-action)選項(xiàng)在登錄時(shí)運(yùn)行命令。例如,運(yùn)行who命令以查看是否還有其他人登錄。
cssh -a ‘who’ host1 host2
調(diào)整終端窗口的大小以填充屏幕
您可以使用–fillscreen選項(xiàng)來(lái)調(diào)整窗口大小以使用整個(gè)屏幕。
cssh –fillscreen host1 host2 host3
您可以使用下面的資源部分中的鏈接找到命令行選項(xiàng)的完整列表。
編輯配置文件時(shí)應(yīng)格外注意。即使您認(rèn)為所有系統(tǒng)上的文件都是相同的,也可以使用單個(gè)注釋或空白行來(lái)刪除行號(hào)。
注意,在提交之前,請(qǐng)仔細(xì)檢查您的輸入和配置。很容易陷入麻煩。
Cluster ssh是用于系統(tǒng)管理的功能強(qiáng)大的工具。即使現(xiàn)在,當(dāng)我們繼續(xù)使用諸如Puppet和Ansible之類的工具進(jìn)行配置管理時(shí),我仍然可以找到很好的ole cssh的用途。
在本文中,我們涵蓋了您入門所需的大部分內(nèi)容。我們討論了安裝和配置Cluster ssh以及一些用法示例。如果您有任何評(píng)論,問(wèn)題或恐怖故事,我們很樂(lè)意在評(píng)論中聽(tīng)到。