Facebook周二宣布推出两款扩展其DIY网络产品组合的新工具:Katran负载均衡软件和构建骨干网络的自动化系统,Zero Touch Provisioning。
Facebook七年前开创了Open Compute Project,专注于开放数据中心组件设计。它的软件开发人员也愿意分享他们开发软件的工作细节。本月,Facebook开源PyTorch,这是机器学习和人工智能项目的软件。
虽然PyTorch仍有一些问题尚待解决,但Katran已经过测试并准备就绪。
根据Facebook制作工程师Nikita Shirokov和软件工程师Ranjeeth Dasineni撰写的博客,Katran旨在解决公司以前负载均衡软件中的缺点,Katran主要来自开源软件,并已使用了四年。
博客中写道,Facebook的负载均衡器必须符合以下标准。首先,为了提高性能和灵活性,它需要能够Linux上运行。然后它必须与其他服务器服务共存,以消除对负载均衡器的专用服务器需求。它还必须允许低中断维护,因为Facebook的维护和升级“是一种规范,而不是例外。”最后,它需要提供简单的仪器和调试,以减少调试和解决问题的时间。
Shirokov和Dasineni表示,他们的第一个软件定义的负载均衡器“没有达到与其他服务共存的目标,尤其是后端。”
为了克服这个缺点,Facebook针对Katran完全重新设计了转发平面,其中包括两项最新的Linux内核开发:提供高性能可编程网络数据通路的XDP和扩展的Berkeley Packet Filter eBPF。
Katran部署在Facebook的后端服务器上,它帮助Facebook提高了网络负载均衡的性能和可扩展性,并且“在没有传入数据包时减少无用循环,例如繁忙循环”。他们写道,“通过与开源社区分享,我们希望其他人可以提高其负载均衡器的性能,并且还可以将Katran用作未来工作的基础。”
博客中列出了为了提高性能而引入Katran的一些“限制”,并说:“我们发现这些限制是相当合理的,而且并没有阻止我们的部署。“
Katran可以在GitHub的GNU通用公共许可证v2.0下载。
Facebook的Zero Touch Provisioning工具的细节来自Facebook的骨干自动化工具工程经理James Quinn编写的博客,以及Facebook网络工程师Joe Hrbek,Brandon Bennett和David Swafford指出,Facebook的网络跨越大陆并包含两个并行的IP骨干网络。
Facebook在构建网络时遇到了与解决负载平衡相似的问题,它所使用的供应系统无法胜任处理所需任务的规模和复杂性。
“最终,这些挑战促使Facebook的网络工程师为网络部署工作开发了一种全新的方法,”博客中写道。“我们称之为自动售货机(Vending Machine),这个名字的灵感来自于分配糖果和软饮料的机器。就Facebook的自动售货机而言,输入是设备角色、位置和平台,并弹出一个新配置的网络设备,准备提供生产流量。“
该博客表示,新框架使Facebook工程师能够更快地移动并更有创意地解决问题。
Zero Touch工具的开发仍在进行中,但Facebook已经在努力实现新目标,包括编排 Vending Machine设备作业组以建立或重建更大的网络,并持续自动重建其骨干网络。
该博客并未指明Zero Touch Provisioning是否开源,目前猜测它是专有的。但是,相信Facebook在未来会以开源的形式发布它。