High Availability Plan
Here's the latest plan: ha.pdf.
I have been kicking around some ideas and testing a few things to find the best solution for high availability. Using a MySQL cluster has it's limitations that need to be dealt with.... the biggest one would be that clusters use the NDB (network database) storage engine which is an in-memory storage engine. All data and indexes are held in RAM - Not only that but you are holding a copy of the data and indexes for each node in RAM (if the db is 500MB, you would need 1GB of RAM with two nodes because you have two copies of the data.).
To overcome this limitation i will be using a combination of replication and clustering. Much of the data in the database is configuration and customization settings. This is all configured from within Zone Control on the Master server. This data will be saved to a master db on the master server. Two slave db's will update the authservers with the changes made in this master db. All updates to configuration data will be made to the master db for replication to the authservers. Any reports or other viewing of data will be queried from a slave. The slaves will hold the complete db because the user table and accounting will not be replicated, but clustered. Any records that are created or updated by the gateway will used the storage cluster to maintain high availability.
This all sounds very complicated but it's really not that bad. NDB is a very cool db engine. To use it all i have to do is create a table on one slave with engine=ndbcluster and the table will be available to both storage nodes the instant it is created. Any inserts or updates are available simultaneously to both node. I guess my biggest concern is not the setup, but disaster recovery. I'll be practicing f'ing things up for a while :-)
