How to change the VM size for your Windows Azure Service
As you may know, Azure VM size is set in 4 different catagories:
- Small - 250GB
- Medium - 500GB
- Large - 1TB
- ExtraLarge - 2TB
It is possible that after your service is running and you might need to tune your service to add more space in Azure VM or reduce the VM size to save some cost if resources are higher then your current service need. This concept is defined as "elastic scale" and Windows Azure takes this concept very well.
Here are a few ways you can accomplish it:
1. Auto-Scale using Azure Service Management API.:
There is a great blog on how to accomplish it: http://blogs.msdn.com/b/gonzalorc/archive/2010/02/07/auto-scaling-in-azure.aspx
2. In Place Upgrade for your Azure Service:
- You can dynamically upload a new package with a higher VM size to Staging slot first
- Perform VIP swap so your service can use the higher VM size Service
- Delete the Deployment in Staging slot otherwise you may pay for both slots.
Comments
Anonymous
October 25, 2010
I think the auto-scale referred above does not help in increasing or decreasing the VM - as the VM size is part of the csdef it means that you need to redeploy. No? <WorkerRole name="WorkerRole1" vmsize="ExtraLarge"> -ChristianAnonymous
November 03, 2011
I think you're right Christian, you can only change the instance count on the fly. It seems changing the VM size requires modifying the csdef, rebuild/package and redeploy. :/Anonymous
November 12, 2011
Yes to change the VM Size you would need to repackage the application after making modification in the service definition file.Anonymous
August 26, 2013
It is quite strange that the VM size cannot be changed "in-place" / dynamically, without a redeploy. It would make sense to be able to change the VM size AND the instance count together in the same place. IMHO this design needs to change.