Geo-Distributed Services and Other Examples with the Windows Azure Traffic Manager

Slalom Consultant Joel Forman

Slalom Consultant Joel Forman specializes in cloud computing and the Windows Azure Platform.

In April, Microsoft introduced a new component to the Windows Azure platform called Windows Azure Traffic Manager.  Traffic Manager, falling under the Windows Azure Virtual Network, allows for the ability to control how traffic is distributed to multiple hosted services in Windows Azure.  These services (i.e. web site, web application, or web services) can be in the same data center or in different data centers across the globe.

You may be wondering how this is different from the load-balancing provided by Windows Azure for your hosted service.  Windows Azure provides load-balancing across all of the instances you have running in a single Windows Azure service.  The big difference here is that Traffic Manager is not custom load-balancing for a single service but for multiple services.  This means that I can deploy my service several times (even to different regions), have my end-users hitting a single address, and control how those end-users are routed to those difference services.  Really cool.

How Traffic Manager Works

One of the great things about Traffic Manager is that it adds very little overhead.  This is because of the way it uses DNS.  A custom domain name is registered to a Traffic Manager address.  The first time a user requests the domain name, Traffic Manager resolves the DNS entry for the domain name to the IP address of the hosted service based on the defined traffic policy.  After that, the user talks directly to the hosted service until their DNS cache expires, at which point they would repeat the process.

Traffic Manager provides three different policies for routing traffic:

  • Performance:  Routes requests to the nearest service based on the incoming request’s location.
  • Failover: Routes requests based on health of the services.
  • Round Robin: Distributes requests equally across the hosted services.

Traffic Manager also provides monitoring of the hosted services regardless of the policy being used to ensure they are online.  You have the ability to configure protocol, port and path for monitoring.  The monitoring system will perform a GET on the file and expects to receive a 200 OK response within 5 seconds.  This occurs every 30 seconds. A service is deemed unhealthy and marked offline if it fails 3 times in a row.

Traffic Policy Examples

So what are some examples of when you would use one of these policies?  Here are a few:

  • Performance Policy ExampleBuilding a Geo-Distributed service.  If you have users using your service around the globe, deploy your hosted service into multiple regions (i.e. US, Europe, Asia) and have your users routed to the nearest location.
  • Failover Policy ExampleHaving a “hot” standby service.  If the primary service is offline, requests will be routed to the next in order, and so on.
  • Round Robin ExampleIncreased scalability and availability within a region.  Spread the load across multiple services with multiple instances.  Note that Traffic Manager still monitors health and will not route a request to a service that is down.

I tend to align the Failover and Round Robin polices in an “availability” category.  Both are ways to further improve the availability of services.  I would be really curious to see the impacts of availability in terms of Windows Azure’s SLA of 99.95%.  I wonder if using either of these policies can reliably extend the actual availability beyond these numbers, for applications with the need for more “nines”.

Using Traffic Manager for Monitoring

One of the things I have been asked before is if there is any monitoring capability included for your Windows Azure services.  Traffic Manager now provides some capabilities in this space.  Instead of adding third-party URL based monitoring to a web site hosted in Windows Azure, you can now leverage the monitoring capabilities provided by Traffic Manager to do the same thing.  In addition, a developer can even create transactional test endpoints or smoke test endpoints that exercise key behaviors of the system, and have Traffic Manager hit these endpoints every 30 seconds as well.

Using Traffic Manager for Geo-Distributed Applications

One of the largest scenarios that Traffic Manager addresses is the ability to build geo-distributed applications.  What does it mean to have a geo-distributed application?  This refers to the service being deployed into multiple data centers around the world.   Delivering high-performance, low-latency experiences for applications that have a geographically distributed user base is a real challenge.  This will be even more important in the mobile and social application industries.  The expectation of end-users is that the applications they use will be available and perform to the same level that they are accustomed to everywhere.  With the growth of mobile apps and smart phones, the need for geo-distributed architectures will grow as well.

With Windows Azure, it is easy to deploy your hosted service package into multiple regions.  But there are challenges in terms of data and storage that come with distributing your front and middle tier.  Mainly, you should not simply deploy your hosted service into multiple regions without considering where your hosted service will store its data.  You would not want a web application in Europe talking to a database in the United States for performance considerations.  There are a couple of options that I will point out for addressing your data and storage:

  • Leverage SQL Azure Data Sync:  This technology can keep multiple SQL Azure databases in sync with each other, even across regions.
  • Leverage Worker Roles for Custom Sync:  Build a worker role to move necessary data into appropriate regions.  This may be useful if you are leveraging Table Storage and BLOB Storage.
  • Leverage CDN wherever possible:  Store data in BLOB Storage and enable the CDN to act as a distributor of content to all other regions.

Let’s dive into a mobility scenario. This diagram depicts a mobile application being used from 2 different parts of the globe.  You can see the clients connected to Traffic Manager initially, and then talking directly to the local hosted service layer in Windows Azure.  The service layer talks to SQL Azure as a relational database in the same local region.  SQL Azure Data Sync is used to keep data synced across all of the SQL Azure databases in all the regions.

In this scenario, we showed users on different continents.  But this use could be just as effective for users on the same continent, especially if the number of Windows Azure regions grows in the future.

Get Started

Windows Azure Traffic Manager is currently available as a CTP (Community Technology Preview).  You can sign up for the preview from the Windows Azure Management Portal and try it out today.

Resources

Slalom Consulting's Seattle Office Slalom Consulting Cloud
More about Slalom Consulting’s Seattle office. More about Slalom Consulting’s Cloud focus.

subscribe by emailSubscribe to be emailed about new Cloud posts.

subscribe by emailSubscribe to be emailed about new Mobility posts.

About Joel Forman
Joel Forman is a Solution Architect at Slalom Consulting and specializes in cloud computing and the Windows Azure Platform.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 130 other followers

%d bloggers like this: