如何在Azure VM中使用公共静态IP

时间:2014-07-18 20:54:50

标签: azure static-ip-address

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

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

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

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名称放在配置文件中即可)。如何为VM分配公共IP。 Microsoft文档仅表明公共IP可用于VM,但他们是否认为每个人都知道如何做到这一点?

3 个答案:

答案 0 :(得分: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时,请确保云服务不存在。要移动VM,只需点击管理门户中的捕获按钮并为其指定一个友好名称,然后删除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

答案 1 :(得分:1)

您应该能够在创建VM后动态地将保留的IP分配给VM(或Cloud Service Web角色),而不会有任何拆除。适合我。就这样做;

New-AzureReservedIP -ReservedIPName MyReservedIP -Location&#34; East US&#34;

Set-AzureReservedIPAssociation -ReservedIPName MyReservedIP -ServiceName MyVMName

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

答案 2 :(得分: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"

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