上周,来自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博客中的其他几篇文章: