Designing and implementing a high availability (HA) architecture can be a daunting task given the broad range of various software products and hardware platforms that exist in almost any environment today. The Codefry team faced such environments, including a mix of SQL (Microsoft SQL Server) and NoSQL (MarkLogic) database products. Before the team started drawing on the board, it ensured that business requirements were clearly defined and thoroughly understood. This thorough analysis of the business requirements enabled the Codefry team to make intelligent design decisions and develop an architecture that addresses business needs in the most cost effective manner. When designing an architecture, the Codefry team had to consider the required levels of availability, performance, scalability, and security. Moreover, the team has created an architecture with a clearly defined plan for deployment and ongoing maintenance while minimizing complexity and business risk. Here is the brief technical overview of how MSSQL and MarkLogic HA was achieved:
MSSQL Environment - Microsoft SQL Server instances are SQL Server failover clusters. SQL Server failover clustering increases the availability of a SQL Server instance. The SQL instance is installed on storage that is able to failover from one server to another. Using SQL Server Mirroring allowed for a copy of the database to be synchronized to a separate SQL Server instance that was in an offline state. In the event of a disaster, the mirrored copy would come online. This project involved setting up SQL instances in a failover cluster. After testing failover and configuring the SQL instances, SQL Databases were migrated to the new SQL instances. Mirroring between instances was then set up and tested.
MarkLogic Environment- MarkLogic Environment is configured for clustering. The setup included three servers, each running an instance of MarkLogic. The databases have forests that store the data. The forests are configured with a replica of the forest on another instance in the cluster. If a primary forest becomes unavailable, the replica comes online increasing the availability of the data stored within the database. In the event of a catastrophic disaster, snapshots are mirrored to a disaster recovery site. This project also included setting up a test environment to match production, configuring a cluster and setting up replica forests. After confirmation that the test environment worked as expected, the production environment was then set up and tested.