As the name suggests, a hosting cluster is essentially a collection of hosting servers that are connected to each other, with the help of hardware and software, in a manner so that they together work as a single large high power server. In the extreme scenario, a very large cluster of servers can provide the capabilities of even a super computer.
This architecture has built-in redundancy to take care of situations where one or more servers in a cluster may break down due to hardware or software failure, or may be shut down for a scheduled maintenance or upgrade. The overall performance of the hosting cluster would not be impacted in such eventualities, thereby providing better availability and reliability, that is much needed for mission critical applications.
Further, a hosting cluster can take advantage of cloud technology to deploy server clusters in data centers in multiple geographic zones to further increase availability in case of a data center collapse. Off-course, this could be a very expensive proposition, though desirable for mission critical applications.
This type of resource aggregation is necessary for running enterprise scale applications that require hundreds of users to simultaneously work on an enterprise scale ERP system, or for running research related applications that work on big data and need to carry out millions of iterations, or for running other big data analysis software and AI systems.
A hosting cluster would even be suitable for running the software systems that drive a huge online business - such as an online retail store of Amazon, or for running a SaaS system with hundreds of thousands or even millions of users - such as the SalesForce SaaS, or other applications such as Google search engine, Facebook, Instagram, and Twitter like social media sites, and similar other types of applications.
It is easy to visualize the scenario where when you need to enhance the computing power of a single computer, you would add more CPU, RAM and storage disks inside the same box. This method of augmenting a computer’s capabilities is termed as vertical scaling.
However, there is a limit up to which you can augment the hardware in one server box. Beyond this, you would need to add more boxes to augment the compute capability. This is termed as horizontal scaling. A hosting cluster falls in this category. At the lowest end, a collection of 2 servers can form a hosting cluster, and at the upper end you could have hundreds of servers in a cluster.
Normally, servers in a hosting cluster (technically termed as nodes) are each provisioned for a specific type of application service. For example, a cluster may have dedicated nodes for running web server, database server, file server, email server, etc. The number of nodes provisioned for each type of service shall depend upon the kind of load requirements for the type of service. This type of deployment where each node is configured to run one specialized service makes each node work very efficiently.
Fundamentally, a hosting cluster is a deployment architecture that enables horizontal scaling of compute resources. The architecture takes care of primarily the following:
In short, a hosting cluster is essentially a cluster of servers working together to serve a single purpose to ensure uninterrupted service - practically 100% uptime.
Here is a typical illustration of a hosting cluster:
As can be seen, each node in a cluster of servers is typically deployed to provide a specialized service. Accordingly each node may have slightly different hardware configuration to make it serve it’s specialized purpose efficiently.
A Private Switch can help isolate the entire cluster from the rest of the web, when required.
A dedicated Load Balancer plays the role of interfacing with the web traffic and directing service requests to appropriate active node that is designated to cater to that specialized service request. It has the ability to detect which nodes are healthy and active. It may be noted that even in case of cloud hosting, a load balancer is deployed with a similar purpose.
A dedicated Firewall is configured to implement security policies and rules specific to the hosting cluster, for added protection from cyber attacks.
The advantages of a hosting cluster would be quite apparent by now. Here is a list of the main advantages:
1. High Availability - Due to built in redundancy and fail-over mechanism, the cluster can provide the purposed services with practically 100% uptime.
2. High Performance - A typical hosting cluster has dedicated nodes for specialized services. These nodes are specifically designed and configured in hardware and software to enable them cater to the specialized service efficiently. On the contrary, when all services are packed in a single server, trade-offs are done to balance the performance for a wide variety of services.
3. High Security - A private switch and a dedicated firewall can make a hosting cluster highly secure. It will allow implementing specific rules, such as completely banning access from specified countries, or completely banning root or administrative level access from all except a couple of specific IP addresses, and so on.
4. Easy Maintenance - Maintenance activities can include hardware replacements, hardware upgrades, operating system upgrades, application software upgrades, etc. Nodes can be shut down one at a time for maintenance, without impacting the overall performance of the cluster.
5. Scalability - Redundant nodes can be brought up as and when the workload requirements increase and brought down when the load is less. Further, newer nodes can be added to the cluster without bringing down the entire cluster.
1. Complexity - A hosting cluster is a fairly complex architecture and requires expert system administrators to properly deploy, and troubleshoot and rectify issues. Although all required software and hardware technology is available to efficiently run, monitor and maintain a hosting cluster, the persons behind this task need to have good expertise to be able to configure/ utilize the technology to their advantage.
2. Application Design Restrictions - An application designed to run on a single server cannot run on a hosting cluster. Applications running on a hosting cluster (or for that matter, even on a cloud deployment) are designed for separated storage of code and data. The application codes reside on multiple node instances and each will read - write data from files and databases that reside of separate nodes within the cluster network. The design should take care of the nuances of reading and writing data from a shared network storage system. Specific mechanisms for maintaining application states in a non-volatile storage needs to be implemented.
3. Cost - No doubt, this configuration is quite expensive. However, as it is meant for catering to the needs of huge workloads, if you evaluate in terms of the benefits it provides, the cost factor will become unimportant.
As would be evident by now, cluster hosting is the solution for enterprise scale application deployment that need to handle huge processing workloads and huge traffic loads. The complexity of this architecture poses several technological challenges and hence require hiring experts with a high degree of skills and experience.
However, when your requirements grow to a scale where you need to serve mission critical applications without interruption, a hosting cluster is the best solution.
Rajeev Kumar is the primary author of How2Lab. He is a B.Tech. from IIT Kanpur with several years of experience in IT education and Software development. He has taught a wide spectrum of people including fresh young talents, students of premier engineering colleges & management institutes, and IT professionals.
Rajeev has founded Computer Solutions & Web Services Worldwide. He has hands-on experience of building variety of websites and business applications, that include - SaaS based erp & e-commerce systems, and cloud deployed operations management software for health-care, manufacturing and other industries.