我们的团队目前正在计划我们的下一个大项目,它看起来会是一个令人兴奋的项目!
我们的产品将是一个 ASP.NET MVC 网站,它既可以部署在客户自己的服务器上,也可以付费在我们的服务器上使用一个实例(这将通过在 Web 框上运行的配置服务自动完成,但这实际上是另一个话题)。
我们不想在不需要的基础设施上花费过多,因此对于初始部署,我们希望有 2 个运行 IIS7 的 Win2k8 盒作为 Web 盒。
1 个主要的强大的 SQL Server 2008 数据库服务器作为主服务器运行,而一个性能稍弱的服务器则作为从属/故障转移服务器运行。
SQL 故障转移不是问题(因为我们是 SQL Server 专家!)
然而,我们不确定如何实现 Web 故障转移,目前我们不想在早期阶段将负载分散到两个 Web 服务器之间,而是让它耐心等待,以防主机发生故障!
我研究过各种高可用性系统,例如 HAproxy 等,但不完全了解如何实现这种配置。
(我并不是说我们正在寻求 HAproxy 的建议......它只是我们所见过的引起巨大波澜的系统之一,与 ldirectord 等一起......)
我还应该指出,如果需要的话,我们并不害怕在 Linux 机器上运行负载平衡器!
答案1
使用 haproxy 设置故障转移非常简单且非常灵活。将它连接到机器上,它会将连接转发到您指向的任何位置。您可以依靠其基本的 http 检查来指向备份服务器,或者指向脚本页面以获取有关何时切换的更复杂规则。
您可能主要使用 mvc 来避免这种情况,但是如果您使用会话状态,则需要在 Web 服务器之间共享它。
然后负载均衡器就变成了 SPoF,因此您需要在多台机器上运行它,并使用循环 DNS 或 ucarp 之类的东西让它们共享一个 IP 地址。