【问题标题】:Associate a Public IP in an Azure Resource Group to a Web App?将 Azure 资源组中的公共 IP 关联到 Web 应用程序?
【发布时间】:2016-05-11 21:02:23
【问题描述】:

我正在使用 Azure 资源组。

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

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

这一切看起来都不错(我认为,无论如何)。但是在 Portal UI 中,我看到这个 IP 没有与任何东西相关联:

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,没有参数来声明关联。我在 Portal UI 中看不到任何方法,也无法通过 Google 找到任何答案。

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

有什么想法吗?谢谢!!

【问题讨论】:

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


    【解决方案1】:

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

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

    您可以通过以下方式找到您的外部传入 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. 获取一些东西,将它分配给一个变量。
    2. 通过分配其他值来更改该变量的属性。
    3. 使用 Set-something cmdlet 将更改写入 Azure。

    在为虚拟机分配 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
    

    【讨论】:

    • 好的,谢谢!这有助于填补我理解中的许多空白。但是,我仍然不清楚一件事:这会将静态 IP 与 Web 应用程序相关联吗? (而且,在 Get-AzureRmNetworkInterface -Name $name 中使用时 $name 定义在哪里)
    • @CaseyCrookston 在我阅读您的问题时,我的大脑似乎在喝牛奶,而我回答的却完全不同。这次我提供了一个实际的答案。
    • 好的,忽略我之前评论的最后一个问题。我现在看到我将 $name 和 $ResourceGroupName 设置为现有值。
    • 好吧好吧!感谢更新。那么,如果一个网络应用程序保留了它们的传入和传出 IP 地址,我该如何找到它们呢?我会四处寻找,看看我能不能弄明白。
    • 另外,您的原始答案确实帮助我弄清楚了如何将公共静态 IP 与网络接口相关联,这是我以前不知道的。
    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 2019-09-30
    • 2020-07-27
    • 2018-01-30
    • 2010-10-15
    • 2021-07-18
    • 2020-06-10
    • 1970-01-01
    相关资源
    最近更新 更多