The aim of clustering is to take a single point of failure and, by letting it run across multiple servers, make the service more reliable. In theory this sounds relatively simple: if server A goes down, start the service on server B. In practice, however, there are several considerations that need to be taken into account; otherwise, there is a risk that availability will likely be worse than a single server, or even worse, that data corruption may occur. High availability is very hard to get right and very easy to get wrong.
Clustering
Split brain
The first issue that needs to be dealt with in clustering is the scenario where nodes of the cluster become disconnected and unaware of each other's status. This condition...