How to scale properly on Azure

CrazYmonkeY159

Expert Member
Joined
Sep 13, 2007
Messages
2,142
Reaction score
0
Location
CPT/PE
So I have a windows server 2008 VM running in Azure. I installed Tomcat and other obscure webservices which run as windows services on the server. Now I want to have a set up where my webservice can auto scale across whenever needed, and apparently installing my services directly onto he VM is the wrong way to do it (I have been told). Previously I did a similar thing on Amazon WS using Linux and it was pretty simple to just scale out the VMs when needed. My peer told me that I should use an Azure Disk to hold all the code + tomcat stuff and then somehow scale out by attaching these volumes to new VMs?

I dont know what path/resources to look at, can anyone help me or point me in the right direction?
 
To be honest, the best way to scale out on the Azure platform is to build for the azure platform. This means using the cloud services that Azure offers (web and worker roles, or websites) and not to put everything on VM's yourself. A cloud service runs VM's on the back end (instances of the cloud service), but allows you to spin up new instances or scale them automatically.

If you are going to VM's and VHD's, you are missing out on all the hard work that MS has done to make Azure do the heavy lifting for you, and you need to take care of all the communication between VM's etc.

For example: I publish my solution to a cloud service and set up auto scaling. When the VM's that the service is deployed to are under too much strain, Azure will boot up another VM, automatically load my service onto it and I don't have to lift a finger.

You can of course use VM's, but then you have to treat Azure like any other hosting provider and wire up the scaling yourself.
 
I did fear this answer to be honest. The problem is were using a very obscure service built using java and c that we use and build our products ontop of, moving away from self-hosted to Azure hosted is proving to be smooth except for this thing. Also we payed for this obscure service's licensing a while ago so chucking it away is not an option. I have only had a few days using Azure, its nice and all but IIRC you can autoscale instances on EC2 so in my mind I assumed Azure had a similar offering.
 
I did fear this answer to be honest. The problem is were using a very obscure service built using java and c that we use and build our products ontop of, moving away from self-hosted to Azure hosted is proving to be smooth except for this thing. Also we payed for this obscure service's licensing a while ago so chucking it away is not an option. I have only had a few days using Azure, its nice and all but IIRC you can autoscale instances on EC2 so in my mind I assumed Azure had a similar offering.

http://msdn.microsoft.com/en-us/library/hh680945(v=pandp.50).aspx

http://azure.microsoft.com/en-us/do...cloud-services-how-to-scale/?no_redirect=true

Sounds like poor planning on your teams behalf to be honest, if it was working with amazon should have stuck there.
 
Last edited:
Sorry for the ambiguity, previous place I worked at was using AWS

This is a different company I work for now

Thanks for those links!
 
Sorry for the ambiguity, previous place I worked at was using AWS

This is a different company I work for now

Thanks for those links!

Ah okay. Yeah its gonna be a bit of work to scale, but its possible we do it.
 
Ah okay. Yeah its gonna be a bit of work to scale, but its possible we do it.

Pretty much this. It's still more than possible (people have been doing it for years without cloud environments), but it's not going to be as easy as "Bang Presto!".

Consider nudging them onto the cloud service route for other systems going forward. What I've found is that there's no real difference in building for cloud and building for normal IIS web sites (your cloud servers are in fact just running IIS and you can remote desktop into each instance if you wish). That way you can deploy to a normal server with any host, or to Azure.

The cloud aspect really just holds a copy of your latest deployment to chuck onto new instances as required, and manages the load balancing for you.
 
Last edited:
We use a load balancer in front of our cluster in order to delegate load equally among services/servers.
 
Managed to get it working thanks

1) Create an image of the server you want to scale out
1) Create the Cloud Service with its own DNS
2) Create 2 or more vm instances using the image you created adding them to the same availability set
3) Add a load balancer to these vms per protocol/port you desire.
4) Set your own scale criteria

In hindsight its pretty much the same as AWS, it's just done differently.
 
Top
Sign up to the MyBroadband newsletter
X