在 Mac 上管理几十台服务器,我想我找到新的方式

75 阅读5分钟

在 Mac 上管理几十台服务器,我想我找到新的方式

因为工作的关系,我需要管理大量服务器,Linux 和 Windows 都有。也就是说,我天天在 Mac 上搞运维。

最早我的体验大概是这样的:

  • • ssh root@... 等等我先去查下 IP 是多少来着
  • • 上传文件命令叫什么来着?要不去搜个 SFTP 工具吧
  • • 测试环境是 146,生产是 147,测试是 146,生产是 147……等下,哪台是测试来着?

记不住啊,根本记不住。

偶尔我还要连一下 Windows,那感觉就是:
我好像需要一抽屉的工具才能干完一天的活:

  • • SSH 用一个工具
  • • Windows 远程桌面用另一个
  • • 传文件再开一个 SFTP 工具
  • • 偶尔还要打开 FTP / VNC

连久了之后,我最大的感受就是:

不是机器太多,而是工作流太乱。


想通的一件事:把服务器当「资产」来管理

后来我想通了一件事:

既然服务器数量只会越来越多,那就别指望靠记忆,
而是要像管理「资产」一样去管理这些连接。

我开始重新设计自己的运维方式:
如果有一个工具能做到下面几件事,我的痛点基本就解决了。


1. 先把服务器按照「语义」分组

环境分组比死记 IP 舒服多了

比如按环境分组:

  • • DEV:开发 / 自测环境
  • • TEST:测试 / QA
  • • STAGE:预发
  • • PROD:生产

看着就舒服,而且一眼就知道自己现在在哪个「世界」。大概就是这种感觉

图片

每个分组下面,用人能看懂的名字命名

比如在 PROD 分组下,可以这么命名:

  • • 计费服务:和收费、订单结算相关的服务
  • • 对外接口服务:给第三方或前端 App 提供接口的服务
  • • 后台管理系统:运营、客服等内部同事使用的后台
  • • 定时任务服务:跑定时任务、消息消费之类的后台服务

这里只是举例,你可以完全按照你的习惯来配,内网,外网,生产,这些都可以

这样做的好处是:

  • • 打开列表,一眼能看到「这是哪种环境」
  • • 搜索业务名,也能迅速定位到相关服务器
  • • 不再依赖 IP 记忆,而是依赖语义
  • • 分组用来表示环境(DEV / TEST / STAGE / PROD)
  • • 服务器命名用自然语言,比如:测试服务器,而不是一串 IP

2. 用户名、密码、密钥,都交给工具记

老实说,我真不想再记那么多服务器的用户名、密码和密钥了。

  • • 有的机器用密码登录
  • • 有的机器用 Key
  • • 有的机器还要跳板机
  • • 还有一些历史遗留账号根本记不住是谁起的名

这些东西如果还要靠「人脑缓存」,那肯定迟早出事故。
更合理的方式是:

  • • 在工具里为每台服务器配置好认证方式(密码 / 私钥 / 跳板机)
  • • 可以复用同一套 Key 到不同服务器
  • • 能统一管理、统一备份

只要点一下连接按钮,剩下的交给工具。
人只负责「选择目标」,而不是「搬运账号密码」。


3. 把高频操作收敛到一个工作台

回头看了一眼自己的日常,我每天重复做的事情其实就这么几类:

  • • 登录服务器看日志
  • • 拉配置文件 / 上传新版本
  • • 远程桌面连上去点几下
  • • 做一些简单的排查和运维操作

但以前,这些动作要在很多工具之间来回切换:

  • • SSH:Terminal 或 某个 SSH 客户端
  • • 传文件:SFTP 客户端
  • • 远程桌面:RDP 工具
  • • 偶尔配合一个 VNC 工具

一天下来,我脑子里记住的,不只是业务问题,还有一堆:

  • • 「这个工具的快捷键是啥来着?」
  • • 「上次窗口开在哪里?」
  • • 「这个客户端的复制粘贴为什么又和另一个不一样?」

切来切去,真的很烦。
于是我开始刻意把这些东西,往一个工具里收拢


4. 最后我选了「All-in-One」的方式

在 App Store 上搜 “一站式远程” 或者 “一站式运维",又试了好几款,最后我现在的习惯是用这一类 All-in-One 工具,把这些东西都放在一起:

图片

它大概需要做到这些:

  • • SSH / Telnet:常规终端操作
  • • SFTP / FTP:拖拽上传、多线程传输,解决文件相关的事
  • • RDP / VNC:远程桌面也在同一套窗口体系里
  • • 端口转发 / 跳板机:复杂网络拓扑配置一次,后面所有连接都可以复用

这样带来的提升是非常直接的:

  • • 上下文切换减少:不用在 N 个工具之间来回切
  • • 配置集中管理:跳板机、端口转发、Key 都在一个地方
  • • 统一习惯:快捷键、配色、字体,只需要记一套

我自己现在用的是 DartShell(主要跑在 macOS 上),
但你完全可以用任何你顺手的 All-in-One 工具,只要能做到这一点就行:

“一想到要连某台服务器,我的大脑只有一个反应:
打开同一个应用。”


小结

如果你也在 Mac 上维护一堆 Linux / Windows 服务器,可以试试这几件事:

  1. 1. 先把服务器资产化管理:按环境分组,用语义命名,而不是死记 IP
  2. 2. 统一管理认证信息:密码、密钥、跳板机全部交给工具记
  3. 3. 收敛高频操作到一个工作台:SSH、SFTP、RDP、VNC 尽量集中在一个应用里

当你不再被一堆工具和一堆 IP 折磨的时候,你会发现:
服务器数量没变,但脑子一下子轻松了很多。