azure-analysis-services

Azure SSAS Scaling up and down


Below is our scenario:

We are on Azure Analysis Services on Tier S1.

We'd like to scale up to Tier S2 in the evening to do a full process.

After processing is complete, we'd like to scale back down to Tier S1.

Questions:

  1. When we scale up, roughly how long does it take?
  2. How much downtime is there to end users when we scale up? I've heard a few min to just seconds but nothing definitive or what it depends on.
  3. After Azure is finished scaling up, is the cube available for querying or does it need to be re-processed in any way? (I assume, it's ready)
  4. After we finish scaling down, is the cube available for querying or does it need to be re-processed? (I assume, it's ready)
  5. Our users connect via Excel, are there any changes needed to their connections after scaling? (I wouldn't think so)

There is unfortunately not a lot of documentation on vertical scaling on Microsoft's sites.

Edit: to be clear, I'm referring to vertical scaling (up/down) and not horizonal scaling (out/in).

Edit2:

In case this is useful to others, this is my powershell script for scaling.

    # This scales the Azure Analysis Server up and down. Triggered via SQL Agent job
# Tiers available here: https://azure.microsoft.com/en-us/pricing/details/analysis-services/
# powershell -file "C:\Users\me\Documents\mypowershellscript.ps1" -Tier "S4"

###################################################################
# Parameters
Param([parameter(Mandatory=$true,
   HelpMessage="Enter Azure AS tier to scale to")]
   $Tier
   )



###################################################################
# Set Variables
$subscriptionId = ""

$resourceGroupName = ""
$analysisServerName = ""

$appUserName = ""  #spn
$tenantId = "tenant_id_guid"
$username = "client_id_guid" # client id
$plaintextPassword = "my_secret"




###################################################################
# Main code
$password = ConvertTo-SecureString $plaintextPassword -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential ($username, $password)
Connect-AzAccount -ServicePrincipal -Credential $psCred -Tenant $tenantId -SubscriptionId $subscriptionId

Write-Host "Started scaling"
Write-Host "----------------------------------"


try {
    Set-AzAnalysisServicesServer -sku $Tier -Name $analysisServerName -ResourceGroupName $resourceGroupName
    
    Write-Host "----------------------------------"
    Write-Host "Finished scaling"

}
catch {
    {1:throw 'MG Azure Scaling Failed. Retry job step'}
}

And it's called like this from SQL Agent job:

powershell -file "\\servername\d$\Scripts\AzureScaling\AzureSSAS_Scaling.ps1" -Tier "S4"

Solution

  • There is unfortunately not a lot of documentation on vertical scaling on Microsoft's sites.

    Yeah, a lack of very specific detail seems to be common across the cloud providers. I have also found the same type of thing on AWS in addition to Azure, and expect it would be similar on other cloud providers. I am not sure if it is because there are a lot of variables to it and they don't care to explain it (or are worried about giving away their approach to competitors) or if they want freedom to change the method without notifying anyone. I get the frustration. Here are my experiences:

    1. Generally speaking, a few minutes. There are definitely times this is faster than others. There doesn't seem to be any particular rhyme or reason to it, or at least, any way of us indicating it will be a 'fast' or 'slow' one. I suspect it has to do with how far away the new instances are, how busy their network is between the cross-links we need to transit to re-establish, or if in fact the instance we were on already had the capacity to do it and just reallocated more of that to us.
    2. This is pretty much the same as #1.
    3. Yes, it should be fully ready after it reports the action is complete.
    4. Yes, it should be fully ready after it reports the action is complete.
    5. No, but I assume you realize that the connection will be lost during the transition. You will need to ensure the connections auto-reconnect.