Hostinger 网络验证的演变
网络是基础设施中最敏感的部分。为了保持运行并减少停机时间,您需要在将新更改部署到生产环境之前验证您的配置。
本文提供了有关我们如何测试和验证网络更改以及这种演变如何提高我们和客户对 Hostinger 服务的信任程度的信息。
背后的原因
2015 年,我们 Hostinger 没有任何网络自动化。相反,每个数据中心有几个核心路由器(Cisco 6500 系列)和许多相当 不受管理的HP 交换机 来提供基本的 L2 连接。很简单,没有高可用性、故障域大、没有备用设备等。
当时 Hostinger 没有版本控制,这意味着配置保存在某个地方或某人的计算机上。因此,这就引出了下一个问题:我们如何在没有自动化、验证和部署的情况下运行这个网络?
我们如何验证配置是否良好?决不。只需观察一下,直接通过 CLI 推送更改并祈祷即可。甚至回滚设置功能也不可用。带外网络不存在。如果你切断了连接,它就会丢失,就像 Facebook 最近所做的那样,只有物理访问才能帮助你恢复它。
电缆
戴纽斯·萨卡林斯卡斯摄
设计和实施都在两个人的头脑中。生产网络的改变是痛苦的并且容易出现人为错误。我们对基本警报规则、一些流量图表和错误的监控很差。没有集中的注册系统,但这绝对比没有好。可以毫不夸张地说,如今,小企业都使用这种简单的方法来监控网络。如果它运行良好并且足够好,就不要碰它。
您对网络状态了解越少,遇到的问题就越少。总的来说,我们没有任何内部或外部工具来从根本上做到这一点。
Hostinger 的网络验证解决方案
2016 年,我们开始开发 Awex,这是一项仅支持 IPv6 的服务。由于它是从头开始构建的,因此我们从第 0 天开始实现自动化。一旦我们注意到自动化的良好影响,我们就开始使用 Cumulus Linux 构建新的数据中心,使用 Ansible对其进 加拿大电报电话号码列表 行自动化,并使用 Jenkins 部署更改。
简化的工作流程是:
做出改变。
提交更改,在 Github 上创建拉取请求。
等待其他人的评论。
合并拉取请求。
等待 Jenkins 将更改部署到交换机。
该方案的缺点是配置更改是自动化的,但在部署之前未经验证甚至测试。这可能会导致爆炸半径发生严重故障。例如,如果实施了错误的环回地址或路由映射,则可能会导致 BGP 会话混乱或使整个网络陷入混乱。
添加自动化和验证的主要原因是节省调试生
产中实际问题的时间、减少停机时间并使最终用户更满意。但是,您应该始终问自己:自动化的界限在哪里?自动化何时停止增加价值?如何使自动化流程达到有意义的程度。
从那时起,我们就专注于如何进一步改进这个流程。当您的网络不断增长并且构建越来越多的数据中心时,维护变得更加困难,这会减慢推动生产变革的过程。
一如既往,慢速与慢速之间需要权衡 。更安全的部署。在 Hostinger,我们以客户为中心,这清楚地表明我们应该更喜欢较慢的流程管理,从而减少计划外停机。
每一次失败都会给你一个新的教训,告诉你如何改进事情并防止未来发生同样的损失。这就是为什么验证对于现代网络至关重要。
虽然大多数更改基本上涉及测试 OSI 模型的 2、3、4、7 层,但总有 Layer8 需要测试的请求,这不是本博文的范围。
几年后,我们已经拥有一些完全自动化的数据中心。在那段时间,我们开始使用 CumulusVX + Vagrant 进行部署前测试。现在的主要目标是比客户报告的速度更快地检测错误。
部署前测试
因此,当在 Github 上创建拉取请求时,预部署阶段会启 网络验 动一个大型虚拟数据中心并运行大量单元测试。当然还有一些集成测试,以了解交换机如何相互交互。或者模拟其他现实场景,例如将服务器连接到 EVPN,并查看同一 L2VNI 上的两台主机是否 文莱领先 可以在两个单独的机架之间进行通信。这大约需要 30 分钟。虽然我们不会每天推送数十个更改,但这已经足够了。
此外,我们还在部署前和部署后阶段对生产设备进行测试。这使我们能够检测到 所有营销人员都必须知道的应避免的垃圾邮件触发词 合并前生产处于绿色状态以及更改后突然出现问题时的差异。
已知问题可能潜伏在生产几个月中,如果没有适当的监控,就无法正确检测到。或者更糟糕的是,即使你认为他们没问题,他们也可能表现得不正确。