【问题标题】:How to use public static IP with Azure VM如何在 Azure VM 中使用公共静态 IP
【发布时间】:2014-09-10 02:28:04
【问题描述】:

在花了几个小时尝试每个相关的 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,但他们认为每个人都知道如何做到这一点吗?

【问题讨论】:

    标签: azure static-ip-address


    【解决方案1】:

    您应该能够在虚拟机创建后动态地将保留 IP 分配给虚拟机(或云服务 Web 角色),并且无需任何拆除。为我工作。就这样做吧;

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

    Set-AzureReservedIPAssociation -ReservedIPName MyReservedIP -ServiceName MyVMName

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

    【讨论】:

    • 我还发现 Get-AzureRerservedIP 命令对检查我的保留 IP 的名称很有用。我通过门户创建了它,我需要使用的名称还包括资源组名称。此外,您需要运行 VM 才能设置关联。
    【解决方案2】:

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

    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"
    

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

    【讨论】:

      【解决方案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) 创建您的虚拟机。

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

      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
      

      【讨论】:

      • 我已经有一个保留IP。它从 23.100 开始(与 vnet 位置和我帐户中的所有其他位置相同的位置)。我在 netcfg 中添加了这个。在名为“mynet”的本地站点或虚拟网络上收到此错误 IP 地址前缀无效“23.100.0.0/24”。我注意到您在设置配置后保留了 IP。你怎么知道你保留的 ip 会以 192 开头。?
      • 您的 vnet IP 地址是私有的。创建 vnet 子网时,应使用范围 10.* 或 192.168.*。您分配给此 vnet 的所有服务都将从该块中收到一个 IP。当您将保留的 IP (23.100.*) 映射到服务时,它基本上只是转发到私有 IP。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 2016-03-25
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      相关资源
      最近更新 更多