我打算在两个不同的地理位置安装我的Web应用程序,每个区域有两个应用程序服务器副本。 为了负载平衡应用程序服务器,我正在考虑使用使用Round Robin并提供DNS故障转移的DNSMadeEasy。 对于应用程序服务器,我将使用nginx和php-fpm。 我的应用程序也将使用SSL,我没有粘性会话。
任何人都可以告诉我configuration中是否有任何毛病。 我完全不熟悉负载平衡,并且从网上完成的任何研究,我已经达到上述configuration。
使用DNS负载均衡是便宜,简单和有效的。
使用DNS进行故障转移仍然很便宜,但不是那么简单,不太有效。 通过让DNS提供商定期对您的服务执行运行状况检查,并在运行状况检查失败时将您的DNSlogging更改为指向其他服务器来实现故障转移。
这个健康检查可能是每60秒。
DNSlogging具有称为TTL的caching过期时间。 在您的DNSlogging中设置较低的TTL(例如60秒),可以让您的DNS提供商在检测到closures后最多60秒内将所有stream量移到其他服务器。 但这依赖于每一个遵守规则的客户,而不是所有的客户都这样做。
某些DNSparsing器(不受控制)完全忽略TTL,或者TTL低于某个阈值(例如一个小时),并将这些logging的TTL提供给其客户端。 一些浏览器cachingDNS查找,除非执行硬刷新。
如上所述,基于DNS的故障转移function可能在平均一分钟内为大多数(90%)用户提供服务。 有些用户不会看到任何停机时间,有些用户会看到两分钟的停机时间(健康检查的时间加上DNS TTL失效的时间),有些用户会看到停机时间,直到您的主机恢复正常。 大多数用户会看到大约一分钟的停机时间。
低TTL会导致您提供商的DNS服务器产生大量额外stream量,因此可能会涉及额外的成本。
这是否是可以接受的改善取决于答案范围之外的许多因素。
单个数据中心内的可靠负载平衡器设备可以为您的用户提供更好的体验,直到您的最大停机时间源自数据中心或负载平衡器本身。