Cluster ssh (cssh)是一个实用程序,它允许你从一个管理控制台通过ssh管理多个服务器。它最初的设计是为了与组成HPC(高性能计算)集群的多个节点一起工作。这些节点通常配置相同,因此需要在每个节点上运行相同的管理命令。使用Cluster ssh允许管理员在一个控制台中键入一个命令,并将其复制到许多系统上。
作为一个SysAdmin,这个工具可以大大节省时间。在本文中,我们将讨论如何安装、配置和使用Cluster ssh。
如何安装Cluster ssh
Cluster ssh的安装非常简单,并且在大多数Linux发行版上都可以使用。使用您的软件包管理器使安装变得简单和快速。
Fedora安装Cluster ssh
sudo dnf install clusterssh -y
sudo yum install clusterssh -y
sudo apt-get install clusterssh
如何配置Cluster ssh
HPC集群管理员经常会有非常复杂的配置,涉及多个不同的文件、标签和选项。这样复杂的配置不在本文的讨论范围内(见资源部分)。
Cluster ssh可以通过它的全局配置文件,或者用户特定的配置文件进行配置。这两个文件使用相同的格式,唯一的区别是一个影响所有用户,另一个是特定于一个用户。在本教程中,我们将对用户配置进行全部修改。
为了保证本文的精确性,我们将重点介绍最常用的配置,以便让您快速上手和运行。
全局配置文件
有三个全局配置文件。其中两个更像是映射文件(如/etc/hosts或/etc/auto.master),而不是实际的配置文件。
/etc/clusters – 包含一个标签(群集名称)和映射到指定标签的主机的列表。
/etc/tags – 与 /etc/clusters 的逻辑相反。这允许您指定一个主机作为多个标记(群集)的成员。
/etc/csshrc – 此文件包含默认配置覆盖。
用户特定的配置文件: /etc/csshrc – 这个文件包含默认的配置覆盖。
还有三个用户特定的文件直接映射到全局文件。
$HOME/.clusterssh/clusters – 用户特定版本的/etc/clusters。
$HOME/.clusterssh/tags – 用户特定版本的/etc/tags。
$HOME/.clusterssh/config – 用户对/etc/csshrc的特定版本。
配置群集文件
/etc/clusters (全局) 或 $HOME/.clusterssh/clusters (用户专用)
群集文件的格式只是一个标签(群集名称),后面是所述群集中的主机名称,每个名称之间用空格隔开。
举个例子,比如说我们有六台服务器,其中两台是开发服务器,四台是生产服务器。两台是开发服务器,四台是生产服务器。我们可以指定标签 “dev”,然后列出开发服务器。然后对生产服务器进行同样的操作。
下面是一个例子集群文件。
# Development servers
dev savona@centosdev savona@fenrir
# Production Servers
prod savona@putorweb1 savona@putorweb2 savona@putorweb3 savona@putorweb4
注意:添加用户名(user@host)是可选的。你可以在命令行中指定用户名。如果你的用户名在所有系统上都是一样的,你可以完全排除它。
现在我们已经创建了Cluster文件,我们只需使用标签为列出的两台开发服务器打开终端即可。
[savona@putor ~]$ cssh dev
上面的命令将打开两个XTerm窗口,每个开发服务器在dev标签后列出一个。
配置标签文件
/etc/tags (全局) 或 $HOME/.clusterssh/tags (用户专用)
如上所述,标签文件使用簇文件的相反格式。在标签文件中,您有一个主机,后面跟着一个或多个标签,每个标签之间用空格分隔。这允许对集群进行更精细的控制。
在这个例子中,假设我们想按服务器的操作系统和位置来分组。我们可以用一个主机开始行,然后列出该主机应该关联的标签(Cluster)。这样,我们就可以轻松地指定一个主机为多个标记(Cluster)的成员。
下面是一个按操作系统和位置来划分主机的例子。
savona@putorweb1 centos phila
savona@putorweb2 redhat denver
savona@putorweb3 redhat phila
savona@putorweb4 centos denver
我们有效地让主机putorweb1成为两个集群的成员。一个叫 centos,另一个叫 phila。现在我们可以通过这样的标签连接到数据中心的所有主机。
[savona@putor ~]$ cssh phila
Opening to: savona@putorweb1 savona@putorweb3
同样,我们也可以使用 centos 标签连接到所有的 centos 系统。
Opening to: savona@putorweb1 savona@putorweb4
集群ssh配置文件
/etc/csshrc (全局)或$HOME/.clusterssh/config (用户专用)
主配置文件提供了一种覆盖程序默认行为的方法,其格式与其他配置文件类似,每行一个选项和值。其格式与其他配置文件类似,每行一个选项和值。下面是一个配置文件的例子。
# Close terminal window after 3 seconds
auto_close = 3
# Set initial console position
console_position = +0+200
# Hide console menu
hide_menu = 1
有关选项的完整列表,请参见资源部分的man页面。
Cluster ssh的基本用法
使用Cluster SHH很简单,完全可以不用配置。
如您在上面的屏幕快照中所见,我们通过运行以下命令登录了两台服务器:
cssh savona@fenrir savona@centosdev
也可以这样缩短:
cssh -l savona fenrir centosdev
然后,Cluster ssh打开两个XTerm窗口,对于作为参数提供的每个主机,一个窗口。它还打开了一个管理控制台,您可以在其中输入将在XTerm窗口中重复的命令。
如果您只想在特定主机中输入内容,就像单击该窗口一样简单。您可以单击返回管理控制台以继续将击键发送到所有终端窗口。
使用标签连接到服务器组
我们已经在配置部分谈到了使用标签(集群名称)。要连接到集群文件或标签文件中定义的系统,只需调用cssh和标签名称。
[ savona @ putor?] $ cssh prod
注意:使用前,必须在集群文件或标签文件中配置标签。(请参阅上面的配置Cluster ssh)
Cluster ssh的管理控制台
管理控制台顶部有几个菜单项。它们具有一些有用的选项,可以提高您的Cluster ssh效率。
在文件菜单中,您将找到显示历史记录。目的很明显,但位置却不显眼。这将放下一个小窗口,并向您显示键入命令的历史记录。
“主机”菜单提供诸如“重新平铺窗口”之类的选项,如果您移动,添加或删除了主机,它们将重新平铺窗口。它还具有使某些窗口(或会话)处于活动状态或非活动状态的选项。在此菜单的最底部,还列出了当前打开的主机,您可以将它们切换为活动或不活动。将主机设置为非活动状态可保持会话打开,但是您在管理控制台中键入的任何内容都不会发送到该会话。
使用“发送”菜单可以发送诸如远程主机名,用户名,随机数等之类的内容。这些项目在每个会话中可能有所不同,因此可以简化此操作。(可选)可以通过添加$HOME/.clusterssh/send_menu文件来更改此菜单。
您可以使用命令行选项进一步个性化您的连接。以下是一些受欢迎的选项:
根据主机指定用户
您可以使用-l(–username)选项指定要使用的用户。
cssh -l username host1
当您要使用不同的用户帐户快速连接到多个系统时,这非常方便。简单地多次提供基本的ssh语法[用户名] @ [主机],如下所示:
cssh savona@putorius ninja@putordb dax@defiant
注意:某些群集或标记文件配置可能会破坏此功能。如果它没有按预期工作,请检查您的文件。
登录后运行命令
您可以使用-a(-action)选项在登录时运行命令。例如,运行who命令以查看是否还有其他人登录。
cssh -a ‘who’ host1 host2
调整终端窗口的大小以填充屏幕
您可以使用–fillscreen选项来调整窗口大小以使用整个屏幕。
cssh –fillscreen host1 host2 host3
您可以使用下面的资源部分中的链接找到命令行选项的完整列表。
编辑配置文件时应格外注意。即使您认为所有系统上的文件都是相同的,也可以使用单个注释或空白行来删除行号。
注意,在提交之前,请仔细检查您的输入和配置。很容易陷入麻烦。
Cluster ssh是用于系统管理的功能强大的工具。即使现在,当我们继续使用诸如Puppet和Ansible之类的工具进行配置管理时,我仍然可以找到很好的ole cssh的用途。
在本文中,我们涵盖了您入门所需的大部分内容。我们讨论了安装和配置Cluster ssh以及一些用法示例。如果您有任何评论,问题或恐怖故事,我们很乐意在评论中听到。