Clustering Goals ================ $Id: goals.txt,v 1.4 1999/12/17 14:52:15 sct Exp $ The primary goals of the cluster infrastructure project are to: * Provide hooks which allow cluster-wide coordination between arbitrary services. Implementing those services is a separate problem. * Provide a strong concept of cluster membership, with synchronised, transactional transitions between cluster states when a new node joins the cluster or an existing node dies. The long term "vision" includes much which is not anticipated in the initial implementation. Some of this will be scheduled for future implementation. We also want the clustering services to accommodate third-party services which may never be part of this cluster core itself, but which will place certain requirements on the clustering which we have to take into account here. We are particularly concerned with: * Scalability, both up and down. We want to be able to cluster a pair of 486es to provide highly available departmental web services out of the Linux cupboard that a sysadmin installed once. We want to be able to cluster massive numbers (tens or hundreds of thousands) of nodes for Massively Parallel Processing (note that we only want to deal with the admin/HA aspects of this --- the MPP interconnect is somebody else's problem --- but this still implies a need for hierarchical clusters). * Scalable cluster filesystem support. Within one cluster segment, GFS is the sort of implementation we want to grow a cluster FS out of, with shared disk access on top of cluster-wide shared block devices and shared software raid. On top of that, a mechanism such as AFS or CODA for migrating files between cluster segments will be necessary: the shared disk model does not scale well once distant nodes become involved. * Provide a set of sufficiently simple APIs, without actually enforcing the way they are used, that nobody in their right mind will consider using any other basic cluster infrastructure to base their HA solutions on. (Well, it can't hurt to dream, can it?)