A cluster (as it pertains to computers) refers to a group of servers and other resources that are connected through hardware, networks and software to behave as if they were a single system. There are many reasons this is an attractive thing to do, even for smaller enterprises. These reasons include: high availability, load balancing, parallel processing, systems management and scalability. We'll talk more about each of these applications later in this course. But the main thing to understand right now about clustering is that its goal is to make a group of computers appear (to the outside world and to internal user departments) as if they were one, totally integrated system that is always available and always working fast!
For those who are interested, a tidbit of history on the genesis and evolution of clustering might be of interest.
Early on, clustering was almost exclusively synonymous with the need to provide scalable solutions for a growing enterprise. In fact, as recently as 1997, a bunch of RS/6000s were clustered together to provide the needed scalability for the famous "Deep Blue" chess championship that pitted an electronic brain against the incredible brilliance of Gary Kasparov's "organic" brain. (Deep Blue won, by the way.)
Today, however, individual servers from almost any vendor are generally quite scalable in their own right, so scalability has now become merely an "oh, by the way..." benefit of installing a cluster that is primarily intended to provide another benefit. And you may be asking, "What might the driving reasons be today for installing a clustering solution?" The answer (to repeat the message delivered earlier on this page) is simple: AVAILABILITY and FAST RESPONSE (load balancing) for all types of users!
High Availability: The need to have core systems and their concomitant Web front-end servers running literally all the time means that high availability is imperative. This is where clustering is a brilliant solution. Clustering provides transparent backup and failover, and delivers redundancy of systems, peripherals and data — all of which are critical to sustaining a 24x7x365 IS arena.
Server Integration: Additionally, a Web-based business environment also means that enterprises can no longer expect a single, gigantic "computer in the sky" to solve all its processing needs — even though a server can probably be purchased to handle a company's total "volumes" (in regard to data storage, etc.). Many applications require that the server resources be tweaked in different ways to achieve various purposes. Generally, there are three classes of workloads that require different server dynamics:
- Data transaction servers manage core business processes.
- Web application servers manage the end-user experience.
- Appliance servers manage specific network functions.
Yet all the applications that run within these different classes of workloads (and which, therefore, are probably implemented on separate servers) must access, share and update each other's data in realtime.
It is also true that functions that have traditionally been directly connected to individual servers, such as network connections and storage, are becoming centrally deployed so as to deliver more efficient utilization, easier scalability and greater flexibility.
Clustering elegantly solves the problem of integrating these three types of servers along with centralized network and storage resources. And by the way, clustering also allows the IS folks to manage these separate servers as if they were one.