An important and relatively recent development computer system design is clustering.
Clustering is an alternative to symmetric multiprocessing as an approach to providing
high performance and high availability and is particularly attractive for
server applications. We can define a cluster as a group of interconnected, whole
computers working together as a unified computing resource that can create the
illusion of being one machine. The term whole computer means a system that can
run on its own, apart from the cluster; in the literature, each computer in a cluster is
typically referred to as a node.
[BREW97] lists four benefits that can be achieved with clustering. These can
also be thought of as objectives or design requirements:
• Absolute scalability: It is possible to create large clusters that far surpass the
power of even the largest standalone machines. A cluster can have tens, hundreds,
or even thousands of machines, each of which is a multiprocessor.
• Incremental scalability: A cluster is configured in such a way that it is possible
to add new systems to the cluster in small increments.Thus, a user can start out
with a modest system and expand it as needs grow, without having to go
through a major upgrade in which an existing small system is replaced with a
larger system.
• High availability: Because each node in a cluster is a standalone computer, the
failure of one node does not mean loss of service. In many products, fault tolerance
is handled automatically in software.
• Superior price/performance: By using commodity building blocks, it is possible
to put together a cluster with equal or greater computing power than a single
large machine, at much lower cost.
Cluster Configurations
In the literature, clusters are classified in a number of different ways. Perhaps the
simplest classification is based on whether the computers in a cluster share access to
the same disks. Figure 17.10a shows a two-node cluster in which the only interconnection
is by means of a high-speed link that can be used for message exchange to
coordinate cluster activity.The link can be a LAN that is shared with other computers
that are not part of the cluster or the link can be a dedicated interconnection
facility. In the latter case, one or more of the computers in the cluster will have a link
to a LAN or WAN so that there is a connection between the server cluster and remote
client systems. Note that in the figure, each computer is depicted as being a multiprocessor.
This is not necessary but does enhance both performance and availability.
In the simple classification depicted in Figure 17.10, the other alternative is a
shared-disk cluster. In this case, there generally is still a message link between