一种基于s3 管理haproxy 配置的模式
参考图
原理说明
提供一个原子配置模版,比如haproxy 需要包含一个frontend 以及backend,同时也会包含一些global 以及default 配置(共用的)
frontend 以及backend 是成对出现的,我们基于数据库进行管理,每对实现一个版本以及状态管理,同时提供一个agent服务,扫描
db 配置状态,然后基于golang 的conf parse 包生存配置文件,然后存储s3,同时生成一个meta.json 文件(存储了对应版本的 frontend 以及backend 的文件关系),每个haproxy 的instance 部署一个agent (需要开发)基于数据状态同步s3 文件,然后进行haproxy 的reload
说明
以上是一个简单的实现,百度bfe 的配置管理模式是一个不错的参考,很值得学习,目前对于大量haproxy的配置稳定性以及reload 需要的时间是需要测试的
参考资料
https://cbonte.github.io/haproxy-dconv/2.5/management.html#3