DNS 解析一个地址的时候会返回多个 IP 吗?

原文链接

不会的,每次DNS查询只会返回一个IP地址,但是可以实现一个DNS映射多个IP地址,也就是所谓的负载均衡。

要实现负载均衡很简单,直接打开你的域名控制台,然后添加对应的ip地址即可。这里以阿里云的域名为例。

image-20230629140837571

直接添加多条记录即可,然后负载均衡的策略就是依靠他们厂商去制定的。常见的解析策略有:

  • 轮询(Round Robin):DNS 服务器按顺序返回多个IP地址,实现请求的轮流分发到不同的服务器上。
  • 权重(Weighted):为每个 IP 地址分配不同的权重,权重越高的服务器被选中的概率越大。
  • 响应时间(Response Time):DNS 服务器可以通过测量服务器的响应时间来选择最快的服务器,将域名解析为对应的 IP 地址。

基于 DNS 实现负载均衡是十分简单和有效的技术手段,它主要有以下几点优势:

  1. 将负载均衡工作交给 DNS,省去了网站管理维护负载均衡服务器的麻烦;
  2. 技术实现比较灵活,操作简单,成本低,适用于大多数 TCP/IP 应用;
  3. 对于部署在服务器上的应用来说,不需要修改任何代码就能实现不同机器上的应用访问;
  4. 很多 DNS 系统还支持基于地理位置的域名解析,可以将域名解析成距离用户地理位置最近的服务器地址,加快用户访问速度。

但基于 DNS 的负载均衡同样也存在一些弊端:

  1. 目前的 DNS 系统是需要经过递归服务器、顶级服务器、权威服务器以及众多缓存等多级解析的,在每一个环节都可能存在解析记录缓存。如果服务器 IP 发生变动,即使修改了 A 记录,也需要各级缓存失效后才能生效。而在解析生效前的这段时间,用户可能就会根据缓存记录访问到已经被更换过的服务器上,从而导致访问失败。

image-20230629141153038

左边为迭代+递归,右边是递归,因为存在多级DNS Server,所以会出现缓存数据不一致的情况。

这里还是以阿里云的域名为例,可以修改一下已有的域名解析的ip地址,你会发现,重新访问的时候,会出现404的报错,这就是因为dns解析的缓存失效设置为10分钟,需要等10分钟后,才会更新该解析记录。

  1. 为了本地 DNS 服务器能够及时同步权威服务器上的最新记录,所以一般将 DNS 缓存刷新时间设置得比较小,这就会导致 DNS 频繁发起解析请求,从而造成额外的网络问题。

  2. DNS 本身并不具备主动监测服务器负载情况或动态调整权重的能力,不能区分不同服务器之间的性能和负载差异,不能反映服务器当前的运行状态,所以一些大型网站总是使用 DNS 域名解析作为第一级负载均衡手段,然后在通过负载均衡服务器提供更高级的负载均衡算法(比如最少连接:将请求发送到拥有最少开放连接的服务器),从而完成最终请求。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇