构build容错IIS / MSSQL堆栈(Sql Clustering?)

我们昨天在托pipe数据库和IIS的服务器上发生了突袭故障。

我们正在试图确定我们的IIS和MSSQL托pipe环境的最佳方式。

我们希望在IIS方面和SQL方面有冗余。

对于我们的一些应用程序,我们使用pfSense来负载均衡两个Web服务器(粘滞会话不能正常工作,所以我们已经进入数据库中的会话状态)。 这两个Web服务器碰到一个运行SQL Express的MSSQL实例(免费,我们的数据库非常小,最大的是1GB)。

对于我们的IIS负载平衡,我感到相当自信,因为当我们运行补丁的时候,它“只是起作用”,我并不需要太多的工作。

但是,我们的SQL Server基础架构让我担心。

构build容错sql堆栈的最佳方法是什么?

编辑:现在我想到了,一个集群不一定能解决我们的问题。 我们有两个驱动器在RAID5中失败。 一个100%失败,另一个尚未死亡,但标志着坏道的失败。 我们有一个数据库在坏的集群中,我们不得不从备份中恢复。 一个集群可能会破坏整个集群中的坏数据。 哎呀!

虽然这不是问题的焦点,但我想指出的是,在数据库中使用会话状态会导致性能损失。 有一些讨厌的问题(有一些解决方法)已知与该会话存储模型发生。 让粘性会话正常工作是值得的,所以您可以使用InProc存储 – 即使这意味着Web前端有些不对称的负载。

我将深入研究合并复制,分区,对等事务复制以及其他使用SQL Server进行扩展/ FT / HA的技术,但这些看起来对于您的环境来说是过度的 – 并且需要非Express SQL Server。 带有MS群集服务的SQL Server故障转移群集,实际上是有限的,是为了容错而devise的。 但是,通常的单站点configuration依赖于共享存储,而这完全不能帮助您。

我将build议您专注于更高质量的存储,通过使用带有热备份的RAID 10(或6,如果您负担不起),使用SAN(甚至NAS,取决于您的负载和预算)频繁的备份,最好在主动扫描完整性问题的设备上 – 而不仅仅是一堆便宜的磁盘。 (虽然在体面的硬件上你可能比OpenFiler更糟糕。)

如果服务器上的硬盘驱动器限于RAID 5(无共享存储),请使用复制function查看“多站点”故障转移群集 ,但您可能会发现要实现的价格(SQL Server Enterprise Edition是最低要求)非常禁忌。