关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

使用Cluster SSH同时管理多个Linux服务器

发布时间:2023/9/16 13:44:51
香港云服务器

Cluster SSH (cssh)是一个实用程序,它允许你从一个管理控制台通过SSH管理多个服务器。它最初的设计是为了与组成HPC(高性能计算)集群的多个节点一起工作。这些节点通常配置相同,因此需要在每个节点上运行相同的管理命令。使用Cluster SSH允许管理员在一个控制台中键入一个命令,并将其复制到许多系统上。

作为一个SysAdmin,这个工具可以大大节省时间。在本文中,我们将讨论如何安装、配置和使用Cluster SSH。

如何安装Cluster SSH

Cluster SSH的安装非常简单,并且在大多数Linux发行版上都可以使用。使用您的软件包管理器使安装变得简单和快速。

Fedora安装Cluster SSH

sudo dnf install clusterssh -y

CentOS/Red Hat安装Cluster SSH。

sudo yum install clusterssh -y

Ubuntu/Debian安装的集群SSH

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 系统。

[savona@putor ~]$ cssh 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文件来更改此菜单。

使用cssh命令行选项

您可以使用命令行选项进一步个性化您的连接。以下是一些受欢迎的选项:

根据主机指定用户

您可以使用-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以及一些用法示例。如果您有任何评论,问题或恐怖故事,我们很乐意在评论中听到。