Search code examples
azureazure-worker-roles

Deploying to new D-series Azure VM's


I'm trying to deploy a test instance of our Azure-based webservice to the new D-series Azure vm's. We make extensive use of temp files and are hoping we'll see some good performance improvements. Unfortunately we don't seem to be able to package or build using the new vmsizes. Our current csdef looks like this:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WebAPI.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2013-10.2.2">
<WebRole name="WebAPI" vmsize="Large">
<Sites>
  <Site name="Web">
    <Bindings>
      <Binding name="Endpoint1" endpointName="NonSSL Endpoint" />
    </Bindings>
  </Site>
</Sites>
<Endpoints>
  <InputEndpoint name="NonSSL Endpoint" protocol="http" port="80" />
  <InternalEndpoint name="InternalHttpIn" protocol="http" />
</Endpoints>
</WebRole>
</ServiceDefinition>

If I switch the vmsize from "Large" to "Standard_D3" and try to build or package for publishing, I get this error:

Error   2   The XML specification is not valid: The 'vmsize' attribute is invalid - The value 'Standard_D3' is invalid according to its datatype 'http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition:RoleSize' - The Enumeration constraint failed.  C:\Users\ablack\Desktop\WebAPI.Azure\ServiceDefinition.csdef    3   34  WebAPI.Azure

How do I get this schema updated? Or is there a way to override XML validation during the build & package process?


Solution

  • Apparently the 2.4 SDK removes the vmsize constraint entirely (it accepts any values, including made-up values like "Supersize"), so we will have to upgrade to that to try any new size options. This will complicate benchmarking (we'll need to get fresh baselines with the updated SDK first), but c'est la vie.