公众号旧文

管理 10 台 100 台服务器,都用什么工具?

作者:胖子阅读 —

当服务器数量从 1 台变成 10 台时,一个新的问题出现了:

如果我要在所有服务器上执行同一个命令,该怎么办?

例如:

  • 查看所有服务器负载
  • 批量更新系统
  • 批量重启服务
  • 批量部署程序

如果一台一台 SSH 登录:

ssh server1
ssh server2
ssh server3
...

不仅慢,而且极容易出错。

于是,运维领域逐渐出现了一类工具:

批量 SSH 运维工具(Parallel SSH tools)。

它们可以让一条命令同时在多台服务器执行。

下面介绍几种常见方案。

1、pssh:最经典的并行 SSH 工具

pssh 是一个非常经典的工具,名字就是 Parallel SSH(并行 SSH)。

它的思路很简单:

  • 准备一个服务器列表
  • 并行 SSH 到所有服务器
  • 执行同一个命令

例如服务器列表:

hosts.txt
server1
server2
server3

执行:

pssh -h hosts.txt -i uptime

输出类似:

[1] server1:  20:31:04 up 10 days
[2] server2:  20:31:04 up 5 days
[3] server3:  20:31:04 up 2 days

优点

  • 使用非常简单
  • 支持并发执行
  • 输出清晰
  • 几乎所有 Linux 发行版都有

缺点

  • 功能比较基础
  • 不适合复杂运维任务
  • 项目活跃度已经不高

适合场景

  • 小规模服务器(10~50 台)
  • 临时批量执行命令
  • 简单运维操作

2、pdsh:很多老运维的最爱

pdsh 是另一款历史很悠久的并行运维工具。

pdsh 的设计目标是:

极致的速度和并发能力。

例如:

pdsh -w server[1-10] uptime

输出:

server1: 20:31:04 up 10 days
server2: 20:31:04 up 5 days
server3: 20:31:04 up 2 days

优点

  • 速度非常快
  • 并发能力强
  • 支持大量服务器
  • 在 HPC 和集群环境很常见

缺点

  • 配置稍复杂
  • 输出格式较原始
  • 新手不太友好

适合场景

  • 大规模服务器集群
  • HPC 计算集群
  • 运维经验较丰富的团队

3、ClusterShell:集群运维的利器

Clustershell 是一个 Python 编写的集群管理工具。

它最大的特点是:

自动合并相同输出。

例如执行:

clush -w node[1-10] uname -r

如果 10 台服务器内核版本相同,它会显示:

node[1-10]: 6.1.0

而不是重复输出 10 次。

优点

  • 输出自动合并
  • 并发效率高
  • 支持复杂集群操作

缺点

  • 学习成本稍高
  • 配置比 pssh 稍复杂

适合场景

  • 大型服务器集群
  • HPC / AI 计算集群
  • 需要管理数百台服务器

4、Ansible:现代运维自动化标准

Ansible 可以说是目前 最流行的运维自动化工具之一。

与前面的工具不同,Ansible 不只是批量 SSH,它更像一个 完整的自动化运维平台。

例如执行:

ansible all -m command -a "uptime"

输出:

server1 | SUCCESS | rc=0 >>
 20:31:04 up 10 days

Ansible 还支持:

  • 自动部署程序
  • 自动安装软件
  • 自动配置服务器
  • 自动更新系统

它通过 Playbook(YAML 配置) 来定义运维流程。

例如:

- hosts: servers
  tasks:
    - name: install nginx
      apt:
        name: nginx
        state: present

优点

  • 功能非常强大
  • 无需 agent(只需要 SSH)
  • 运维行业标准
  • 支持自动化部署

缺点

  • 学习成本较高
  • 对小规模服务器来说有点重

适合场景

  • 服务器规模较大(50+)
  • DevOps 自动化部署
  • 企业级运维

不同工具的定位

可以把这些工具理解为一个演进关系:

工具 类型 适合规模
pssh 轻量批量 SSH 10~50 台
pdsh 高性能批量 SSH 50~500 台
ClusterShell 集群管理工具 100+ 台
Ansible 自动化运维平台 企业级

简单来说:

  • 临时批量命令 → pssh
  • 大规模并发 SSH → pdsh
  • 集群环境 → ClusterShell
  • 自动化运维 → Ansible

最后,给大家看一下我目前的机器:

100.64.0.1
   │
   │  SSH
   |   ▼
jp-iij (100.64.0.4)  ← 跳板机
   │
   ├── 100.64.0.3   bj-ecs
   ├── 100.64.0.5   jp-hyper2
   ├── 100.64.0.9   lax
   ├── 100.64.0.10  lax-lite
   ├── 100.64.0.11  de-bgp
   ├── 100.64.0.15  usmci-v6-2
   ├── 100.64.0.16  usmci-v6
   ├── 100.64.0.17  us-gcp
   └── 100.64.0.18  us-gcp2

1月23日,我买了第一台,转眼俩月过去了,现在我已经有了10台。