关于开源软件:如何实现多数据中心流量调度

11次阅读

共计 2298 个字符,预计需要花费 6 分钟才能阅读完成。

1. 需要场景

目前互联网的服务广泛都部署在数据中心(Data Center)内。数据中心是一个很简单的零碎,波及到供电、制冷、供水等一系列的环节。因为设施故障、供电故障和自然灾害等因素,数据中心也可能呈现故障。从服务的高可用角度,个别须要将服务部署在多个数据中心内,以便在数据中心呈现故障的状况下,依然保障服务的继续提供。

在多数据中心场景下,须要思考网络流量如何在多个数据中心之间调度。如下图所示,有 2 个数据中心,每个数据中心内都部署了雷同的服务(别离命名为服务 1 和服务 2)。每个数据中心各有一个网络接入点。上面要解决的问题是如何将用户流量在多个数据中心部署的服务间做调度。


图 1 多数据中心场景下的流量调度

2. 基于 DNS 的调度计划

2.1 计划阐明

在多数据中心调度方面,目前比拟广泛采纳的是基于智能 DNS 的计划。工作原理如下图所示。

每个数据中心的接入点有不同的 VIP(别离为 1.1.1.1 和 2.2.2.2)。客户端在向服务发送申请前,首先通过智能 DNS 将域名(www.demo.com)解析为 IP 地址。智能 DNS 依据待解析的域名和客户端的 IP 地址(3.3.3.3),基于设置的解析策略,返回解析的后果(1.1.1.1)。

在每个数据中心内,发往这个数据中心接入点的申请都仅由同数据中心内的服务来解决。在下图中,发往 1.1.1.1 的申请仅由服务 1 来解决,发往 2.2.2.2 的申请仅由服务 2 来解决。


图 2 在多数据中心场景下利用智能 DNS

如果数据中心产生了故障(如:接入点 1 产生了故障,或服务 1 产生了故障),能够通过扭转智能 DNS 的策略,将 2.2.2.2 返回给客户端,从而将用户流量从数据中心 1 中的服务 1 调度到数据中心 2 中的服务 2。


图 3 基于智能 DNS 实现故障切换

2.2 计划的问题

尽管基于 DNS 的多数据中心调度计划已广泛采纳,然而这个计划也存在着非常明显的问题。计划的问题包含:

(1) 失效速度慢 。DNS 采纳缓存机制,在客户端和客户端间接拜访的 Local DNS(位于客户端所处的网络或运营商内)内个别都有缓存。缓存能够升高客户端对于权威 DNS 和 Local DNS 的拜访压力,但同时也减少了失效的延迟时间。例如,如果在权威 DNS 中将 TTL 设置为 5 分钟,则最终的失效提早会达到 8 -10 分钟。还可能存在有故障或不遵循 DNS TTL 的 Local DNS,从而导致对应的用户应用更长的工夫实现切换,甚至始终都不切换。

(2) 控制精度低 。对于智能 DNS 的期待,是能够比拟准确的管制达到各数据中心接入点的流量。但这个指标是无奈实现的。这一方面是因为上文所提到的 DNS 缓存机制,客户端在每次 DNS 解析后发送的申请数量不确定;另一方面,在 DNS 解析的过程中存在 Local DNS,权威 DNS 无奈判断每个 Local DNS 所代表的用户规模。


图 4 权威 DNS 难以判断 Local DNS 代表的用户规模

3. 基于七层负载平衡的调度计划

为了解决基于 DNS 的调度计划中所存在的问题,能够在转发的过程中引入七层负载平衡零碎(如 BFE)。

3.1 计划阐明


图 5 引入七层负载平衡零碎后的调度计划

具体的计划如上图所示。在各数据中心内各部署一个 BFE 集群。BFE 能够依照指定的权重,将流量转发至多个后端集群。

这个计划要求在多个数据中心之间有较好的内网互联。在同城的多个数据中心之间,这个条件是比拟容易满足的。并且在同城内,数据中心之间的网络提早能够管制在 1 -2ms 内,对于转发整体的网络提早影响也不大。

对于位于不同地区的多个数据中心,如果在数据中心间接有比拟好的内网互联,也能够利用七层负载平衡做内网调度;如果没有短缺的内网互联,只能持续应用基于 DNS 的调度计划。

3.2 计划的收益

和只应用 DNS 的计划相比,在引入七层负载平衡零碎后,能够取得如下收益:

(1) 失效速度快 。多集群间分流的权重配置在 BFE 加载后,能够立即失效。这相比 DNS 的分钟级提早有了微小的进步。而且相比于 DNS 计划中 Local DNS 的不可控性,BFE 的集群齐全在服务提供方的管制之下。

(2) 控制精度高 。在引入 BFE 后,转发至后端服务集群的流量能够准确的依照给定的权重来管制。这为后端服务的容量治理和压力过载场景下的处理提供了便当。

4. 利用场景阐明

上面联合几个具体的场景,阐明七层负载平衡如何在多数据中心流量调度中发挥作用。

4.1 场景 1:服务故障

在某些场景下(如服务的灰度公布),可能呈现单个数据中心内的服务呈现故障,从而导致服务容量降落甚至齐全无奈提供服务。这时能够调整 BFE 上的分流权重,将流量调度到其它数据中心,疾速实现止损解决。


图 6 服务故障场景下的解决

4.2 场景 2:外网流量突增

可能呈现某个地区的用户流量突增,导致单个数据中心内的服务压力超过容量。这时能够将局部流量调度到其余子集群来服务。


图 7 外网流量突增场景下的解决

4.3 场景 3:外网故障

在外网故障的场景下,会在外网通过 DNS 将局部流量从一个网络接入点调度到另外一个网络接入点。这样可能会导致另一个数据中心内的服务(下图中的服务 2)压力超过容量。这时能够将局部流量调度到服务 1 来服务,以升高服务 2 的压力。


图 8 外网故障场景下的解决

5. 延长浏览

本文阐明了在多数据中心场景下如何通过应用七层负载平衡零碎 BFE 来实现更好的流量调度成果。有趣味的读者,能够浏览以下资料进一步理解:

(1) BFE 多服务间分流权重比例的配置。能够查看《万亿级流量转发:BFE 核心技术与实现》的第 11 章,或《深刻了解 BFE》(在线版本)的第 21 章。

(2) BFE 多服务间负载平衡的实现机制。能够查看《万亿级流量转发:BFE 核心技术与实现》的第 14 章,或《深刻了解 BFE》(在线版本)的第 32 章。

正文完
 0