服务器运维笔记:先让系统变得可理解
服务器最麻烦的地方,不一定是故障本身。
更麻烦的是出事以后完全不知道从哪查:服务跑在哪个目录,配置是哪份,日志有没有写出来,容器之间怎么连,端口到底暴露了没有。平时不整理,故障时就只能靠猜。
目录先放清楚
我更习惯把一个服务相关的东西放在同一个地方,例如:
/data/service-name/
├── docker-compose.yml
├── config/
├── data/
└── logs/
这样备份、迁移、排障都简单一点。看到目录,大概就能知道这个服务由哪些部分组成。
日志要找得到
日志不一定要做得很复杂,但至少要能快速找到。
服务出问题时,先回答几个朴素的问题:
- 容器有没有启动
- 应用有没有报错
- 反代有没有转发过去
- 数据库能不能连上
- 最近改过什么
这些问题问清楚,排障就从“感觉哪里不对”变成一步步验证。
网络别随便暴露
能不开放宿主机端口,我一般就不开放。
很多服务只需要在 Docker 网络里互通,再通过统一入口暴露出去。这样外部攻击面小一点,服务之间的关系也更好查。
小结
稳定不是一上来就把所有东西自动化。
先让系统看得懂。目录、日志、网络、配置都清楚了,后面再谈自动化才不会越做越乱。