Now, I know there are plenty of solutions around, and plenty of answers to this sort of question, however I'm yet to find something that I can use properly use.
So my server setup is basically three clusters, each cluster containing four servers. Three servers are master servers and one is a backup server. There's also the "front facing" servers which don't store any user data, but provides the rest of the site content. Oh and a database server. All of these run on CentOS 7
I need a way of synchronising all three of the master servers (leaving the backup server alone).
Most of the master-master replication tools I've found so far don't seem to work the way I intend them too, but I know there's a solution somewhere.
The application is designed to designate a master server to each user, based on average load at the time of sign up. So whilst all three servers in each cluster are master servers, they also act partially as slaves, however they can step in as masters should the usual server of a user be under high load or offline.
If I recall correctly, some sync software runs on one central server that doesn't hold any data. I can add another server to each cluster to be the "central server" should I need.
The other idea I had was to store user changes in a database then use that to transfer to other servers, but I feel like this would result in conflicts too often