2

在花了几个小时尝试每个相关的 Azure Power Shell 命令来为 Azure VM 分配一个虚拟公共 IP 之后,我又回到了原点。令人惊讶的是,在 Azure 中无法完成这样的基本功能。

首先,我保留了一个静态 IP。然后创建一个虚拟机。然后尝试了 set-azurestaticvnetip。它抱怨子网名称不能为空。所以我在 Azure 门户中创建了一个虚拟网络并创建了一个子网。然后使用 set-azuresubnet -subnetnames subnet-1。现在它抱怨虚拟网络名称不能为空。问题是序列中的所有命令都没有将 -vnetname 作为参数。

然后我发现这个参数可以传入new-azurevm。所以我删除了(多么好的解决方法。我很高兴我没有花时间在 vm 中配置软件)VM 并尝试使用此命令创建。(此命令中未指定图像参数。我是在提示符下输入的)。

new-azurevmconfig -name myvm -instancesize Basic_A2|
add-azureprovisioningconfig -adminusername "myvmadmin" -windows -password "myvmP123"|
set-azuresubnet -subnetnames subnet-1 |
set-azurestaticvnetip -ipaddress 23.101.39.28 |
new-azurevm -servicename myvm -vnetname mynet –Location "East US" -waitforboot

抛出错误-

new-azurevm : BadRequest : The static address 23.101.39.28 doesn't belong to the address space defined by the role's subnets.

这里有什么问题?在我看来,这些说明用于为 VM 分配私有 IP。将静态 IP 分配给通过 Web 角色创建的 VM 非常容易(只需将公共 IP 名称放在配置文件中即可)。如何将公共 IP 分配给 VM。Microsoft 文档仅声明公共 IP 可用于 VM,但他们认为每个人都知道如何做到这一点吗?

4

3 回答 3

3

我认为您需要创建一个区域 vnet。这对我有用:

1) 获取您当前的网络配置

 Get-AzureVNetConfig -ExportToFile "c:\temp\MyAzNets.netcfg"

2) 打开 MyAzNets.netcfg 并编辑/(添加?)一个 VirtualNetworkSite。我认为这里的关键是位置而不是 Affinity Group。您保留的 IP/VM 将需要在同一位置。

你应该有这样的东西:

<VirtualNetworkSites>
  <VirtualNetworkSite name="yourvnet" Location="West US">
    <AddressSpace>
      <AddressPrefix>192.168.50.0/24</AddressPrefix>
    </AddressSpace>
    <Subnets>
      <Subnet name="yoursubnet">
        <AddressPrefix>192.168.50.0/24</AddressPrefix>
      </Subnet>
    </Subnets>
  </VirtualNetworkSite>
</VirtualNetworkSites>

3) 将其发送回 Azure:

Set-AzureVNetConfig -ConfigurationPath "C:\temp\MyAzNets.netcfg"

4) 在与您的 vnet 相同的位置添加/获取您的 IP。

Get-AzureReservedIP / New-AzureReservedIP

5) 创建你的虚拟机。

创建或移动 VM 时,请确保云服务不存在。要移动虚拟机,只需点击管理门户中的捕获按钮并为其命名,然后删除虚拟机和云服务。

New-AzureVMConfig -Name "my-vm01" -InstanceSize Basic_A2 -ImageName "someimage" -Label "my-vm" | Set-AzureSubnet "**yoursubnet**" | Add-AzureEndpoint -LocalPort 3389 -Name 'RDP' -Protocol tcp -PublicPort 61030 | Add-AzureEndpoint -LocalPort 80 -Name 'HTTP' -Protocol tcp -PublicPort 80 | Add-AzureEndpoint -LocalPort 443 -Name 'HTTPS' -Protocol tcp -PublicPort 443| New-AzureVM -ServiceName "my-vm" -ReservedIPName "**reservedipname**" -Location "West US" -VNetName "**yourvnet**" 

6) 应分配IP。如果您运行 Get-AzureReservedIP,它现在应该显示如下内容:

ReservedIPName       : reservedipname
Address              : 127.0.0.1
Id                   : xxx
Label                :
Location             : West US
State                : Created
InUse                : True
ServiceName          : my-vm
DeploymentName       : my-vm
于 2014-07-19T14:00:08.003 回答
1

您应该能够在创建 VM 后将保留的 IP 动态分配给 VM(或云服务 Web 角色),而无需进行任何拆除。为我工作。就这样做;

New-AzureReservedIP –ReservedIPName MyReservedIP –位置“美国东部”

设置-AzureReservedIPAssociation -ReservedIPName MyReservedIP -ServiceName MyVMName

第一个命令保留 IP。第二个命令将其分配给 VM。立即分配,服务器将重新启动

于 2016-01-29T21:49:07.897 回答
0

在过去两天用不同的选项进行了多次试验后,终于成功了:

New-AzureVMConfig -Name "mysite" -InstanceSize Basic_A2  -Label "mysite" | Set-AzureSubnet "subnet-1" | add-azureprovisioningconfig -adminusername "myuser" -windows -password "mypwd"|  Add-AzureEndpoint -LocalPort 80 -Name 'HTTP' -Protocol tcp -PublicPort 80 | Add-AzureEndpoint -LocalPort 443 -Name 'HTTPS' -Protocol tcp -PublicPort 443| New-AzureVM -ServiceName "mysite" -ReservedIPName "mysiteip" -Location "East US" -VNetName "mysite"

不知道为什么,但确实如此。我以前试过这个,没有任何运气。

于 2014-07-19T17:21:58.797 回答