Should you choose a SQL Server Failover Cluster Instance or an Availability Group?

Author by Concurrency Blog

SQL Server 2012 introduced a new marketing term, AlwaysOn. Under this umbrella are two technologies: Failover Clustering Instances (FCIs) and Availability Groups (AGs). While they share some common traits, there are important differences as well. If you're wondering which to implement, here are a few questions to help guide you.

Are you using DTC? If your application uses Distributed Transaction Coordinator (DTC), you won't be able to use an AG - it's not supported in SQL Server 2012 or 2014. The best choice here is an FCI for HA within the same datacenter. 

Do you have or want shared storage? An FCI relies on shared storage, such as a SAN or SMB. This also means your storage is a single point of failure, so you need another copy of the data kept somewhere - through a storage replication technology or even log shipping. An AG does not need shared storage. Each replica in an AG will keep its own copy of the data. You'll have to make decisions about whether those replicas are synchronous or asynchronous - and those decisions will affect performance.

Do you need or want a separate, readable copy of the data? With FCIs, there is one copy of the data. To enable users to read the data without negatively impacting performance - for reporting, as an example - you need to set up a separate technology such as database mirroring with snapshots, transactional replication, or log shipping in standby mode. In an AG, you have the option to make one or more replicas readable secondaries. This means you are only using one feature to satisfy multiple requirements.

In the event of a failover, do you want only databases to fail over, or the entire instance (logins, jobs, etc.)? An FCI covers everything about the SQL Server instance - databases, logins, certificates, Extended Events sessions, Policy Based Management policies, Agent Jobs, and more. Whether you have two databases or twenty databases, they will all go together. An AG will only fail over the data in the databases that are in the group. You must separately manage everything else. The more replicas you add, the more complex management becomes.

Do you need or want to span multiple datacenters? Both FCIs and AGs can span multiple datacenters, but the implementations are different. FCIs require a multi-subnet cluster and replication between the shared storage on each site. You can set up AG replicas in two different datacenters; async is recommended to not impact performance negatively. With SQL Server 2014, you can even extend your on-premises AG to an Azure replica!

Do you have the budget for Enterprise Edition? The final question is one of cost. To set up an AG, each replica must be licensed with SQL Server Enterprise Edition. SQL Server Standard Edition allows for a two-node FCI; that can be expanded with Enterprise Edition.

Failover Clustering Instances are still my go-to choice when I need highly-available instances, without the need for additional reporting instances or multiple datacenters. AGs become attractive if the business is looking for an all-in-one HA, DR, and reporting feature - albeit with a higher price tag. When you're planning your next implementation and need HA, DR, or reporting capabilities, make sure you look at the problem from all angles before deciding on a feature.


Concurrency Blog

The latest about Concurrency