Linux Clusters and Server Farms
A server farm is a group of computers which share the load of performing a particular task, such as serving up a website. A cluster, on the other hand, is a group of computers which function as a single computer. Unlike the situation with SMP, in these cases each processor has its own RAM, hard disks and so on, eliminating congestion on these resources. On the other hand, communication between the different CPUs must take place via the network instead of directly through RAM, which is very slow by comparison. So server farms or clusters only offer a significant advantage if only small amounts of data need to be transferred between the component processors. Another very important advantage is that this configuration is very scaleable. You can add more nodes to the group to increase performance. In fact many clusters start off smaller, then grow as more machines are added. Another advantage is that the nodes are not necessarily all the same. Thus you can start with a cluster of PIII’s and then add some Alpha servers to beef up the system. Although a greater variety of hardware means more maintenance, it also means you don’t have to throw anything away. One interesting example of this is the Stone Soupercomputer, which is entirely made up of donated computers ranging from 486-DX2’s to Alpha servers.
There are a many kinds of clusters or server farms used with Linux.
One of the most common configurations, normally used for webservers, is to have several identical servers having different IP addresses, and letting the DNS provide a different IP address each time that a remote computer requests the address of the domain name. In this case there is no communication between the individual servers, nor is there any form of load balancing between them. If you have five computers, the first request will go to the first computer, the second request to the second computer and so on.