A melhor solução de cluster é uma solução no nível do aplicativo, que replica as sessões para todos os servidores envolvidos. Se você tem isso no lugar, você precisa de um banco de dados abaixo disso, que replica os dados para ambos os locais.
Tendo isso em prática, você estará pronto para o balanceamento de carga e terá um cluster ativo-ativo sem necessidade de um mecanismo de failover.
O SO não deve importar muito (pode até ser o Linux e o W2K8R2). O único caso em que você deve pensar é a reentrada de um nó que estava inativo antes. O aplicativo não deve ser iniciado até que o banco de dados esteja em sincronia novamente.