Azure 市场中的 VM 常见问题

这些常见问题 (FAQ) 涵盖了你在 Azure 市场中创建虚拟机 (VM) 产品/服务时可能遇到的常见问题。

如何将虚拟专用网络 (VPN) 配置为使用我的 VM?

有关在基于 Azure 的 VM 上运行 Microsoft 服务器软件的 Microsoft 支持策略有哪些?

在 VM 中如何管理启动任务中的自定义脚本扩展?

有关通过 Azure PowerShell 模块、Azure 资源管理器模板和 Windows 系统上的故障排除步骤使用自定义脚本扩展的详细信息,请参阅适用于 Windows 的自定义脚本扩展

Azure 市场是否支持 32 位应用程序或服务?

否。 Azure VM 支持的操作系统和标准服务均为 64 位。 尽管大多数 64 位操作系统都支持 32 位版本的应用程序以实现向后兼容性,但不支持将 32 位应用程序用作 VM 解决方案的一部分,因此强烈建议不要使用 32 位应用程序。 请将应用程序重新创建为 64 位项目。

有关详细信息,请参阅以下文章:

错误:VHD 已作为资源注册到映像存储库

每当我尝试从 VHD 创建映像时,都会在 Azure PowerShell 中收到错误“VHD 已作为资源注册到映像存储库”。 我之前没有创建任何映像,也没在 Azure 中找到任何带有此名称的映像。 如何解决此问题?

如果从带锁的 VHD 创建了 VM,则通常会出现此问题。 请确认没有从此 VHD 分配 VM,然后重试此操作。 如果问题仍然存在,请开具支持票证。 请参阅合作伙伴中心支持

如何从通用 VHD 创建 VM?

准备 Azure 资源管理器模板

本部分介绍如何通过从 Azure 部署的虚拟硬盘提供操作系统和数据磁盘 VHD 映像来创建和部署用户提供的虚拟机 (VM) 映像。 以下步骤使用通用 VHD 来部署 VM。

  1. 登录到 Azure 门户。

  2. 将通用操作系统 VHD 和数据磁盘 VHD 上传到 Azure 存储帐户。

  3. 在主页中,选择“创建资源”。 搜索“模板部署”,然后选择“ 创建”。

  4. 选择“在编辑器中生成自己的模板”。

    显示选择了模板

  5. 将以下 JSON 模板粘贴到编辑器中,然后选择“ 保存”。

     {
          "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
              "userStorageAccountName": {
                  "type": "String"
              },
              "userStorageContainerName": {
                  "defaultValue": "vhds",
                  "type": "String"
              },
              "dnsNameForPublicIP": {
                  "type": "String"
              },
              "adminUserName": {
                  "defaultValue": "isv",
                  "type": "String"
              },
              "adminPassword": {
                  "defaultValue": "",
                  "type": "SecureString"
              },
              "osType": {
                  "defaultValue": "windows",
                  "allowedValues": [
                      "windows",
                      "linux"
                  ],
                  "type": "String"
              },
              "subscriptionId": {
                  "type": "String"
              },
              "location": {
                  "type": "String"
              },
              "vmSize": {
                  "type": "String"
              },
              "publicIPAddressName": {
                  "type": "String"
              },
              "vmName": {
                  "type": "String"
              },
              "virtualNetworkName": {
                  "type": "String"
              },
              "nicName": {
                  "type": "String"
              },
              "vhdUrl": {
                  "type": "String",
                  "metadata": {
                      "description": "VHD Url..."
                  }
              }
          },
          "variables": {
              "addressPrefix": "10.0.0.0/16",
              "subnet1Name": "Subnet-1",
              "subnet2Name": "Subnet-2",
              "subnet1Prefix": "10.0.0.0/24",
              "subnet2Prefix": "10.0.1.0/24",
              "publicIPAddressType": "Dynamic",
              "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]",
              "subnet1Ref": "[concat(variables('vnetID'),'/subnets/',variables('subnet1Name'))]",
              "hostDNSNameScriptArgument": "[concat(parameters('dnsNameForPublicIP'),'.',parameters('location'),'.cloudapp.azure.com')]",
              "osDiskVhdName": "[concat('http://',parameters('userStorageAccountName'),'.blob.core.windows.net/',parameters('userStorageContainerName'),'/',parameters('vmName'),'osDisk.vhd')]"
          },
          "resources": [
              {
                  "type": "Microsoft.Network/publicIPAddresses",
                  "apiVersion": "2015-06-15",
                  "name": "[parameters('publicIPAddressName')]",
                  "location": "[parameters('location')]",
                  "properties": {
                      "publicIPAllocationMethod": "[variables('publicIPAddressType')]",
                      "dnsSettings": {
                          "domainNameLabel": "[parameters('dnsNameForPublicIP')]"
                      }
                  }
              },
              {
                  "type": "Microsoft.Network/virtualNetworks",
                  "apiVersion": "2015-06-15",
                  "name": "[parameters('virtualNetworkName')]",
                  "location": "[parameters('location')]",
                  "properties": {
                      "addressSpace": {
                          "addressPrefixes": [
                              "[variables('addressPrefix')]"
                          ]
                      },
                      "subnets": [
                          {
                              "name": "[variables('subnet1Name')]",
                              "properties": {
                                  "addressPrefix": "[variables('subnet1Prefix')]"
                              }
                          },
                          {
                              "name": "[variables('subnet2Name')]",
                              "properties": {
                                  "addressPrefix": "[variables('subnet2Prefix')]"
                              }
                          }
                      ]
                  }
              },
              {
                  "type": "Microsoft.Network/networkInterfaces",
                  "apiVersion": "2015-06-15",
                  "name": "[parameters('nicName')]",
                  "location": "[parameters('location')]",
                  "dependsOn": [
                      "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPAddressName'))]",
                      "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]"
                  ],
                  "properties": {
                      "ipConfigurations": [
                          {
                              "name": "ipconfig1",
                              "properties": {
                                  "privateIPAllocationMethod": "Dynamic",
                                  "publicIPAddress": {
                                      "id": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressName'))]"
                                  },
                                  "subnet": {
                                      "id": "[variables('subnet1Ref')]"
                                  }
                              }
                          }
                      ]
                  }
              },
              {
                  "type": "Microsoft.Compute/virtualMachines",
                  "apiVersion": "2015-06-15",
                  "name": "[parameters('vmName')]",
                  "location": "[parameters('location')]",
                  "dependsOn": [
                      "[concat('Microsoft.Network/networkInterfaces/', parameters('nicName'))]"
                  ],
                  "properties": {
                      "hardwareProfile": {
                          "vmSize": "[parameters('vmSize')]"
                      },
                      "osProfile": {
                          "computername": "[parameters('vmName')]",
                          "adminUsername": "[parameters('adminUsername')]",
                          "adminPassword": "[parameters('adminPassword')]"
                      },
                      "storageProfile": {
                          "osDisk": {
                              "name": "[concat(parameters('vmName'),'-osDisk')]",
                              "osType": "[parameters('osType')]",
                              "caching": "ReadWrite",
                              "image": {
                                  "uri": "[parameters('vhdUrl')]"
                              },
                              "vhd": {
                                  "uri": "[variables('osDiskVhdName')]"
                              },
                              "createOption": "FromImage"
                          }
                      },
                      "networkProfile": {
                          "networkInterfaces": [
                              {
                                  "id": "[resourceId('Microsoft.Network/networkInterfaces',parameters('nicName'))]"
                              }
                          ]
                      }
                  }
              }
          ]
      }
    
  6. 提供显示的“自定义部署”属性页的参数值。

    ResourceGroupName 现有 Azure 资源组名称。 通常,使用与密钥保管库相同的 RG。
    TemplateFile 文件 VHDtoImage.json 的完整路径名。
    userStorageAccountName 存储帐户的名称。
    dnsNameForPublicIP 公共 IP 的 DNS 名称;必须为小写。
    subscriptionId Azure 订阅标识符。
    位置 资源组的标准 Azure 地理位置。
    vmName 虚拟机名称。
    vhdUrl 虚拟硬盘的 Web 地址。
    vmSize 虚拟机实例的大小。
    publicIPAddressName 公共 IP 地址的名称。
    virtualNetworkName 虚拟网络的名称。
    nicName 虚拟网络的网络接口卡的名称。
    adminUserName 管理员帐户的用户名。
    adminPassword 管理员密码。
  7. 提供这些值后,选择“购买”

    Azure 开始部署。 它将使用指定的非托管 VHD 在指定的存储帐户路径中创建新 VM。 可以选择 Azure 门户左侧的“虚拟机”,在门户中跟踪进度。 创建 VM 后,状态将从“开始”更改为“正在运行”。

    对于第 2 代 VM 部署,请使用此模板:

    {
         "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
         "contentVersion": "1.0.0.0",
         "parameters": {
             "userStorageAccountName": {
                 "type": "String"
             },
             "userStorageContainerName": {
                 "defaultValue": "vhds",
                 "type": "String"
             },
             "dnsNameForPublicIP": {
                 "type": "String"
             },
             "adminUserName": {
                 "defaultValue": "isv",
                 "type": "String"
             },
             "adminPassword": {
                 "defaultValue": "",
                 "type": "SecureString"
             },
             "osType": {
                 "defaultValue": "windows",
                 "allowedValues": [
                     "windows",
                     "linux"
                 ],
                 "type": "String"
             },
             "subscriptionId": {
                 "type": "String"
             },
             "location": {
                 "type": "String"
             },
             "vmSize": {
                 "type": "String"
             },
             "publicIPAddressName": {
                 "type": "String"
             },
             "vmName": {
                 "type": "String"
             },
             "virtualNetworkName": {
                 "type": "String"
             },
             "nicName": {
                 "type": "String"
             },
             "vhdUrl": {
                 "type": "String",
                 "metadata": {
                     "description": "VHD Url..."
                 }
             }
         },
         "variables": {
             "addressPrefix": "10.0.0.0/16",
             "subnet1Name": "Subnet-1",
             "subnet2Name": "Subnet-2",
             "subnet1Prefix": "10.0.0.0/24",
             "subnet2Prefix": "10.0.1.0/24",
             "publicIPAddressType": "Dynamic",
             "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]",
             "subnet1Ref": "[concat(variables('vnetID'),'/subnets/',variables('subnet1Name'))]",
             "hostDNSNameScriptArgument": "[concat(parameters('dnsNameForPublicIP'),'.',parameters('location'),'.cloudapp.azure.com')]",
             "osDiskVhdName": "[concat('http://',parameters('userStorageAccountName'),'.blob.core.windows.net/',parameters('userStorageContainerName'),'/',parameters('vmName'),'osDisk.vhd')]"
         },
         "resources": [
             {
                 "type": "Microsoft.Network/publicIPAddresses",
                 "apiVersion": "2015-06-15",
                 "name": "[parameters('publicIPAddressName')]",
                 "location": "[parameters('location')]",
                 "properties": {
                     "publicIPAllocationMethod": "[variables('publicIPAddressType')]",
                     "dnsSettings": {
                         "domainNameLabel": "[parameters('dnsNameForPublicIP')]"
                     }
                 }
             },
             {
                 "type": "Microsoft.Network/virtualNetworks",
                 "apiVersion": "2015-06-15",
                 "name": "[parameters('virtualNetworkName')]",
                 "location": "[parameters('location')]",
                 "properties": {
                     "addressSpace": {
                         "addressPrefixes": [
                             "[variables('addressPrefix')]"
                         ]
                     },
                     "subnets": [
                         {
                             "name": "[variables('subnet1Name')]",
                             "properties": {
                                 "addressPrefix": "[variables('subnet1Prefix')]"
                             }
                         },
                         {
                             "name": "[variables('subnet2Name')]",
                             "properties": {
                                 "addressPrefix": "[variables('subnet2Prefix')]"
                             }
                         }
                     ]
                 }
             },
             {
                 "type": "Microsoft.Network/networkInterfaces",
                 "apiVersion": "2015-06-15",
                 "name": "[parameters('nicName')]",
                 "location": "[parameters('location')]",
                 "dependsOn": [
                     "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPAddressName'))]",
                     "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]"
                 ],
                 "properties": {
                     "ipConfigurations": [
                         {
                             "name": "ipconfig1",
                             "properties": {
                                 "privateIPAllocationMethod": "Dynamic",
                                 "publicIPAddress": {
                                     "id": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressName'))]"
                                 },
                                 "subnet": {
                                     "id": "[variables('subnet1Ref')]"
                                 }
                             }
                         }
                     ]
                 }
             },
             {
                 "type": "Microsoft.Compute/virtualMachines",
                 "apiVersion": "2015-06-15",
                 "name": "[parameters('vmName')]",
                 "location": "[parameters('location')]",
                 "dependsOn": [
                     "[concat('Microsoft.Network/networkInterfaces/', parameters('nicName'))]"
                 ],
                 "properties": {
                     "hardwareProfile": {
                         "vmSize": "[parameters('vmSize')]"
                     },
                     "osProfile": {
                         "computername": "[parameters('vmName')]",
                         "adminUsername": "[parameters('adminUsername')]",
                         "adminPassword": "[parameters('adminPassword')]"
                     },
                     "storageProfile": {
                         "osDisk": {
                             "name": "[concat(parameters('vmName'),'-osDisk')]",
                             "osType": "[parameters('osType')]",
                             "caching": "ReadWrite",
                             "image": {
                                 "uri": "[parameters('vhdUrl')]"
                             },
                             "vhd": {
                                 "uri": "[variables('osDiskVhdName')]"
                             },
                             "createOption": "FromImage"
                         }
                     },
                     "networkProfile": {
                         "networkInterfaces": [
                             {
                                 "id": "[resourceId('Microsoft.Network/networkInterfaces',parameters('nicName'))]"
                             }
                         ]
                     }
                 }
             }
         ]
     }
    

使用 PowerShell 部署 Azure VM

复制并编辑以下脚本以提供 $storageaccount$vhdUrl 变量的值。 执行它,从现有通用 VHD 创建 Azure VM 资源。

# storage account of existing generalized VHD
$storageaccount = "testwinrm11815"
# generalized VHD URL
$vhdUrl = "https://testwinrm11815.blob.core.windows.net/vhds/testvm1234562016651857.vhd"

echo "New-AzResourceGroupDeployment -Name "dplisvvm$postfix" -ResourceGroupName "$rgName" -TemplateFile "C:\certLocation\VHDtoImage.json" -userStorageAccountName "$storageaccount" -dnsNameForPublicIP "$vmName" -subscriptionId "$mysubid" -location "$location" -vmName "$vmName" -vaultName "$kvname" -vaultResourceGroup "$rgName" -certificateUrl
$objAzureKeyVaultSecret.Id -vhdUrl "$vhdUrl" -vmSize "Standard\_A2" -publicIPAddressName "myPublicIP1" -virtualNetworkName "myVNET1" -nicName "myNIC1" -adminUserName "isv" -adminPassword $pwd"

# deploying VM with existing VHD
New-AzResourceGroupDeployment -Name "dplisvvm$postfix" -ResourceGroupName "$rgName"

如何测试隐藏的预览图像?

可以使用快速启动模板部署隐藏的预览图像。 若要部署预览版映像,请执行以下操作:

  1. 转到适用于 Linux 或 Windows 的相应快速入门模板,选择“部署到 Azure”。 此过程应该会打开 Azure 门户。
  2. 在Azure 门户中,选择“编辑模板”。
  3. 在 JSON 模板中,搜索 imageReference 并更新图像的 publisherid、offerid、skuid 和版本。 若要测试预览图像,请将“-PREVIEW”追加到 offerid。
  4. 选择“保存”。
  5. 填写其余的详细信息。 查看并创建