Acho que o IIS e o SQL estão em servidores separados:
IIS: Você pode usar o recurso Microsoft NLB para distribuir a carga entre 2 ou mais servidores. Eles podem ser edições da Web do Windows. Está incluído no windows. Você terá um IP virtual ao qual o cliente se conectará. Servidores irão "compartilhar" este ip e espalhar o cliente para outro servidor. O multicast / unicast depende da rede, número de comunicação nic e intra-servidor ou não. O NLB não reconhece o aplicativo, se você fechar o IIS, os usuários serão perdidos se você tiver afinidade. O NLB apenas remove um servidor se estiver abaixo do ponto de vista do ip. Você terá que mudar na metabase do IIS (loadbalancercapabilities) como explicado aqui: link Do ponto de vista da licença, está incluído no Windows, sem mais custo.
Do ponto de vista do WCF: O cliente se conectará a um dos servidores da Web do X. Você pode mantê-los nos mesmos servidores enquanto este está funcionando (por meio de afinidade). A afinidade é baseada em um hash entre o IP do cliente e o IP virtual. Se um servidor falhar, o cliente será despachado para outros servidores. Se você usar sessões / autenticação http, terá que armazenar a sessão fora do servidor, como no banco de dados. Outra sessão do cliente será perdida quando um servidor falhar.
SQL: Você tem opções diferentes: usando o mecanismo SQL para replicar o banco de dados ou usar o Microsoft MSCS (cluster). A última delas significa a versão corporativa do Windows e o armazenamento compartilhado externo, o que implica alto custo (mas ainda a versão padrão do SQL). Indo com camada pura SQL, você pode espelhar seu banco de dados. Cada servidor recebeu um armazenamento local e a transação primária de envio em tempo real para o servidor em espera (synchrone ou assincronizado). Quando o servidor da Web se conecta, o servidor informa que um servidor em espera está disponível em caso de problema, por meio do cliente nativo do SQL e do ADO.Net. Portanto, seu servidor da Web alterna para o servidor em espera automaticamente em caso de problema. Tudo isso funciona com a versão padrão do SQL. Os bancos de dados precisam estar no modo de recuperação total. É por banco de dados, portanto, se seu WCF usar vários bancos de dados e apenas um estiver corrompido, você terá problemas porque um banco de dados está ativo no servidor em espera, mas todos os outros ainda estão no servidor principal.
Mais informações aqui: link