A melhor solução para isso é usar um cluster de dois nós e uma pulsação interna. Quando o primeiro servidor fica offline, o segundo pode assumir um IP compartilhado virtual (que é o local em que o site está hospedado).
O problema em fazer isso é que, na sua situação, a maioria dos produtos é projetada para ser executada em dois sistemas Windows ou dois sistemas Linux.