DNS域名解析负载均衡有如下优点:
1. 将负载均衡的工作交给DNS,省去了网站管理维护负载均衡服务器的麻烦。
2. 技术实现比较灵活、方便,简单易行,成本低,使用于大多数TCP/IP应用。
3. 对于部署在服务器上的应用来说不需要进行任何的代码修改即可实现不同机器上的应用访问。
3. 服务器可以位于互联网的任意位置。
4. 同时许多DNS还支持基于地理位置的域名解析,即会将域名解析成距离用户地理最近的一个服务器地址,这样就可以加速用户访问,改善性能。
192.168.1.100 (电信)192.168.1.101 (电信)
192.168.1.102 (电信)
10.10.10.100 (网通)
10.10.10.101 (网通)
并且5台服务器都在为www提供服务。
本例子再假设域名为qicaispace.com
为电信用户实现负载均衡
根据前面的资料,电信一共有3台www服务器,分别是
192.168.1.100
192.168.1.101
192.168.1.102
首先登陆DNSPod的後台,添加一个qicaispace.com的域名。
然後在 管理域名记录 中添加一条记录
主机记录 www记录类型 A线路类型 电信
记录值 192.168.1.100点击增加接着,再分别添加两条记录
主机记录 www记录类型 A线路类型 电信
记录值 192.168.1.101
主机记录 www记录类型 A线路类型 电信
记录值 192.168.1.102
为网通用户实现负载均衡
电信用户的记录添加完毕後,接着添加网通的。
网通的添加方法跟电信的没太大分别
主机记录 www记录类型 A线路类型 网通
记录值 10.10.10.100
主机记录 www记录类型 A线路类型 网通至此,所有记录添加完毕
在 DNS 查询 篇中,主要是根据阮一峰老师的文章所做的学习记录。讲述了通过命令 dig 来跟踪域名的查询过程,也提到了 DNS 服务器的层级结构、DNS 记录、DNS 缓存等。整体都是文字叙述,读起来会稍微有些累。这篇会通过图示来进一步简化 DNS 的解析过程,并会提到 DNS 的另一项重要作用, 负载均衡 。
首先我们来了解一下 DNS 服务器。主要有三种类型的 DNS 服务器:
DNS 服务器的层级是树状结构,如下图所示:
假设我们需要在浏览器上访问https://www.baidu.com 网页,浏览器识别到访问的是个域名而不是 ip 地址时,会开始发起域名解析的过程。用户电脑上运行着 DNS 应用客户端,我们把它叫做本地 DNS 解析器。
首先我们先来回顾一下域名解析的整个过程,稍后会以图示的方式展现。
本地 DNS 服务器地址会配置在本机。如果是采用 DHCP 动态获取 IP 地址的方式,那么一般会被配置为网络运营商的 DNS 服务地址;或者可以自己配置为非权威 DNS 服务器地址,比如 google 的 8.8.8.8 。
那么它如何知道根域名服务器的地址呢?很简单,根域名服务器数量少,其地址会配置在本地 DNS 服务器中。
整体流程如下图所示,其中白色箭头表示查询方向,绿色箭头表示返回方向。
DNS 的另一个作用是做负载均衡, Server Load Balance 。
最简单的一种应用情况,在 DNS 服务器上配置某个域名对应的 ip 时,可以配置多个 A 记录,即一个域名对应多个 ip。这里可以配置不同的策略。
当客户端请求域名解析时,DNS 服务器返回全部 ip 地址。客户端拿到多个 ip 后可进行轮询,或者是随机选择一个 ip,或者是按照某种算法选择一个 ip 进行请求。
假设配置了 ip1, ip2, ip3 三个地址。第一次请求返回 ip1,第二次请求返回 ip2,以此类推。
设定各个 ip 的权重,优先返回权重大的 ip。
另外一种复杂的应用情况,做全局的负载均衡,即 GSLB,Global Server Load Balance 。全局上可分为运营商和区域,在同一个运营商上进行访问肯定速度更快;同样,请求的服务器距离客户端越近,速度越快。
那全局负载均衡如何实现呢?跟添加中间层的思想差不多,经过中间层 GSLB 来控制负载均衡策略。下面介绍两种方式。
具体做法是,在权威 DNS 服务器上给目标域名配置一条 NS 记录, A → B ,即 A 对应的域名服务器地址为 B,也就是 GSLB 的地址 ,让 GSLB 来充当 权威域名服务器 。
当 DNS 解析 A 域名时,会返回设置好的 B。这样本地 DNS 服务器就会转到请求 B 也就是 GSLB 去进行域名解析, GSLB 就可按照某种策略进行负载均衡计算,比如根据本地 DNS 服务器的所属运营商和本地 DNS 服务器的位置返回合适的 ip。
假设查询的目标域名为 http://www.company.com ,设置一条 NS 记录为 http://www.company.com → http://www.companyOk.com 。那么当查询 www.company.com 时,DNS 服务器会返回 www.companyGSLB.com 。然后本地 DNS 服务器会去请求 www.companyGSLB.com DNS 服务器,让该权威域名服务器去解析 www.company.com 域名,返回合适的 ip 地址。这样,控制权就交到了 www.companyGSLB.com 手上,具体策略可以由它自己来确定。
但是这种方式只能知道本地 DNS 服务器所属的运营商和 ip 地址,而不是客户端的 ip。
流程如下图所示:
通过给域名添加别名的方式来实现,有两种不同的方式。
a. 设置别名后,再通过 http 重定向
给目标域名 A 配置别名 CNAME,也就是 GSLB 的域名。这样请求解析 A 域名时会返回 CNAME 记录,之后本地 DNS 服务器会转为请求 GSLB 的域名,最后返回 GSLB 的 ip 地址。
这样,客户端就会跟 GSLB 进行通信,GSLB 可以知道客户端的 ip 地址,进而根据一系列的策略进行调度,然后利用 http 重定向将客户端定向到合适的地址。
流程如下图所示:
b. 设置别名,通过 NS 记录转到不同的 GSLB 域名服务器
给目标域名设置别名,对别名设置 NS 记录,转到不同的 GSLB 去查询。
举个栗子:比如在 company.com 的权威服务器上给域名 test.company.com 设置别名 hello.test.comany.com。
当本地 DNS 服务器请求解析 test.company.com 时,流程如下:
流程图如下:
这里只有一层 GSLB,也可以有多层。假设第一层 GSLB 是用来区分运营商,第二层 GSLB 是区分区域。
比如本地 DNS 服务器所在运营商是移动,那么在 xx.GSLB1.com 就可返回另一个别名 yd.test.comany.com 。 yd.test.comany.com 也对应一条 NS 记录, yd.test.comany.com → xx.GSLB2.com ,这样就将 yd.test.comany.com 转到第二层 GSLB 去解析。 GSLB2 就可根据本地 DNS 服务器的位置返回距离用户较近区域的 ip。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)