我希望了解基于任播/DNS的负载平衡的想法。
假设情况如下 网站是 www.aaa.example 欧洲/亚洲/美洲有 3 个数据中心,我希望在每个数据中心使用 haproxy 负载均衡器进行负载平衡,并在它们后面托管 www.aaa.example 的 httpd 服务器(也将用户路由到适当的 DC)
1.基于 DNS 的负载均衡器将在 A 记录和循环算法中有 3 个条目。(欧洲用户如何到达欧洲 DC)?
任播将基于跳数。
2.这 3 个负载均衡器将具有不同的公共 IP,当欧洲 DC 的 DNS/任播方法发生故障时,欧洲用户会发生什么?
3.用户通过上述任何一种方法访问网站时是否都会看到一些错误?
4.最后,keepalived 可以在不同 DCS 之间的公共 IP 上的 haproxy 上使用吗?(这在本地网络之外有意义吗)?
答案1
全局负载平衡的流行工具是分布式互联网系统、DNS 和(任播)路由。
DNS 将名称解析为相应大洲的区域 IP 地址。名称解析可以是智能的,可以感知位置、服务可用性和其他指标,也可以不是智能的,只是静态或循环的。使用循环时,您无法控制用户的去向。
任播会在多个位置通告同一个 IP,并使用路由到达其中一个位置。它适合一次性对话(如 DNS)或在内容分发网络中获取静态资源,但无法可靠地到达同一个位置。
keepalived 等集群针对本地主机进行了优化。它们使用的协议(如 VRRP)无法跨子网。
像 haproxy 这样的负载均衡器并没有真正起到帮助作用,因为它们不会从一开始就引导对话。欧洲 haproxy 将请求发送到美国的后端会非常慢。执行此操作的 GSLB 产品通常是智能 DNS 的实现。
用户在发生故障时会看到错误,直到您将他们引导到其他地方。故障检测和处理的速度取决于您的设计。