In this article I will compare Clustered Web Servers with a Single Server model in regards to enhancing the speed, reliability and scalability of your website.
Clustered Web Servers vs Single
In a traditional model your site is installed on a single server. This is very easy to setup and get going however it has limitations in performance and reliability. A cluster on the other hand refers to using multiple or more than one server to perform the same task. Both Google and Facebook use clusters in order to achieve the performance and reliability that users demand. It also provides the scalability that these businesses need to keep up with demand.
When scaling the infrastructure under your website you can go one of two ways. You can either scale up, as in buy bigger more powerful servers, or you can scale out and get more servers and distribute the load. Traditionally the option would be to scale up. What you would do is buy a new more powerful server and migrate your site to this new server. The problem with this solution is that you are limited by how big a server you can source and of course you need time in which to purchase and deploy the new server. If you however scale out you can increase capacity far more than by buying bigger servers and you can add on at a rapid pace.
How does this compare to the Cloud?
And what about the Cloud you may ask? Well the technology used to create Web Clusters is very much the same technology that Cloud providers use, so in effect any provider that uses Clustering is a Cloud Provider. For more information about the Cloud you could always read our previous article.
Apart from performance another issue with using a single server model is reliability. That is if the server goes down so does your site. On the other hand if you are running your site on a clustered environment a single server failure is unlikely to bring your site down as other servers within the cluster will automatically replace the failed server.
How does this work?
Clustering web servers requires a load balancer to be in front of the web servers. What this device does is distribute the requests between the web servers. When configured correctly a load balancer can ignore faulty web servers. What this means is that if a web server fails the load balancer will stop directing traffic to it, so in effect the visitors going to your website will not notice the failure. This is in stark contrast to a single server model where a failure will bring down all sites loaded on it until the server can either be repaired or replaced.
What do we use?
And now you may be asking what we use for hosting our clients web sites. In a nut shell we use multiple Nginx load balancers to deliver traffic to a cluster of Apache Web Servers. This provides us with superior reliability but also enables us to update our web servers at anytime without affecting our end users. What we do is drop servers out of the cluster, patch/update the server software, test that nothing has broken and then put it back in rotation. This way we can provide both a secure and stable platform without inconveniencing our clients with downtime.
As discussed in this article by Clustering our Web Servers we can provide better performance and reliability over a traditional single server model. With the ever increasing move to decrease load times and increase reliability can you really afford to not use a provider that uses Clustered Web Servers?