网站流量有点顶不住,上周又被人恶意攻击了一天,这周花时间升级到了 弹性 IP + 负载均衡 + 后端 ECS
模式,保证 ECS 公网 IP 不会暴露。
在网上找相关解决方案的过程中,看到一篇文章推荐这样的配置:
CND (入口层)-> WAF (应用层防护)-> SLB (负载层)-> ECS (服务器源站) -> RDS (数据库)
- 域名 cname CDN
- CDN 指向 WAF
- WAF 指向 SLB
- SLB 负载 ECS
有点困惑,先排除不是阿里云软文的情况下,老实说,有必要前面加这么多层吗?咱们底层是 php,本来效率就不高,前面再加这么多层,会不会性能都牺牲到网络层上了?
大家公司的高负载网站架构是什么样的?能否分享一下?谢谢!
1
zwy100e72 2019-12-17 22:03:49 +08:00 1
CDN 缓存静态内容,还有能缓存的动态内容,也可以辅助隐藏真实的后端 IP
LB 方便扩缩容,还能辅助做灰度 网络开销本身就不应该是大头,加缓存就是为了降低后端负荷的 如果对延迟没什么要求,CDN 能做到全球覆盖就够了,后端服务器集群可以用 2-3 组做容灾备份; 否则就需要云服务器也全球部署、数据库之间相互同步,真正走向全球全分布式架构 要是技术上无法达到全球分布,那就要靠分区等别的方式降低单区负荷 |
2
mikeguan 2019-12-17 22:04:28 +08:00 via Android
cdn waf slb 每个功能都不一样的,有钱就都上。用户访问你服务器还走了很长的路呢不在乎等电梯这一会儿
|
3
czb 2019-12-17 23:23:38 +08:00 via Android
这个其实不会有太大影响 拿正常网络层的延时和 PHP 执行时间对比 再考虑上 CPU 和 IO 消耗 你会发现网络消耗其实不算什么 特别是在被攻击的环境下
|
4
MiaRunis 2019-12-17 23:45:16 +08:00 1
这不是软文,这就是一个很标准(某种程度上来说已经过时了的)高可用网络服务构架。
现在 CDN 和 WAF 通常直接由同一家提供(典型如 cloudflare ),对于安全性要求高的还会再加一层 ai 行为审查(典型如 visa/master 支付)。大陆这边 CDN 落后,很多判断行为并不能推到边缘节点直接处理,导致还得再加一层中心节点的 waf 判断。 目前看这层 waf 点反倒是整个构架的弱点,将来阿里云肯定也会逐渐前置到 cdn 边缘节点来降低压力。 对于规模足够大的动态站来说,正确实施多层缓存和流量阻挡,可以大大降低打到最后端 php 上的压力,反而加快用户访问速度。 |