I got 6 server iis and i also got WCF service to.
I use ARR (Application Request Routing), is an IIS module extension, to route the request to my web farm. it's working very fine.
I also use NLB for my WCF service like Mathieu tell.
For my SQL server i use Hyper-V, two VM for my sql server, with a SQL cluster and windows faileover cluster and Live migration.
I will answer in french, so if some body can translate it's will be appreciate.
Ce que vous devez faire, c'est avoir un serveur de cluster. Ce serveur va servir à maintenir le "heart beat" entre vos deux serveur SQL. Les deux serveur SQL doivent être sur des machines distinct, mais doivent partager le même partage réseaux (SAN ou NAS ou autre). Les bases de donnée sont monté sur un seul serveur à la fois. Lorsque le "heart beat" est brisé, l'autre serveur prend la relève, et monte en une fraction de seconde les base de donnée et votre service est revenue, ceci est le "failover cluster". Lorsque le processus de transfert de serveur commence vous pouvez perdre quelques pings. Ce qui va détruire tous vos connection actuelle vers la base de donnée. La seul facons que vous pouvez être "UP" à 99 % c'est d'y ajouter live migration. Vous avez un 2 serveur Hyper-V (host) qui monte vos deux serveur SQL (un sur chaque host), vous activer le live migration entre vos deux machine virtuel, donc si vous avez à redémarer un host (serveur qui héberge SQL), vous faites un live migration de votre machine sql d'un host à l'autre. La mémoire sera transferer d'un coté à l'autre et vous n'aurez aucune perte de connection. Votre failover fonctionne toujours, donc si c'est la machine virtuelle qui détient le service sql qui plante, alors c'est l'autre qui va prendre la relève et vous perdrez alors quelques ping mais votre service sera remonté très rapidement.
J'epère que cela va vous aider, et désoler pour le francais, mais en anglais j'aurais surement été mal compris.