参考图
原理说明
提供一个原子配置模版,比如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