重磅!GitHub 开源负载均衡组件 GLB Director - 开源中国社区
重磅!GitHub 开源负载均衡组件 GLB Director
h4cd 2018年08月10日

重磅!GitHub 开源负载均衡组件 GLB Director

h4cd h4cd 发布于2018年08月10日 收藏 42

同样是搞Java,年薪15W和50W到底差在哪里?>>>  

8 日,GitHub 发布了开源负载均衡组件 GitHub Load Balancer Director(GLB) Director,GLB 是 GitHub 针对裸机数据中心的可扩展负载均衡解决方案,它支持大多数 GitHub 的对外服务,并且还为诸如高可用 MySQL 集群这样最为关键的内部系统提供负载均衡服务。

项目地址:https://github.com/github/glb-director


GLB Director 有如下诸多优势:

使用ECMP扩展IP

4层负载均衡器的基本属性是能够使用单个IP地址在多个服务器之间实现均衡连接。 为了扩展单个IP以处理更多的流量,我们不仅需要在后端服务器之间进行流量拆分,还需要能够扩展负载均衡器本身。 这实际上是另一层负载均衡。

通常,我们将IP地址视为单个物理机器,将路由器视为将数据包移动到下一个最近路由器的机器。 在最简单的情况下,总是有一个最佳的下一跳,路由器选择该跳并转发所有数据包直到达到目的地。


实际上,大多数网络都要复杂得多。 两台计算机之间通常有多条路径可用,例如,使用多个ISP或者两台路由器通过多条物理电缆连接在一起以增加容量并提供冗余。 这是等价多路径(ECMP)路由发挥作用的地方 - 而不是由路由器选择单个最佳下一跳,ECMP中很多路径具有相同成本(通常定义为到目的地的AS的数量), 路由器分散流量以便在所有可用的相同成本路径之间均衡连接。


ECMP通过对每个数据包进行hash以确定其中一个可用路径。此处使用的hash函数因设备而异,但通常是基于源和目标IP地址以及TCP流量的源和目标端口的一致性hash。这意味着同一个TCP连接的多个数据包通常会遍历相同的路径,这意味着即使路径具有不同的延迟,数据包也会以相同的顺序到达。值得注意的是,在这种情况下,路径可以在不中断连接的情况下进行更改,因为它们总是最终位于同一个目标服务器上,此时它所采用的路径大多无关紧要。

ECMP的另一种用法是当我们想要跨多个服务器而不是跨多个路径上的同一