![使用 DNSMadeEasy 和 Nginx 作为 Web 服务器进行负载平衡](https://linux22.com/image/803116/%E4%BD%BF%E7%94%A8%20DNSMadeEasy%20%E5%92%8C%20Nginx%20%E4%BD%9C%E4%B8%BA%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9B%E8%A1%8C%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1.png)
我计划在 2 个不同的地理位置设置我的 Web 应用程序,每个区域有 2 个应用程序服务器副本。为了平衡应用程序服务器的负载,我考虑使用 DNSMadeEasy,它使用循环并提供 DNS 故障转移。对于应用程序服务器,我将使用带有 php-fpm 的 nginx。我的应用程序也将使用 SSL,并且没有粘性会话。
有人能告诉我配置中是否存在任何故障吗?我对负载平衡完全陌生,我根据在线所做的研究得出了上述配置。
答案1
使用 DNS 进行负载平衡既便宜又简单,而且有效。
使用 DNS 进行故障转移仍然很便宜,但不那么简单,也不太有效。故障转移是通过让您的 DNS 提供商定期对您的服务进行健康检查来实现的,如果健康检查失败,则更改您的 DNS 记录以指向另一台服务器。
这次健康检查可能每 60 秒进行一次。
DNS 记录具有缓存过期时间,称为 TTL。在 DNS 记录上设置较低的 TTL(例如 60 秒)可让您的 DNS 提供商在检测到其他服务器宕机后最多 60 秒内将您的所有流量转移到其他服务器。但这依赖于每个客户端都遵守规则,而并非所有客户端都遵守规则。
一些 DNS 解析器(不受您控制)会完全忽略 TTL 或低于某个阈值(例如一小时)的 TTL,并向其客户端提供这些记录的自己的 TTL。除非执行硬刷新,否则某些浏览器会缓存 DNS 查找。
如上所述的基于 DNS 的故障转移可能平均在一分钟内对大多数 (90%) 用户起作用。有些用户不会看到任何停机时间,有些用户会看到两分钟的停机时间(健康检查时间加上 DNS TTL 到期时间),有些用户会看到停机时间,直到您的主设备恢复运行。大多数用户会看到大约一分钟的停机时间。
低 TTL 会给您的提供商的 DNS 服务器带来大量额外流量,因此可能会产生额外的费用。
这是否是可接受的改进取决于答案范围之外的许多因素。
单个数据中心中可靠的负载均衡器设备可以为您的用户提供更好的体验,直到最大的停机来源是数据中心或负载均衡器本身。