这个 agent 的使用场景是 nginx 作为纯反向代理服务器时候,方便实现运维人员自动化运维 nginx 配置。
起因
调查过市面 nginx 的配置管理,发现都无法满足我自己的需求,也不想在别人代码基础上二次开发,于是就自己掳了一个。
优势
下面说说我个人感觉还可以的地方
- 支持 API 管理操作配置的同时支持运维人员上服务器手工介入修改配置,这两种方式的配置实现自动同步。
- 轻量级,开 1 个进程 worker,几千个配置也就不到 10M 内存占用,部署方便,就一个配置文件和一个 bin,静态编译之后是无依赖的。
- 支持 nginx 集群配置管理,配置变更之后会体现在 API 的状态上,只需使用一个简单的脚本去探测状态就可以实现集群配置的同步。
- 向下兼容历史配置,可能别的配置工具在已有大量配置的时候去上线介入会导致冲突问题。
- 每一次的操作都会落地到 nginx 的配置文件,reload 之前会检查 nginx 健康状况,是操作安全的,因为内存和配置原因,我自己运维的 nginx 不能频繁的 reload nginx,每次 reload 残留的 shutdown nginx 进程会占用大量内存。
- 代码很多参考了 nginx 源码,想学习 nginx 这种多进程网络服务模型架构是如何实现的可以看看,包括进程之间数据同步,主进程处理信号,管理子进程等多进程方面的知识,不过我也是半吊子水平,可以一起交流哈。
最后
我部署的服务器已经稳定运行一段时间了,感觉还是比较稳定的,欢迎大家提 issue。