我正在编写一个 ARM 模板来部署应用程序网关。 “后端”服务器已经存在并拥有私有(private) IP 地址。
如果我通过门户创建应用程序网关。我可以选择想要成为后端池一部分的虚拟机。我正在尝试在 ARM 模板中创建它,但没有成功。 ARM 模板部署没有任何错误,但是当我检查后端池时,没有任何资源与其绑定(bind)。
以下是我的 ARM 模板的适用部分:
"backendAddressPools": [
{
"name": "PublishPool",
"properties": {
"backendIPConfigurations": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces/ipConfigurations', parameters('networkInterfaceName'), parameters('ipConfigurationName'))]"
}
],
}
}
]
我已经设法通过使用 IP 地址本身来让它工作(如果您采用该路线,JSON 看起来会有点不同),但如果 IP 地址以后发生变化,这可能会导致问题;我宁愿使用对网络接口(interface)本身的引用。
最佳答案
我参加聚会迟到了,但我希望这对 future 的互联网旅行者有所帮助。
这非常不明显,但您还必须在接口(interface)配置中定义后端池。
这是我的 ARM 模板,为我要添加到后端池的接口(interface)配置 IP 配置:
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[concat(resourceId('Microsoft.Network/virtualNetworks', variables('clientNetworkName')), '/subnets/', variables('clientPriSubnetName'))]"
},
"applicationGatewayBackendAddressPools": [
{
"id": "[concat(resourceId('Microsoft.Network/applicationGateways', variables('appGWName')), '/backendAddressPools/appGatewayBackendPool')]"
}
]
}
(请注意 applicationGatewayBackendAddressPools
部分,它解析我的应用程序网关的资源 ID)。
然后在网关后端池本身的 ARM 模板部分中:
"backendAddressPools": [{
"name": "appGatewayBackendPool",
"properties": {
"backendIPConfigurations" : [
{
"id": "[concat(resourceId('Microsoft.Network/networkInterfaces',concat('networkInterface-',variables('webBaseName'),'1-pri')),'/ipConfigurations/ipconfig1')]"
},
{
"id": "[concat(resourceId('Microsoft.Network/networkInterfaces',concat('networkInterface-',variables('webBaseName'),'2-pri')),'/ipConfigurations/ipconfig1')]"
}
]
}
}],
这会向后端池添加两个接口(interface)(标识为 networkInterface-client-web01-pri
和 networkInterface-client-web02-pri
)。
感谢this GitHub issue您为我指明了正确的方向,并且不感谢 Microsoft 显然几年来根本没有任何有关此问题的文档。
关于具有现有后端 IP 的 Azure 应用程序网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43596719/