If you want lots of processing power and storage, you can get the fastest, biggest server you can afford, but that's not always the best way. What if you need still more power? What if the supercomputer goes down, leaving you with nothing? A more flexible approach, and often a more economical one, is to use a cluster.
A cluster is a set of tightly coupled computers that function like a single machine. The individual machines, called nodes, communicate with each other over a very fast network, and they're physically very close together, perhaps in the same cabinet. Usually they have identical or nearly identical hardware and software. All the nodes can handle the same types of request. Sometimes one node takes requests and dispatches them to the others. The cluster can take on more nodes as requirements increase.
Types of Clusters
One type is theload-balanced cluster. A content switch or front-end node assigns requests to machines in the cluster so that they all carry a roughly equal amount of work. If a node fails, the remaining nodes have to process more requests, but service will continue. Load-balanced nodes may run "sticky" sessions, which keep all a user's data local to one machine for greater efficiency, or non-sticky ones, which allow better balancing but require making the user's data available on all nodes.
A high-performance cluster engages in parallel calculations. It can process complex computations quickly by dividing up the work among its nodes. It needs very fast connections and highly parallel programming to get the full benefit of the multiple nodes. Developers have to create software in a way that allows a high degree of parallelism.
High-availability clusters, also called failover clusters, use redundant nodes to avoid failures. The architecture guarantees that if any node stops operating properly, another will take over for it in a way that doesn't lose any information. The nodes use shared storage, so that they can access the same data. Detection of node failures is automatic and doesn't require human intervention.
Cluster storage consists of multiple nodes managing multiple storage volumes, to provide what appears as one extremely large data store. The cluster dispatches each request to the appropriate node. Depending on the architecture, the failure of any node may or may not be critical. Some cluster storage architectures let another take over if one fails, without having any of the storage go offline. Large databases are often built on cluster storage.
Uses for the Cluster
Clusters are suited for Platform as a Service (PaaS) or Software as a Service (SaaS) architecture. The cluster's interface to the outside world defines the service, hiding the actions of the individual nodes. Offering SaaS on a high-performance cluster allows leasing a huge amount of computing power for a single project, such as modeling complex biochemical reactions.
The advantage of using a cluster rather than a generic cloud platform is the tightness of the connection among the nodes. A cluster loses very little time to latency, so the nodes can run at peak efficiency instead of waiting for responses. The downside of this is that it doesn't offer the protection of geological distribution; if the data center goes down, the whole cluster is down. A backup cluster at a second location will protect against this, if the price is acceptable.
A cluster is one of the best ways to deliver high performance, storage capacity, and reliability while remaining scalable. Cluster architectures are available for many specialized purposes.