- 介绍
- 安装
- 配置
- 互信认证
- 参数含义
- 基本使用
- 节点组
- 拷贝文件
介绍
Clush(Cluster Shell)是一个用于管理和执行集群操作的工具,它允许你在多台远程主机上同时执行命令,以便批量管理服务器。Clush 提供了一种简单而强大的方式来管理大规模的计算集群或服务器群。以下是 Clush 的一些关键特性和用法:
- 批量执行命令:Clush 可以同时在多台主机上执行相同的命令,无需手动登录到每个主机。
- 并行操作:Clush 具有并行执行命令的功能,可以提高效率并减少等待时间。
- 主机分组:你可以将主机分组,以便在特定组中执行命令。这对于对不同用途或角色的主机执行不同命令很有用。
- 输出聚合:Clush 可以收集和汇总来自所有主机的输出,使你可以更轻松地查看和分析结果。
- 配置文件:Clush 使用配置文件来定义主机列表和分组,以及其他参数,使配置变得简单。
- 支持多种连接方式:Clush 支持 SSH 和其他连接协议,可以根据需要进行配置。
- 可扩展性:Clush 可以通过插件进行扩展,以满足更多需求。
地址:https://github.com/cea-hpc/clustershell/
安装
centos上直接yum install clustershell
配置
安装完成后,你可以使用 clush 命令来执行命令在多个远程主机上运行。为了使 Clush 在远程主机上执行命令而无需手动输入密码或进行其他身份验证,最好建立 SSH 互信。
互信认证
为了建立 SSH 互信,你需要执行以下步骤:
1、生成 SSH 密钥对: 在执行 Clush 之前,确保在本地主机上生成 SSH 密钥对。已有则可以跳过这一步,你可以使用以下命令生成密钥对:
ssh-keygen -t rsa
这将生成一个公钥文件(默认为 ~/.ssh/id_rsa.pub)和一个私钥文件(默认为 ~/.ssh/id_rsa)
2、将公钥复制到远程主机: 使用 ssh-copy-id 命令将公钥复制到远程主机。例如:
ssh-copy-id user@remote_host
这将把你的公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中,允许你在不输入密码的情况下通过 SSH 连接到该主机。
3、测试 SSH 连接: 确保你可以通过 SSH 连接到远程主机,而不需要输入密码:
ssh user@remote_host
如果可以无需密码登录,互信已成功建立。
参数含义
选项 | 值 |
---|---|
-w | 后面跟主机节点,多个主机中间用英文逗号隔开 |
-x | 表示去掉某个节点进行操作。后面跟主机节点,多个主机中间用英文逗号隔开 |
-g | 后面指定设置的组 |
-a | 表示所有的组 |
-X | 表示去掉某个组进行操作,多个组之间用英文逗号隔开 |
-b | 相同输出结果合并 |
基本使用
clush -w host1,host2 "ls -l /tmp"
这将在 host1 和 host2 上运行 ls -l /tmp命令。例如:
节点组
节点数少且使用次数少的时候,可以直接在命令里写,节点多的时候可以将其配置为节点组,使用不同组的方式来管理主机。
vim /etc/clushershell/groups
写入格式: 组名:节点1 节点2 节点3
假设我们配置了一个db组,包含192.168.96.54,192.168.96.60两个节点:
执行
再加一个组:
拷贝文件
从本地拷贝到远程服务器组:
clush -bg web --copy /root/1.sh --dest /tmp/
从远程服务器拷贝到本地:
clush -bg web-rcopy /tmp/1.sh --dest /tmp/
注:在多台不同服务器上向本地拷贝回同一个名称的文件,会自动在文件名后面加上服务器ip以区分这些同名文件。