Kentico CMS High Availability & Scalability – Introduction
We are often asked: “Does Kentico CMS support high availability and scalability?”. And the answer is “YES”. But maybe, you are looking HOW does Kentico CMS support them? This post is a first part of short series that will help you better understand “What does it really mean high availability and scalability” and “How Kentico CMS fits your needs”. The introduction part describes the basics of the High Availability & Scalability.
High Availability (HA)
What does it mean High availability from the users’ perspective? They want their systems to be ready to serve them at all the time. Sounds easy, doesn’t it?
Speaking about the Availability we think uptime (a time when the system is available) and downtime (when the system is unavailable). Availability is usually expressed as a percentage of uptime in a given year.
Downtime it’s not only the time when the system is switched off. But it’s also time for applying service packs, restoring databases and other activities leading to unavailability of the system.
The following table shows the translation from a given availability percentage to the corresponding amount of time the system would be unavailable.
Downtime per year
99% ("two nines")
99.9% ("three nines")
99.99% ("four nines")
99.999% ("five nines")
99.9999% ("six nines")
The higher number of nines the higher availability we have. In general, the number of nines is used more by the marketing than by the engineers that use more often probability of the downtime (like 0.00001). And in fact, the "six nines" system is still toooooo expensive and sometimes sounds like sci-fi. Most business require at maximum 99.99%.
What we need to be high available?
HW that is able to run all the time. It includes high quality servers with hot-plug disks/memories/CPUs/etc., RAID or SAN storages, stabile internet connection, UPS, Clusters or Geo-clusters and other components. Check your hardware compatibility at http://www.windowsservercatalog.com/results.aspx?bCatId=1283
2) OS & DB supporting high availability. When applying Service Packs the system is almost unavailable, so we need more than ONE server! This series is mainly focused on SQL Server HA features and how to use them together with Kentico CMS.
3) Application (Kentico CMS) supporting the High Availability.
There are plenty of features that affect HA, the most important are:
· Failure detection – detection of the failure could be automatic (recognized by the system) or non-automatic.
· Failover (also called Disaster Recovery) - is a process of the system recovering from the failure. It can be automatic or manual.
· Type of the standby server (backup servers, secondary servers, etc.)
o Hot standby server is active backup server, 1:1 mirror of the primary server with automatic failure detection and automatic failover. Hot standby server is transactional consistent with the primary server.
o Warm standby server is active backup server, that couldn’t be transactional consistent and doesn’t support automatic failure detection and automatic failover.
o Cold standby server is passive backup server that has to be completely manually restored from the backup files.
The following picture shows the most important components that help you to achieve given “nines” on MS platform and SQL Server. But to be honest, usage of these components doesn’t mean we are HA at the given “nines”. We have to use and configure them properly!
As I wrote above, this series is focused on MS SQL HA features. In the picture above we can see that MS SQL Server provides following HA features:
· Failover Clustering – Failover cluster is one of the most common HA scenario. Cluster requires more servers (called Nodes), shared disk storage (RAID, SAN) and fast connectivity. SQL Clustering Service is built on top of the Microsoft Clustering Services that are part of the Windows Server. Cluster supports Hot standby servers.
· Replications – Replications help us to replicate our database from one server to other/others. Replications can by one-directional or bi-directional. Replications support Warm standby servers.
· Log Shipping – This service was introduced in MS SQL 2005. Log Shipping „ships“ transactional log from the primary server to the secondary one where is automatically recovered. Log Shipping supports Warm standby servers.
· Mirroring – is the newest HA feature introduced in MS SQL 2008 SP1. In general, all transactions from the primary server are automatically distributed to the secondary server (using two-phase commit). Depending on the configuration Mirroring supports Hot or Warm standby servers.
Kentico CMS is able to work with all of these features and in the upcoming blog posts, we will look closer how to configure SQL Server and Kentico CMS to work together.
… Database High Availability on MS platform is about using SQL Server with Windows Server not SQL Express/Windows Web Edition and it’s not working on a shared hosting in general and has to be supported by powerful Hardware …
Scalability is the ability of a product (hardware or software) to handle a large increase in users, workload or transactions without undue strain.
The product can scale up (vertically) or scale out (horizontally). To scale up means to add resources to a single server – it could be additional memory, disk, CPU or upgrading to higher edition. To scale out means to add additional server to the system. The scale-out model is closely connected with distributed applications, shared data storages, load balancing, web farms etc.
Kentico CMS supports web farms where we can use a shared database or separate databases per single server. So, we can “unlimitedly” scale out our solution. Web farm support will be described in the last blog post of this series.
High Availability, Failure detection, Failover etc. help us when our system crashed or is unavailable due other reasons. But, these systems are not immune to the human failures. How can help us these systems in the case when users delete/change some very important data? In this case is High Availability and Scalability unfortunately against us as they synchronize these changes automatically and quickly across all servers.
How to solve these problems? It’s very easy, but it’s not so often used…it’s Backup & Restore that help us in such situations.
We can backup & restore Kentico CMS using standard SQL features or use Import/Export Kentico functionality.
The next part of this series will be focused on the backup & restore of Kentico CMS data to be prepared for the human failures.
Next blog posts will be focused on the following topics:
1. Backup & Restore
2. SQL Server Clustering
4. Log shipping
6. Web Farms
Hope, you will use this series as the start point of the High Availability and Scalability for your Kentico CMS solutions.