首页 文章

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

提问于
浏览
2

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

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

然后我发现这个参数可以在new-azurevm中传递 . 所以我删除了(这是一个很好的解决方法 . 我很高兴我没有花时间在虚拟机中配置软件)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名称放在配置文件中即可) . 如何为VM分配公共IP . Microsoft文档仅表明公共IP可用于VM,但他们是否认为每个人都知道如何做到这一点?

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 .

    创建或移动VM时,请确保 Cloud 服务不存在 . 要移动VM,只需点击管理门户中的捕获按钮并为其指定友好名称,然后删除VM和 Cloud 服务 .

    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
    
  • 0

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

    New-AzureReservedIP -ReservedIPName MyReservedIP -Location“East US”

    Set-AzureReservedIPAssociation -ReservedIPName MyReservedIP -ServiceName MyVMName

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

  • 1

    在过去两天经过多次不同选择的试验后,最终有效:

    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"
    

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

相关问题