首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了DNS,还有其他技术在负载均衡器之间分配流量吗?

除了DNS,还有其他技术在负载均衡器之间分配流量吗?
EN

Server Fault用户
提问于 2021-11-23 22:24:09
回答 2查看 519关注 0票数 0

首先,我已经读过以下文章:负载平衡器本身的高可用性

但这个问题还不够深入。

DNS负载平衡似乎是在负载平衡器之间分配流量的唯一方法。(除了使用负载均衡器之外,如果所有负载最终都要经过一个服务器,它显然不会对负载进行任何分配)

这似乎是滥用DNS协议。我的理解是DNS是为名称解析而设计的,而不是负载平衡。如果我想要一个除了循环之外更复杂的负载平衡算法呢?这是在负载均衡器之间分配流量的唯一方法吗?如果这不是唯一的方法,还有什么其他的方法?

诚然,这看起来确实很有效,而且对所有大公司来说都是目前的标准,对吗?

EN

回答 2

Server Fault用户

发布于 2021-11-24 08:46:28

不,DNS不是在负载平衡器之间切换的唯一方法。

考虑一下这个多层负载均衡器设计。可伸缩和弹性。

  • 第7层有许多实例,它们为后端提供应用程序感知代理。终止TCP连接,并可能终止TLS。例如,HAProxy。
  • 在前面的第4层,它一致地路由数据包。例如,使用IPVS保持不变。甚至可以是无状态的,使用合适的一致散列算法。
  • ECMP路由器提供冗余路径和链路的水平缩放。
  • 最后,DNS使用户能够查找服务地址。

在DNS规范中聪明地返回结果,因此可以实现健康检查、基于geo IP的结果和其他动态特性。gdnsd是一个权威的DNS服务器,它可以做这样的事情。

然而,DNS是严重缓存的,因此更改速度很慢。古怪的、不一致的客户端行为也使得DNS循环变得不切实际。因此,DNS可能仅限于查找前门,即负载均衡器主机所在的正确区域。激活灾难恢复环境将具有破坏性,但DNS更改可以切换到一个完全独立的基础设施中。

票数 3
EN

Server Fault用户

发布于 2021-11-24 09:00:05

实际上,DNS中最基本的解决方案就是简单地设置具有不同值的相同类型的多个记录,并让您的名称服务器在客户端请求该资源记录时将所有记录返回给客户端。

其效果通常被称为圆知更鸟DNS,尽管它有一些缺点,但DNS服务器和客户端都很好地支持它。使用该技术的问题可能适用于所有DNS负载平衡解决方案。

除了帕特里克的回答之外,一些DNS服务器还内置了更多的智能。不是返回所有记录的完整集合,而是对响应进行调优。一些算法是:

  • 健康检查可以通过删除响应中失败节点的记录和/或使用备用服务器的记录来确保故障转移。
  • 多个名称服务器有一个实现来提供不同的DNS信息集,通常由DNS请求的源地址选择。
    • 被调用的更简单的用例通常是“分裂水平DNS”,其中来自校园或公司网络中的客户端的请求将触发与其他用户不同的响应。
    • 更高级的用例应该是“GeoDNS”或类似的。例如,一个网站可能有2个服务器(或负载均衡器IP后面的集群),一个位于法国,一个位于美国。使用GeoDNS,可以创建一个DNS记录,来自欧洲的客户端将获得法国服务器的IP地址,而来自美国的客户端将获得美国服务器的IP地址。

但是,除了基于DNS的解决方案之外,还有许多其他方法。

  • “Anycast”,其中一个目标IP地址由多个位置的服务器/负载平衡器共享,路由器将寻址到该目的地的数据包直接发送到离发送方最近的位置。
  • 具有服务发现和故障转移的应用程序中的内置逻辑
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1084417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档