将Azure资源组中的公共IP与Web应用程序相关联?

时间:2016-02-02 21:17:18

标签: powershell azure azure-resource-manager static-ip-address

我正在玩Azure资源组。

我创建了一个小组,在其中,我创建了一个网络应用。 (这完全是学术性的,当我完成学习时我会删除它,所以我不介意分享数据。)网络应用程序位于http://woodswild.azurewebsites.net,并且事实上,你可以去那个地址而且它会解决(尽管那里什么也没有,现在还可以。)

然后,在同一资源组中,我还创建了一个静态的公共IP地址。

enter image description here

一切看起来都不错(无论如何,我想)。但在Portal UI中,我发现此IP与任何内容都没有关联:

enter image description here

Aaannndd ......我很难搞清楚如何做到这一点。我使用以下命令在Azure PowerShell中创建了公共IP:

New-AzureRmPublicIpAddress -AllocationMethod Static -ResourceGroupName TestRG1 -ReverseFqdn woodswild.centralus.cloudapp.azure.com -Name woodswild.azurewebsites.net -Location "Central US" -DomainNameLabel woodswild

根据解释New-AzureRmPublicIpAddress命令的this article,没有参数来声明关联。我在门户网站用户界面中没有找到办法,我无法通过谷歌找到任何答案。

我希望/想知道/假设一旦建立了此关联,您可以将IP地址放在浏览器中,它将解析到与http://woodswild.azurewebsites.net相同的位置。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

实际上无法为Web App分配静态IP地址。这是因为Web Apps使用的IP地址并非由您独占使用,而是位于Azure Web App服务前面的负载均衡器的前端地址池。

然而,Microsoft确实断言任何可以分配域名的Web应用程序将保留其外部传入地址,以及Web App生命周期内的外部传出地址。这适用于基本,标准和高级SKU。 (它可能也适用于共享 - 我将不得不挖掘文档)

你可以找到你的外部传入IP地址(是的,基本上,ping它,看看DNS给出了什么!)

Resolve-DnsName (Get-AzureRmWebApp `
        -ResourceGroupName $ResourceGroupName -Name $Name).EnabledHostNames[0]

和您的外部传出IP地址

(Get-AzureRmWebApp -ResourceGroupName $ResourceGroupName `
                   -Name $Name).OutboundIpAddresses

<小时/> 看来我摔倒在这里的第一道障碍,并没有真正读到这个问题。或者至少我的大脑似乎读的不同于那里的单词! (我会在这里留下错误的答案,因为a,它可能对某人有用,b,我可能会将其粘贴到一天适合的实际答案中)

令人困惑的原因是,Azure用于更新资源的过程并不是很明显。

对于Azure中进行的大多数现有资源更改,此过程类似于

  1. Get-something,将其分配给变量。
  2. 通过指定其他值来更改该变量的属性。
  3. 使用Set-something cmdlet将更改写入Azure。
  4. 在为VM分配IP地址的情况下,这是要使用的代码

    $ipaddr = New-AzureRmPublicIpAddress -Name test1 `
                            -ResourceGroupName win10 `
                            -Location westeurope `
                            -AllocationMethod Static 
    
    $nic = Get-AzureRmNetworkInterface -Name $name `
                            -ResourceGroupName $ResourceGroupName  #1
    $nic.IpConfigurations[0].PublicIpAddress = $ipaddr             #2
    Set-AzureRmNetworkInterface -NetworkInterface $nic             #3