2016-05-24 4 views
1

Я пытаюсь обменять серверы с помощью командлета Move-AzureDeployment, запустив его в моей powershell. Похоже, что он занимает около 4 минут, чтобы поменяться от постановки на производство. Это 4 минуты простоя, и это не очень приемлемо. Когда я вручную меняю серверы с Azure Portal, это происходит почти мгновенно.Move-AzureDeployment занимает слишком много времени для обмена серверами?

Мне было интересно, почему это займет больше времени с помощью командлета и что я могу сделать, чтобы исправить эту проблему, потому что я хочу иметь возможность обменивать свои серверы промежуточного и производственного процессов с помощью powershell.

Вот мой скрипт PowerShell:

try 
{ 
$ErrorActionPreference = "stop" 

Write-Host "Deploying build build no. $env:build_number to $_serviceName" 

#import azure cmdlets module 
Write-Host "Importing azure service management modules (i.e for the old portal)" 
Import-Module "C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Azure.psd1" 

Write-Host "Started Command for Switching Slots" 
#Switch slots from Staging to Production 
Move-AzureDeployment -ServiceName $_serviceName 
Write-Host "Finished Command for Switching Slots" 


#make sure deployment is in running state 
$deployment = Get-AzureDeployment -servicename $_serviceName -slot $_slotName 
Write-Host "$_serviceName is in state $($deployment.status)" 
$StopWatch = [System.Diagnostics.Stopwatch]::StartNew() #declare stopwatch 
while (($deployment.Status -ne "running") -and ($StopWatch.Elapsed.Hours -lt 2)) #running the loop for a maximum of 2 hours 
{ 
    Write-Host "wait 5 seconds before trying again" 
    Start-Sleep -s 5 
    $deployment = Get-AzureDeployment -servicename $_serviceName -slot $_slotName 
    Write-Host "$_serviceName is in state $($deployment.status)"   
} 

#make sure all roles are in ready state 
$nonReadyInstances = (Get-AzureDeployment $_serviceName -Slot $_slotName).RoleInstanceList | Where-Object { $_.InstanceStatus -ne "ReadyRole" } | ft -Property RoleName, InstanceName, InstanceStatus 
$nonReadyInstances 
$StopWatch = [System.Diagnostics.Stopwatch]::StartNew() #declare stopwatch 
while (($nonReadyInstances -ne $null) -and ($StopWatch.Elapsed.Hours -lt 2)) #running the loop for a maximum of 2 hours 
{ 
    Write-Host "wait 5 seconds before trying again" 
    Start-Sleep -s 5 
    $nonReadyInstances = (Get-AzureDeployment $_serviceName -Slot $_slotName).RoleInstanceList | Where-Object { $_.InstanceStatus -ne "ReadyRole" } 
    $nonReadyInstances 
} 

#output deployment id 
#$deploymentid = Check-Deployment -serviceName $_serviceName -slotName $_slotName 
#Write-Host "Deployed to $_serviceName with deployment id $deploymentid and slot $_slotName" 
    exit 0 

    } 
catch [System.Exception] 
    { 
Write-Host $_.Exception.ToString() 
exit 1 
} 

ответ

0

Из моего понимания свопа между слотом промежуточного и производством является VIP свопа, как они оба используют. Microsoft заявляет, что вы не должны видеть время простоя самого сайта/приложения. Запросы по-прежнему будут удалены на старый производственный сервер до тех пор, пока изменение не будет завершено. Вы видите время простоя на сайте во время обмена?

+0

Я говорил с представителем службы поддержки Майкрософт, и он упомянул, хотя они рекламируют VIP-обмен как операцию бездействия, но на самом деле с ним связано некоторое время простоя, и это то, что я видел. Просто интересно, как мы можем обойти это? – chillax786