GitHub发布了他们的负载均衡器代码-他们的解决方案如何工作

上周,来自GitHub的开发人员上传了其负载均衡器源代码-GLB Director。 团队为此项目工作了几年。

值得一提的是,他们的决定,如何安排以及还有谁将负载均衡系统转移到了开源上,我们将进一步讲。


/ Flickr / Theilr / cc

为什么GitHub拥有自己的均衡器


GitHub使用裸机云基础架构来提高生产力。 在这种情况下,该软件无需在裸机上进行附加级别的虚拟化即可运行。

以前,该公司使用具有特殊硬件配置的haproxy来提供负载平衡,从而为10 Gb以太网连接提供容错能力。 但是,这种方法无法很好地扩展(暗示垂直扩展),因此GitHub决定编写自己的负载均衡器,该负载均衡器仍然可以在低成本硬件上运行。

GLB总监可以做什么,如何做


GitHub平衡器可确保不间断的TCP连接,管理单个服务的负载,抵抗DDoS攻击并可以水平扩展。 它被“ 囚禁 ”在数据中心中,其中大量服务器通过BGP宣布一个IP地址,而路由器使用ECMP策略。

负载均衡在级别L4和L7上执行。 与LVS之类的解决方案不同,GLB Director不会将所有数据包都路由到Director节点,因此可以在其他节点之间重新分配它们。 取而代之的是,它使用集合点哈希( HRW )哈希变体来创建静态表,以为每个传入连接选择一对代理服务器(主要和辅助)。 如果其中一个失败,则将数据包发送到第二个。 系统会记住此选择,因此不必为每个包装都做出选择。

glb-healthcheck解决方案监视服务器的“运行状况”,该解决方案在出现问题时切换主系统和辅助系统。 glb-healthcheck 监视每个GUE隧道(通用UDP封装)和后端服务器的任意HTTP端口正确操作。

GLB还使用Netfilter系统和iptables实用程序。 Netfilter解决了一个简单的任务:它确定每个GUE数据包中的内部TCP / IP数据包是否符合Linux内核TCP堆栈。 如果不是,它会将数据包重定向到辅助代理服务器,而不是在本地对其进行解封装。

组件的交互图如下所示:


GitHub 希望他们的平衡器将对拥有自己的数据中心的所有公司有用。

如何安装GLB并开始使用它,可以在开发人员准备快速入门指南中找到。

类似的发展


5月,Facebook还共享了其Katran负载平衡器库源代码。 IT巨头使用它来高效地在后端服务器之间分配负载。

该公司以前的平衡器L4LB无法应对这项任务,因为它需要专用的服务器来工作,这增加了网络的负载。 为了解决这个问题,该公司开发了Katran。 它是使用eXpress数据路径框架和eBPF虚拟机启动的。 VM通过在Linux内核的各个点上运行程序来扩展常规功能。


/ Flickr / da sal / cc

更新的平衡器可以更有效地负载分配到基础架构上,并提高数据包处理的速度。 源代码开发人员在GitHub上“上传”

Katran系统与GitHub中提出的解决方案有几个区别。 例如,Facebook使用与Linux内核一起使用的XDP和IPIP隧道。 相比之下,GLB借助DPDK来处理来自用户空间的数据包。

GitHub的开发人员Theo Julienne 补充说DPDK允许您处理大量传入流量。 即使在复杂的工作环境中,这也可以确保高性能(10 Gb连接),并提供针对DDoS攻击的保护。

将诸如GLB和Katran之类的功能强大的工具转移到开源领域,将为其他IT公司带来新的机遇,并将为全球IT生态系统的更快发展做出贡献。



PS第一公司IaaS博客中的其他几篇文章:



Source: https://habr.com/ru/post/zh-CN420093/


All Articles