Envato 不停机迁移边缘网络提供商

  • Hrishikesh Barua
  • 大愚若智

2018 年 4 月 15 日

话题:CDNDevOps语言 & 开发

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

CDN 提供商Envato通过迁移边缘网络,将旗下分布式拒绝服务(DDoS)和 Web 应用程序防火墙(WAF)系统整合至同一个供应商的平台上,并通过基于测试的自动化方法将基础架构变更与监视和持续反馈机制相结合,借此进行回归测试,实现零停机顺利迁移。

Envato 主要提供内容交付网络(CDN)服务。与其他CDN 提供商类似,他们也有一个由边缘服务器组成的网络。边缘网络可用于从距离用户地理位置最近的地方向用户交付内容。它可以看作是一种代理缓存,首先从实际承载了内容的源服务器获取内容,随后交付给就近用户。包括 Envato 在内的大部分 CDN 厂商都会为边缘网络实施相应的安全措施,以防范 DDoS 和其他类型的攻击。

Envato 的边缘网络服务器会进行DDoS清洗,同时可充当WAF。借此确保在边缘位置,而非源基础架构位置缓解安全威胁。此外这种方式还可将源位置与此类攻击隔离。这样的 WAF 通常是基于规则的,而规则源自对以往历史请求的分析结果。面对潜在攻击,需要通过拦截等方式降低请求速度,或强制进行人工介入,例如必须输入正确的验证码才能访问。包括CloudFlareAkamaiFastly在内很多 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

CDNDevOps语言 & 开发