1. A method of managing a plurality of applications hosted by a cluster of servers which each have an interface connectable to at least one client by a network, each application delivering a service at the client, the method comprising: electing a server of the cluster as a master server, the master server hosting at least one live application; and while the master server is hosting the live application, replicating changes in application data of the live application to a configurable number of servers in the cluster elected as slave servers whereby each elected slave server maintains a version of the application data of the live application, wherein responsive to an event in the cluster hosting of the application is transferred from the master server to one of the elected slave servers determined without intervention by a user when the event is detected, the elected slave server using its version of the current application data, to mount the application and become a new master server, and wherein said event is at least one of: detection of a preferred alternate master server in the cluster based on the loads of servers in the cluster; detection of a preferred alternate master server based on the locality of servers in the cluster; detection of a preferred alternate master server in the cluster based on a predefined user preference; detected by exchanging messages with other servers of the cluster; addition of a server to the cluster; removal of a server from the cluster, wherein the removal was anticipated; failure of a server in the cluster, wherein the data for live applications hosted by the failed server is recovered using versions of the current application on servers in the cluster which are continuing to operate; and a partition of the cluster, wherein after recovery from the partition a preferred alternate master server is selected from a number of potentially competing master servers as the server with the version of the current application data which is more valuable.