What is a cluster?
According to Dictionary: A number of things of the same kind, growing or held together.
According to wikipedia: A computer cluster is a group of linked computers, working together closely so that in many respects they form a single computer. The components of a cluster are commonly, but not always, connected to each other through fast local area networks. Clusters are usually deployed to improve performance and/or availability over that provided by a single computer, while typically being much more cost-effective than single computers of comparable speed or availability .
To be very simple we can say : A group of computer processing for a single cause and as single entity to the external world.
The implementers and the developers should know computer Clusters only. Other users using the computer clusters are unaware of their existence (that’s why we use them J ).
Who should learn clusters?
Being a very lazy person, before studying anything my first question always is WHY should I learn this, what’s the benefit?
Here an introduction to Unix clusters is given.
There are broadly two categories of people who should get benefitted from this document.
i)Unix Sysadmins.
ii)Programmers.
If you are one of these or want to be one of these or you are of studious kind and not a lazy being than please read ahead, else you can save your time ;) .
Why do we need clusters?
So here comes another why, why do we need clusters.
Reason is same as why we divide the work among people – To do things fast or to share workload. Some specific reasons we will read as we go ahead in this article.
Types of clusters
There are three main categories of computer clusters.
1) Computational / High Performance
2) Load Balancing.
3) High Availability.
Definitions
Computational: is set of computers which are connected to each other, and are physically located close to each other, in order to solve problems more efficiently. A single program would be divided among the members of the clusters for computing, so that we can utilize all members and get results fast. Parallel processing is used for this purpose.
Load Balancing: As the name suggests, these clusters have comptuers connected to each other and they give same service. To the outside world it’s a single system.
High Availability: In this environment a computer system acts as the backup system to one or more primary systems. When there is a failure in a primary system, the critical applications running on that system are failed over to its designated backup system.
Cluster VS Single Large Computer
Some benefits of clusters include:
- Lower cost: In general smaller sized systems benefit the most from commoditization of technology. Both hardware and software acquisition costs tend to be significantly lower for smaller systems. However you should consider the total cost of ownership of your computing environment while making a purchase decision. Next subsection points to some factors which may offset some of the advantages of initial cost of acquisition of a cluster.
- Scalability: In many environments the problem workload is so large that it simply cannot be processed on a single system within the time constraints of the organization. Clusters also provide an easier path for increasing the computational resources as the workload increases over time. Most large systems scale to a certain number of processors and require a costly fork-lift upgrade.
- Vendor independence: Although it is generally advisable to use similar components across various servers in a cluster, it is good to maintain a certain degree of vendor independence, especially if the cluster is being deployed for long term usage. A Linux cluster based on mostly commodity hardware allows for much greater vendor independence than a large multi-processor system running a proprietary operating system.
- Adaptability: It is much more easier to adapt the topology, i.e. pattern of connecting the compute nodes together, of a cluster to best suit the application requirements of a computer center. Vendors typically support very restricted topologies of MPPs because of design, or sometimes testing, issues.
- Reliability, Availability and Serviceability (RAS): A larger system is typically more susceptible to failure than a smaller system. A major hardware or software component failure brings the whole system down. Hence if a large single system is deployed as the computational resource, a component failure will bring down significant computing power. In case of a cluster, a single component failure only affects a small proportion of the overall computational resources.
A system in the cluster can be serviced without bringing rest of the cluster down. Also, additional computational resources can be added to a cluster while it is running the user workload. Hence a cluster maintains continuity of user operations in both of these cases. In similar situations a SMP system will require a complete shutdown and a restart.
- Faster technology innovation: Clusters benefit from thousands of researchers around the world, who typically work on smaller systems rather than expensive high end systems.
Now if you come across a cluster you should try to identify what type is it and the specific reasons its being used
Details of cluster implementation would be coming in later posts.
Openmosix is my favorite cluster software, but the project is closed now :( .
More details on links below.
http://en.wikipedia.org/wiki/Cluster_(computing)
http://en.wikipedia.org/wiki/Comparison_of_cluster_software
http://sourceforge.net/projects/openmosix/