Clustering can be an appropriate solution for high availability, but it is not always the best choice. For example, it is only a solution to solve local failures – it has a distance limitation – so it cannot be used for disaster recovery to a remote data center. Other high availability solutions may be more appropriate depending on the cost of downtime. On the other hand, clustering is one of the high availability technologies that will provide automatic failover and will not degrade the over all SQL Server performance.
Clustering requires a different skill set than most other DBA functions, so a customer implementing clustering should have the talent in-house to maintain the cluster. Applications using databases on a clustered server must be cluster aware -- they must have some logic built into them to prevent data loss which may occur during cluster failover.
With this in mind I would recommend clustering to a client when clustering meets their high availability requirements, they have a budget to justify its cost, the application is cluster aware and they have the skill set to support and maintain the cluster on site.
This was first published in January 2007