你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure PowerShell 为应用程序网关配置前端公共 IPv6 地址
Azure 应用程序网关支持来自客户端的双栈(IPv4 和 IPv6)前端连接。 若要使用 IPv6 前端连接,需要创建新的 Azure 应用程序网关。 目前,无法将现有的仅 IPv4 应用程序网关升级到双栈(IPv4 和 IPv6)应用程序网关。 此外,目前不支持后端 IPv6 地址。
若要支持 IPv6 前端支持,必须创建双堆栈 VNet。 此双栈 VNet 具有 IPv4 和 IPv6 子网。 Azure VNet 已提供双栈功能。
概述
Azure PowerShell 用于创建 IPv6 Azure 应用程序网关。 执行测试以验证它是否正常工作。
学习如何:
Azure PowerShell 用于创建 IPv6 Azure 应用程序网关并执行测试以确保其正常工作。 应用程序网关可以管理和保护发到你维护的服务器的 Web 流量。 虚拟机规模集用于后端服务器管理 Web 流量。 规模集包含两个虚拟机实例,这些实例添加到应用程序网关的默认后端池中。 有关应用程序网关组件的详细信息,请参阅应用程序网关组件。
还可以使用 Azure 门户完成本快速入门。
先决条件
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
如果选择在本地安装和使用 PowerShell,则本文需要 Azure PowerShell 模块 1.0.0 或更高版本。 要查找版本,请运行 Get-Module -ListAvailable Az
。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Login-AzAccount
以创建与 Azure 的连接。
区域和可用性
IPv6 应用程序网关可用于支持应用程序网关 v2 SKU 的所有公有云区域。 它还在由世纪互联运营的 Microsoft Azure 和 Azure 政府中提供
限制
- 只有 v2 SKU 支持具有 IPv4 和 IPv6 地址的前端
- 目前不支持 IPv6 后端
- 目前不支持 IPv6 专用链接
- 目前不支持仅 IPv6 应用程序网关。 Azure 应用程序网关必须是双栈(IPv6 和 IPv4)
- 应用程序网关入口控制器 (AGIC) 不支持 IPv6 配置
- 现有 IPv4 应用程序网关无法升级到双栈应用程序网关
- 目前不支持具有 IPv6 匹配条件的 WAF 自定义规则
创建资源组
资源组是在其中部署和管理 Azure 资源的逻辑容器。 使用 New-AzResourceGroup 创建 Azure 资源组。
New-AzResourceGroup -Name myResourceGroupAG -Location eastus
配置双堆栈子网和后端子网
使用 New-AzVirtualNetworkSubnetConfig 配置名为 myBackendSubnet 和 myAGSubnet 的子网。
$AppGwSubnetPrefix = @("10.0.0.0/24", "ace:cab:deca::/64")
$appgwSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myAGSubnet -AddressPrefix $AppGwSubnetPrefix
$backendSubnet = New-AzVirtualNetworkSubnetConfig `
-Name myBackendSubnet -AddressPrefix 10.0.1.0/24
创建双堆栈虚拟网络
$VnetPrefix = @("10.0.0.0/16", "ace:cab:deca::/48")
$vnet = New-AzVirtualNetwork `
-Name myVNet `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-AddressPrefix $VnetPrefix `
-Subnet @($appgwSubnet, $backendSubnet)
创建 Azure 应用程序网关前端公共 IP 地址
$pipv4 = New-AzPublicIpAddress `
-Name myAGPublicIPAddress4 `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Sku 'Standard' `
-AllocationMethod 'Static' `
-IpAddressVersion 'IPv4' `
-Force
$pipv6 = New-AzPublicIpAddress `
-Name myAGPublicIPAddress6 `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-Sku 'Standard' `
-AllocationMethod 'Static' `
-IpAddressVersion 'IPv6' `
-Force
创建 IP 配置和端口
使用 New-AzApplicationGatewayIPConfiguration 将前面创建的 myAGSubnet 关联到应用程序网关。 使用 New-AzApplicationGatewayFrontendIPConfig 将 myAGPublicIPAddress 分配给应用程序网关。
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName myResourceGroupAG `
-Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name myAGSubnet
$gipconfig = New-AzApplicationGatewayIPConfiguration `
-Name myAGIPConfig `
-Subnet $subnet
$fipconfigv4 = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPv4Config `
-PublicIPAddress $pipv4
$fipconfigv6 = New-AzApplicationGatewayFrontendIPConfig `
-Name myAGFrontendIPv6Config `
-PublicIPAddress $pipv6
$frontendport = New-AzApplicationGatewayFrontendPort `
-Name myAGFrontendIPv6Config `
-Port 80
创建后端池和设置
使用 New-AzApplicationGatewayBackendAddressPool 为应用程序网关创建名为 appGatewayBackendPool 的后端池。 使用 New-AzApplicationGatewayBackendHttpSettings 配置后端地址池的设置。
$backendPool = New-AzApplicationGatewayBackendAddressPool `
-Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 30
创建默认侦听器和规则
应用程序网关需要侦听器才能适当地将流量路由到后端池。 在此示例中,将一个创建基本侦听器以侦听根 URL 上的流量。
使用 New-AzApplicationGatewayHttpListener 以及前面创建的前端配置和前端端口创建名为 mydefaultListener 的侦听器。 侦听器需要使用规则来了解哪个后端池使用传入流量。 使用 New-AzApplicationGatewayRequestRoutingRule 创建一个名为 rule1 的基本规则。
$listenerv4 = New-AzApplicationGatewayHttpListener `
-Name myAGListnerv4 `
-Protocol Http `
-FrontendIPConfiguration $fipconfigv4 `
-FrontendPort $frontendport
$listenerv6 = New-AzApplicationGatewayHttpListener `
-Name myAGListnerv6 `
-Protocol Http `
-FrontendIPConfiguration $fipconfigv6 `
-FrontendPort $frontendport
$frontendRulev4 = New-AzApplicationGatewayRequestRoutingRule `
-Name ruleIPv4 `
-RuleType Basic `
-Priority 10 `
-HttpListener $listenerv4 `
-BackendAddressPool $backendPool `
-BackendHttpSettings $poolSettings
$frontendRulev6 = New-AzApplicationGatewayRequestRoutingRule `
-Name ruleIPv6 `
-RuleType Basic `
-Priority 1 `
-HttpListener $listenerv6 `
-BackendAddressPool $backendPool `
-BackendHttpSettings $poolsettings
创建应用程序网关
创建所需的支持资源后,可以使用 New-AzApplicationGatewaySku 为应用程序网关指定参数。 新应用程序网关是使用 New-AzApplicationGateway 创建的。 创建应用程序网关需要几分钟时间。
$sku = New-AzApplicationGatewaySku `
-Name Standard_v2 `
-Tier Standard_v2 `
-Capacity 2
New-AzApplicationGateway `
-Name myipv6AppGW `
-ResourceGroupName myResourceGroupAG `
-Location eastus `
-BackendAddressPools $backendPool `
-BackendHttpSettingsCollection $poolsettings `
-FrontendIpConfigurations @($fipconfigv4, $fipconfigv6) `
-GatewayIpConfigurations $gipconfig `
-FrontendPorts $frontendport `
-HttpListeners @($listenerv4, $listenerv6) `
-RequestRoutingRules @($frontendRulev4, $frontendRulev6) `
-Sku $sku `
-Force
后端服务器
创建应用程序网关后,可以创建后端虚拟机来托管网站。 后端可以包含 NIC、虚拟机规模集、公共 IP 地址、内部 IP 地址、完全限定的域名 (FQDN) 和多租户后端(例如 Azure 应用服务)。
创建两个虚拟机
在此示例中,你将创建用作应用程序网关的后端服务器的两个虚拟机。 IIS 安装在虚拟机上,以验证 Azure 是否已成功创建应用程序网关。 配置 IP 地址设置时,规模集将分配给后端池。
若要创建虚拟机,我们将使用 Get-AzApplicationGatewayBackendAddressPool 获取最近创建的 Azure 应用程序网关后端池配置。 此信息用于:
- 使用 New-AzNetworkInterface 创建网络接口。
- 使用 New-AzVMConfig 创建虚拟机配置。
- 使用 New-AzVM 创建虚拟机。
注意
运行以下代码示例来创建虚拟机时,Azure 会提示你输入凭据。 输入用户名和密码。创建 VM 需要几分钟时间。
$appgw = Get-AzApplicationGateway -ResourceGroupName myResourceGroupAG -Name myipv6AppGW
$backendPool = Get-AzApplicationGatewayBackendAddressPool -Name myAGBackendPool -ApplicationGateway $appgw
$vnet = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myBackendSubnet
$cred = Get-Credential
for ($i=1; $i -le 2; $i++)
{
$nic = New-AzNetworkInterface `
-Name myNic$i `
-ResourceGroupName myResourceGroupAG `
-Location EastUS `
-Subnet $subnet `
-ApplicationGatewayBackendAddressPool $backendpool
$vm = New-AzVMConfig `
-VMName myVM$i `
-VMSize Standard_DS2_v2
Set-AzVMOperatingSystem `
-VM $vm `
-Windows `
-ComputerName myVM$i `
-Credential $cred
Set-AzVMSourceImage `
-VM $vm `
-PublisherName MicrosoftWindowsServer `
-Offer WindowsServer `
-Skus 2016-Datacenter `
-Version latest
Add-AzVMNetworkInterface `
-VM $vm `
-Id $nic.Id
Set-AzVMBootDiagnostic `
-VM $vm `
-Disable
New-AzVM -ResourceGroupName myResourceGroupAG -Location EastUS -VM $vm
Set-AzVMExtension `
-ResourceGroupName myResourceGroupAG `
-ExtensionName IIS `
-VMName myVM$i `
-Publisher Microsoft.Compute `
-ExtensionType CustomScriptExtension `
-TypeHandlerVersion 1.4 `
-SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
-Location EastUS
}
查找 Azure 应用程序网关的公共 IP 地址
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress6
将 DNS 名称分配给前端 IPv6 地址
DNS 名称可简化 IPv6 应用程序网关的测试。 可以使用自己的域和注册机构分配公共 DNS 名称,也可以在 azure.com 中创建名称。
使用以下命令在 azure.com 中分配名称。 该名称设置为指定的标签 + 区域 + cloudapp.azure.com。 在此示例中,在命名空间 eastus.cloudapp.azure.com 中创建 AAAA 记录 myipv6appgw:
$publicIp = Get-AzPublicIpAddress -Name myAGPublicIPAddress6 -ResourceGroupName myResourceGroupAG
$publicIp.DnsSettings = @{"DomainNameLabel" = "myipv6appgw"}
Set-AzPublicIpAddress -PublicIpAddress $publicIp
测试应用程序网关
以前,我们已将 DNS 名称 myipv6appgw.eastus.cloudapp.azure.com 分配给应用程序网关的公共 IPv6 地址。 若要测试此连接,请执行以下操作:
- 使用 Invoke-WebRequest cmdlet 向 IPv6 前端发出请求。
- 检查响应。 myVM1 或 myVM2 的有效响应验证应用程序网关是否已成功创建,以及是否能够成功连接后端。 如果多次发出命令,网关会对来自其他后端服务器的后续请求进行负载均衡和响应。
PS C:\> (Invoke-WebRequest -Uri myipv6appgw.eastus.cloudapp.azure.com).Content
myVM2
重要
如果与 DNS 名称或 IPv6 地址的连接失败,则可能是因为无法从设备浏览 IPv6 地址。 若要检查此问题是否为问题,请测试应用程序网关的 IPv4 地址。 如果 IPv4 地址成功连接,则可能没有分配给设备的公共 IPv6 地址。 如果是这种情况,可以尝试使用双栈 VM 测试连接。
清理资源
如果不再需要资源组、应用程序网关和所有相关资源,可以使用 Remove-AzResourceGroup 将其删除。
Remove-AzResourceGroup -Name myResourceGroupAG
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈