Embora esse não seja o foco da questão, quero salientar que você está incorrendo em uma penalidade de desempenho usando o estado da sessão no banco de dados. Existem alguns problemas desagradáveis (com algumas soluções alternativas) que ocorrem com esse modelo de armazenamento de sessão. Vale a pena o tempo para fazer com que as sessões persistentes funcionem corretamente para que você possa usar o armazenamento InProc - mesmo que isso signifique uma carga assimétrica nos front-ends da web.
Eu iria me aprofundar na replicação de mesclagem, particionamento, replicação transacional peer-to-peer e outras técnicas de dimensionamento / FT / HA com o SQL Server, mas isso parece um exagero para o seu ambiente - e requer SQL não-Express. Servidor. O clustering de failover do SQL Server com o MS Cluster Services, limitado como está, foi projetado para tolerância a falhas. No entanto, a configuração usual de único site depende do armazenamento compartilhado, o que não ajuda em nada.
Recomendarei que você se concentre em mais armazenamento de qualidade, usando uma SAN (ou até mesmo um NAS, dependendo da carga e do orçamento) com o RAID 10 (ou 6, se não puder pagar) com hot spares, backups freqüentes e, de preferência, em um dispositivo que procura ativamente por problemas de integridade - não apenas um monte de discos baratos. (Embora, você poderia fazer pior do que OpenFiler em hardware decente.)
Se você está limitado ao RAID 5 em HDDs nos servidores (sem armazenamento compartilhado), procure em cluster de failover "multi-site" usando a replicação , embora você possa encontrar o preço para implementar (o SQL Server Enterprise Edition é um requisito mínimo) muito proibitivo.