有人可以向我解释一下 Web 应用程序的高可用性(“HA”)是如何工作的……因为我认为 HA 意味着不存在单点故障。
但是,即使使用了负载均衡器,这不是单点故障吗?
有人可以向我解释一下 Web 应用程序的高可用性(“HA”)是如何工作的……因为我认为 HA 意味着不存在单点故障。
但是,即使使用了负载均衡器,这不是单点故障吗?
我找到了这篇关于这个主题的文章: http ://www.tenereillo.com/GSLBPageOfShame.htm
基本上,如果您不需要持久的粘性会话,您可以配置您的 DNS 服务器为您的网站返回多个 A 记录(IP 地址)。
Web 浏览器足够聪明,可以尝试所有地址,直到找到一个有效的地址。
它的工作方式如下,您设置了两个带心跳的 HA 代理服务器,因此当一个失败(停止响应查询)时,它会从集群中删除。来自 HA 代理的请求可以以循环方式转发到 Web 服务器,如果一个 Web 服务器发生故障,HA 代理服务器不会尝试联系它,直到它还活着。Web 服务器将所有动态信息存储在数据库中,该数据库在两个 MySQL 实例中复制。如您所见,HA Proxy 和 Cluster MySQL(或简称 MySQL 复制)以及这里的 IP Clustering 是关键。
当然是单独操作时。通常的高可用性设置包括在集群中以主动/主动或主动/被动配置运行的 2 个或更多负载平衡器。为了进一步提高可用性,您可以让 2 个不同的 Internet 服务提供商(或地理分布式数据中心)各自运行一对集群负载平衡器。然后,您将 DNS A 记录配置为解析为 2 个不同的公共 IP 地址,以保证循环处理均匀地拆分 DNS 请求(CloudFlare 在这方面非常快速且可靠)。也有可能使用 PowerDNS dnsdist 之类的东西返回最接近您的原始地理位置的数据中心的 IP 地址。这是大玩家为使他们的服务高度可用所做的事情。
请阅读https://docs.oracle.com/cd/E23824_01/html/821-1453/gkkky.html了解更多信息。实际上,两个负载均衡器都使用相同的 vip(虚拟 IP 地址。https://techterms.com/definition/vip)。
HA架构是一个完整的领域,很多书都写在上面,所以很难用短短的一段话来回答。
总结一下理想情况,您将使用多个服务器,它们与多个负载平衡器的层互连。节点和LB将位于几个不同的数据中心,并连接到不同的网络主干。理想情况下,数据中心将位于世界各地。
简而言之,所有组件都将具有冗余,包括负载平衡器。
有关起点,请参阅 Wikipedia for High Availability Cluster