Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to deploy only worker/web role in Azure

If you have a web AND a worker role in an Azure solution, all the waiting for the publishing an update package, uploading to the cloud storage, waiting for the package to be deployed could be exhausting, an waste a lot of time. How to upload/deploy only the worker or web role of an Microsoft Azure Solution, that contains both roles, and save both internet traffic and time?

like image 633
d.popov Avatar asked Apr 07 '13 19:04

d.popov


People also ask

How do you deploy a worker role in Azure?

Create a new project. To create a new Worker Service project with Visual Studio, select File > New > Project.... From the Create a new project dialog search for "Worker Service", and select Worker Service template. Enter the desired project name, select an appropriate location, and select Next.

What is the difference between web role and Worker role in Azure?

The only difference between the two is how your role is hosted on the VMs: Web role: Automatically deploys and hosts your app through IIS. Worker role: Does not use IIS, and runs your app standalone.

What is web Worker in Azure?

Worker Role: A worker role is any role in Azure that is customized to run applications in the background service processes along with Web Roles to complete service level tasks frequently. Both Web role and Worker role are the roles that are concerned with running applications on Azure cloud service on port 80.


2 Answers

There is no option to build a package for only one of the both roles, but if you have limited bandwidth or traffic, and want to save from the upload time (which can be quite a big portion if you have a lot of static content: Look here for an example), there is one option.

As maybe you know, the package generated from Visual Studio for deployment (the 'cspkg' file) is nothing more, than an archive file. Suppose, you want to update the WORKER role only. The steps are:

  1. Create the update package as normal
  2. Open it with the best archive manager (7zfm)
  3. Inside, besides the other files are 2 'cssx' files - one for each role. Delete the unnecessary cssx file.
  4. Upload to Azure Blob Storage (optional)
  5. Update the instances from the Azure Management Portal using the 'local' or 'storage' source as normal
  6. On the Role dropdown, select only the role you want to update
  7. Press OK :)

Hope this helps.

like image 137
d.popov Avatar answered Oct 17 '22 23:10

d.popov


It is a lot easier to just add two additional cloud projects to your solution. In one project, have it reference only your web role. In the other project, have it reference only your worker role.

You can keep the cloud project that references both roles and use that for local debugging but when it is time to deploy, right click the cloud project that references only role you wish to deploy and click "Publish"

You will end up maintaining configuration files for each cloud project but that sounds a lot easier than manually messing around with editing the package file each time.

like image 42
Joseph White Avatar answered Oct 17 '22 22:10

Joseph White