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 computermeans 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: