Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

We have one VPS (Windows 2008 R2+IIS7.5), with an asp.net mvc 3 application.

The main question is: how to handle issues when Windows needs to reboot? (after installing Windows Updates or anything else). The goal is to make the website 24/7, but first it's ok to show a message to the users. (we'll be back soon, something like app_offline.htm)

Our application uses SQL and also writes/reads some files (uploaded photos, documents) which are not stored in SQL.

What do you recommend?

  1. Load balacing with ARR? (with 1+2 servers, but what if the front-end server needs reboot?)
  2. Windows failover cluster?
  3. SQL failover cluster?
  4. What to do with uploaded files?

I really don't know what would be the best (and simplest) solution.

share|improve this question

migrated from stackoverflow.com Dec 3 '12 at 22:52

This question came from our site for professional and enthusiast programmers.

4 Answers 4

In general to enable high availability you need to have more than one server. Typically you would have 2 or more servers behind a load-balanced setup that could distribute the load to another server in the event of an outage or maintenance period.

Obviously SQL and file storage would need to be located on different backend servers or clusters. The most simple HA setup would be something like:

A Load Balancer (Possibly redundant)
       |
Two Web Servers
 |     |     |
 |  Clustered SQL Server (Unless a single point of failure is ok)
 |
File Servers using DFS-R (Unless a single point of failure is ok)
share|improve this answer
3  
Never buy a single load-balancer :-) Gotta come in pairs. –  mfinni Dec 4 '12 at 3:13
    
@mfinni Agreed, just depends on what your acceptable outage time is. A single device or software load balancer is acceptable if you're ok with a specific amount of "estimated" down-time. –  Brent Pabst Dec 4 '12 at 14:05
    
He said he wanted the website to be 24/7, but it was OK to display a "back soon" message. Can't do that if it's the LB that died or is getting updated. You cannot have a SPOF at the front-end if you want to be able to always display something, even a maintenance message. –  mfinni Dec 4 '12 at 15:47
    
@mfinni Actually you can, use of services like CloudFlare assist with this kind of thing. So if the load balancer is offline CloudFlare can display an offline message for you. –  Brent Pabst Dec 4 '12 at 17:28
1  
@mfinni Agreed, hell even simple windows network load balancing across to front-end web servers would do the trick for a smaller setup. –  Brent Pabst Dec 4 '12 at 18:33

We have a haproxy load balancer infront of our web servers. We have a shutdown script that sends a command to the haproxy instance to take the server out of the pool (it, uuh, kinda sucks as it uses an .net SSH client that logs into the haproxy machine and runs a command piping it into socat stdio /etc/haproxy/haproxysock - but it works). When the server comes back online, it runs another command that puts the server back into the pool.

This means that the end users never know when a server comes or goes, as there's always a 2nd web server to take up the slack.

In the occasion if we ever do have a catastrophic failure, we have a custom "Whoops, we'll be back soon" message that haproxy servers if there's an empty pool or if every single server has failed.

As for the rest of the device, I defer to Brent's answer. DFS-R is awesome (and is good for off-site failover as well). We don't do SQL Clustering, but we do do SQL Mirroring which is almost as good.

share|improve this answer

If resources are not an issue and your goal is to establish up-time as close to five 9's / High Availability (HA) while still being able to reboot. I recommend using a server virtualization solution including shared storage among your hosts. In my drawing below, I am using iSCSI and VMware with storage network. The network is utilizing Hot Standby Router Protocol (HSRP) (is propitiatory by Cisco but there are others). In this configuration and for your situation, VMotion is optional. SRDF and other data replication / clustering allows for complete redundancy at all levels. The drawing is simplistic and doesn't illustrate LUNs or consideration if there was FC fabric instead of iSCSI.

Also, from experience, many data centers put a tremendous amount of time and resources into technology but forget about proper power distribution. Power, can easily ruin the day. Consider symmetry from redundant power supplies, PDUs, panels and commercial power sources. UPS is also critical.

enter image description here

share|improve this answer

IMO the simplest solution would be to take a look at Azure, not only does it allow you to focus on development, it's also got great uptime (and they reimburse you when it's down). SQL is not on the same server and you could store the uploaded files in blob storage.

Maybe not the route you want to go down but I've been using it for around a year and a half now and am very satisfied :)

Oh and if you have an MSDN subscription, Bizspark or website spark it's near free (depending on your site's traffic of course).

share|improve this answer
    
Azure is not an option for us. –  Mart Dec 3 '12 at 23:09
    
Fair enough, it's not suitable in all cases but definetly worth considering if it is. (You did ask for a simple solution!) :) –  Jamie Dec 4 '12 at 9:08

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.