618 大促正在如火如荼进行中。《618大促来袭,浅谈如何做好大促备战》一文介绍了全方位保障大促高可用的方法论和技术手段,本文继续围绕网关,深入探讨大促场景下,如何做好网关高可用防护,将从以下几点逐一展开介绍:
- 网关做高可用防护的重要性
- MSE 云原生网关的“下一代网关架构”,在高可用防护上的巨大优势
- 使用 MSE 云原生网关的高可用防护实战(视频演示)
网关做高可用防护的重要性
大促场景下,使用网关做高可用防护为什么重要?一言以蔽之,网关具备将大促的各种不确定性因素转化为确定性因素的能力,并且这种能力是不可替代的。分别从三个方面来看:
第一点是应对流量峰值的不确定性,必须通过限流规则将不确定的流量变为确定。业务服务模块自己做限流很难实现这一点。因为实现限流防护有个前提,承载这突发流量的服务仍能保持正常的 CPU 负载。业务服务模块即使实现了应用层的 QPS 限流,在瞬时高并发场景下,仍可能因为网络层大量的新建连接导致 CPU 猛涨,限流规则也就形同虚设了。业务模块应该专注在应用层业务逻辑上,若要通过扩容去应对其不擅长的网络层开销,所需的资源成本是相当高的。而网关作为业务流量入口的地位,决定了其必须擅长应对高并发的网络流量,并且这块性能也是衡量网关能力的一个重要指标,应对高并发的性能越强,所需的资源成本就越低,将大促流量从不确定变为确定的能力就越强。
第二点是应对用户行为的不确定性,需要根据不同的大促场景,模拟用户行为进行多轮压测演练,提前发现系统的瓶颈和优化点。网关既是用户访问的流量入口,也是后端业务应答的最终出口。这决定了网关是模拟用户行为进行流量压测的必经一站,也决定了是观测压测指标评估用户体验的必须环节。在网关上边压测,边观察,边调整限流配置,对大促高可用体系的建设,可以起到事半功倍的效果。
第三点是应对安全攻击的不确定性。大促期间也通常是黑灰产活跃的时间,异常的刷单流量很可能触发限流规则,从而影响正常用户的访问。基于网关的流量安全防护能力,例如 WAF 等功能,通过识别出异常流量提前拦截,以及将异常 IP、cookie 自动加入黑名单等手段,既可以使这部分流量排除在限流阈值之外,也可以保障后端业务逻辑安全。这也是大促高可用防护必不可少的一环。
MSE 云原生网关的优势
架构优势
MSE 云原生网关实现了流量网关、微服务网关、安全网关三合一的“下一代网关架构”,和常见的多层网关架构对比如下所示:
- 常见多层网关架构
在这个架构中,用 WAF 网关实现安全能力,SLB 实现负载均衡能力,Ingress 网关实现集群入口网关能力(非 K8s 场景也会部署一层 Nginx),Zuul 实现微服务网关能力。面对大促的突发流量,这样的架构下,需要对每一层网关都进行容量评估,每一层网关都是潜在的瓶颈点,都可能需要进行扩容。这样造成的资源成本和运维人力成本都是巨大的。并且每多一层网关,就多一层可用性风险。
- MSE 云原生网关架构
使用 MSE 云原生网关,在保留 SLB 作负载均衡的基础上,只通过一层网关就实现了集群入口网关、WAF 网关、微服务网关的全部能力。应对大促场景,运维人员只需专注在 MSE 网关这一层上,就能做好所有入口流量的管理,实现高可用防护。这就是“下一代网关架构”,让一切回归简单,唯有简单方可依赖。
性能优势
如下图所示,MSE 云原生网关的吞吐性能是 Nginx Ingress Controller 的一倍,具体的性能对比分析可以参考《K8s 网关选型初判:Nginx 还是 Envoy?》一文。在大促的洪峰流量面前,网关的性能如果不够好,意味着企业要支付更多的 ECS 资源成本,同时还要为网关本身能否扛住流量操心,一旦“门神”失守,对业务造成的损失是不可估量的。
网关规格:16 核 32 G * 4 节点
ECS 型号:ecs.c7.8xlarge
高可用能力方面,MSE 云原生网关内置了 Alibaba Sentinel 高可用模块,历经多年双十一流量考验,提供了丰富的限流防护能力,包括流控规则、并发规则、熔断规则,可以全面保障后端业务高可用;此外,MSE 云原生网关还具备流量预热能力,通过小流量预热方法,可以有效解决大促场景下,资源初始化慢所导致的大量请求响应慢、请求阻塞问题,避免刚扩容的节点无法提供正常服务,影响用户体验。
压测便捷性方面,使用阿里云 PTS 的 MSE 网关压测场景,可以轻松发起对指定网关实例的压测。结合 MSE 云原生网关的限流和可观测能力使用,可以边压测,边观察,边调整限流配置,实现一站式的高可用防护体系建设。
安全能力方面,MSE 云原生网关除了集成了 WAF 的功能外,还在插件市场中提供了多种认证和安全防护插件。用户还可以使用多种语言(Golang/JS/Rust/C++等)编写自己的 Wasm 插件,实现自己业务场景下特殊的流量认证和防护逻辑,将异常流量在匹配限流规则之前就提前拦截,避免对正常流量访问产生影响。
MSE 云原生网关高可用防护实战
点击观看直播回放:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。