全球服务负载平衡GSLB的工作原理

张贴 Zevenet | 16年2018月XNUMX日

GSLB概述

如今,IT服务的高可用性是必须的,这也是公司和组织开发分布在世界各地的计算系统并在多个数据中心托管服务的原因,因为它提供了以下好处:

容错:当数据中心中的托管服务失败时,该服务将在任何其他可用站点中继续运行。
自动数据中心恢复:当一个数据中心发生故障时,服务会自动重定向到任何其他可用的数据中心。
负载均衡:可以通过在所有可用站点之间分配负载来优化流量,从而改善延迟并使服务交付更快。
改善延迟:客户端应用程序流量直接与真实服务器通信,无需通过负载均衡器传递所有应用程序数据。

在云中采用和实施IT服务要求基于WAN的方法是提供地理位置高可用性解决方案的最佳选择。 这就是我们所说的 全局服务负载平衡 or GSLB.

何时使用GSLB

建议将GSLB服务用于以下用例:

通过WAN在多个数据中心托管服务的公司。
需要创建高可用性服务或数据中心的公司。
Internet服务提供商创建供其用户使用的入站负载平衡服务。

毫无疑问,当需要在世界各地的服务器之间共享用户和流量而没有故障点时,GSLB是正确的解决方案。

GSLB如何运作

GSLB 是一种负载均衡机制 DNS 协议,因为它使用它快速可靠 UDP 协议和客户端响应几乎是实时的。

例如,在常见的DNS请求中 www.zvnlb.net,客户端将DNS请求解析发送到本地配置的DNS服务器(例如 8.8.8.88.8.4.4 然后客户端系统随机选择其中一个服务器来对请求发送并发送查询。

选定的DNS服务器从客户端接收请求(例如,IP地址是什么) www.zvnlb.net? )并且本地配置的DNS服务器尝试查找谁负责解析DNS区域 zvnlb.net.

客户端使用的DNS, 8.8.8.8 or 8.8.4.4 在这种情况下,检测到 ns1.zvnlb.netns2.zvnlb.net 负责区域决议 zvnlb.net 所以他们发送客户端收到的DNS查询(例如,IP地址是什么) www.zvnlb.net? )其中一个。

其中一个名称服务器 ns1.zvnlb.net or ns2.zvnlb.net 从中接收DNS查询 8.8.8.8 or 8.8.4.4 然后,接收请求的名称服务器检查主机的可用服务器 www.zvnlb.net 它将使用可用应用程序服务器列表响应DNS查询,以便为主机提供实际应用程序 www.zvnlb.net因此,这些信息最终将由客户收到。

现在,客户端将从DNS查询中收到的列表中随机选择一个应用程序服务器,它将直接将请求发送到应用程序 http://www.zvnlb.net.

名称服务器 ns1.zvnlb.net (在我们的例子中,位于法兰克福)和 ns2.zvnlb.net (在我们的示例中,位于多伦多)正在稳步检查主机的实际应用程序的运行状况 www.zvnlb.net (192.235.113.3194.23.52.21 在我们的情况下)。 如果 ns1.zvnlb.net or ns2.zvnlb.net 检测到检查某些真实服务器的运行状况的任何问题,然后不可用的服务器将被停用一段时间,并且其IP地址将不再列在DNS查询中,直到它再次可用。

下图显示了所描述的具有GSLB功能的DNS流量。

具有GSLB功能的DNS流量

配置GSLB以进行数据中心的灾难恢复

对于需要高可用性灾难恢复数据中心的服务,建议使用此配置,因此,如果某个公司的所有服务都在一个数据中心且此类数据中心出现故障,则系统会将所有受影响的服务移至另一个可用的数据中心。

请遵循这个GSLB配置的真实示例,为灾难恢复构建主动 - 被动数据中心。

我们在位于法兰克福的不同站点的两个数据中心部署了两个Zevenet负载均衡器 159.89.7.124 和多伦多 159.203.12.35 我们有一个响应DNS主机的Web服务 www.zvnlb.net,配置 数据中心1数据中心2。 该架构的设计将允许将所有客户端流量发送到 数据中心1 但如果失败则将客户端重定向到 数据中心2.

要实现此配置,请按照以下步骤操作。

连接到Zevenet网页面板 数据中心1 (我们的法兰克福案例),点击主菜单 GSLB 模块并创建一个新的 农场,在我们的例子中将被调用 DNS1法兰克福 在虚拟端口中 53.

在一个数据中心内创建GSLB服务器场

创建服务器场后,请对其进行编辑,然后转到选项卡 在这种情况下,创建将由GSLB模块管理的DNS区域 zvnlb.net, 如下:

在第一个数据中心中创建GSLB区域

创建该区域后,请进行第一个配置,如下所示:

第一个数据中心的GSLB编辑区

需要注意的是 ns1ns2 是负责区域DNS解析的名称服务器 zvnlb.net (在我们的例子中,法兰克福的一个GSLB服务和多伦多的另一个服务)。

然后,在主菜单选择中连接到数据中心2中的Zevenet Web面板 GSLB 并创建一个新的 农场,在我们的情况下将被称为 DNS2多伦多 在虚拟端口中 53.

在第二个DR数据中心创建GSLB服务器场

编辑新的GSLB服务器场并转到选项卡 ,在这里创建将由此GSLB服务管理的DNS区域 zvnlb.net 如下:

在第二个数据中心配置GSLB区域

创建此新区域后,请按如下方式进行第一次配置:

多伦多的GSLB编辑区

就像GSLB的情况一样 数据中心1,名称服务器 n1n2 将指向两者中的GSLB服务 数据中心1数据中心2

然后单击选项卡 服务内容 例如,创建一个新服务 webpriority:

以优先级创建GSLB服务

点击 算法 选项 优先级:始终为最常用的连接 并按如下方式配置服务:

GSLB编辑服务优先级

重新启动服务器场以应用更改。 需要在两个数据中心中应用相同的GSLB服务配置。

请注意,如果 农场卫报 未配置为应用任何运行状况检查,GSLB服务使用默认值 check_tcp 到服务配置中运行状况检查字段中定义的TCP端口。

要启用新服务,请转到创建的区域(zvnlb.net 在我们的例子中)并创建一个新的 资源中心。 然后通过选择新建来创建它 服务 如下所示。

GSLB使用服务优先级

最后,保存更改。 需要在两个数据中心中都应用此配置。

此时,主持人 www.zvnlb.net 由GSLB模块管理 优先 模式,所以所有流量都将被发送到 数据中心1 然后,如果失败,流量将被重定向到另一个可用的流量 数据中心2.

TTL已配置为5,这是放在DNS记录上的到期日期。 TTL用来告诉递归服务器或本地解析器应该将所述记录保留在其缓存中多长时间。 因此,配置较低的值可以更快地检测到更改。

应用此方法,我们可以根据需要添加尽可能多的数据中心,包括使用GSLB服务的新名称服务器。

以下DNS请求显示了Nameservers配置 zvnlb.net 以及主机的DNS解析 www.zvnlb.net.

user@client:# host -t ns zvnlb.net
zvnlb.net name server ns2.zvnlb.net.
zvnlb.net name server ns1.zvnlb.net.

两个名称服务器都使用GSLB场中配置的虚拟IP地址。

现在,使用您当前的DNS服务器来解析主机(例如 万维网)在这个区域:

user@client:# nslookup www.zvnlb.net
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	www.zvnlb.net
Address: 188.166.230.211

如图所示,目前是主持人 188.166.230.211 是活动的实际应用程序节点 数据中心1。 一旦无法访问主机(例如,http服务中) 188.166.230.211 处于关闭状态),DNS分辨率将发生如下所示的变化。

user@client:# nslookup www.zvnlb.net
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	www.zvnlb.net
Address: 139.59.186.84

一旦应用程序服务器出现故障,DNS解析就会将主机更改为 数据中心2。 一旦主持人在 数据中心1 即将启动故障恢复将自动应用。

为主动 - 主动数据中心配置GSLB

具有模式优先级的高可用性是灾难恢复系统的一个不错的选择,但是用于恢复的备份数据中心的使用率并不高,因此通常在负载平衡可用数据之间的所有流量时,效率更高中心。

对于这种情况,请使用您的GSLB服务的共享方法 循环负载平衡 如新服务示例中所示 卷筒纸:

使用共享和主动 - 主动数据中心创建GSLB服务

现在,将其添加到区域中 zvnlb.net 并更改资源配置 万维网 如下:

使用循环法为GSLB服务创建dns资源

保存更改并根据请求重新启动服务器场。

要测试它,请尝试解析主机 www.zvnlb.net 输出看起来像这样:

user@client:# nslookup www.zvnlb.net
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	www.zvnlb.net
Address: 188.166.230.211
Name:	www.zvnlb.net
Address: 139.59.186.84

请注意,DNS解析器返回两个应用程序服务器,而不是像灾难恢复案例那样。

主机出现故障后,DNS解析将自动更改。 看下面会发生什么。

root@client:# nslookup www.zvnlb.net
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	www.zvnlb.net
Address: 139.59.186.84

从DNS响应列表中停用不可用的应用程序服务器。

一旦主持人 188.166.230.211 再次可用,它将包含在DNS解析中。

在Zevenet GSLB服务中委派区域

在公共区域的情况下(例如 zvnlb.net)提供了作为名称服务器解析器的GSLB服务,该域名需要由公共DNS服务器识别,然后需要在您的域的注册商中注册GSLB服务使用的公共IP地址(例如NameCheap,Goddady或其他) 。 以下链接说明了如何在域注册器程序中将GSLB IP注册为NameServer。

将主机注册为NameServer

按照给定的程序,您必须注册 ns1.zvnlb.netns2.zvnlb.net 使用给定的IP。

为GSLB创建专用子区域

万一不可能将DNS解析委托给Zevenet的GSLB服务,可以执行以下说明的配置。 以下示例显示了如何构建 分区 提供 zvnlb.net 指向GSLB服务中此新子区域的NameServers。

节点1 (例如 ns1.zvnlb.net 与IP 162.243.5.109) and 节点2 (例如 ns2.zvnlb.net 与IP 178.62.233.104)是名称服务器配置并为区域提供DNS解析服务 zvnlb.net,这个区域属于Bind9公共DNS服务,我们希望为我们基础设施的某些主机提供GSLB功能,因此我们决定创建DNS子区域 cluster.zvnlb.net 为此,配置2 GSLB服务器场,如DNS名称服务器。

我们已经为我们的域创建了子区域 cluster.zvnlb.net 在我们的Bind9 DNS服务器中如下:

创建bind9 DNS子区域

现在按照本节说明 在Zevenet GSLB服务中委派区域 为了保持 159.89.7.124159.203.12.35 在我们的示例中,作为区域的公认名称服务器 cluster.zvnlb.net 通过公共DNS服务器。

然后,您可以应用为域解释的配置 zvnlb.net 在上面的部分 配置GSLB以进行数据中心的灾难恢复.

在我们自己的DNS中指向主机,引用GSLB服务

在前面的部分中,我们创建了一个名为的主机 www.zvnlb.net 在优先级模式和循环模式中实现负载平衡,因此我们可以重用此配置,以便为另一个默认不支持此功能的DNS名称服务器提供GSLB功能。

为了实现这种配置,我们只需要创建一个新的 资源中心 在不支持GSLB选项的DNS区域中(例如 zevenet.io 由Bind9管理,就像一个 规范名称 or CNAME 如下所示:

创建CNAME到GSLB区域

一旦应用更改, www.zevenet.io 将指向 www.zvnlb.net,但如果主机决议 www.zvnlb.net 然后自动更改 www.zevenet.io 也将改变。

请注意,此示例在Bind9 DNS服务器中完成,但Canonical Names或CNAMES是任何DNS服务器服务实现支持的DNS主机配置。

这个简单的说明表明,即使我们当前的DNS服务不提供GSLB功能,也可以使用GSLB服务,仅将非GSLB区域中给定主机的解析转发到Zevenet Load Balancer中的GSLB服务。

分享到:

根据GNU自由文档许可条款的文档。

本文是否有帮助?

相关文章