服务器运维笔记:先让系统变得可理解

服务器最麻烦的地方,不一定是故障本身。

更麻烦的是出事以后完全不知道从哪查:服务跑在哪个目录,配置是哪份,日志有没有写出来,容器之间怎么连,端口到底暴露了没有。平时不整理,故障时就只能靠猜。

目录先放清楚

我更习惯把一个服务相关的东西放在同一个地方,例如:

/data/service-name/
├── docker-compose.yml
├── config/
├── data/
└── logs/

这样备份、迁移、排障都简单一点。看到目录,大概就能知道这个服务由哪些部分组成。

日志要找得到

日志不一定要做得很复杂,但至少要能快速找到。

服务出问题时,先回答几个朴素的问题:

  • 容器有没有启动
  • 应用有没有报错
  • 反代有没有转发过去
  • 数据库能不能连上
  • 最近改过什么

这些问题问清楚,排障就从“感觉哪里不对”变成一步步验证。

网络别随便暴露

能不开放宿主机端口,我一般就不开放。

很多服务只需要在 Docker 网络里互通,再通过统一入口暴露出去。这样外部攻击面小一点,服务之间的关系也更好查。

小结

稳定不是一上来就把所有东西自动化。

先让系统看得懂。目录、日志、网络、配置都清楚了,后面再谈自动化才不会越做越乱。