簡體   English   中英

如何診斷間歇性Azure自定義腳本擴展掛起?

[英]How to diagnose an intermittent Azure Custom Script Extension hang?

我們正在使用通過MSDN提供的Windows-10-N-x64 Azure VM映像進行一些自動化,並且間歇性地看到自定義腳本擴展未能在VM上初始化。 大約20%的時間失敗。

掛起時, Get-AzureRmVMExtension並不表示掛起過程中發生了任何錯誤。

ResourceGroupName       : resource-group-id
VMName                  : Windows-VM
Name                    : Script-Extensions
Location                : centralus
Etag                    : null
Publisher               : Microsoft.Compute
ExtensionType           : CustomScriptExtension
TypeHandlerVersion      : 1.7
Id                      : /subscriptions/subscription-id/resourceGroups/resource-group-id/providers/M
                          icrosoft.Compute/virtualMachines/Windows-VM/extensions/Script-Extensions
PublicSettings          : {
                            "fileUris": [
                              "https://resource-group-id.blob.core.windows.net/provisioning-container/Enable-PSRemotingAnd
                          DSC.ps1",
                              "https://resource-group-id.blob.core.windows.net/provisioning-container/microsoft-windows-ne
                          tfx3-ondemand-package.cab"
                            ],
                            "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File
                          Enable-PSRemotingAndDSC.ps1 -NetFxCabinetFilePath
                          microsoft-windows-netfx3-ondemand-package.cab -DNSName
                          dns-name.centralus.cloudapp.azure.com"
                          }
ProtectedSettings       :
ProvisioningState       : Creating
Statuses                :
SubStatuses             :
AutoUpgradeMinorVersion : False
ForceUpdateTag          :

在此期間,Azure門戶會將擴展狀態顯示為“正在Transitioning ,並且未報告任何錯誤。

C:\\WindowsAzure\\Logs\\Plugins\\Microsoft.Compute.CustomScriptExtension\\1.7 VM上的C:\\WindowsAzure\\Logs\\Plugins\\Microsoft.Compute.CustomScriptExtension\\1.7也不顯示任何錯誤。

如果不采取任何措施,最終將收到超時錯誤。

Exception             : System.Exception: 4:00:34 PM - Resource 
                        Microsoft.Compute/virtualMachines/extensions 
                        'Windows-VM/Script-Extensions' failed with message '{
                          "status": "Failed",
                          "error": {
                            "code": "ResourceDeploymentFailure",
                            "message": "The resource operation completed with 
                        terminal provisioning state 'Failed'.",
                            "details": [
                              {
                                "code": "VMExtensionProvisioningTimeout",
                                "message": "Provisioning of VM extension 
                        'Script-Extensions' has timed out. Extension 
                        installation may be taking too long, or extension 
                        status could not be obtained."
                              }
                            ]
                          }
                        }'
TargetObject          : 
CategoryInfo          : NotSpecified: (:) 
                        [New-AzureRmResourceGroupDeployment], Exception
FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implem
                        entation.NewAzureResourceGroupDeploymentCmdlet

如果我們在掛起的虛擬機上登錄並手動執行C:\\Packages\\Plugins\\Microsoft.Compute.CustomScriptExtension\\1.7\\enable.cmd則擴展將成功。

此時,我們想知道這是否與Azure本身有關,因為自定義腳本本身甚至沒有執行。 我們還有其他日志可以用來診斷此掛起嗎?

Azure支持已確認這是Azure自定義腳本擴展中的錯誤,預計解決日期為2017年7月。

嘗試通過Azure CLI 2.0使用ARM模板嘗試將具有自定義腳本擴展(版本1.9)的VM以及其他資源部署到VM時遇到類似的問題。 OP手動執行enable.cmd所描述的解決方法沒有任何效果,對我而言,此問題發生的可能性為100%。

這是我的ARM模板的CustomScriptExtension部分。

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "name": "vm/CustomScriptExtension",
    "location": "westus",
    "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.9",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "fileUris": [
                "https://myblobsubdomain.blob.core.windows.net/container/my-script.ps1"
            ],
            "commandToExecute": ".\\my-script.ps1"
        }
    }
}

即使對於單行的“ echo”腳本,該過程似乎也永遠掛起了(我從未讓它運行足夠長的時間以查看它是否會超時),並且Azure門戶中的擴展列出了“正在過渡”狀態。 我能夠確認腳本的任何部分都沒有運行過。

原來,問題出在我的commandToExecute,特別是我嘗試使用.\\my-script.ps1運行腳本。 一旦將其更改為直接調用powershell命令,問題就消失了,我的腳本成功運行了!

這是我的ARM模板相關部分的最終有效版本。

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "name": "vm/CustomScriptExtension",
    "location": "westus",
    "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.9",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "fileUris": [
                "https://myblobsubdomain.blob.core.windows.net/container/my-script.ps1"
            ],
            "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File ./my-script.ps1"
        }
    }
}

請注意,還必須指定-ExecutionPolicy Unrestricted才能真正運行腳本,但是省略它不會導致過渡問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM