发布于 1 天前
发布于 1 天前
鱼
更新于 19 小时前
0
0
部署版本: 8.8.0 -> 8.9.0 -> 8.9.1,社区商业版、主备模式
部署平台: 阿里云
部署实例: 通用计算型 4c8g
接入域名: 100+(目前仅上线非生产域名)
网络链路: DNS -> 阿里云NLB -> 雷池主备 -> 源站
1、体验优化
1) 统计报表
8.9.0版本之前点击"统计报表"页面会卡很久(新部署,没有接入任何网站),最新的8.9.1版本快了很多,但还是偶尔会卡顿。
如果是页面"渲染"之类的问题(个人不懂前端),譬如"地理位置3D"之类,是否可以改成默认更改的展示模式,或者做成可配置,方便用户按需配置(快或好看)。 -- 领导看了几次,就差没摔鼠标了
其次,下方的"数据统计",譬如 "外部来源域名"、"外部来源页面" 等统计数据是否可以添加一个"筛选"功能(同事反馈的)。
2) 防护应用
"防护应用"的搜索框,输入是真的卡。 最新版8.9.1如是。
"防护应用"分组里面的站点拖动,是真的慢(譬如20个站点,想拖到倒数第二,很慢很慢,偶尔还会弹回去,需重新拖动。 个人是14寸笔记本电脑8c16g 2.8k分辨率,会和分辨率有关吗?)。 最新版8.9.1如是。
另外,如果做成类似略缩图那样的"视图模式",会不会方便拖动/调整(排序)。 -- 总之操作尽可能快些,现在拖动如ppt
2. 功能需求
1) 防护应用 配置 的 批量操作
是否可以为一些通用的功能(非全局),增加"批量设置"方法,譬如批量操作如下功能:
- 启用、关闭上游服务器健康检测
- 启用、关闭访问、错误日志
- 切换自定义配置、跟随全局配置
- 启用、关闭HSTS
- 设置 TLS协议版本
- 启用、关闭 HTTP 自动跳转到 HTTPS
- 添加Header
...
2) 控制台用户管理
是否可以增加一个"拥有全部功能"的只读权限用户设置 (迫切需要,领导要看,但不能给他有任何修改的权限。如果说登录备节点,不合适,万一他登了主节点怎么办,又没有操作审计)。
3) 防护应用 全局日志过滤
是否有可能添加一个针对所有防护应用的全局日志过滤功能?
譬如所有防护应用对 指定 UA 的监控日志 关闭记录(需要启用日志,但又不想记录大量的监控日志的场景)。
4) 防护应用的"上游服务器"负载均衡
是否可以添加"权重"设置功能,如nginx upstream server 的 weight 配置,使后端站点维护更便捷。
3. 主备模式问题
1) 申请免费https证书
主备模式下,或因前置NLB调度关系,在 Let's Encrypt 做二次校验的时候,由于调度节点不同,导致验证失败,无法正常使用该功能。
我们采购雷池WAF需求之一,就是看上雷池WAF该功能。因为我们小站特别多,域名又不同,而免费证书只有90天有效,所以在证书管理上花费了较多时间,所以希望借助该功能释放掉这部分工作。 -- 这么多小站也不可能都买证书
Ps: 咨询过交流群,官方维护人员反馈临时下掉备节点,这是不合理的,首先不说影响所有接入的站点,证书在自动续期的时候,雷池的程序似乎也没有自动下掉备节点的能力。
2) CC防护-频率限制
主备模式下,由于前置NLB调度关系,且多节点防护数据不共享,会"破坏"掉这个限制(已测试)。
譬如主备2个WAF节点,限制"60s以内30次攻击封禁30分钟"。
因NLB关系,则变成了每个节点30次攻击,在轮询的"极限"情况下,可能需要在被攻击第59次才触发封禁。同时,如果有节点伸缩需求,会进一步"破坏"掉预设规则,导致功能不符预期。
3) 备节点间断性占用CPU资源
目前通过监控查看,主备CPU、内存资源、系统负载、磁盘读写等差异较大(目前生产还没切换上线)。
备节点的CPU资源占用(间断)比主节点的资源多10倍以上,内存则是主节点的2倍以上。如下图所示。
新版本8.9.1 CPU资源占用比 8.9.0 少了一些,但仍然占用大量资源,似乎不太合理,希望继续优化。
鱼
更新于 19 小时前
0
0
这里个人还想讨论一个问题,就是对于 雷池 的 主备模式,是否可能有更好的实现方式。
首先不可否认雷池WAF是一个很不错的产品(否则我们也不会采购),但对于雷池的主备模式,个人觉得有些"怪"。
以下并没有"针对"、"攻击"的意思,仅个人观点。
-- 为什么会"怪"?因为在部署完两节点的主备雷池后,感觉似乎回到了多年前的 inotify+rsync 同步的时代(不是说这种方式不好,更不是说雷池与这种同步方式完全相同。但对于雷池这种现代化系统来说,个人觉得这种同步模式可能不太合适)。
-- 这些观点的目的是希望雷池能更适合云、分布式系统、以及拥有更好的可用性和可扩展性。
首先,纵观雷池 主节点 上的服务,从容器持久化目录来看,luigi、mgt、postgres应该是有状态服务(pg里面包括雷池waf配置、接入的网站配置、攻击防护日志等数据,luigi.db、mgt.db没有了解)。
当部署完 备节点 后,上面同样存在这些服务,那就有了疑问,这些有状态服务的数据是怎么共享/同步的?
起初个人以为配置完雷池的主备模式后,这些有状态服务会变为主从复制(如pg主从),但经过测试和咨询后,实际并非如此。而是每个雷池节点上的有状态数据都是独立的(下面的官方链接也有类似说明),而"同步"功能是雷池独立实现的。
官方说明: https://rivers.chaitin.cn/discussion/d0eteq31s5rjh65s65kg#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6
也就是说,用户在不同的雷池节点,看到的防护日志、站点日志、统计、拦截、频率限制等数据,都是独立(不同)的。
这似乎就不太合理了,假设用户需要部署3-10个,或更多节点的时候,查询一个问题,或对某个误封禁IP解封,则需要一台一台登录上去查?既然能部署3-10个节点,那防护的站点量级或请求数据也许是比较大的,等找出来操作完可能已经造成了较大的影响。
其次,上面提到的雷池主备模式的问题(如"申请免费https证书"、"攻击防护"、"频率限制"、"统计报表"数据等),似乎也是这种同步方式导致的缺陷?如果后续还有类似功能的加入,是不是还要考虑规避方法?无穷无尽。
再则,假设购买授权部署了10个节点,10个节点上都部署了pg,都占用比主节点多几倍的资源,这似乎造成了较大的资源浪费?
且如果pg出现了瓶颈,是不是意味着10个节点上的pg可能会同时出现瓶颈(只是假设)?
这看起来极大的限制了雷池的扩展性(业务和架构似乎都是如此)。
以此来看,倒不如把服务拆开,假设商业版支持定制部署,如:
a. 拆pg。支持pg主从、集群、读写分离。不仅可以减少资源浪费,也可以提供更好的性能和扩展性
b. 拆luigi、mgt。有状态功能写共享存储,如pg、redis等,甚至nfs(如存储站点日志)
c. 为无状态服务提供的数据,还可以增加缓存加速,队列削峰等等等(毕竟除了站点之类的配置,其他功能要求实时的不多)
...
而如果是考虑授权问题。雷池WAF是绑定机器码的,拆开后,核心服务扩展需要绑定机器码,也可以解决授权问题?不仅于此,应该还有大量方法。
因此,个人感觉雷池的主备模式是否有可能有更好的实现方式?
雷池 - 小小
更新于 19 小时前
0
0
感谢反馈,各种优化项我们会评估一下。关于主从同步从节点的资源问题,我们在持续优化中,可以关注后续版本公告。