在 7.x 专业版雷池中增加了一个配置同步的功能,使用配置同步功能,可以将主节点的配置分发给从节点,从而实现 WAF 的多活。

本文以 Version 7.1.1-lts 为例进行测试,具体绑定操作参考配置同步文档

配置很容易跟随文档操作即可。使用该功能只要保证从可以访问主,主从版本授权和版本一致即可。无架构和配置要求。

测试环境说明

测试环境是河北地域的一台 amd64 的节点作为主,拉了一台在北京地域的 arm64 的节点作为从。
20241106232708

配置同步机制

当从节点被主节点纳管后,从节点将只读。如果从节点主机上有配置,则主节点的配置会覆盖从节点的配置。
20241106232928
不过这里很奇怪。从节点仍然保留了所有可编辑的选项,只有在提交时才会提示只读。整体来说,雷池目前对主从节点的标识还不够明显(目前只有系统设置中可见配置同步状态和当前节点是主还是从)。
如果能对从节点收起配置项,只保留日志统计等功能,或在页面显著位置可以标识出节点同步状态,可能从体验上会更好一些。可以在一定程度上减少用户的误操作。

配置同步的范围是管理端所有的配置信息,每分钟从节点会向主节点请求一次配置文件。配置同步不会同步用户在系统后台添加的自定义配置文件,也不会同步日志和统计信息。所以如果你需要查看某个 WAF 节点的日志情况或者访问统计,还是需要登录对应的节点进行查看。顺便说一句,配置同步会将主节点的密码同步给从节点,所以登录从节点,也需要使用主节点的密码。

根据同步机制,如果在主节点上更新了配置,最快会在 1 分钟左右同步给从节点并生效。由于是从节点发起请求同步主,所以只要从可以访问主即可,不需要双向互通。

从设计机制上,由于两台 WAF 只做配置同步,两台机器没有网络层或业务上的主备关系,两台机器形成了天然的双活状态。我们可以通过 DNS 的方式实现流量的自由调度,例如 GLSB 等。

异常处理

1、当从节点无法访问主节点,我手动 shutdown 了主节点的雷池服务,来模拟这个场景。
20241106235743
此时,从节点仍然无法编辑,且同步状态变为未同步,最近同步时间也不更新了。
PS:这里似乎从节点读主节点的 NGINX 状态不太对。

2、主节点恢复了业务。从节点会在下一个同步周期和主节点同步。
20241107000032

3、从节点挂了。主节点显示从节点状态为异常,同步状态为未同步,最近同步时间将不再更新。
20241107000246
主节点编辑配置不受影响。

4、从节点恢复了业务。从节点会在下一个同步周期和主节点同步,获取最新配置。
20241107000526

5、解绑
当在主节点剔除某个从节点后,从节点会在下个同步周期,断开与主节点的联系,变成一个独立节点。