Posted on 4/10/2018 in Web Development
By Matt Wiseley
Wakefly provides shared hosting to many of our clients’ Kentico and other .Net-based CMS websites. It is a simple and affordable environment within AWS (Amazon Web Services) for sites that aren’t mission critical and don’t require four nines of uptime. Occasionally, a client does require greater uptime. High availability within AWS can be achieved with redundancy for the web and SQL servers so that regular system maintenance and the off chance of an instance failing doesn’t bring down the website. This blog presents some common configurations along with pre-configured AWS pricing calculator links so you can see current pricing.
First, let’s get a few terms defined. AWS data centers are split up into regions and availability zones. Regions are broad geographical areas, such as Northeast US, Northwest US, Tokyo, and so on. Each region has multiple availability zones, and AWS tooling is designed to assist administrators in replicating services across availability zones to achieve higher availability. Think of each availability zone as a separate physical building with independent physical security, power and network hardware. To help visualize this, here are three (or maybe four?) of Amazon’s availability zones within its “us-east” region in Ashburn, VA.
Image courtesy of Google Maps
If you zoom in on that map, you’ll see that there is a physical security perimeter around all three of these buildings, and each building has its own HVAC and power hardware clearly visible.
Licensing Cost Considerations for Redundancy
When designing a redundant website hosting environment, you’ll want at least two of each component across at least two availability zones. For websites using an open source database like MySQL, this is a no-brainer. However, Microsoft SQL Server licensing makes replication of MS SQL database servers prohibitively expensive for some customers. For this reason, we’ll look at options both with and without multi-availability zone databases.
For the website, your CMS may require special licensing to support use on multiple servers within a “web farm” configuration. Software often needs to perform additional coordination when a workload is spread between multiple servers, and this may be considered a premium or enterprise feature when it comes to licensing levels.
Caveat on Instance Configurations and Sizing
This post is meant to provide example configuration and pricing for a typical marketing website running a .Net-based CMS like Kentico or Sitefinity. It’s important to note that the size, complexity and traffic levels for your site may require more or less horsepower for each instance. And some CMS platforms (Sitecore in particular) require additional instances for servers running search and analytics.
Redundant Load Balancers?
One final note before we get to the configurations. When we configure multiple web servers, a load balancer is used to split traffic between them and seamlessly route traffic to a working instance if one instance becomes unavailable. But what if the load balancer goes down? While this type of hardware very rarely fails, consider that a load balancer is just another piece of hardware running in an availability zone. If the availability zone containing your load balancer loses power, the second web server in the other availability zone isn’t of much use, is it? For this reason, placing load balancers in two different availability zones is recommended if uptime is of utmost importance. Adding a load balancer only adds about $20 to the monthly cost, but it does require DNS failover. If your current DNS provider doesn’t provide failover service, Amazon’s Route53 DNS service does.
Redundant Web Servers, Single SQL Server
In this configuration, we have two web servers behind a load balancer and a single SQL Server RDS instance.
- 2 Application Load Balancers assuming 100GB/mo of traffic
- 2 t2.large Web Servers each with 2 CPU and 8GB RAM
- 2 60GB Operating System Volumes
- 2 250GB Data Volumes
- 1 db.m4.large SQL Server Web Edition RDS with 2 CPU, 8GB RAM and 50GB of database storage
As of this writing, the above configuration runs about $600/mo. See current pricing and details in the AWS Simple Monthly Pricing Calculator.
Redundant Web and SQL Servers
In this configuration, we start with the first example and add multi-availability zone service to the SQL Server RDS instance. This replicates the SQL Server across two servers in separate availability zones. Doing so requires an upgrade to the more expensive SQL Server Standard license, as well as doubling the database hardware cost.
As of this writing, this configuration runs about $2,000/mo. See current pricing and details in the AWS Simple Monthly Pricing Calculator.
Hopefully this blog has provided some insight into the design considerations and cost implications of high availability hosting for Windows environments in AWS. Every situation is different, and Wakefly is happy to help with pricing out AWS dedicated hosting service with 24x7 monitoring response and management.
Need help with pricing out AWS dedicated hosting services?
Wakefly is happy to help, contact us today