I was trying to read up on load balancing in Windows Azure, and all the information about it is extremely vague and non-specific. All I really want is a simple answer: how does
I realize this is an old question but we solved the Affinity problem by using Windows Web Farm Framework and creating a layer of proxy servers that support Affinity through to our web servers.
http://technet.microsoft.com/en-us/library/jj129385.aspx
This is the architecture recommended if you were self hosting and seems to apply equally to Azure. The layers look something like this...
Firewall: Azure Load Balancer (round-robin to proxy servers)
Proxy: Application Request Routing (ARR) to perform load balancing with Affinity to web servers, static and dynamic compression and SSL. Offloading SSL to the Proxy servers gives web servers additional processor time. Also, the Web Farm Framework is great for scaling as it manages each additional web server, copies application files, monitors health, switches online/offline, etc. You could have 10,000+ web servers managed by it.
Web: Normal web servers (no SSL, compression, etc. required).
Database: Normal database servers or Azure SQL.
It is recommended by Microsoft that you have at least two ARR (Proxy) servers. Some people will gawk at the additional cost in Azure. However, we discovered that Micro Instances ($15 pm) are more than suitable as Proxy servers, if 5 mbit is sufficient speed.
Another alternative is to have two ARR server configured as Small Instances ($65pm @ 100 mbit) but have one turned off and only enable it at peak periods or when the first server fails (eg. maybe schedule second ARR server to start when first is running Windows Updates and stop an hour later).
It's a nuisance to set up but once it's working, it's very slick!
NOTE: There is some confusion in WFF documentation about the terms ARR, proxy and controller. They are usually all the same thing. Remember this if you try to set it up.