We help IT Professionals succeed at work.

Setup a Rednundant/Failover Hosting Environment


I own a very small web hosting company.  It started as a way to manage some of my IT Clients websites and create a little revenue stream.  Below is what i currently have :

Windows Server 2003 Service Pack 2
MySQL 5.2 CE
MSSQL Express 2005/2008
Icewarp Merak Mail 9.3.2

As you can see we have put a lot of eggs in one basket.  I am looking to take our hosting to the next level and build even a website for hosting packages.  I am wondering what the best approach is to create a hosting environment that utilizes 2 office locations to create failover and redundancy for DNS, Websites, Mail and Databases.  In essence i want my NS1.domain.com pointing to an IP sitting in one location and my NS2. domain.com pointing to an IP sitting in another location.  This will help with failover.

I started off going down the cPanel/Enkompass route.  I had Windows Server 2008 R2 setup for Enkompass.  However, they just made this a free package, so the tech support on setting it up is limited.  I ran into issues with IP addressing.  They said they dont support NAT, so i was wondering how i was going to create a secure domain controlled environment utilizing Public IPs??  

I also looked into Plesk, but they told me they dont support any failover or redundancy.   I spoke to one of their engineers and asked them how their customers are creating a redundant/failover environment with their application, and he couldnt give me an answer???

I am willing to go the Linux or Windows route, but I am discovering its probably best to offer both anyways.  

Any help would be greatly appreciated.
Watch Question


For the DNS side of it, I would not suggest putting one IP in NS1, and the other in NS2.  I would say the giant bulk of your queries hit NS1, so you're not effectively making equal use of both of your servers in this way.

I would say instead put both IPs in both DNS servers.  It's called round robin A record.

So you put in the zone for yourdomain.com:

www IN A
www IN A

And your DNS server will alternate between the two in its responses, and basically act like an expensive load balancer for free.

For TRUE fault-tolerance though, you'd want some kind of network appliance in front of both of the web servers - that starts getting very pricy, so I'd suggest using the free methods first unless you have a big budget.

Agreed, doing this properly could be expensive.

Using round robin DNS is a good plan to share out the load but doesnt offer any redundancy.
You can get DNS packages that offer failover optios but they can be a bit expensive too.

The simplest way is to use your own nameservers instead of the ones provided by your domain registrar.

You can set each server as a nameserver and list only its own address for any DNS requests.
WHile this does mean one server may end up dealig with more traffic than the other, it means that a failure of one system would result in dns queries automatically failing over to the 2nd nameserver and therefore automatically resolve dns queries to the working server.

In practice, your main difficulty would be in making both systems contain the same data, as SQL databases etc can be difficult to replicate without cost.

I think you need to consider this realistically and look at EITEHR loadbalancing OR failover.

Failover allows for a delay in replicating data between a primary server and a secondary server. Loss of the main server would only result in a very small amount of data loss ofr active websites.

Load labance would allow more traffic to be spread across multipe systems but will make accuracy or duplication of live data difficult to control.


Thanks for those responded so far.  

To xTerm :  I assume your IP addresses are arbitrary in your example.  Instead i would wnat to use my public IPs.  Do you know of any documentation of syncing 2 Windows DNS servers without a domain controlled environment?  Can i do this in Linux?

To Tonto : I agree one of the major challenges is redundant data.  I was going to create a Database server at Site A, and use a Disaster recovery box to take snapshots every night from Site B via a vpn.  in the event the data server fails, i can mount the server and virtualize from the latest snapshot.  But still, this doesnt help if just the internet was to go down at site A.

You guys have offerend some good solutions so far.  I appreciate the input.
Yes, I just used those two made-up IP addresses as examples, you'd use your own.

I don't know about "syncing" 2 Windows DNS servers, however you could make one the master and one the slave for a given domain, and then the secondary will automatically pull the zone from the primary, which in essence does what you are asking.
Copying an image could take a lot of bandwidth. You may be better to set up replication of the database specifically, instead of the server as a whoe (it's only really your SQL and IIS that needs to be replicated.

SQL has replication features built in and can be snapshot replicated or transactionally replicated.
IIS is a bit more of a pain but can be done.

This may be one of the situations where a virtual server may be worth considering. If both physical servers run VMware or hyperv, you can esily do full replicats of the entire server is necessary without having to worry about hardware compatiblity between the two servers.
If you dont do much VM stuff its not a good plan to do your first ones on a live system, but if you've some VM expeirnce its worth considering.

Explore More ContentExplore courses, solutions, and other research materials related to this topic.