看新闻很累?看技术新闻更累?试试 下载InfoQ手机客户端 ,每天上下班路上听新闻,有趣还有料!
CDN提供商 Envato 通过 迁移 边缘网络,将旗下分布式拒绝服务(DDoS)和Web应用程序防火墙(WAF)系统整合至同一个供应商的平台上,并通过基于测试的自动化方法将基础架构变更与监视和持续反馈机制相结合,借此进行回归测试,实现零停机顺利迁移。
Envato主要提供内容交付网络(CDN)服务。与其他CDN提供商类似,他们也有一个由边缘服务器组成的网络。边缘网络可用于从距离用户地理位置最近的地方向用户交付内容。它可以看作是一种 代理缓存 ,首先从实际承载了内容的源服务器获取内容,随后交付给就近用户。包括Envato在内的大部分CDN厂商都会为边缘网络实施相应的安全措施,以防范DDoS和其他类型的攻击。
Envato的边缘网络服务器会进行DDoS清洗,同时可充当 WAF 。借此确保在边缘位置,而非源基础架构位置缓解安全威胁。此外这种方式还可将源位置与此类攻击隔离。这样的WAF通常是基于规则的,而规则源自对以往历史请求的分析结果。面对潜在攻击,需要通过拦截等方式降低请求速度,或强制进行人工介入,例如必须输入正确的验证码才能访问。包括 CloudFlare 、 Akamai 和 Fastly 在内很多CDN厂商都使用了类似的技术。DDoS清洗需要检测并缓解可能的DDoS流量。根据Akamai的最新互联网安全态势报告( PDF ),过去一年里,全球范围内DDoS和WAF攻击的数量分别增长了14%和10%。
Envato原本以菊花链的形式部署了这些系统,用户请求首先需要遍历DDoS清洗,随后遍历WAF系统,接下来才能抵达源位置。
图片来源: https://webuild.envato.com/blog/migrating-edge-providers/
针对所有这些系统,调试、新部署的推出、自动化机制方面的差异以及统一预警能力的缺失等因素使得Envato希望迁移为某种统一系统,通过一个系统实现DDoS清洗和WAF。在请求ID的生成以及潜在安全事件的预警等方面,这两个系统存在较大差异,这也使得调试工作变得更加困难。由于底层服务提供商各异,只有部分系统可以实现基础架构自动化,兼容性的实现变得极为困难,推出新的变更时需要付出巨大的精力。
对最终用户来说,迁移过程不能停机。迁移团队计划准备好测试套件,将变更发布给一组有限的测试用户,并在将这一过程中出现的所有问题顺利修复后,再全面发布给所有用户。使用测试套件主要是为了防止基础架构功能退化,具体做法与应用程序代码的升级和发布完全类似。他们使用了基于Ruby的框架RSpec实现行为驱动的开发(BDD),这种方式已被Envato工程团队广泛使用。该团队编写了一个名为HttpSpec的库,这个库运行在RSpec框架下,可处理HTTP交互(请求/响应)。此外他们还使用了Spotify的开源库 rspec-dns 。这一过程还使用了另一个名为 ServerSpec 的周边项目,该项目可以通过编写RSpec测试对服务器配置进行声明式测试。另外,他们还使用了一款内部工具对不同提供商的API调用响应进行转换,借此简化不同提供商之间的迁移操作。
最终,他们通过对不同流量以及对客户的潜在影响划分优先级,分阶段完成了迁移操作,并通过循环不断的自动化测试确保整个迁移过程顺利结束。
阅读英文原文: Migrating Edge Network Providers at Envato Without Downtime