Part 2: Azure Stack – Scale up Existing App Service Worker Tier

Previous Post in Series:  Part 1: Azure Stack – App Service High Level Overview

Welcome back folks! In part one we went over the ASDK App Service in a little more detail, mainly to prepare us for scaling up one of our existing worker tiers. So let’s get to it.

Scale Up Existing Dedicated Worker Tier

For the purposes of this guide I’ll be using the “Small” Worker Tier which as with the “Medium” and “Large” tiers currently has no “Worker Roles” deployed into it.

The first thing you’ll want to do is log into https://adminportal.local.azurestack.external as a Global Admin

Now let’s go and have a look at the current state of our “Worker Tiers”:

  • Select “More Services”, then “App Service”
clip_image001
  • Now select “Worker Tiers”

As I mentioned above, we’ll be working with the “Small” tier, notice that there is currently “0” for both “Available” and “Total”

clip_image002

So why is there a tier here at all then if there are none deployed? Good question. When the ASDK App Service Resource Provider is deployed it creates all of the “Dedicated Worker Tiers” shown in the above screenshot, these are actually created as “VM Scale Sets”, these Scale Sets have all the necessary information for creating a Worker Role within that tier. This means, as you’d expect with a Scale Set, we can just add additional Worker Role VMs to this tier without having to do any additional configuration, we just tell the system to give us one or more…awesome!

  • We can jump straight to this Worker Tier’s Scale Set from this blade by clicking “…” on our “Small” Worker Role and selecting “ScaleSet”
clip_image003

From this blade you’ll notice that clicking on “Instances” shows there are no Worker Roles currently deployed to this VM Scale Set…let’s attend to that now.

clip_image004

This is where I thought to myself, “Where’s the option to scale up?”

As it turns out, there should be another blade here called “Scaling” (See the screenshot below), unfortunately due to a bug, it’s missing from the current (at the time of writing) ASDK build.

clip_image005
clip_image006

Sooooo, being that the UI isn’t an option for us at this point…TO THE POWERSHELLS!

Prepare PowerShell Session

First we need to prepare our PowerShell session for working with our ASDK deployment.

  • Launch an elevated PowerShell ISE console and paste the following code into the editor
  • Edit the $TenantName variable as required and run the code
# Set AAD Directory Name
$TenantName = "YourAADDirectory.onmicrosoft.com"

# Import Required Azure PowerShell Modules
Import-Module C:\AzureStack-Tools-master\Connect\AzureStack.Connect.psm1
Import-Module C:\AzureStack-Tools-master\Identity\AzureStack.Identity.psm1

# For Azure Stack development kit, this value is set to https://adminmanagement.local.azurestack.external. To get this value for Azure Stack integrated systems, contact your service provider.
$ArmEndpoint = "https://adminmanagement.local.azurestack.external"

# For Azure Stack development kit, this value is adminvault.local.azurestack.external
$KeyvaultDnsSuffix = "adminvault.local.azurestack.external"

# Register an AzureRM environment that targets your Azure Stack instance
Add-AzureRMEnvironment `
    -Name "AzureStackAdmin" `
    -ArmEndpoint $ArmEndpoint

# Get the Active Directory tenantId that is used to deploy Azure Stack
$TenantID = Get-AzsDirectoryTenantId `
    -AADTenantName $TenantName `
    -EnvironmentName "AzureStackAdmin"

# Sign in to your environment
Login-AzureRmAccount `
    -EnvironmentName "AzureStackAdmin" `
    -TenantId $TenantID

When prompted for login credentials, enter the AAD account you used when deploying the ASDK.

With that done, let’s kick off the Worker Role deployment.

  • Within the same PowerShell console, paste the following code into the editor
  • Modify the $VMSS.Sku.Capacity value as required, I deployed 2 new Worker Roles into the tier
# Get the 'Small' Scale Set
$VMSS = Get-AzureRmVmss -ResourceGroupName "AppService.local" -VMScaleSetName "SmallWorkerTierScaleSet"

# Set number of VMs you want in the Scale Set
$VMSS.Sku.Capacity = 2

# Update the VM Scale Set to apply the capacity change and kick off the Worker Role deployment
Update-AzureRmVmss `
    -ResourceGroupName "AppService.local" `
    -Name "SmallWorkerTierScaleSet" `
    -VirtualMachineScaleSet $VMSS

Now, you’re not going to get any output from PowerShell for a good while but we can still check on progress elsewhere.

Let’s go back to our “App Service” within the admin portal, select “Roles” and click our Small Web Worker

clip_image007

You should see a line for each new Worker Role being deployed, with a status that shows where in the process it is:

clip_image008

By the time the above screen showed “Installing”, my PowerShell console showed the job as complete.

clip_image009

However, as the “Installing” status above implies, there is still work being done, namely all required software is being installed and configured on the two VMs that have just been spun up…and this will take a while.

By logging onto the console of the VM named CN0-VM, we can check the deployment progress and have a wee look at the logs if we feel like it.

  • Launch “Hyper-V Manager” on the ASDK host and connect to “CN0-VM”

NOTE:  You’ll find the name for the VM in the “Notes” section of the VM (See screenshot below)

clip_image010
  • Launch “Web Cloud Management Console” from the icon on the desktop
clip_image011
  • Once launched, select “Managed Servers”, you should see a VM for each you deployed, with the role “Web Worker – Dedicated (Small)”
  • If you select one, you’ll be presented with the VMs logs in the pane below…there is a lot going on!

NOTE: The current status of “Starting”

clip_image012
clip_image013

The screenshots below show what a successful deployment of the new Worker Roles should look like:

clip_image014
clip_image015

NOTE:  The deployment status should show as “Ready” before attempting to make use of your new Worker Role VMs

clip_image016

And that’s it for this guide folks, a nice short one by my usual standards. I’m off to get a little more hands-on time with my lab ASDK 🙂

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.