IIS:你如何处理Windows重启?

我们有一个VPS(Windows 2008 R2 + IIS7.5)和一个asp.net mvc 3应用程序。

主要问题是:如何处理Windows需要重新启动时的问题? (安装Windows更新或其他任何东西之后)。 目标是使网站24/7,但首先可以向用户显示一条消息。 (我们很快会回来,像app_offline.htm)

我们的应用程序使用SQL,并且还写入/读取一些未存储在SQL中的文件(上传的照片,文档)。

你有什么build议?

  1. 用ARR加载balacing? (1 + 2服务器,但如果前端服务器需要重新启动?)
  2. Windows故障转移群集?
  3. SQL故障转移群集?
  4. 如何处理上传的文件?

我真的不知道什么是最好的(也是最简单的)解决scheme。

通常要启用高可用性,您需要有多个服务器。 通常情况下,您将有2台或更多服务器位于负载平衡设置之后,以便在发生中断或维护期间将负载分配给另一台服务器。

很明显,SQL和文件存储需要位于不同的后端服务器或集群上。 最简单的HA设置将是这样的:

A Load Balancer (Possibly redundant) | Two Web Servers | | | | Clustered SQL Server (Unless a single point of failure is ok) | File Servers using DFS-R (Unless a single point of failure is ok) 

我们有一个haproxy负载均衡器在我们的Web服务器的haproxy 。 我们有一个关机脚本,它发送一个命令到haproxy实例,将服务器从池中取出(它,呃,有点不好意思,因为它使用一个.net SSH客户端login到haproxy机器并运行一个命令将其pipe道传输到socat stdio /etc/haproxy/haproxysock – 但它的工作原理)。 当服务器重新联机时,它会运行另一个命令,将服务器放回池中。

这意味着最终用户永远不会知道服务器什么时候到来,因为总是有第二个Web服务器占用这个时间。

在这种情况下,如果我们有一个灾难性的失败,我们有一个自定义的“哎呀,我们很快会回来”的消息,如果有一个空池或每个服务器失败,haproxy服务器。

至于其余的设备,我顺从布伦特的答案 。 DFS-R非常棒(也适用于非现场故障转移)。 我们不做SQL集群,但是我们做的SQL镜像几乎一样好。

如果资源不是问题,并且您的目标是在仍能够重新启动的情况下将接通时间设置为接近5个9 /高可用性(HA) 。 我build议使用包含主机间共享存储的服务器虚拟化解决scheme。 在下面的图中,我将iSCSI和VMware与存储networking结合使用。 该networking正在使用热备份路由器协议(HSRP)(由思科提供,但也有其他)。 在这种configuration和您的情况下,VMotion是可选的。 SRDF和其他数据复制/集群允许在所有级别上完全冗余。 该图很简单,没有说明LUN或考虑FC架构而不是iSCSI。

另外,从经验来看,许多数据中心将大量的时间和资源投入到技术中,却忘记了适当的配电。 权力,可以轻易毁掉一天。 考虑冗余电源,PDU,面板和商用电源的对称性。 UPS也很关键。

在这里输入图像说明

海事组织最简单的解决办法就是看看Azure,它不仅可以让你专注于开发,而且还可以得到很好的正常运行时间(当它停机时它们会报销)。 SQL不在同一台服务器上,您可以将上传的文件存储在BLOB存储中。

也许不是你想要走的路线,但我已经使用了大约一年半的时间,并且非常满意:)

哦,如果你有一个MSDN订阅,Bizspark或网站的火花接近免费(当然取决于您的网站的stream量)。