Kubernetes是Google开源的容器集群管理系统。它构建Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,可看作是基于容器技术的PaaS平台。
本文旨在介绍上元信安的WAF架构,我们实现一整套基于Kubernetes的WAF集群架构。实现了高可靠性、弹性扩容、灰度升级等功能。
整个集群由以下三个部分组成:
l SLB负载均衡,可以云端的负载均衡器(比如阿里云的SLB),也可以是硬件或软件的4层负载均衡。由负载均衡把HTTP请求分发到不同的Node上。
l Master节点,负责整个集群的资源管理、调度、api-server等功能。
l Node处理由负载均衡分发的流量,通过内部的Nginx把流量分发到不同的WAF实例上,WAF工作在反向代理模式下,负责实现虚拟漏洞补丁、防CC、防刷单、防撞库等功能。
高可靠性
高可靠性是指,当发生单点故障的时候,不影响整个系统的正常运行。WAF集群的高可靠性由两部分组成:
l Master节点的高可靠性,由三个Master节点实现Master节点的HA功能。
l 当Node节点发生故障的时候,通过Kubernetes的健康检查机制把故障节点的WAF实例转移到其它节点。
弹性扩容
弹性扩容体现在两个层面:
l 当整个集群的处理能力不够的时候,可以动态的添加新的Kubernetes Node来处理扩展整个集群的处理能力。
l 当WAF实例的CPU使用超过一定比值的时候,会自动的新建新的WAF实例,当CPU使用降下来之后,又会动态的减少WAF实例。
灰度升级
借助于灰度升级功能,保证升级过程中业务不会中断,同时对于升级带来的问题也不会大规模暴露。