If you are running a mission-critical system, chances are that you wouldn’t like to experience downtime on such a system. Some systems are so critical that five minutes of downtime can cost an organisation a lot of money. In this post we will touch on the basics of high-availability. Study the image below.
What’s happening here?
We have a web based application. This can be anything from a web store to a high traffic news website. The first device on this system is a load-balancer which handles incoming connections and distributes them to two web servers. The load-balancer uses algorithms to choose which web server to forward traffic to.
The web servers are hosting similar content for consistency. Changes made on one web server must be made on the other. The web servers then connect to a database cluster through a load-balancer. The load-balancer plays its native role of forwarding traffic from the web servers to the database cluster nodes. The database cluster is made up of three nodes. The nodes are continuously synchronising and replicating data.
What’s wrong with our architecture?
While the above architecture is fine, it has one flaw. One of the purposes of high-availability is eliminating as much single points of failures as possible. What will happen if one of the load-balancers go down? The whole thing will fall over. To avoid such a situation we just need to cluster the load-balancers too so that if one load-balancer goes down we at least have another one up that will serve requests while we fix the broken one.
Such architecture must of course be complimented by a robust disaster recovery strategy. What will happen if the site or datacentre in which the infrastructure is hosted gets damaged by a natural disaster? We will discuss disaster recovery in a future post.
Talk to us!!
If you have mission critical systems and not employing a high-availability strategy, just reach out to us. We will assist in engineering high-availability architecture that will ensure continuous running of your critical systems.