Clustering is hardly a novel concept; the very first microcomputer cluster was created way back in 1984 at Stanford University. For higher-end systems, this type of cluster technology has since translated into clustered computers with dozens of processors sometimes costing hundreds of thousands of dollars. Since the development of the Beowulf cluster in 1994, however, many newer types of clustering have come into play. From the new blade-based servers from RLX and Compaq to multiple smaller machines connected together in a Beowulf-type configuration, clusters can now be designed for almost any need. Thanks to Linux, this versatility can be had on the cheap and with more power than you’ll probably know what to do with.
In this Daily Feature, I’ll explain why clustering can be a cost-effective solution to a deficit in processor power. Then I’ll discuss why Linux is the OS of choice when it comes to clustering. Finally, I’ll take you through an overview of the hardware and software that make up Linux clusters. By the end of this article, you’ll be well versed in the money-saving and power-surging abilities of Linux clustering.
Linux clustering 101
This is the first part to a multipart series on Linux clustering. Check back over the coming weeks to get more details on clustering software, to learn how to plan for and install a true Beowulf cluster, and much, much more.
Clusters give you more power for mere peanuts
Clusters serve a number of purposes. A single system with dozens of processors can be set up as a cluster to serve the needs of a processor-intensive application, such as in scientific applications. Another cluster may be set up to create a high-availability, load-balanced Web serving environment. Or, by simply adding processing power to the arrangement, a cluster may be set up to enable an application to scale quickly and easily.
A cluster of small-distributed systems can provide an entry point for an application that may not otherwise be feasible from a cost perspective. A cluster can begin as two systems and be expanded as the needs of the application grow, allowing a lower cost of entry for an organization to undertake a project. Imagine being able to simply add a PC to a cluster to increase the capacity of an overall system, rather than having to replace a larger system. The cost savings could be enormous.
While all of these are great reasons to install a cluster, there is one other reason that will please many systems administrators. Imagine being able to take a server down for maintenance at 2 in the afternoon and not affect any users. A clustered environment can make this possible. In a clustered environment, one node can be brought down for maintenance or it can crash, hang, or even lose network communication to the network and the other nodes on the cluster will seamlessly assume the extra workload. Besides the direct cost savings that a cluster may provide, think of the peace of mind that could also come from using one of these systems.
Place Linux at the top of your list
There are numerous reasons why Linux should be your top choice when it comes to clustering. For one, the licensing costs for Linux are extremely appealing when compared with other operating systems. When the licensing costs that would normally be associated with a cluster are removed or minimized, as they would be with Linux, the acquisition cost for a small- or medium-size cluster is brought into the reach of many smaller or budget-restrained organizations.
Next, there are incredible resources freely available on the Internet to help get a cluster up and running on Linux. From the Clustering Foundry at Sourceforge.net to the OpenClusterGroup, people are spending huge amounts of time to make Linux clustering both successful and easy. As a result, more support help is available (and support for Linux clustering will continue to grow as more clusters are run on Linux). It also helps to reduce the cost of ownership, although many organizations may still hesitate to adopt an open source operating system for clustering since there is not a single support desk to “take to task” in the event of a major problem with a cluster component (unless you’ve put down the case for such heavy iron as IBM).
Finally, a cluster built around Linux can be installed on older equipment. Why throw out the 300-MHz computers that were just replaced during the replacement cycle? Linux makes great use of these types of systems and they can add significant power to a cluster at a low cost.
Linux clusters in the real world
If you are worried that Linux clustering is only for those who like to live on the edge, you can rest easy. Linux clustering is becoming somewhat (dare I say it?) conventional. Check out these examples:
- According to an article on IT Director, the entire Shrek movie was animated on a cluster of over 1,000 PCs running Red Hat Linux.
- To support the scientific and educational endeavors of the institution, a Swiss university, ETH Zurich, has installed a cluster with 500 processors and 250 GB of memory—all running SuSE.
- To prove that supercomputer capabilities can be cheap, Purdue University configured ACME, a 25-node Beowulf cluster that was conceived and built for under $3,000.
- Let’s not forget the original Beowulf cluster, devised by NASA to support its computations.
The nuts and bolts
Take a look under your desk at your CPU. You are now looking at one possible component of a Linux cluster. While high-end servers can be, and often are, used in Linux clustering, just as many are set up using nothing more than generic PCs.
While higher-end clusters may include specialized equipment, I will mainly focus on the more easily created cluster that consists of ordinary PCs connected together via a fast Ethernet switch. In these cases, in addition to the generic PCs, appropriate networking equipment would also be required, as well as the cables to connect it all together.
While it is generally better to use identical hardware as nodes in the cluster, this is not an absolute requirement. However, using hardware of a different architecture (for example, a Sun system and an Intel IA32 system) would not work. Using dissimilar hardware that is based on the same architecture will work, but it could affect the overall performance of the cluster. In addition, the server, which is the master controller for the cluster, should generally be a little heftier than the individual clients and be able to tolerate failures. The slave nodes in the cluster need computing power, plain and simple. Because the slave nodes are generally used to help solve some type of computational problem, they do not necessarily need to have local storage, but they must be able to process data effectively and send it back out onto the network.
In addition to the individual nodes and the server, a cluster may also include shared storage that may or may not reside at the master controller/server.
I am making a point of using generalizations to describe the hardware for a Linux cluster, using words such as “could” and “may.” There is a good reason for this: It would be inappropriate to strictly define how to set up a Linux cluster. Linux clusters can be tailored for almost any need, and it is this versatility that makes Linux such a strong choice for any type of enterprise.
Going behind the scenes
Now it’s time to look at the software involved in a cluster. I’ll start with Linux. Other operating systems, such as Windows 2000 Advanced Server, also support certain types of clustering, but, for its low cost, flexibility, and high power, Linux is unrivaled.
When installing clusters of machines, it is sometimes a requirement that the machines have identical hardware and software configurations. In these instances, having a utility such as System Imager or Ghost to install system images is preferable to manually installing and configuring an operating system on each individual cluster node.
Next, you’ll need some way to manage the cluster. There are too many tools available to list all of them here, but some examples to get you started are Linux NetworX ClusterWorX software, Compaq’s Cluster Management Utility, Ultra Monkey, and Piranha.
When choosing software for a Linux cluster, you’ll also have to decide which package will be used to make all of the machines appear as one large virtual server. This choice mainly depends on whether the cluster will be heterogeneous or homogeneous. A heterogeneous cluster may contain nodes that run Linux as well as other operating systems such as Windows, while a homogeneous cluster is confined to a single operating system. The current two leading choices are parallel virtual machine (PVM) and message passing interface (MPI). PVM is primarily used in a heterogeneous clustering environment, while MPI is generally only suitable for homogeneous clustering environments. While PVM and MPI are more common, a third choice is distributed inter-process communication (DIPC), which is mainly targeted at Linux distributions but is not in wide use.
In this primer on clustering, I have exposed you to some of the reasons to use a cluster, described the potentially significant cost savings created by clustering, and introduced you to the technology behind a cluster.
Over the course of this series on Linux clustering, I will explain how to plan for a true Beowulf installation and how to actually install a full, functional Beowulf cluster on ordinary PCs. I’ll also describe in detail the Piranha and Ultra Monkey clustering software tools and PVM and MPI. Finally, I plan to differentiate between the hordes of clustering technologies that are currently available, so that you can feel comfortable when choosing between them.