我必须为未来的 ASP.NET 应用程序创建一份报价。他们想要高可用性(99.9% 以上)。
因此,我正在寻找使用 .Net 技术(asp.net mvc 3、IIS 7、SQL Server 2008 R2)的最佳解决方案以确保这种可用性。
所以:
- 有没有办法在 IIS 服务器上进行一些集群?
- 有什么方法可以确保 SQL Server 的可用性?在两台服务器之间复制数据(我已经知道这样做了)+如果第一台服务器不可用,则切换到第二台服务器(不知道这样做),或者有没有办法直接声明一个数据库集群,并且每个 sql 指令都写入两个或多个数据库中?
另一个目标是,如果我有两个 IIS 服务器和两个 SQL 服务器,则可以使用一些负载平衡来提高性能。这可能吗?
非常感谢您的建议/链接
答案1
对于 SQL Server,请从这里开始:高可用性解决方案概述。请特别注意有关故障转移群集的部分,这听起来像是您正在寻找的解决方案。
答案2
IIS 支持故障转移群集(也称为服务器群集)和 NLB,即网络负载平衡 - 这绝对不是一回事。
故障转移群集在 IP 级别工作,当主服务器发生故障或不可用超过一毫秒时,它会替代热备用服务器。
虽然检测速度非常快,但启动特定备用服务器可能并非如此;对于 SQL 服务器,启动故障转移服务器将需要 30-60 秒。
另一方面,IIS NLB 绝对不是冗余的 - 它只是让 2 个或更多服务器处理相同的工作负载,并根据确定性算法决定哪个服务器处理特定请求。这可能会或可能不会对基于会话的应用程序造成严重破坏,而且如果其中一台服务器发生故障,其请求将得不到答复。
基于 VIP 的硬件负载平衡通常比这更可取。
对于 SQL 服务器来说,最快、最可用的解决方案是数据库镜像 - 尽管这发生在数据库级别,并且不能保护整个 SQL 实例自动地。
既然您表示会为此获得报酬,我建议您熟悉可用的各种技术和策略——这些都不是初学者的科目。