我试图让自己了解如何为应用程序服务器构建一个高度可用的负载平衡服务,例如 HTTP 流量,以及它们如何与 DNS 服务器一起工作。
考虑下图。我的理解是,负载均衡器(例如 HAProxy)可以配置为指定一个主服务器和一个备用策略,如果主服务器发生故障,则备用服务器(成为新的主服务器)。
- 那不需要DNS服务器知道或选择主LB服务器吗?
- DNS 服务器有时不是在管理负载均衡器的公司或组织的数据中心之外(或直接控制之外)吗?如果是这样,他们如何在 DNS 服务器中指定要访问的 LB 服务器?
我试图让自己了解如何为应用程序服务器构建一个高度可用的负载平衡服务,例如 HTTP 流量,以及它们如何与 DNS 服务器一起工作。
考虑下图。我的理解是,负载均衡器(例如 HAProxy)可以配置为指定一个主服务器和一个备用策略,如果主服务器发生故障,则备用服务器(成为新的主服务器)。
您已经确定了为负载均衡器(或反向代理)创建冗余后端服务器的问题,却发现负载均衡器本身成为单点故障。
这通常通过让两个或多个负载均衡器单元共享一个公共 IP 地址(即浮动 IP 地址)来解决,从而创建一个负载均衡集群。
DNS 条目将仅指定这个浮动 IP 地址,并让负载均衡集群确定哪个负载均衡单元接收哪个传入请求。因此,DNS 服务器通常不需要了解负载均衡器组中的主要成员和备用成员。
不同的实现方式使得在任何时候只有一个集群节点可以通过浮动 IP 地址到达的主动/被动设计和所有集群单元可以同时通过浮动 IP 地址到达的主动/主动设计成为可能。
存在大量集群协议和应用程序,例如vrrp、hsrp、glbp。了解术语,找到更多替代方案是一项微不足道的任务。
haproxy 可以通过多种方式部署以实现集群功能,并且可以轻松搜索解决方案,例如参见此处和此处。
还有其他方法。参见例如DNS Load Balancing with Round Robin和DNS Geolocation routing。
是的,DNS 服务确实可以在托管负载平衡器的组织的外部托管。这通常只影响更改的提前期,而不影响负载平衡器集群功能本身(警告:专门的解决方案)。