I'm working as an application developer for a company that I've been with for for some time. The business would like to mirror their existing windows server (server A) to a new server (server B) with the main aim of providing redundancy where either server is unavailable. A hardware load balancer will manage direction of the traffic to either server. It is intended that only one server be receiving traffic at any given time. On each server, all resources required to run all applications are on the one machine.
Data that will require two way synchronisation across the two machines is:
- Several MySQL Databases.
- Two SQL Server Databases.
- Source code for a .NET application and a classic ASP website.
- Email Server. Files.
- Other applications, back up routines etc.
- Server settings (if possible).
The co-location hosting company is on board who have ideas for load balancing and replication, but I've been asked to manage this.
I have some general concerns about this, being:
This is not the most structured company I've worked in process wise (Little source control experience in the company, free access to the live server of which the configuration is under regular change, no documentation etc.). This may require more technical discipline than is currently present.
None of the applications are cluster aware. Most DB operations are of a non transactional nature.
My specific questions are:
Is a two server fail over configuration as I've described here common place? Any pros / cons?
What are the potential pit falls with two way data replication, where both database servers need to be both publisher and subscriber? How can I audit for risks regarding data concurrency?
Are their any tools for duplicating server software installs / settings? (Imaging is probably out of the question as the two servers are different hardware and spec). I imagine keeping os settings / db schemas / source code / version control server / email server etc etc etc could be a big overhead?
Given my afore mentioned concerns, should I be advising that we slow down on this until we can bring better systems management and address any potential application weaknesses before going ahead, or do you think necessity will be the best driver of these changes once the second server is in play?
Sorry if this is a bit of a ramble. Any insight into how to manage this or comments along the lines of "you should leave this to someone who knows what they are doing" are welcome!