0

I have a Website in Azure in multiple Regions. Each Region hast besides the webservers also a storage account because the users can upload files.

I'm currently using Traffic Manager to redirect the user to the best Region. But i'm not very happy with it... it does not support session affinity for example. I could use the Application Gateway for that but that is also not really what i want beacause with the Application Gateway it could also happen that in Session1 the user lands on Region1 and in Session2 he lands on Region2. The users would upload files in Region1 and 2 and i would have to transfer them between the regions each time the user lands on a differnt region.

Therefore i would like to create my own Traffic manager. I would create a cloudservice with a webserver in it which uses a custom arr rewrite provider and redirects the user based on his geoip.

The only thing i'm concerned of is the throughput... If i understand the Reverse Proxy correctly all the Traffic of all websites in all regions will go through this proxy. The websites have streaming possibilities too and we are heavily using websockets for communication between client and server.

Is this approach with the custom arr even scaleable? If all the traffic goes through this one cloudservice? I believe i can create multiple webservers which handle the arr requests but what is for example with latency issues?

If my traffic manager cloudservice is for example in north europe and then comes a user from brazil. We have a region in brazil but if all the traffic goes through the proxy in northeurope then the latency would be catastrophic i guess and all the benefit of having a Region in Brazil would be gone.

In short: i want to redirect users to a specific region in azure based on their geoip and keep the whole thing scaleable and as much performant as possible :). What would be the best approach for that?

Thanks for your help! BR, Metabolic

metabolic
  • 669
  • 1
  • 7
  • 24

1 Answers1

0

Azure Traffic Manager works at the DNS level. It uses IP data from your DNS query to provide a DNS response that directs that user's traffic to your closest Azure region (if using the 'Performance' traffic-routing method). The user then connects to the service in that region directly.

The advantage is that Traffic Manager therefore doesn't suffer from the problem you describe, because it is not a proxy for your end user traffic.

The disadvantage is that since Traffic Manager only see DNS traffic, and not TCP/HTTP traffic, it is unable to provide session affinity.

The best approach to solve this problem is to use Traffic Manager to direct your traffic to your closest service endpoint, then implement session affinity at the application level (or in a proxy, as you are doing).

  • ok let's say i use traffic manager to redirect to user to a region. how do i set up session affinity then? as you mentioned traffic manager does not support it and therefore traffic manager would treat each request independently and it could happen that request1 lands in region1 and request2 lands in region2 (this is actually happening sometimes now). then the session affinity would not help me (as far as i understand it) beacause the servers in region2 have no knowledge about the users session in region1. thanks for your help! – metabolic Nov 27 '15 at 16:22