共计 3689 个字符,预计需要花费 10 分钟才能阅读完成。
作者
tomdu,腾讯云高级工程师,次要负责宙斯盾平安防护系统管控核心架构设计和后盾开发工作。
导语
宙斯盾 DDoS 防护系统作为公司级网络安全产品,为各类业务提供业余牢靠的 DDoS/CC 攻打防护。在黑客攻防反抗日益强烈的环境下,DDoS 反抗不仅须要“降本”还须要“增效”。随着云原生的遍及,宙斯盾团队继续投入云原生架构革新和优化,以晋升零碎的解决能力及效率。本文次要介绍宙斯盾防护调度平台上云过程实际与思考。
为什么上云?
云原生作为近年来相当热门的概念,无论在公司内各部门,还是公司外各大同行友商,都受到追捧。云原生波及技术包含容器、微服务、DevOps、继续交付等,这些新的技术和理念能带来哪些收益?在咱们看来,
资源共享,动静扩缩容——“降本”
以宙斯盾防护调度平台为例,因为以前申请的物理机资源还在服役期,所以以后大部分后盾服务还是运行在物理机。申请时会适当预留 buffer(资源耗费跟内部攻打威逼无关,波峰波谷相差可达十倍)。这部分 buffer 尽管作为 backup,但同时大部分工夫处于闲暇状态,物理机也不便于跨零碎、我的项目共享。在资源上云阶段,CVM 曾经对物理机做了虚拟化,肯定水平上实现资源共享。随着容器化治理平台的呈现,资源管制粒度更细。例如在 TKE 平台上,一个容器调配的资源能够准确到 0.1 核 CPU、1 MB 内存,依据负载随时扩缩容。同时所有资源作为一个大池子来共享,缩小资源节约。
容器化治理,疾速部署——“增效”
要晋升迭代速度,除了开发环节,测试、公布、运维都须要做优化。原来物理机部署时,须要运维同学手工或者通过专门的运维公布平台来实现公布,期间还可能因为机器环境的差别呈现公布失败或者异样,须要人工解决。当初通过容器化部署,能够保障服务的运行环境一致性,防止“雪花服务器”。同时借助容器治理平台,能够实现一键公布、疾速扩缩容,通用的容器容灾策略为服务的稳定性提供了根本保障。
怎么上云?
以后架构
如上图所示,DDoS 防护流程包含攻打检测(发现攻打)和攻打防护(攻打流量荡涤及失常流量回源)。
在这个过程中,还须要一个主控“大脑”来协调检测零碎和防护系统,以实现全流程的自动化解决——这个“大脑”就是防护调度平台。在检测到 DDoS/CC 攻打时,防护调度平台会自动化决策须要调用的防护设施机房、数量、以及须要下发的防护策略,遇上强反抗时还须要实时调整防护设施上的防护策略,其重要水平可见一斑。
以后防护调度平台整体架构如下图所示。
- 防护设施:分为 ADS(Anti-DDoS System)、HTTP CC、HTTPS CC 三大类,联合多年来团队在 DDoS/CC 攻防反抗上的积攒,别离集成了各种协定 / 场景下的自研防护算法。防护设施部署在寰球各地机房入口,在触发攻打告警后牵引并荡涤攻打流量,而后回源。其上部署有管控 agent,负责与后盾通信、并治理防护设施。
- 接入层:多点接入,内网、公网接入。管控 agent 启动后随机抉择一个可用接入进行 TCP 连贯。
- 后盾服务:多主 / 主备部署,向接入注册心跳,所有后盾申请通过接入散发、负载平衡,所有 agent 申请通过接入转发。
如果依照以后架构间接部署到 TKE 上,零碎是能够运行起来,然而因为机器部署和容器部署的个性不同,间接部署总会有些抵触、顺当的中央。思考计划时,咱们感觉以后架构不适应 TKE 部署的次要中央有:
- 服务发现:后盾服务依据预配置的接入 IP 列表注册心跳,容器化部署后 IP 切换频繁,通过配置的形式加载接入曾经不实用。
- 无状态:容器化部署能够做到依据负载疾速扩容,但须要服务做到齐全无状态能力达到齐全程度扩大。以后多主部署的服务都是无状态的,能够间接迁徙,但主备部署的服务则须要革新。
- 配置管理:以后按机器维度治理,与运行环境相干 / 无关的配置混在一起。
同时,借着这次上云的机会,咱们也心愿对系统架构做一次大的优化,接入公司成熟的公共服务如北极星名字服务、七彩石配置核心、智研,晋升研效。
上云架构
基于以后架构,除了把服务做镜像打包、迁徙到 TKE 上部署,同时对不适应的中央做革新、优化。革新后的大抵架构及流程如下:
- 服务发现:后盾服务全副接入北极星名字服务,向北极星注册实例、定期发送心跳,接入从北极星获取各类服务衰弱实例来散发申请。
-
无状态:以后零碎存在状态的场景次要有两类。
- 文件下载:次要是防护设施的策略文件下载,无状态化革新波及待下载文件在多个文件服务实例间同步。解决方案是抉择应用 CFS 来同步文件。
- 策略分包下发:策略太大时应用层做了分包,同一申请哈希到同一后盾策略服务实例。解决方案是申请中带上以后分包状态信息,任一策略服务实例能够解决且后果统一。
- 配置管理:与运行环境无关的配置,接入七彩石配置核心,保障同一类型部署的实例配置统一。
- 日志监控:迁徙到智研日志汇、监控宝。
两大“拦路虎”
如何平滑迁徙
以后物理机环境稳固运行,打算逐渐灰度、切量到 TKE 环境,因而会有一段时间是物理机 + TKE 混跑的状态。管控接入、后盾服务迁徙 TKE,对于防护设施 agent 是通明的。因为防护设施 agent 只会抉择一个可用接入建设连贯,即 agent 只会连到物理机环境或 TKE 环境,因而后盾服务与 agent 交互时,混跑状态下波及物理机环境和 TKE 环境互访的状况。这种状况 TKE 提供了灵便的配置反对。
在 TKE 上部署服务时,提供了两种网络模块:
- Global Route:VPC 内公有 IP,无奈从集群外拜访,不能够注册到 CMDB。开启随机端口映射后可从集群外拜访,并可绑定 CLB 和北极星。
- ENI IP:公司内可路由 IP,可从集群外拜访,能够注册 CMDB、CLB 和北极星。
在混跑灰度期间,接入部署抉择 ENI IP 的形式,物理机后盾服务拜访 TKE 接入跟拜访一般内网服务无异。迁徙实现后,后盾服务改用 Global Route 的形式,仅容许集群内互访。后盾服务间通过原生的 service 拜访,对外只通过 CLB 裸露服务。
一直变动的 IP
因为 DDoS 攻防反抗的业务个性,咱们长期跟 IP 打交道,对 IP 有一种非凡的情节。在外部交换中,咱们发现大家在迁徙 TKE 过程中都会遇到一些共性问题。其中,跟 IP 相干的问题就会常常被提及。
在物理机部署环境,机器 IP 是固定的且变动频率较低(几年一次的机器裁撤)。然而在 TKE 环境,重启一次服务,调配到的容器 IP、节点就可能变了,导致系统中依赖 IP 实现的性能无奈很好适应 TKE 环境。
拜访鉴权
比较简单的鉴权是基于源 IP 加白,如接口拜访、DB 拜访。对于接口拜访,咱们定义了一套基于 JWT 的接口鉴权标准,所有对外接口不再应用源 IP 加白的形式。对于 DB 拜访,以后是应用不限源的独立 DB 账号,并对权限做更细的划分(准确到表)。后续 DB 权限反对实时申请,当容器起来当前通过接口申请以后容器所在节点的拜访权限。
服务发现
原来的架构中,管控接入层实现了简略的服务注册、服务发现性能,后盾服务通过 IP 配置来注册、上报心跳。如果接入层不迁徙到 TKE、持续放弃绝对固定,那么这套计划还是可行的。然而,接入层迁徙到 TKE 后,本身的部署节点也在一直变动,因而须要一个独立与接入、绝对固定的服务注册与发现模块。集群内部署的服务能够应用 K8s / TKE 原生的 service,对于物理机和 TKE 混跑的状况则能够思考北极星名字服务。
服务裸露
这里蕴含两层含意,一个是该裸露给内部的服务如何保持稳定,另一个是不该裸露给内部的服务如何暗藏起来。
(1)裸露服务给内部
在物理机环境,机器裁撤导致服务 IP 变动就是经常出现的问题,通过域名、VIP 都能够解决。在 TKE 上,通过 CLB 来实现。
(2)暗藏外部服务
通过 VPC 内公有 IP,就能保障服务无奈从集群外拜访,实现隔离。
咱们零碎的最终目标是:所有对外服务通过接入层裸露进来,做好鉴权;外部的后盾服务都暗藏起来,保障安全性。
上云成果
防护调度平台上云之后,
(1) 在降低成本方面,预计资源使用率能够达到 50% 以上。之前为了保障 DDoS 攻打峰值时能失常运行而预留的一大部分资源,闲时放到整个大资源池里共享,忙时动静扩容。
(2) 在部署效率方面,部署、扩容耗时从天降到分钟。原来须要运维同学专人专职实现公布,上 TKE 后只需开发同学简略配置即可实现。同时,随着业务场景的疾速变动,通过 TKE 满足了咱们对高防、网关、第三方云等场景的疾速部署和扩容。
随着公司内云上服务越来越丰盛,通过上云和接入公共服务,优化宙斯盾防护调度平台的架构,从而晋升零碎扩展性和迭代效率。
另外,宙斯盾的外围能力是 DDoS、CC 防护,除了管控上云,咱们也正在摸索防护能力虚拟化的可能性,为云上各种业务、场景提供灵便、弹性的防护能力。
对于咱们
更多对于云原生的案例和常识,可关注同名【腾讯云原生】公众号~
福利:
①公众号后盾回复【手册】,可取得《腾讯云原生路线图手册》&《腾讯云原生最佳实际》~
②公众号后盾回复【系列】,可取得《15 个系列 100+ 篇超实用云原生原创干货合集》,蕴含 Kubernetes 降本增效、K8s 性能优化实际、最佳实际等系列。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!